Bug in MergeAttributesIntoExisting() function.

From: amul sul <sul_amul(at)yahoo(dot)co(dot)in>
To: PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org>
Subject: Bug in MergeAttributesIntoExisting() function.
Date: 2016-01-04 11:11:28
Message-ID: 1938741307.6256457.1451905888144.JavaMail.yahoo@mail.yahoo.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Hi,

In inheritance, child column's pg_attribute.attislocal flag not getting updated, if it is inherited using ALTER TABLE <child> INHERIT <parent>.

Due to this, if we try to drop column(s) from parent table, which are not getting drop from child.
Attached herewith is quick patch fixing this issue.

----------------------Demonstration:
----------------------
CREATE TABLE p1 (a int , b int, c int, d int);

CREATE TABLE c1 () inherits (p1);CREATE TABLE c2 (a int , b int, c int, d int);

--Drop parent's column
ALTER TABLE p1 DROP COLUMN b;
ALTER TABLE p1 DROP COLUMN c;
ALTER TABLE p1 DROP COLUMN d;

postgres=# \d p1
Table "public.p1"
Column | Type | Modifiers
--------+---------+-----------
a | integer |
Number of child tables: 2 (Use \d+ to list them.)

postgres=# \d c1
Table "public.c1"
Column | Type | Modifiers
--------+---------+-----------
a | integer |
Inherits: p1

postgres=# \d c2
Table "public.c2"
Column | Type | Modifiers
--------+---------+-----------
a | integer |
b | integer |
c | integer |
d | integer |
Inherits: p1

----------------------
You can see columns are not dropped from child c2 table, which we have inherited using ALTER command.

Regards,
Amul Sul

Attachment Content-Type Size
MergeAttributesIntoExisting_fix.patch application/octet-stream 2.3 KB

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Haribabu Kommi 2016-01-04 11:43:15 Re: Multi-tenancy with RLS
Previous Message Pavel Stehule 2016-01-04 11:05:49 Re: Proposal: SET ROLE hook