Re: BUG #17434: CREATE/DROP DATABASE can be executed in the same transaction with other commands
David G. Johnston <david.g.johnston@gmail.com>
From: "David G. Johnston" <david.g.johnston@gmail.com>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Bruce Momjian <bruce@momjian.us>, Yugo Nagata <nagata@sraoss.co.jp>, PostgreSQL mailing lists <pgsql-bugs@lists.postgresql.org>
Date: 2022-07-26T16:11:52Z
Lists: pgsql-bugs, pgsql-hackers
On Tue, Jul 26, 2022 at 9:03 AM Tom Lane <tgl@sss.pgh.pa.us> wrote: > "David G. Johnston" <david.g.johnston@gmail.com> writes: > > That leaves us with changing the documentation then, from: > > CREATE DATABASE cannot be executed inside a transaction block. > > to: > > CREATE DATABASE cannot be executed inside an explicit transaction block > (it > > will error in this case), and will commit (or rollback on failure) any > > implicit transaction it is a part of. > > That's not going to help anybody unless we also provide a definition of > "implicit transaction", which is a bit far afield for that man page. > > I did miss a bet in the proposed pipeline addendum, though. > I should have written > > ... However, there > are a few DDL commands (such as <command>CREATE DATABASE</command>) > that cannot be executed inside a transaction block. If one of > these is executed in a pipeline, it will, upon success, force an > immediate commit to preserve database consistency. > > That ties the info to our standard wording in the per-command man > pages. > > And we are back around to the fact that only by using libpq directly, or via the pipeline feature of pgbench, can one actually exert control over the implicit transaction. The psql and general SQL interface implementation are just going to Sync after each command and so everything looks like one transaction per command to them and only explicit transactions matter. From that, the adjustment you describe above is sufficient for me. David J.
Commits
-
Rethink handling of [Prevent|Is]InTransactionBlock in pipeline mode.
- f48aa5df4e03 11.19 landed
- ae47f8a9664a 14.7 landed
- 942cc240f959 13.10 landed
- 1cca4a75ffb8 12.14 landed
- 18431ee6f511 15.2 landed
- 20432f873140 16.0 landed
-
Doc: add comments about PreventInTransactionBlock/IsInTransactionBlock.
- fec80da849f3 11.19 landed
- e70cd16f2223 15.2 landed
- e613ace1f0d5 16.0 landed
- 8befa05d7889 14.7 landed
- 1949135e79e8 13.10 landed
- 17e9ecac0118 12.14 landed
-
Force immediate commit after CREATE DATABASE etc in extended protocol.
- f92944137cde 16.0 landed
- a0c632c1dea7 15.0 landed
- 9e3e1ac458ab 11.17 landed
- 968b89257b11 12.12 landed
- 964f42aa297b 10.22 landed
- 6c193c2ace32 13.8 landed
- 3e1297a63f76 14.5 landed