| From: | Vik Fearing <vik(at)postgresfriends(dot)org> | 
|---|---|
| To: | Peter Eisentraut <peter(dot)eisentraut(at)enterprisedb(dot)com>, pgsql-hackers <pgsql-hackers(at)postgresql(dot)org> | 
| Subject: | Re: future of serial and identity columns | 
| Date: | 2022-10-07 12:02:52 | 
| Message-ID: | eae8883e-bbc6-82b6-1f10-77681ddb2599@postgresfriends.org | 
| Views: | Whole Thread | Raw Message | Download mbox | Resend email | 
| Thread: | |
| Lists: | pgsql-hackers | 
On 10/4/22 09:41, Peter Eisentraut wrote:
> In PostgreSQL 10, we added identity columns, as an alternative to serial 
> columns (since 6.something).  They mostly work the same.  Identity 
> columns are SQL-conforming, have some more features (e.g., overriding 
> clause), and are a bit more robust in schema management.  Some of that 
> was described in [0].  AFAICT, there have been no complaints since that 
> identity columns lack features or are somehow a regression over serial 
> columns.
> 
> But clearly, the syntax "serial" is more handy, and most casual examples 
> use that syntax.  So it seems like we are stuck with maintaining these 
> two variants in parallel forever.  I was thinking we could nudge this a 
> little by remapping "serial" internally to create an identity column 
> instead.  At least then over time, the use of the older serial 
> mechanisms would go away.
> 
> Note that pg_dump dumps a serial column in pieces (CREATE SEQUENCE + 
> ALTER SEQUENCE ... OWNED BY + ALTER TABLE ... SET DEFAULT).  So if we 
> did this, any existing databases would keep their old semantics, and 
> those who really need it can manually create the old semantics as well.
> 
> Attached is a demo patch how the implementation of this change would 
> look like.  This creates a bunch of regression test failures, but 
> AFAICT, those are mainly display differences and some very peculiar test 
> setups that are intentionally examining some edge cases.  These would 
> need to be investigated in more detail, of course.
I haven't tested the patch yet, just read it.
Is there any reason to use BY DEFAULT over ALWAYS?  I tend to prefer the 
latter.
-- 
Vik Fearing
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Magnus Hagander | 2022-10-07 12:07:34 | Re: future of serial and identity columns | 
| Previous Message | Robert Haas | 2022-10-07 11:59:08 | Re: use has_privs_of_role() for pg_hba.conf |