aboutsummaryrefslogtreecommitdiff
path: root/src/backend/executor/nodeModifyTable.c
diff options
context:
space:
mode:
authorAlvaro Herrera <alvherre@alvh.no-ip.org>2023-02-21 10:56:37 +0100
committerAlvaro Herrera <alvherre@alvh.no-ip.org>2023-02-21 10:56:37 +0100
commit038f586d5f1d90c6ed58544a068696bb81a4e12e (patch)
treeec6f89684df7afedd16410c36ab25e061e296e46 /src/backend/executor/nodeModifyTable.c
parent8028e294b456bf1539649527fd98b3985fa4752a (diff)
downloadpostgresql-038f586d5f1d90c6ed58544a068696bb81a4e12e.tar.gz
postgresql-038f586d5f1d90c6ed58544a068696bb81a4e12e.zip
pgbench: Prepare commands in pipelines in advance
Failing to do so results in an error when a pgbench script tries to start a serializable transaction inside a pipeline, because by the time BEGIN ISOLATION LEVEL SERIALIZABLE is executed, we're already in a transaction that has acquired a snapshot, so the server rightfully complains. We can work around that by preparing all commands in the pipeline before actually starting the pipeline. This changes the existing code in two aspects: first, we now prepare each command individually at the point where that command is about to be executed; previously, we would prepare all commands in a script as soon as the first command of that script would be executed. It's hard to see that this would make much of a difference (particularly since it only affects the first time to execute each script in a client), but I didn't actually try to measure it. Secondly, we no longer use PQsendPrepare() in pipeline mode, but only PQprepare. There's no specific reason for this change other than no longer needing to do differently in pipeline mode. (Previously we had no choice, because in pipeline mode PQprepare could not be used.) Backpatch to 14, where pgbench got support for pipeline mode. Reported-by: Yugo NAGATA <nagata@sraoss.co.jp> Discussion: https://postgr.es/m/20210716153013.fc53b1c780b06fccc07a7f0d@sraoss.co.jp
Diffstat (limited to 'src/backend/executor/nodeModifyTable.c')
0 files changed, 0 insertions, 0 deletions