Re: IDENTITY/GENERATED v36 Re: Final version of IDENTITY/GENERATED patch
От | Zoltan Boszormenyi |
---|---|
Тема | Re: IDENTITY/GENERATED v36 Re: Final version of IDENTITY/GENERATED patch |
Дата | |
Msg-id | 46215946.1030207@cybertec.at обсуждение исходный текст |
Ответ на | Re: IDENTITY/GENERATED v36 Re: Final version of IDENTITY/GENERATED patch (Tom Lane <tgl@sss.pgh.pa.us>) |
Ответы |
Re: IDENTITY/GENERATED v36 Re: Final version of IDENTITY/GENERATED
patch
|
Список | pgsql-patches |
Tom Lane írta: > Zoltan Boszormenyi <zb@cybertec.at> writes: > >> So, I should allow DROP DEFAULT, implement >> SET DEFAULT GENERATED ALWAYS AS >> and modify the catalog so the GENERATED property >> is part of pg_attrdef. >> > > Sounds good. > Finally here it is. >> What about IDENTITY? >> Should it also be part of pg_attrdef? There are two ways >> to implement it: have or don't have a notion of it. >> The latter would treat GENERATED BY DEFAULT AS IDENTITY >> the same as SERIAL. >> > > Is there any good reason to distinguish the two? > Actually, I needed to have a flag for IDENTITY but not for the reason above. I need it to distinguish between GENERATED ALWAYS AS IDENTITY and GENERATED ALWAYS AS ( expr ). Changes: - Rewritten the GENERATED/IDENTITY flags to be part of the default pg_attrdef This made the patch MUCH smaller. - SERIALs are now the same as INTEGER GENERATED BY DEFAULT AS IDENTITY - Allow DROP DEFAULT on GENERATED/IDENTITY columns - Implemented SET GENERATED ALWAYS AS - Modified syntax of SET GENERATED {ALWAYS | BY DEFAULT} AS IDENTITY so it reads as SET IDENTITY GENERATED {ALWAYS | BY DEFAULT} so compiling gram.y/gram.c doesn't give me errors. This DDL statement isn't part of SQL:2003 so it might be accepted as a PostgreSQL extension. - Modified behaviour of SET IDENTITY to also restore the DEFAULT expression. Someone might have done did a DROP DEFAULT before but kept the OWNED sequence. - Fixed behaviour of GENERATED columns regarding INSERT ... OVERRIDING SYSTEM VALUE and only those GENERATED columns get UPDATEd that are either explicitly modified with SET column = DEFAULT or one of their referenced columns are modified. - Testcase and documentation is modified to reflect the above. Please, review. -- ---------------------------------- Zoltán Böszörményi Cybertec Geschwinde & Schönig GmbH http://www.postgresql.at/
Вложения
В списке pgsql-patches по дате отправления: