[pgpool-hackers: 4333] Allow to load balance PREPARE
Tatsuo Ishii
ishii at sraoss.co.jp
Fri May 12 10:18:10 JST 2023
Currently it is not possible load balance PREPARE even if the prepared
query is read only SELECT. For example,
PREPARE foo AS SELECT 1;
is always sent to primary node (in streaming replication mode or
logical replication mode), or main node (in other mode).
Attached patch is trying to load balance PREPARE (and following
EXECUTE/DEALLOCATE). Documentation changes are not included yet.
For this following changes are made:
- is_select_query() looks into "query" member if node is
PrepareStmt. Also second argument "sql" (query string) is now
mandatory. If sql is NULL, warning is emitted and this function
returns false. If allow_sql_comments is off and node is PrepareStmt
and query is SelectStmt, is_select_query() does not return false
anymore.
- pool_has_function_call() looks into "query" member if node is
PrepareStmt.
- Add PREPARE/EXECUTE/DEALLOCATE test cases to 001.load_balance test.
- Add send_prepare() function which is similar to parse_before_bind in
extended query protocol case to keep up
disable_load_balance_on_write rule. send_prepare() is called by
SimpleQuery() when EXECUTE message is sent by frontend in SL mode so
that it sends PREPARE message to primary node if it has not sent to
primary because of load balance. Note that send_prepare() does
nothing if the clustering mode is other than SL mode. In native
replication mode or snapshot isolation mode, all backend has the
same data, and there's no point to keep up
disable_load_balance_on_write rule.
Comments/suggestions are welcome.
Best reagards,
--
Tatsuo Ishii
SRA OSS LLC
English: http://www.sraoss.co.jp/index_en/
Japanese:http://www.sraoss.co.jp
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-Allow-to-load-balance-with-PREPARE-EXECUTE-DEALLOCAT.patch
Type: text/x-patch
Size: 26089 bytes
Desc: not available
URL: <http://www.pgpool.net/pipermail/pgpool-hackers/attachments/20230512/b8a9db00/attachment.bin>
More information about the pgpool-hackers
mailing list