Bug in MergeAttributesIntoExisting() function.

Поиск
Список
Период
Сортировка
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
Вложения

В списке pgsql-hackers по дате отправления:

Предыдущее
От: Pavel Stehule
Дата:
Сообщение: Re: Proposal: SET ROLE hook
Следующее
От: Haribabu Kommi
Дата:
Сообщение: Re: Multi-tenancy with RLS