Re: docs: clarify ALTER TABLE behavior on partitioned tables

From: "David G(dot) Johnston" <david(dot)g(dot)johnston(at)gmail(dot)com>
To: Zsolt Parragi <zsolt(dot)parragi(at)percona(dot)com>
Cc: Chao Li <li(dot)evan(dot)chao(at)gmail(dot)com>, Postgres hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>, Amit Kapila <amit(dot)kapila16(at)gmail(dot)com>
Subject: Re: docs: clarify ALTER TABLE behavior on partitioned tables
Date: 2026-01-24 01:16:23
Message-ID: CAKFQuwbUVLeeooQWc0TY7NJS05RexG_fOY5cz2S4H3sDGKQ_qA@mail.gmail.com
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Fri, Jan 23, 2026 at 5:57 PM David G. Johnston <
david(dot)g(dot)johnston(at)gmail(dot)com> wrote:

>
>> "A nonrecursive DROP COLUMN (i.e., ALTER TABLE ONLY ... DROP COLUMN)
>> never removes any descendant columns, but instead marks them as
>> independently defined rather than inherited."
>>
>> This part is now undocumented, it was only mentioned in this paragraph.
>>
>
> True, it's left implied instead of explicitly stated. Any column that
> exists on a child but not the parent is by definition "independently
> defined". So if either ONLY is supplied or the rules for cascading delete
> are not met the result is children with independently defined columns with
> that name.
>

> The original note was wrong anyway for the two-parent case - the second
> parent prevents the marking as independent when the first parent's column
> is dropped.
>

Decided to test this one and I see the original wording was correct and we
will need to keep a note that in the two-parent ONLY case the un-dropped
children are marked both dependent and independent.

Change:

<para>
For inheritance setups, a descendant column is removed only if both
of the
following are true: this is the only parent defining the column, and
the column
was never independently defined in the descendant.
</para>

To:

"For inheritance setups, a descendant column is removed only if all the
following are true: ONLY is not specified, no other parent defines the
column, and the column is not marked as having been independent.
Otherwise, the descendant column is instead marked as having
been independent.

If we think that deserves a bit longer explanation about that/why/how a
column can be both dependent and "having been independent" we should
cross-reference to a more appropriate location. Here we just state this is
one way that condition can materialize.

David J.

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message jian he 2026-01-24 02:18:49 Re: ON CONFLICT DO SELECT (take 3)
Previous Message Jacob Champion 2026-01-24 01:02:09 Re: [oauth] Stabilize the libpq-oauth ABI (and allow alternative implementations?)