Fix PREPARE in multi-statement case.
authorTatsuo Ishii <ishii@sraoss.co.jp>
Wed, 12 Jul 2023 07:35:46 +0000 (16:35 +0900)
committerTatsuo Ishii <ishii@sraoss.co.jp>
Thu, 13 Jul 2023 02:19:37 +0000 (11:19 +0900)
commit0d54c68d5cfba549e5b6fb7d3247d66ee50ab1d9
treee3424d6f0d229fa60fb8560a823ad74f3ccb80ea
parentc6d0aaed743b01b4eb7d31fce47839aafba89eec
Fix PREPARE in multi-statement case.

If multi-statement query includes PREPARE in the second or latter
position, and subsequent bind message uses the prepared statement, it
fails with "unable to bind" error because the prepared statement is not
saved in sent messages.

To fix this if such a case found after parsing the statement, create a
query context for the named statement and add it to the sent message
list.
Discussion: https://www.pgpool.net/pipermail/pgpool-general/2023-July/008931.html

For this new regression test 079..multi_prepare is added.
src/protocol/pool_proto_modules.c
src/test/regression/tests/079.multi_prepare/expected.txt [new file with mode: 0644]
src/test/regression/tests/079.multi_prepare/pgproto.data [new file with mode: 0644]
src/test/regression/tests/079.multi_prepare/test.sh [new file with mode: 0755]