On Thu, Apr 13, 2023, at 8:26 AM, John Howroyd wrote:
> 
> However, the marshalling is presumably already happening (except any tie to 
> ordering to the original declared tuples); otherwise I really don't 
> understand how the with syntax (I think first suggested by Adrian Klaver) 
> would work.  @SQLAlchemy, if you wanted to off load reordering to database 
> side a combination solution might be considered:
> 
> with rslt as (
>   INSERT INTO mytable (a, b) 
>   SELECT p1, p2 FROM (VALUES (10, 11, 1), (12, 13, 2)) AS sel(p1, p2, num) 
> ORDER BY num 
>   RETURNING mytable.id, mytable.other_auto_gen
> )
> select * from rslt
> order by id
> ;
> 
> should work (not yet tested); and could be modified to the "sentinel" 
> columns.  

the solution I propose is essentially doing the same SQL as above, except we 
deliver the RETURNING in any order and do the final sort of "id" client side; 
we are only sending out batches of a few thousand rows at a time.    The 
"order" is not actually what's important, it's that we can relate server 
generated values to each tuple inside VALUES.


> @Mike Bayer: Isn't the order guarantee sufficient (wasn't that the original 
> assumption in the 2.0 code)?  I do quite understand the wish for having one 
> solution that fits all without dialectic dependencies.  However, in my 
> opinion, this one is going to run for some time and is heavily dependent on 
> internals.  With mssql, this seems to me to be deep down in the insert 
> internals and unlikely to change any time soon (at least until they start 
> losing market share because other DBMSs do it better).  Here (PostgreSQL) the 
> actual mechanisms required can probably be achieved much more readily (given 
> the will).  But the fundamental issue of matching code side objects with 
> database records (with side effects) remains and is only going to become more 
> prominent.  @PostgreSQL, isn't this your opportunity to lead the way again!-).

oh like I did for database URLs, right ? :)  which we then got in trouble for 
because we weren't using *pgs* format, which was inspired by ours in the first 
place...



(switching mail client to plain text, haven't used old school mailing lists in 
a long time...)


Reply via email to