On Mon, Jul 18, 2022 at 10:39 AM Andrew Dunstan <andrew@dunslane.net> wrote:
> On 2022-07-18 Mo 10:33, Justin Pryzby wrote:
> > It's easy to use CREATE TABLE..LIKE + ALTER..ATTACH PARTITION to avoid
> > acquiring a strong lock when creating a new partition.
> > But it's also easy to forget.
> >
> > commit 76c0d1198cf2908423b321cd3340d296cb668c8e
> > Author: Justin Pryzby <pryzbyj@telsasoft.com>
> > Date: Mon Jul 18 09:24:55 2022 -0500
> >
> > doc: mention CREATE+ATTACH PARTITION as an alternative to CREATE TABLE..PARTITION OF
> >
> > See also: 898e5e3290a72d288923260143930fb32036c00c
> > Should backpatch to v12
> >
> > diff --git a/doc/src/sgml/ref/create_table.sgml b/doc/src/sgml/ref/create_table.sgml
> > index 6bbf15ed1a4..db7d8710bae 100644
> > --- a/doc/src/sgml/ref/create_table.sgml
> > +++ b/doc/src/sgml/ref/create_table.sgml
> > @@ -619,6 +619,16 @@ WITH ( MODULUS <replaceable class="parameter">numeric_literal</replaceable>, REM
> > with <literal>DROP TABLE</literal> requires taking an <literal>ACCESS
> > EXCLUSIVE</literal> lock on the parent table.
> > </para>
> > +
> > + <para>
> > + Note that creating a partition acquires an <literal>ACCESS
> > + EXCLUSIVE</literal> lock on the parent table.
> > + It may be preferable to first CREATE a separate table and then ATTACH it,
> > + which does not require as strong of a lock.
> > + See <link linkend="sql-altertable-attach-partition">ATTACH PARTITION</link>
> > + and <xref linkend="ddl-partitioning"/> for more information.
> > + </para>
> > +
> > </listitem>
> > </varlistentry>
> >
>
> Style nitpick.
>
> I would prefer "does not require as strong a lock."
>
FWIW, this is also proper grammar as well.
After reading this again, it isn't clear to me that this advice would
be more appropriately placed into Section 5.11, aka
https://www.postgresql.org/docs/current/ddl-partitioning.html, but in
lieu of a specific suggestion for where to place it there (I haven't
settled on one yet), IMHO, I think the first sentence of the suggested
change should be rewritten as:
<para>
Note that creating a partition using <literal>PARTITION OF<literal>
requires taking an <literal>ACCESS EXCLUSIVE</literal> lock on the parent table.
It may be preferable to first CREATE a separate table...
Robert Treat
https://xzilla.net