Re: Guidance on INSERT RETURNING order

Поиск
Список
Период
Сортировка
От Mike Bayer
Тема Re: Guidance on INSERT RETURNING order
Дата
Msg-id 1f38632d-a3b0-4122-bc06-5422f97598f2@app.fastmail.com
обсуждение исходный текст
Ответ на Re: Guidance on INSERT RETURNING order  (Federico <cfederico87@gmail.com>)
Список pgsql-general
I'm not getting every reply in the list but I want to point this out from the archive version of this thread:

> > I was under the impression that when using INSERT SELECT ORDER BY the sequence
> > ids were generated using the select order.

> But someone said that’s not guaranteed, especially when INSERT will
> be parallelised later.

this should not matter.   as in my other message if INSERT INTO table SELECT a, b FROM (VALUES () () ()) ORDER BY... takes the SERIAL or IDENTITY column of the table, and creates a parse tree for that looks like INSERT INTO table (SELECT nextval(table.id), a, b FROM (SELECT a, b FROM (VALUES () () ()) ORDER BY), the INSERT can put the rows in any way it wants.  We don't care what INSERT does, we care about the generated sequence value, the nextval(table.id) part, which the SELECT should be emitting in order and occurs outside of the purview of the INSERT, according to other emails I have read on these lists (see my previous post).






On Tue, Apr 11, 2023, at 5:07 PM, Federico wrote:
On Tue, 11 Apr 2023 at 22:59, Thorsten Glaser <tg@evolvis.org> wrote:
>
> On Tue, 11 Apr 2023, Federico wrote:
>
> >The problem here is not having the auto increment id in a particular
>
> The id might not even be auto-increment but UUID or something…
> (I am surprised you would even try to insert multiple rows at once.)

Well the documentation makes no mention of any limitation on returning
and the observed behaviour has consistently been that returning is in
values order.
Again, that was SQLAlchemy's fault for assuming this (but the docs
surely did not help).

Also re-reading my reply, I've made a typo there, sorry. What it
should have read is:
  The problem here is not having the returned ids in a particular
order, is that there is apparently no correlation with the position of
an element in the values clause with the id generated.

Of course sorting the returned ids is only viable when using a serial
or identity column, that's why in the general case I've mentioned the
insert with sentinel column to ask if there are better or alternative
solutions.

Thanks for the reply, best
    Federico

>
> bye,
> //mirabilos
> --
> 15:41⎜<Lo-lan-do:#fusionforge> Somebody write a testsuite for helloworld :-)
>
>
>
>


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

Предыдущее
От: Thorsten Glaser
Дата:
Сообщение: Re: Guidance on INSERT RETURNING order
Следующее
От: Siddharth Jain
Дата:
Сообщение: Transaction Rollback errors