<div dir="ltr">&gt;<span style="font-size:13.1999998092651px;line-height:19.7999992370605px">So if you use the function</span><br style="font-size:13.1999998092651px;line-height:19.7999992370605px"><span style="font-size:13.1999998092651px;line-height:19.7999992370605px">by not using CURSOR it will be load balanced unless you register it in</span><br style="font-size:13.1999998092651px;line-height:19.7999992370605px"><span style="font-size:13.1999998092651px;line-height:19.7999992370605px">the black function list.</span><div><br></div><div>I thought that functions are not balanced by default:</div><div><br></div><div><span style="font-size:13.1999998092651px;line-height:19.7999992370605px"><a href="http://pgpool.projects.pgfoundry.org/pgpool-II/doc/pgpool-en.html">http://pgpool.projects.pgfoundry.org/pgpool-II/doc/pgpool-en.html</a></span><br></div><div><dt style="font-weight:bold;color:rgb(0,0,0);font-family:Verdana,Arial,Helvetica,sans-serif;font-size:12px;line-height:normal">white_function_list</dt><dd style="color:rgb(0,0,0);font-family:Verdana,Arial,Helvetica,sans-serif;font-size:12px;line-height:normal"><p style="padding-left:15px;padding-right:15px;margin-left:25px;margin-right:25px">Specify a comma separated list of function names that do not update the database. SELECTs using <b>functions not specified in this list</b> are neither load balanced, nor replicated if in replication mode. In master slave mode, such SELECTs <b>are sent to master (primary) only</b>.</p><p style="padding-left:15px;padding-right:15px;margin-left:25px;margin-right:25px"><br></p></dd></div></div><br><div class="gmail_quote">чт, 30 апр. 2015 г. в 11:28, Tatsuo Ishii &lt;<a href="mailto:ishii@postgresql.org">ishii@postgresql.org</a>&gt;:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">&gt; Hi, Tatsuo!<br>
&gt; Sorry, but I still dont understand. Stored function is not balanced, it<br>
&gt; executes on master only. Why should we add it to black list?<br>
<br>
The reason why the SELECT (and FETCH) is not load balanced is, it uses<br>
cursor, not because of the stored function. So if you use the function<br>
by not using CURSOR it will be load balanced unless you register it in<br>
the black function list.<br>
<br>
&gt; The problem is with next statement: plain select from table,  no functions<br>
&gt; used.<br>
&gt; If we add function to black list, the next select will not be balanced too?<br>
<br>
I thought so, but was wrong. The decision is made by calling<br>
is_select_query(node, query)), which essentially regards a statement<br>
as SELECT if it looks like a SELECT. i.e. not checking if it calls<br>
writing functions. This seems a bug and I am going to discuss with<br>
other developers.<br>
<br>
Best regards,<br>
--<br>
Tatsuo Ishii<br>
SRA OSS, Inc. Japan<br>
English: <a href="http://www.sraoss.co.jp/index_en.php" target="_blank">http://www.sraoss.co.jp/index_en.php</a><br>
Japanese:<a href="http://www.sraoss.co.jp" target="_blank">http://www.sraoss.co.jp</a><br>
<br>
&gt; чт, 30 апр. 2015, 9:10, Tatsuo Ishii &lt;<a href="mailto:ishii@postgresql.org" target="_blank">ishii@postgresql.org</a>&gt;:<br>
&gt;<br>
&gt;&gt; &gt; Hi, Tatsuo!<br>
&gt;&gt; &gt; Thank you for answer!<br>
&gt;&gt; &gt; It is good that function is not balanced - it writes to database. But the<br>
&gt;&gt; &gt; next statement in transaction (select after function) is balanced. Is it<br>
&gt;&gt; &gt; correct?<br>
&gt;&gt;<br>
&gt;&gt; True.<br>
&gt;&gt;<br>
&gt;&gt; &gt; We do not want select to be balanced. And we expected it not to be<br>
&gt;&gt; balanced<br>
&gt;&gt; &gt; to slave, because it sits next to writing statement and in same explicit<br>
&gt;&gt; &gt; transaction.<br>
&gt;&gt;<br>
&gt;&gt; You really should use black_function_list (or white_function_list).<br>
&gt;&gt;<br>
&gt;&gt; &gt; With best regards, Sergey Melekhin<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; вт, 28 апр. 2015 г. в 19:03, Tatsuo Ishii &lt;<a href="mailto:ishii@postgresql.org" target="_blank">ishii@postgresql.org</a>&gt;:<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; Thanks for the test case. The reason why your function is not load<br>
&gt;&gt; &gt;&gt; balanced is, you are using cursor statement. Currently pgpool-II does<br>
&gt;&gt; &gt;&gt; not load balance if cursor is used. This is because the cursor<br>
&gt;&gt; &gt;&gt; statement may use DML, which will raise problem if the cursor<br>
&gt;&gt; &gt;&gt; statement is sent to standby.<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; Best regards,<br>
&gt;&gt; &gt;&gt; --<br>
&gt;&gt; &gt;&gt; Tatsuo Ishii<br>
&gt;&gt; &gt;&gt; SRA OSS, Inc. Japan<br>
&gt;&gt; &gt;&gt; English: <a href="http://www.sraoss.co.jp/index_en.php" target="_blank">http://www.sraoss.co.jp/index_en.php</a><br>
&gt;&gt; &gt;&gt; Japanese:<a href="http://www.sraoss.co.jp" target="_blank">http://www.sraoss.co.jp</a><br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt; Hi!<br>
&gt;&gt; &gt;&gt; &gt; Here is test case that fails on slow replication.<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt; чт, 23 апр. 2015 г. в 17:16, Tatsuo Ishii &lt;<a href="mailto:ishii@postgresql.org" target="_blank">ishii@postgresql.org</a>&gt;:<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; Our stored function is not balanced. But next select in the same<br>
&gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; Could you show me a concrete example? I hardly believe that SELECT<br>
&gt;&gt; &gt;&gt; &gt;&gt; foo() or SELECT * FROM foo() is not load balanced if neither white<br>
&gt;&gt; and<br>
&gt;&gt; &gt;&gt; &gt;&gt; black function lists are not specified.<br>
&gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; transaction is balanced. Documentation, if i understand it<br>
&gt;&gt; correctly,<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; states that it should not be balanced. I think it should be<br>
&gt;&gt; clarified.<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; <a href="http://www.pgpool.net/docs/latest/pgpool-en.html" target="_blank">http://www.pgpool.net/docs/latest/pgpool-en.html</a><br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; For a query to be load balanced, all the following requirements<br>
&gt;&gt; must<br>
&gt;&gt; &gt;&gt; be<br>
&gt;&gt; &gt;&gt; &gt;&gt; met:<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;    - PostgreSQL version 7.4 or later<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;    - *the query must not be in an explicitly declared transaction<br>
&gt;&gt; &gt;&gt; (i.e.<br>
&gt;&gt; &gt;&gt; &gt;&gt; not<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;    in a BEGIN ~ END block)*<br>
&gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; This is simply wrong. Sorry for the outdated info. I will fix it.<br>
&gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; So query in explicitly declared transaction will not be balanced.<br>
&gt;&gt; But<br>
&gt;&gt; &gt;&gt; &gt;&gt; then<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; in the stame doc:<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; <a href="http://www.pgpool.net/docs/latest/pgpool-en.html" target="_blank">http://www.pgpool.net/docs/latest/pgpool-en.html</a><br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; In an explicit transaction:Transaction starting commands such as<br>
&gt;&gt; BEGIN<br>
&gt;&gt; &gt;&gt; &gt;&gt; are<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; sent to the primary node.Following SELECT and some other queries<br>
&gt;&gt; that<br>
&gt;&gt; &gt;&gt; can<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; be sent to both primary or standby are executed in the transaction<br>
&gt;&gt; or<br>
&gt;&gt; &gt;&gt; on<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; the standby node.Commands which cannot be executed on the standby<br>
&gt;&gt; &gt;&gt; such as<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; INSERT are sent to the primary. After one of these commands, even<br>
&gt;&gt; &gt;&gt; SELECTs<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; are sent to the primary node, This is because these SELECTs might<br>
&gt;&gt; &gt;&gt; want to<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; see the result of an INSERT immediately. This behavior continues<br>
&gt;&gt; until<br>
&gt;&gt; &gt;&gt; &gt;&gt; the<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; transaction closes or aborts.<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; This states that after any writing in transaction all statements<br>
&gt;&gt; &gt;&gt; should<br>
&gt;&gt; &gt;&gt; &gt;&gt; not<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; be balanced. This contradicts first part, which can be understood<br>
&gt;&gt; as<br>
&gt;&gt; &gt;&gt; if<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; transactions are not balanced at all.<br>
&gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; Correct.<br>
&gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; ср, 22 апр. 2015 г. в 18:24, Tatsuo Ishii &lt;<a href="mailto:ishii@postgresql.org" target="_blank">ishii@postgresql.org</a>&gt;:<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; pgpool-II has no idea which is a stored function or not regarding<br>
&gt;&gt; &gt;&gt; load<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; balancing: all functions are treated as same. So &quot;SELECT<br>
&gt;&gt; &gt;&gt; upper(&#39;foo&#39;)&quot;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; is load balanced if white and black function list is empty.<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; BTW if you do not want to load balance particular SELECT, you can<br>
&gt;&gt; add<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &quot;/*NO LOAD BALANCE*/&quot; to the SELECT statement. See the manual for<br>
&gt;&gt; &gt;&gt; more<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; details.<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; Best regards,<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; --<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; Tatsuo Ishii<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; SRA OSS, Inc. Japan<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; English: <a href="http://www.sraoss.co.jp/index_en.php" target="_blank">http://www.sraoss.co.jp/index_en.php</a><br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; Japanese:<a href="http://www.sraoss.co.jp" target="_blank">http://www.sraoss.co.jp</a><br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; Hi, Lachezar!<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; The function itself is not balanced, it would fail on read only<br>
&gt;&gt; &gt;&gt; node<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; (slave) but it does not (by default stored functions are not<br>
&gt;&gt; &gt;&gt; balanced<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; even<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; if they are not explicitly listed in black list). Problem is<br>
&gt;&gt; with<br>
&gt;&gt; &gt;&gt; next<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; statement in this transaction, which is select. And we want this<br>
&gt;&gt; &gt;&gt; &gt;&gt; select<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; to<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; be run on master.<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; And looking in documentation I think it should be run on master.<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; вт, 21 апр. 2015 г. в 18:26, Lachezar Dobrev &lt;<br>
&gt;&gt; <a href="mailto:l.dobrev@gmail.com" target="_blank">l.dobrev@gmail.com</a>&gt;:<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;   Non-authority response:<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;   You might want to use a white-list[1] or black-list[2] of<br>
&gt;&gt; &gt;&gt; functions<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; to inform the PgPool which functions are suitable for<br>
&gt;&gt; &gt;&gt; distributing,<br>
&gt;&gt; &gt;&gt; &gt;&gt; or<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; which are not suitable. Documentation specifies that you can<br>
&gt;&gt; use<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; either, but not both. I suppose adding your functions to the<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; black_function_list would be easier. Not sure if that will help<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; though. My understanding was, that everything in a transaction<br>
&gt;&gt; &gt;&gt; &gt;&gt; (BEGIN;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; /* EVERYTHING; */ END;) would be sent to the master.<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;   [1]<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; <a href="http://www.pgpool.net/docs/latest/pgpool-en.html#WHITE_FUNCTION_LIST" target="_blank">http://www.pgpool.net/docs/latest/pgpool-en.html#WHITE_FUNCTION_LIST</a><br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;   [2]<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; <a href="http://www.pgpool.net/docs/latest/pgpool-en.html#BLACK_FUNCTION_LIST" target="_blank">http://www.pgpool.net/docs/latest/pgpool-en.html#BLACK_FUNCTION_LIST</a><br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; 2015-04-21 5:55 GMT+03:00 Сергей Мелехин &lt;<a href="mailto:cpro29a@gmail.com" target="_blank">cpro29a@gmail.com</a>&gt;:<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; There is another part in docs:<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; <a href="http://www.pgpool.net/docs/latest/pgpool-en.html" target="_blank">http://www.pgpool.net/docs/latest/pgpool-en.html</a><br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; In an explicit transaction:Transaction starting commands<br>
&gt;&gt; such as<br>
&gt;&gt; &gt;&gt; &gt;&gt; BEGIN<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; are<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; sent to the primary node.Following SELECT and some other<br>
&gt;&gt; queries<br>
&gt;&gt; &gt;&gt; &gt;&gt; that<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; can be<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; sent to both primary or standby are executed in the<br>
&gt;&gt; transaction<br>
&gt;&gt; &gt;&gt; or<br>
&gt;&gt; &gt;&gt; &gt;&gt; on<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; the<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; standby node.Commands which cannot be executed on the standby<br>
&gt;&gt; &gt;&gt; such<br>
&gt;&gt; &gt;&gt; &gt;&gt; as<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; INSERT<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; are sent to the primary. After one of these commands, even<br>
&gt;&gt; &gt;&gt; SELECTs<br>
&gt;&gt; &gt;&gt; &gt;&gt; are<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; sent<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; to the primary node, This is because these SELECTs might<br>
&gt;&gt; want to<br>
&gt;&gt; &gt;&gt; &gt;&gt; see<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; the<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; result of an INSERT immediately. This behavior continues<br>
&gt;&gt; until<br>
&gt;&gt; &gt;&gt; the<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; transaction closes or aborts.<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; It looks like pgpool treats all stored functions as non<br>
&gt;&gt; writing<br>
&gt;&gt; &gt;&gt; in<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; this<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; scenario.<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; вт, 21 апр. 2015 г. в 12:05, Сергей Мелехин &lt;<br>
&gt;&gt; <a href="mailto:cpro29a@gmail.com" target="_blank">cpro29a@gmail.com</a><br>
&gt;&gt; &gt;&gt; &gt;:<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; Hi!<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; Our test server is relatively slow, and there are some lags<br>
&gt;&gt; in<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; replication<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; between master and slave sometimes. We are using pgpool<br>
&gt;&gt; 3.3.4<br>
&gt;&gt; &gt;&gt; in<br>
&gt;&gt; &gt;&gt; &gt;&gt; load<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; balancing mode to mimic our production environment.<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; Some unit tests are making some changes in database (calling<br>
&gt;&gt; &gt;&gt; &gt;&gt; stored<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; functions) and immediately check them issuing select<br>
&gt;&gt; queries.<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; Sometimes<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; they<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; fail not finding records they have just inserted.<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; Judging by this verse in documentation:<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; For a query to be load balanced, all the following<br>
&gt;&gt; requirements<br>
&gt;&gt; &gt;&gt; &gt;&gt; must<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; be<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; met:<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; PostgreSQL version 7.4 or later<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; the query must not be in an explicitly declared transaction<br>
&gt;&gt; &gt;&gt; (i.e.<br>
&gt;&gt; &gt;&gt; &gt;&gt; not<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; in a<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; BEGIN ~ END block)<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; we decided that putting whole test in transaction block will<br>
&gt;&gt; &gt;&gt; avoid<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; load<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; balancing for such test, but it looks like that no matter<br>
&gt;&gt; &gt;&gt; being in<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; transaction, selects are replicated to slave and dont find<br>
&gt;&gt; &gt;&gt; desired<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; data<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; because of replication lags. This errors are present when we<br>
&gt;&gt; &gt;&gt; use<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; stored<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; functions, when we use explicit DML, selects inside<br>
&gt;&gt; transaction<br>
&gt;&gt; &gt;&gt; &gt;&gt; are<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; not<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; replicated. Function names are not included in white or<br>
&gt;&gt; black<br>
&gt;&gt; &gt;&gt; &gt;&gt; list in<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; pgpool.conf.<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; Is it normal behaviour, or is it a bug?<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; I include simple test, it fails in our slow replication<br>
&gt;&gt; &gt;&gt; &gt;&gt; environment.<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; You&#39;ll need python3 and psycopg2 to run it. And there is db<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; connection<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; string constant &quot;DB&quot; in the beginning of script you&#39;ll have<br>
&gt;&gt; to<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; change.<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; Thank you for your work!<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; Sergey Melekhin<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; _______________________________________________<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; pgpool-general mailing list<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; <a href="mailto:pgpool-general@pgpool.net" target="_blank">pgpool-general@pgpool.net</a><br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt; <a href="http://www.pgpool.net/mailman/listinfo/pgpool-general" target="_blank">http://www.pgpool.net/mailman/listinfo/pgpool-general</a><br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt;<br>
</blockquote></div>