Re: Identity column behavior discrepancies when inserting one or many rows

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: Identity column behavior discrepancies when inserting one or many rows
Дата
Msg-id 3198997.1602526335@sss.pgh.pa.us
обсуждение исходный текст
Ответ на Re: Identity column behavior discrepancies when inserting one or many rows  ("David G. Johnston" <david.g.johnston@gmail.com>)
Список pgsql-bugs
"David G. Johnston" <david.g.johnston@gmail.com> writes:
> On Mon, Oct 12, 2020 at 4:04 AM Jean Prulière <jean@oclock.io> wrote:
>> Here is a very simple script to reproduce what we encountered :
>> 
>> CREATE TABLE test (
>> id int GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
>> sometext text NOT NULL
>> );
>> 
>> -- that one works : INSERT 0 1
>> -- I think it should not and throw a 428C9
>> INSERT INTO test (id, sometext)
>> 
>> VALUES (DEFAULT, 'test');
>> 
>> -- this one does not : SQL state : 428C9
>> INSERT INTO test (id, sometext)
>> 
>> VALUES (DEFAULT, 'test2'),
>> (DEFAULT, 'test3');

> I agree the inconsistency seems to be undocumented but I wonder why the
> second case doesn't work, not why the first one does.  INSERT says: "For a
> generated column, specifying this is permitted but merely specifies the
> normal behavior of computing the column from its generation expression."
> That says the first case works, default means the same as omitting the
> column altogether.

Yeah.  Ideally both examples should work.  The fact that the second one
does not is an implementation deficiency: the code that recognizes no-op
DEFAULTs for this purpose doesn't descend into multi-row VALUES lists.
Somebody submitted a patch to improve that awhile ago, but I didn't like
the first version and there hasn't been an update yet:

https://commitfest.postgresql.org/30/2681/

Perhaps you could get your students interested in rewriting that patch?

            regards, tom lane



В списке pgsql-bugs по дате отправления:

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: BUG #16666: Slight memory leak when running pg_ctl reload
Следующее
От: Tom Lane
Дата:
Сообщение: Re: BUG #16329: Valgrind detects an invalid read when building a gist index with buffering