Re: Fix ALTER TABLE DROP EXPRESSION with inheritance hierarchy
| От | BharatDB | 
|---|---|
| Тема | Re: Fix ALTER TABLE DROP EXPRESSION with inheritance hierarchy | 
| Дата | |
| Msg-id | CAAh00ER+dssk3U6hniUzUFLnYu-RDLVQVGo0TiMivNLj8EEWTA@mail.gmail.com обсуждение исходный текст  | 
		
| Ответ на | Re: Fix ALTER TABLE DROP EXPRESSION with inheritance hierarchy (Kirill Reshke <reshkekirill@gmail.com>) | 
| Список | pgsql-hackers | 
Hi all,
I tried to fix a bug in PostgreSQL where ALTER TABLE ... DROP EXPRESSION fails on multi-level inheritance hierarchies.
Bug:
 When a parent table has a generated column and child/grandchild tables inherit from it, executing:
ALTER TABLE parent ALTER COLUMN d DROP EXPRESSION;
ERROR: ALTER TABLE / DROP EXPRESSION must be applied to child tables too
Fix Details:
Updated file: src/backend/commands/tablecmds.c
Function modified: ATPrepDropExpression()
Change: Added !recursing check to ensure proper recursion across inheritance.
if (!recurse && !recursing &&
find_inheritance_children(RelationGetRelid(rel), lockmode))
ereport(ERROR,
errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
errmsg("ALTER TABLE / DROP EXPRESSION must be applied to child tables too"),
errhint("Do not specify the ONLY keyword."));
Test Query DROP TABLE IF EXISTS parent CASCADE;
CREATE TABLE parent (a int, d int GENERATED ALWAYS AS (11) STORED);
CREATE TABLE child () INHERITS (parent);
CREATE TABLE grandchild () INHERITS (child);
ALTER TABLE parent ALTER COLUMN d DROP EXPRESSION;Output ALTER TABLE
On Thu, 28 Aug 2025 at 08:35, jian he <jian.universality@gmail.com> wrote:
>
> That means, we don't need to change the ATPrepDropExpression function
> argument for now?
Sure. V3 with this attached, and I think we can move cf entry to RFC
--
Best regards,
Kirill Reshke
Вложения
В списке pgsql-hackers по дате отправления: