Re: [HACKERS] pg_attribute.attisinherited ?
| От | Tom Lane |
|---|---|
| Тема | Re: [HACKERS] pg_attribute.attisinherited ? |
| Дата | |
| Msg-id | 18628.1030735785@sss.pgh.pa.us обсуждение исходный текст |
| Ответ на | Re: [HACKERS] pg_attribute.attisinherited ? (Alvaro Herrera <alvherre@atentus.com>) |
| Ответы |
Re: [HACKERS] pg_attribute.attisinherited ?
|
| Список | pgsql-patches |
Alvaro Herrera <alvherre@atentus.com> writes:
> - Adds a new attribute in pg_attribute named attisinherited.
> - Creation of tables marks it true for attributes that are inherited
> - Addition of new attribute to existing inherited table marks the
> attribute as inherited for child tables.
> - Checked when trying to rename inherited attributes: if table has
> inheritors, only allow renaming if asked to recurse. Disallow
> renaming for child tables only.
> - Checked when trying to drop inherited attributes: if table has
> inheritors, mark attribute as non-inherited for direct inheritors.
> Disallow dropping for child tables only.
I've applied this patch after a little editorializing. FYI ---
* copyfuncs.c,equalfuncs.c,outfuncs.c,readfuncs.c needed to be updated
for the field added to ColumnDef. In general, any time you alter the
definition of a Node structure, you gotta update these files.
* I didn't like having to touch all the callers of TupleDescInitEntry,
so I just made it initialize attisinherited to false. In the one
place where attisinherited might be set true, just update after return
from TupleDescInitEntry.
* Moved the checks for rename/drop ONLY with child tables into
tablecmds.c instead of utility.c, so that they'd be applied after
grabbing an exclusive lock on the table, not before. Otherwise a
child could be added after you look.
regards, tom lane
В списке pgsql-patches по дате отправления: