Re: PGSQL bug - "Column ??? is an identity column defined as GENERATED ALWAYS.",
Petr Hybler <petr.hybler@gmail.com>
From: Petr Hybler <petr.hybler@gmail.com>
To: Philip Semanchuk <philip@americanefficient.com>
Cc: Tom Lane <tgl@sss.pgh.pa.us>,
"David G. Johnston" <david.g.johnston@gmail.com>, Peter Eisentraut <peter.eisentraut@enterprisedb.com>, "pgsql-bugs@lists.postgresql.org" <pgsql-bugs@lists.postgresql.org>
Date: 2021-08-19T12:58:07Z
Lists: pgsql-bugs
I am using Sequelize - but I figured a way with bulkCreate there is an option to list fields I wanna use in the query, so I list the entire table down except the PK (Generated Identity column) ... anyway, thx for the response guys, much appreciated On Thu, Aug 19, 2021 at 2:43 PM Philip Semanchuk < philip@americanefficient.com> wrote: > > > > On Aug 19, 2021, at 12:17 AM, Petr Hybler <petr.hybler@gmail.com> wrote: > > > > Is there a possibility to have that fixed rather than using the > workaround? The problem is with ORM frameworks where there is no > possibility to use this clause OVERRIDING SYSTEM VALUE ... > > > > Depending on your ORM, it may be possible to alter how it constructs this > particular statement. For instance, SQLAlchemy 1.3 has a hook that we use > to change the syntax it generates for autoincrement PK columns. > > > https://docs.sqlalchemy.org/en/13/dialects/postgresql.html#postgresql-10-identity-columns > > > > > > On Wed, Aug 18, 2021 at 11:54 PM Tom Lane <tgl@sss.pgh.pa.us> wrote: > > "David G. Johnston" <david.g.johnston@gmail.com> writes: > > > On Wednesday, August 18, 2021, Peter Eisentraut <peter.eisentraut@ > > > enterprisedb.com> wrote: > > >> This has been fixed in PostgreSQL 14. > > > > > The OP is reporting a regression, saying it is fixed in v14 isn’t a > useful > > > response. Is it also fixed in v11.14? > > > > The OP would have to provide some evidence that there's actually any > > regression. AFAIK that code was like that since IDENTITY columns were > > introduced. v14 does improve matters, but we judged the fix too invasive > > to risk back-patching. > > > > BTW, the v11 error message points out a simple workaround, which > > seems to do the trick: > > > > regression=# CREATE TABLE sample_table ( > > id int8 NOT NULL GENERATED ALWAYS AS IDENTITY, > > name varchar(255) NOT NULL, > > description text NOT NULL, > > CONSTRAINT sample_table_pk PRIMARY KEY (id) > > ); > > CREATE TABLE > > > > regression=# INSERT INTO sample_table (id, name, description)VALUES > (DEFAULT, 'John > > Doe', 'Test description') > > , (DEFAULT, 'Jane Eod', 'Not working'); > > ERROR: cannot insert into column "id" > > DETAIL: Column "id" is an identity column defined as GENERATED ALWAYS. > > HINT: Use OVERRIDING SYSTEM VALUE to override. > > > > regression=# INSERT INTO sample_table (id, name, description) OVERRIDING > SYSTEM VALUE VALUES (DEFAULT, 'John > > Doe', 'Test description') > > , (DEFAULT, 'Jane Eod', 'Not working'); > > INSERT 0 2 > > > > regression=# table sample_table; > > id | name | description > > ----+----------+------------------ > > 1 | John +| Test description > > | Doe | > > 2 | Jane Eod | Not working > > (2 rows) > > > > > > Yeah, per spec you shouldn't have to say OVERRIDING SYSTEM VALUE > > for this case, but it didn't seem worth the risk of back-patching > > to improve that in stable branches. > > > > regards, tom lane > >