Re: Guidance on INSERT RETURNING order

From: "Mike Bayer" <mike_mp(at)zzzcomputing(dot)com>
To: Federico <cfederico87(at)gmail(dot)com>, "Thorsten Glaser" <tg(at)evolvis(dot)org>
Cc: pgsql-general(at)lists(dot)postgresql(dot)org
Subject: Re: Guidance on INSERT RETURNING order
Date: 2023-04-11 23:05:10
Message-ID: 1f38632d-a3b0-4122-bc06-5422f97598f2@app.fastmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: 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(at)evolvis(dot)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 :-)
> >
> >
> >
> >
>

In response to

Browse pgsql-general by date

  From Date Subject
Next Message Siddharth Jain 2023-04-11 23:31:25 Transaction Rollback errors
Previous Message Thorsten Glaser 2023-04-11 22:20:56 Re: Guidance on INSERT RETURNING order