update ALTER TABLE with ATTACH PARTITION lock mode

Started by Justin Pryzbyover 6 years ago11 messageshackers
Jump to latest
#1Justin Pryzby
pryzby@telsasoft.com

commit #898e5e32 (Allow ATTACH PARTITION with only ShareUpdateExclusiveLock)
updates ddl.sgml but not alter_table.sgml, which only says:

https://www.postgresql.org/docs/12/release-12.html
|An ACCESS EXCLUSIVE lock is held unless explicitly noted.

Find attached patch, which also improve language in several related places.

"Without such a constraint": SUCH could refer to either of the constraints..

"because it is no longer necessary.": In our use case, we prefer to keep the
redundant constraint, to avoid having to add it back if we detach/reattach
again in the future..

Attachments:

v1-0001-Mention-reduced-locking-strength-of-ATTACH-PARTIT.patchtext/x-diff; charset=us-asciiDownload+7-1
v1-0002-Tweak-language-for-ATTACH-PARTITION-docs.patchtext/x-diff; charset=us-asciiDownload+10-11
#2Michael Paquier
michael@paquier.xyz
In reply to: Justin Pryzby (#1)
Re: update ALTER TABLE with ATTACH PARTITION lock mode

On Sun, Oct 27, 2019 at 07:12:07PM -0500, Justin Pryzby wrote:

commit #898e5e32 (Allow ATTACH PARTITION with only ShareUpdateExclusiveLock)
updates ddl.sgml but not alter_table.sgml, which only says:

https://www.postgresql.org/docs/12/release-12.html
|An ACCESS EXCLUSIVE lock is held unless explicitly noted.

+     <para>
+      Attaching a partition acquires a <literal>SHARE UPDATE EXCLUSIVE</literal>
+      lock on the partitioned table, in addition to an
+      <literal>ACCESS EXCLUSIVE</literal> lock on the partition.
+     </para>
Updating the docs of ALTER TABLE sounds like a good idea.  This
sentence looks fine to me.  Perhaps others have suggestions?

Find attached patch, which also improve language in several related places.

Not sure that these are actually improvements.
--
Michael

#3Alvaro Herrera
alvherre@2ndquadrant.com
In reply to: Michael Paquier (#2)
Re: update ALTER TABLE with ATTACH PARTITION lock mode

On 2019-Oct-28, Michael Paquier wrote:

On Sun, Oct 27, 2019 at 07:12:07PM -0500, Justin Pryzby wrote:

commit #898e5e32 (Allow ATTACH PARTITION with only ShareUpdateExclusiveLock)
updates ddl.sgml but not alter_table.sgml, which only says:

https://www.postgresql.org/docs/12/release-12.html
|An ACCESS EXCLUSIVE lock is held unless explicitly noted.

+     <para>
+      Attaching a partition acquires a <literal>SHARE UPDATE EXCLUSIVE</literal>
+      lock on the partitioned table, in addition to an
+      <literal>ACCESS EXCLUSIVE</literal> lock on the partition.
+     </para>
Updating the docs of ALTER TABLE sounds like a good idea.  This
sentence looks fine to me.  Perhaps others have suggestions?

Doesn't the command also acquire a lock on the default partition if
there is one? It sounds worth noting.

Find attached patch, which also improve language in several related places.

Not sure that these are actually improvements.

I think some of them (most?) are clear improvements.

--
�lvaro Herrera https://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

#4Justin Pryzby
pryzby@telsasoft.com
In reply to: Alvaro Herrera (#3)
Re: update ALTER TABLE with ATTACH PARTITION lock mode (docs)

On Mon, Oct 28, 2019 at 12:06:44PM -0300, Alvaro Herrera wrote:

On 2019-Oct-28, Michael Paquier wrote:

On Sun, Oct 27, 2019 at 07:12:07PM -0500, Justin Pryzby wrote:

commit #898e5e32 (Allow ATTACH PARTITION with only ShareUpdateExclusiveLock)
updates ddl.sgml but not alter_table.sgml, which only says:

https://www.postgresql.org/docs/12/release-12.html
|An ACCESS EXCLUSIVE lock is held unless explicitly noted.

+     <para>
+      Attaching a partition acquires a <literal>SHARE UPDATE EXCLUSIVE</literal>
+      lock on the partitioned table, in addition to an
+      <literal>ACCESS EXCLUSIVE</literal> lock on the partition.
+     </para>
Updating the docs of ALTER TABLE sounds like a good idea.  This
sentence looks fine to me.  Perhaps others have suggestions?

Doesn't the command also acquire a lock on the default partition if
there is one? It sounds worth noting.

I suppose it should something other than partition(ed), since partitions can be
partitioned, too...

Attaching a partition acquires a <literal>SHARE UPDATE EXCLUSIVE</literal>
lock on the parent table, in addition to
<literal>ACCESS EXCLUSIVE</literal> locks on the child table and the
<literal>DEFAULT</literal> partition (if any).

Thanks,
Justin

#5Amit Langote
Langote_Amit_f8@lab.ntt.co.jp
In reply to: Alvaro Herrera (#3)
Re: update ALTER TABLE with ATTACH PARTITION lock mode

Hello,

On Tue, Oct 29, 2019 at 12:13 AM Alvaro Herrera
<alvherre@2ndquadrant.com> wrote:

On 2019-Oct-28, Michael Paquier wrote:

On Sun, Oct 27, 2019 at 07:12:07PM -0500, Justin Pryzby wrote:

commit #898e5e32 (Allow ATTACH PARTITION with only ShareUpdateExclusiveLock)
updates ddl.sgml but not alter_table.sgml, which only says:

https://www.postgresql.org/docs/12/release-12.html
|An ACCESS EXCLUSIVE lock is held unless explicitly noted.

+     <para>
+      Attaching a partition acquires a <literal>SHARE UPDATE EXCLUSIVE</literal>
+      lock on the partitioned table, in addition to an
+      <literal>ACCESS EXCLUSIVE</literal> lock on the partition.
+     </para>
Updating the docs of ALTER TABLE sounds like a good idea.  This
sentence looks fine to me.  Perhaps others have suggestions?

Doesn't the command also acquire a lock on the default partition if
there is one? It sounds worth noting.

Find attached patch, which also improve language in several related places.

Not sure that these are actually improvements.

I think some of them (most?) are clear improvements.

As someone who has written some of those lines, I agree that Justin's
tweaks make them more readable, so +1 to apply 0002 patch too.

Thanks,
Amit

#6Michael Paquier
michael@paquier.xyz
In reply to: Justin Pryzby (#4)
Re: update ALTER TABLE with ATTACH PARTITION lock mode (docs)

On Mon, Oct 28, 2019 at 10:56:33PM -0500, Justin Pryzby wrote:

I suppose it should something other than partition(ed), since partitions can be
partitioned, too...

Attaching a partition acquires a <literal>SHARE UPDATE EXCLUSIVE</literal>
lock on the parent table, in addition to
<literal>ACCESS EXCLUSIVE</literal> locks on the child table and the
<literal>DEFAULT</literal> partition (if any).

In this context, "on the child table" sounds a bit confusing? Would
it make more sense to say the "on the table to be attached" instead?
--
Michael

#7Justin Pryzby
pryzby@telsasoft.com
In reply to: Michael Paquier (#6)
Re: update ALTER TABLE with ATTACH PARTITION lock mode (docs)

On Thu, Oct 31, 2019 at 06:07:34PM +0900, Michael Paquier wrote:

On Mon, Oct 28, 2019 at 10:56:33PM -0500, Justin Pryzby wrote:

I suppose it should something other than partition(ed), since partitions can be
partitioned, too...

Attaching a partition acquires a <literal>SHARE UPDATE EXCLUSIVE</literal>
lock on the parent table, in addition to
<literal>ACCESS EXCLUSIVE</literal> locks on the child table and the
<literal>DEFAULT</literal> partition (if any).

In this context, "on the child table" sounds a bit confusing? Would
it make more sense to say the "on the table to be attached" instead?

I guess you mean because it's not a child until after the ALTER. Yes, that
makes sense.

Thanks,
Justin

#8Michael Paquier
michael@paquier.xyz
In reply to: Justin Pryzby (#7)
Re: update ALTER TABLE with ATTACH PARTITION lock mode (docs)

On Fri, Nov 01, 2019 at 08:59:48AM -0500, Justin Pryzby wrote:

I guess you mean because it's not a child until after the ALTER. Yes, that
makes sense.

Yes, perhaps you have another idea than mine on how to shape this
sentence?
--
Michael

#9Justin Pryzby
pryzby@telsasoft.com
In reply to: Michael Paquier (#8)
Re: update ALTER TABLE with ATTACH PARTITION lock mode (docs)

On Fri, Nov 01, 2019 at 11:01:22PM +0900, Michael Paquier wrote:

On Fri, Nov 01, 2019 at 08:59:48AM -0500, Justin Pryzby wrote:

I guess you mean because it's not a child until after the ALTER. Yes, that
makes sense.

Yes, perhaps you have another idea than mine on how to shape this
sentence?

I can't think of anything better.

Attaching a partition acquires a <literal>SHARE UPDATE EXCLUSIVE</literal> lock
on the parent table, in addition to <literal>ACCESS EXCLUSIVE</literal> locks
on the table to be attached and the <literal>DEFAULT</literal> partition (if
any).

Justin

#10Michael Paquier
michael@paquier.xyz
In reply to: Justin Pryzby (#9)
Re: update ALTER TABLE with ATTACH PARTITION lock mode (docs)

On Fri, Nov 01, 2019 at 11:58:43AM -0500, Justin Pryzby wrote:

Attaching a partition acquires a <literal>SHARE UPDATE EXCLUSIVE</literal> lock
on the parent table, in addition to <literal>ACCESS EXCLUSIVE</literal> locks
on the table to be attached and the <literal>DEFAULT</literal> partition (if
any).

Sounds fine. So gathering everything I get the attached. Any
thoughts from others?
--
Michael

Attachments:

partition-docs-v3.patchtext/x-diff; charset=us-asciiDownload+18-10
#11Michael Paquier
michael@paquier.xyz
In reply to: Michael Paquier (#10)
Re: update ALTER TABLE with ATTACH PARTITION lock mode (docs)

On Sat, Nov 02, 2019 at 05:19:11PM +0900, Michael Paquier wrote:

Sounds fine. So gathering everything I get the attached. Any
thoughts from others?

Committed after splitting the changes in two as originally proposed.
--
Michael