Re: BUG #17434: CREATE/DROP DATABASE can be executed in the same transaction with other commands

From: "David G(dot) Johnston" <david(dot)g(dot)johnston(at)gmail(dot)com>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: Bruce Momjian <bruce(at)momjian(dot)us>, Yugo Nagata <nagata(at)sraoss(dot)co(dot)jp>, PostgreSQL mailing lists <pgsql-bugs(at)lists(dot)postgresql(dot)org>
Subject: Re: BUG #17434: CREATE/DROP DATABASE can be executed in the same transaction with other commands
Date: 2022-07-26 16:11:52
Message-ID: CAKFQuwYaN+SJyHcXyjAwZ7zRCze+6Xj7ns_hOEg2+fhZEJUOHg@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs pgsql-hackers

On Tue, Jul 26, 2022 at 9:03 AM Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> wrote:

> "David G. Johnston" <david(dot)g(dot)johnston(at)gmail(dot)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.

In response to

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message Tom Lane 2022-07-26 16:14:19 Re: BUG #17434: CREATE/DROP DATABASE can be executed in the same transaction with other commands
Previous Message Tom Lane 2022-07-26 16:03:06 Re: BUG #17434: CREATE/DROP DATABASE can be executed in the same transaction with other commands

Browse pgsql-hackers by date

  From Date Subject
Next Message Tom Lane 2022-07-26 16:14:19 Re: BUG #17434: CREATE/DROP DATABASE can be executed in the same transaction with other commands
Previous Message Tom Lane 2022-07-26 16:04:33 Re: Unprivileged user can induce crash by using an SUSET param in PGOPTIONS