<div style="font-family: Arial, sans-serif; font-size: 14px;"><div><span></span></div></div><p style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);"><span data-preserver-spaces="true" style="background: transparent;">Hello, I want to fix a minor thing, which is might not a critical thing.</span></p><p style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);"><span data-preserver-spaces="true" style="background: transparent;"><br></span></p><p style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);"><span data-preserver-spaces="true" style="background: transparent;">kashif_zeeshan(</span><a target="_blank" href="https://www.pgpool.net/mailman/listinfo/pgpool-hackers" style="background: transparent; color: rgb(74, 110, 224);"><span data-preserver-spaces="true" style="background: transparent;">kashif</span><span data-preserver-spaces="true" style="background: transparent;">.z</span><span data-preserver-spaces="true" style="background: transparent;"> at bitnine.net</span></a><span data-preserver-spaces="true" style="background: transparent;">) also shared this </span><span data-preserver-spaces="true" style="background: transparent;">to</span><span data-preserver-spaces="true" style="background: transparent;"> me, and I had the same thing.</span></p><p style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);"><span data-preserver-spaces="true" style="background: transparent;"><br></span></p><p style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);"><span data-preserver-spaces="true" style="background: transparent;">-- reporting (cutoff)</span></p><p style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);"><span data-preserver-spaces="true" style="background: transparent;"><br></span></p><p style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);"><span data-preserver-spaces="true" style="background: transparent;"><span>The problem is "show processes" query showing empty row result first.</span><br></span></p><p style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);"><span data-preserver-spaces="true" style="background: transparent;"><br></span></p><p style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);"></p><p style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);"><span data-preserver-spaces="true" style="background: transparent;">postgres@master:/tmp$ </span><span data-preserver-spaces="true" style="background: transparent;">psql</span><span data-preserver-spaces="true" style="background: transparent;"> -h localhost -p 11000 -c "show pool_processes;"</span></p><p style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);"><span data-preserver-spaces="true" style="background: transparent;"> pool_pid | start_time | cl</span></p><p style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);"><span data-preserver-spaces="true" style="background: transparent;">----------+------------+---</span></p><p style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);"><span data-preserver-spaces="true" style="background: transparent;">(0 rows)</span></p><p style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);"></p><p style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);"><span data-preserver-spaces="true" style="background: transparent;"> pool_pid |                </span></p><p style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);"><span data-preserver-spaces="true" style="background: transparent;">----------+----------------</span></p><p style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);"><span data-preserver-spaces="true" style="background: transparent;"> 56       | 2024-06-12 09:2</span></p><p style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);"><span data-preserver-spaces="true" style="background: transparent;"> 57       | 2024-06-12 09:2</span></p><p style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);"><span data-preserver-spaces="true" style="background: transparent;"> 58       | 2024-06-12 09:2</span></p><p style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);"><span data-preserver-spaces="true" style="background: transparent;">(3 rows)</span></p><p style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);"><span data-preserver-spaces="true" style="background: transparent;"><br></span></p><p style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);"></p><p style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);"><span data-preserver-spaces="true" style="background: transparent;">( tested with pool: 4.4.6 (nurikoboshi),  pg: PostgreSQL 15.7 on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0, 64-bit )</span></p><p style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);"><span data-preserver-spaces="true" style="background: transparent;"><br></span></p><p style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);"></p><p style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);"><span data-preserver-spaces="true" style="background: transparent;">you can reproduce this since pool V4_2, with pg 15,16.</span></p><p style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);"><span data-preserver-spaces="true" style="background: transparent;"><br></span></p><p style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);"><span data-preserver-spaces="true" style="background: transparent;"><br></span></p><p style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);"></p><p style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);"><span data-preserver-spaces="true" style="background: transparent;">-- analysis</span></p><p style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);"><span data-preserver-spaces="true" style="background: transparent;"><br></span></p><p style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);"><span data-preserver-spaces="true" style="background: transparent;"><span>In short, </span><span>because of send_row_description calling twice, psql like client showing emptry row result first before actual contents, that are, process informations.</span><br></span></p><p style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);"><span data-preserver-spaces="true" style="background: transparent;"><br></span></p><p style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);"><span data-preserver-spaces="true" style="background: transparent;"><br></span></p><p style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);"></p><p style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);"><span data-preserver-spaces="true" style="background: transparent;">Since branch V4_2, a</span><span data-preserver-spaces="true" style="background: transparent;"> </span><span data-preserver-spaces="true" style="background: transparent;">new function was added which is the send_row_description_and_data_rows(). <br></span></p><p style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);"><span data-preserver-spaces="true" style="background: transparent;"><br></span></p><p style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);"></p><p style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);"><span data-preserver-spaces="true" style="background: transparent;">That function sends these FE/BE protocol data to the destination as properly </span><span data-preserver-spaces="true" style="background: transparent;">like</span><span data-preserver-spaces="true" style="background: transparent;"> this.</span></p><p style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);"><span data-preserver-spaces="true" style="background: transparent;"><br></span></p><p style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);"></p><p style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);"><span data-preserver-spaces="true" style="background: transparent;">RowDescription</span></p><p style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);"><span data-preserver-spaces="true" style="background: transparent;">DataRow</span></p><p style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);"><span data-preserver-spaces="true" style="background: transparent;">CommandComplete</span></p><p style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);"><span data-preserver-spaces="true" style="background: transparent;">ReadyForQuery</span></p><p style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);"></p><p style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);"><span data-preserver-spaces="true" style="background: transparent;"><br></span></p><p style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);"><span data-preserver-spaces="true" style="background: transparent;">But the problem is, since V4_2, </span><span data-preserver-spaces="true" style="background: transparent;">process_reporting</span><span data-preserver-spaces="true" style="background: transparent;">() function itself sends FE/BE protocol data as a result like this. </span></p><p style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);"></p><p style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);"><span data-preserver-spaces="true" style="background: transparent;">RowDescription</span></p><p style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);"><span data-preserver-spaces="true" style="background: transparent;">RowDescription</span></p><p style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);"><span data-preserver-spaces="true" style="background: transparent;">DataRow</span></p><p style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);"><span data-preserver-spaces="true" style="background: transparent;">CommandComplete</span></p><p style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);"><span data-preserver-spaces="true" style="background: transparent;">ReadyForQuery</span></p><p style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);"></p><p style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);"><span data-preserver-spaces="true" style="background: transparent;"><br></span></p><p style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);"><span data-preserver-spaces="true" style="background: transparent;">First RowDescription called without following Datarow protocol data. So I think, this is the main reason why </span><span data-preserver-spaces="true" style="background: transparent;">zero row</span><span data-preserver-spaces="true" style="background: transparent;"> printed</span></p><p style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);"></p><p style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);"><span data-preserver-spaces="true" style="background: transparent;"><br></span></p><p style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);"><span data-preserver-spaces="true" style="background: transparent;">and the reason why RowDescription is called twice, send_row_description() is still called before send_row_description_and_data_rows().</span></p><p style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);"></p><p style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);"><span data-preserver-spaces="true" style="background: transparent;"><br></span></p><p style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);"><span data-preserver-spaces="true" style="background: transparent;">by the way, V4_1 is fine because calling send_row_description() then sending DataRow.</span></p><p style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);"></p><p style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);"><span data-preserver-spaces="true" style="background: transparent;"><br></span></p><p style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);"><span data-preserver-spaces="true" style="background: transparent;">-- additional reporting.</span></p><p style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);"></p><p style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);"><span data-preserver-spaces="true" style="background: transparent;"><br></span></p><p style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);"><span data-preserver-spaces="true" style="background: transparent;">The one thing confusing my decision is </span><span data-preserver-spaces="true" style="background: transparent;">the</span><span data-preserver-spaces="true" style="background: transparent;"> </span><span data-preserver-spaces="true" style="background: transparent;">pg14</span><span data-preserver-spaces="true" style="background: transparent;"> does not print empty  row <span data-preserver-spaces="true" style="background: transparent;">first</span> so totally looks fine like this.</span></p><p style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);"></p><p style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);"><span data-preserver-spaces="true" style="background: transparent;"><br></span></p><p style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);"><span data-preserver-spaces="true" style="background: transparent;">postgres@master:/tmp$ </span><span data-preserver-spaces="true" style="background: transparent;">psql</span><span data-preserver-spaces="true" style="background: transparent;"> -h localhost -p 11000 -c "show pool_processes;"</span></p><p style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);"><span data-preserver-spaces="true" style="background: transparent;"> pool_pid |     start_time      </span></p><p style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);"><span data-preserver-spaces="true" style="background: transparent;">----------+---------------------</span></p><p style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);"><span data-preserver-spaces="true" style="background: transparent;"> 56       | 2024-06-12 09:58:08 </span></p><p style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);"><span data-preserver-spaces="true" style="background: transparent;"> 58       | 2024-06-12 09:58:08 </span></p><p style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);"><span data-preserver-spaces="true" style="background: transparent;"> 59       | 2024-06-12 09:58:08 </span></p><p style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);"><span data-preserver-spaces="true" style="background: transparent;">(3 rows)</span></p><p style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);"></p><p style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);"><span data-preserver-spaces="true" style="background: transparent;"><br></span></p><p style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);"><span data-preserver-spaces="true" style="background: transparent;">( tested with pool: 4.4.6 (nurikoboshi),  pg: PostgreSQL 14.12 on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0, 64-bit )</span></p><p style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);"><span data-preserver-spaces="true" style="background: transparent;"> </span></p><p style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);"><span data-preserver-spaces="true" style="background: transparent;">-- suggestion</span></p><p style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);"><span data-preserver-spaces="true" style="background: transparent;"><br></span></p><p style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);"><span data-preserver-spaces="true" style="background: transparent;">Even if it looks like fine, I think that we should following FE/BE protocol properly.<br></span></p><p style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);"></p><p style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);"><span data-preserver-spaces="true" style="background: transparent;"><br></span></p><p style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);"></p><p style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);"><span data-preserver-spaces="true" style="background: transparent;">Oh. This is my suggestion, and you can suggest or tell me whatever you want.</span></p><p style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);"></p><p style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);"><span data-preserver-spaces="true" style="background: transparent;"><br></span></p><p style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);"><span data-preserver-spaces="true" style="background: transparent;">anyway, Could you please review my opinion?</span></p><p style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);"></p><p style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);"><span data-preserver-spaces="true" style="background: transparent;"><br></span></p><p style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);"><span data-preserver-spaces="true" style="background: transparent;"><br></span></p><p style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);"><span data-preserver-spaces="true" style="background: transparent;">-- attachment</span></p><p style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);"><span data-preserver-spaces="true" style="background: transparent;"><br></span></p><p style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);"></p><p style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);"><span data-preserver-spaces="true" style="background: transparent;">I made patch files similarly </span><span data-preserver-spaces="true" style="background: transparent;">like</span><span data-preserver-spaces="true" style="background: transparent;"> others </span><span data-preserver-spaces="true" style="background: transparent;">do</span><span data-preserver-spaces="true" style="background: transparent;">. well...</span></p><p style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);"><span data-preserver-spaces="true" style="background: transparent;"><br></span></p><p style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);"></p><ol style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; color: rgb(14, 16, 26);" data-editing-info="{"orderedStyleType":1,"unorderedStyleType":1}" data-listchain="__List_Chain_177"><li style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; list-style-type: "1. ";"><span data-preserver-spaces="true" style="background: transparent; margin-top: 0pt; margin-bottom: 0pt;">level 5 logs for FE/BE protocol tracking.</span></li><li style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; list-style-type: "2. ";"><span data-preserver-spaces="true" style="background: transparent; margin-top: 0pt; margin-bottom: 0pt;">master branch patch</span></li><li style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; list-style-type: "3. ";"><span data-preserver-spaces="true" style="background: transparent; margin-top: 0pt; margin-bottom: 0pt;">V4_2 branch patch</span></li><li style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; list-style-type: "4. ";"><span data-preserver-spaces="true" style="background: transparent; margin-top: 0pt; margin-bottom: 0pt;">V4_3 branch patch</span></li><li style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; list-style-type: "5. ";"><span data-preserver-spaces="true" style="background: transparent; margin-top: 0pt; margin-bottom: 0pt;">V4_4 branch patch</span></li><li style="background: transparent; margin-top: 0pt; margin-bottom: 0pt; list-style-type: "6. ";"><span data-preserver-spaces="true" style="background: transparent; margin-top: 0pt; margin-bottom: 0pt;">V4_5 branch patch</span></li></ol><div style="font-family: Arial, sans-serif; font-size: 14px;"><span></span></div>
<div class="protonmail_signature_block" style="font-family: Arial, sans-serif; font-size: 14px;">
    <div class="protonmail_signature_block-user">
        <pre><br>Regards<br>Kwangwon Seo<br><br>Bitnine Global Inc.<br>www.bitnine.net<br></pre>
    </div></div>