<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 12pt;
font-family:Calibri
}
--></style></head>
<body class='hmmessage'><div dir='ltr'><div>Dear&nbsp;Tatsuo Ishii,</div><div>Thanks for your reply,&nbsp;</div><div>If I have 4 statements in a transaction the following :</div><div>------------begin-----------------</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>Function 1</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>Query 2</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>Function 3</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>Query 4</div><div>-------------- commit-------------------------</div><div>Pgpool have to make sure that all 4 statements in this transaction to be executed at a node, right?</div><div>means that either all statements in this transaction be only executed in master or slave. Yes?</div><div>Please help me to confirm this.</div><div>Thanks a lot.</div><br><div><div id="SkyDrivePlaceholder"></div>&gt; Date: Thu, 11 Apr 2013 18:19:41 +0900<br>&gt; To: hoangthanhtoan@hotmail.com<br>&gt; CC: pgpool-general@pgpool.net<br>&gt; Subject: Re: [pgpool-general: 1597] Master/Slave Mode: Temp table used by view.<br>&gt; From: ishii@postgresql.org<br>&gt; <br>&gt; There are a few optioins:<br>&gt; <br>&gt; 1) use /*NO LOAD BALANCE*/ comment. Example:<br>&gt;    /*NO LOAD BALANCE*/SELECT * FROM hrvw_emp_info;<br>&gt; <br>&gt; 2) create a SQL function which invoke hrvw_emp_info.<br>&gt;    CREATE FUNCTION foo AS ... SELECT * FROM hrvw_emp_info....<br>&gt;    then mark foo as "volatile". Then SELECT the function instead of hrvw_emp_info.<br>&gt;    i.e. SELECT * FROM foo();<br>&gt; --<br>&gt; Tatsuo Ishii<br>&gt; SRA OSS, Inc. Japan<br>&gt; English: http://www.sraoss.co.jp/index_en.php<br>&gt; Japanese: http://www.sraoss.co.jp<br>&gt; <br>&gt; &gt; Dear Tatsuo,<br>&gt; &gt; <br>&gt; &gt; Thanks for your reply, <br>&gt; &gt; <br>&gt; &gt; Metadata structure of my db like this:<br>&gt; &gt; <br>&gt; &gt;   hrvw_emp_info (view) --call--&gt;hrvw_employee_trigger<br>&gt; &gt; (view) --call--&gt;smfn_get_param (function)---&gt;select * from<br>&gt; &gt; temporary_table.<br>&gt; &gt; <br>&gt; &gt;  <br>&gt; &gt; <br>&gt; &gt; CREATE OR REPLACE VIEW hrvw_emp_info AS <br>&gt; &gt; <br>&gt; &gt;  SELECT *<br>&gt; &gt; <br>&gt; &gt;    FROM hrvw_employee_trigger t;<br>&gt; &gt; <br>&gt; &gt;  <br>&gt; &gt; <br>&gt; &gt; CREATE OR REPLACE VIEW hrvw_employee_trigger AS <br>&gt; &gt; <br>&gt; &gt;  SELECT *<br>&gt; &gt; <br>&gt; &gt;    FROM ( SELECT *<br>&gt; &gt; <br>&gt; &gt;            FROM<br>&gt; &gt; hrtb_employee_infomation<br>&gt; &gt; <br>&gt; &gt;           WHERE<br>&gt; &gt; smfn_get_param('hrvw_employee_infomation.company_id'::character<br>&gt; &gt; varying)::numeric = hrtb_employee_infomation.company_id) a;<br>&gt; &gt; <br>&gt; &gt;    <br>&gt; &gt; <br>&gt; &gt;    <br>&gt; &gt; <br>&gt; &gt; CREATE OR REPLACE FUNCTION smfn_get_param(pm_param_name character<br>&gt; &gt; varying)<br>&gt; &gt; <br>&gt; &gt;   RETURNS character varying AS<br>&gt; &gt; <br>&gt; &gt; $BODY$<br>&gt; &gt; <br>&gt; &gt;   var_param_value varchar2(4000);<br>&gt; &gt; <br>&gt; &gt; begin<br>&gt; &gt; <br>&gt; &gt;                   select<br>&gt; &gt; param_value into var_param_value<br>&gt; &gt; <br>&gt; &gt;                   from<br>&gt; &gt; smtb_session_param<br>&gt; &gt; <br>&gt; &gt;                   where<br>&gt; &gt; param_name = pm_param_name;<br>&gt; &gt; <br>&gt; &gt;                   return<br>&gt; &gt; var_param_value;<br>&gt; &gt; <br>&gt; &gt;                   exception<br>&gt; &gt; <br>&gt; &gt;                   when<br>&gt; &gt; others then<br>&gt; &gt; <br>&gt; &gt;                   return<br>&gt; &gt; null;<br>&gt; &gt; <br>&gt; &gt; end$BODY$<br>&gt; &gt; <br>&gt; &gt;    <br>&gt; &gt; <br>&gt; &gt;    <br>&gt; &gt; <br>&gt; &gt;    CREATE OR REPLACE FUNCTION smpr_set_param(pm_param_name character<br>&gt; &gt; varying, pm_param_value character varying)<br>&gt; &gt; <br>&gt; &gt;    ..................<br>&gt; &gt; <br>&gt; &gt;                                 CREATE<br>&gt; &gt; TEMPORARY TABLE smtb_session_param<br>&gt; &gt; <br>&gt; &gt;                                 (<br>&gt; &gt; <br>&gt; &gt;                                   param_name<br>&gt; &gt; character varying(500) NOT NULL,<br>&gt; &gt; <br>&gt; &gt;                                   param_value<br>&gt; &gt; character varying(4000),<br>&gt; &gt; <br>&gt; &gt;                                   CONSTRAINT<br>&gt; &gt;  smtb_session_param_pk PRIMARY KEY (param_name )<br>&gt; &gt; <br>&gt; &gt;                                 )<br>&gt; &gt; ON COMMIT DELETE ROWS;<br>&gt; &gt; <br>&gt; &gt; .............<br>&gt; &gt; <br>&gt; &gt;    end$BODY$<br>&gt; &gt; <br>&gt; &gt;  <br>&gt; &gt; <br>&gt; &gt;    I have added smpr_set_param,<br>&gt; &gt; smfn_get_param to black_function_list parameter in pgpool.conf file:<br>&gt; &gt; <br>&gt; &gt;    black_function_list=<br>&gt; &gt; smpr_set_param,smfn_get_param<br>&gt; &gt; <br>&gt; &gt;    <br>&gt; &gt; <br>&gt; &gt;    But the queries on views<br>&gt; &gt; hrvw_emp_info, hrvw_employee_trigger still forward to the slave.<br>&gt; &gt; <br>&gt; &gt;  <br>&gt; &gt; <br>&gt; &gt;&gt; Date: Thu, 11 Apr 2013 17:28:42 +0900<br>&gt; &gt; <br>&gt; &gt;&gt; To: hoangthanhtoan@hotmail.com<br>&gt; &gt; <br>&gt; &gt;&gt; CC: pgpool-general@pgpool.net<br>&gt; &gt; <br>&gt; &gt;&gt; Subject: Re: [pgpool-general: 1597] Master/Slave Mode: Temp table used by<br>&gt; &gt; view.<br>&gt; &gt; <br>&gt; &gt;&gt; From: ishii@postgresql.org<br>&gt; &gt; <br>&gt; &gt;&gt; <br>&gt; &gt; <br>&gt; &gt;&gt; &gt; Dear all,Please help me.I have a temporary table is used as a literal<br>&gt; &gt; in View objects.in Master/Slave Mode (Pgpool): how to detect all query on this<br>&gt; &gt; view, and then transfer these queries to master.Please give me some<br>&gt; &gt; advices.Thanks a lot. <br>&gt; &gt; <br>&gt; &gt;&gt; Query examples please.<br>&gt; &gt; <br>&gt; &gt;&gt; --<br>&gt; &gt; <br>&gt; &gt;&gt; Tatsuo Ishii<br>&gt; &gt; <br>&gt; &gt;&gt; SRA OSS, Inc. Japan<br>&gt; &gt; <br>&gt; &gt;&gt; English: http://www.sraoss.co.jp/index_en.php<br>&gt; &gt; <br>&gt; &gt;&gt; Japanese: http://www.sraoss.co.jp<br>&gt; &gt; <br>&gt; &gt; <br>&gt; &gt;                                                <br></div>                                               </div></body>
</html>