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 | 46215A5E.6070201@cybertec.at обсуждение исходный текст |
Ответ на | Re: IDENTITY/GENERATED v36 Re: Final version of IDENTITY/GENERATED patch (Zoltan Boszormenyi <zb@cybertec.at>) |
Список | pgsql-patches |
Zoltan Boszormenyi írta: > 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. - Also allowed UPDATE on IDENTITY columns. > > Please, review. > > ------------------------------------------------------------------------ > > > ---------------------------(end of broadcast)--------------------------- > TIP 4: Have you searched our list archives? > > http://archives.postgresql.org > -- ---------------------------------- Zoltán Böszörményi Cybertec Geschwinde & Schönig GmbH http://www.postgresql.at/
В списке pgsql-patches по дате отправления: