[pgpool-general: 1600] Re: Master/Slave Mode: Temp table used by view.

Tatsuo Ishii ishii at postgresql.org
Thu Apr 11 18:19:41 JST 2013


There are a few optioins:

1) use /*NO LOAD BALANCE*/ comment. Example:
   /*NO LOAD BALANCE*/SELECT * FROM hrvw_emp_info;

2) create a SQL function which invoke hrvw_emp_info.
   CREATE FUNCTION foo AS ... SELECT * FROM hrvw_emp_info....
   then mark foo as "volatile". Then SELECT the function instead of hrvw_emp_info.
   i.e. SELECT * FROM foo();
--
Tatsuo Ishii
SRA OSS, Inc. Japan
English: http://www.sraoss.co.jp/index_en.php
Japanese: http://www.sraoss.co.jp

> Dear Tatsuo,
> 
> Thanks for your reply, 
> 
> Metadata structure of my db like this:
> 
>   hrvw_emp_info (view) --call-->hrvw_employee_trigger
> (view) --call-->smfn_get_param (function)--->select * from
> temporary_table.
> 
>  
> 
> CREATE OR REPLACE VIEW hrvw_emp_info AS 
> 
>  SELECT *
> 
>    FROM hrvw_employee_trigger t;
> 
>  
> 
> CREATE OR REPLACE VIEW hrvw_employee_trigger AS 
> 
>  SELECT *
> 
>    FROM ( SELECT *
> 
>            FROM
> hrtb_employee_infomation
> 
>           WHERE
> smfn_get_param('hrvw_employee_infomation.company_id'::character
> varying)::numeric = hrtb_employee_infomation.company_id) a;
> 
>    
> 
>    
> 
> CREATE OR REPLACE FUNCTION smfn_get_param(pm_param_name character
> varying)
> 
>   RETURNS character varying AS
> 
> $BODY$
> 
>   var_param_value varchar2(4000);
> 
> begin
> 
>                   select
> param_value into var_param_value
> 
>                   from
> smtb_session_param
> 
>                   where
> param_name = pm_param_name;
> 
>                   return
> var_param_value;
> 
>                   exception
> 
>                   when
> others then
> 
>                   return
> null;
> 
> end$BODY$
> 
>    
> 
>    
> 
>    CREATE OR REPLACE FUNCTION smpr_set_param(pm_param_name character
> varying, pm_param_value character varying)
> 
>    ..................
> 
>                                 CREATE
> TEMPORARY TABLE smtb_session_param
> 
>                                 (
> 
>                                   param_name
> character varying(500) NOT NULL,
> 
>                                   param_value
> character varying(4000),
> 
>                                   CONSTRAINT
>  smtb_session_param_pk PRIMARY KEY (param_name )
> 
>                                 )
> ON COMMIT DELETE ROWS;
> 
> .............
> 
>    end$BODY$
> 
>  
> 
>    I have added smpr_set_param,
> smfn_get_param to black_function_list parameter in pgpool.conf file:
> 
>    black_function_list=
> smpr_set_param,smfn_get_param
> 
>    
> 
>    But the queries on views
> hrvw_emp_info, hrvw_employee_trigger still forward to the slave.
> 
>  
> 
>> Date: Thu, 11 Apr 2013 17:28:42 +0900
> 
>> To: hoangthanhtoan at hotmail.com
> 
>> CC: pgpool-general at pgpool.net
> 
>> Subject: Re: [pgpool-general: 1597] Master/Slave Mode: Temp table used by
> view.
> 
>> From: ishii at postgresql.org
> 
>> 
> 
>> > Dear all,Please help me.I have a temporary table is used as a literal
> in View objects.in Master/Slave Mode (Pgpool): how to detect all query on this
> view, and then transfer these queries to master.Please give me some
> advices.Thanks a lot. 
> 
>> Query examples please.
> 
>> --
> 
>> Tatsuo Ishii
> 
>> SRA OSS, Inc. Japan
> 
>> English: http://www.sraoss.co.jp/index_en.php
> 
>> Japanese: http://www.sraoss.co.jp
> 
> 
>  		 	   		  


More information about the pgpool-general mailing list