Re: JDBC driver - is "getGeneratedKeys()" guaranteed to return the ids in the same order a batch insert was made?

From: "David G(dot) Johnston" <david(dot)g(dot)johnston(at)gmail(dot)com>
To: electrotype <electrotype(at)gmail(dot)com>
Cc: "pgsql-generallists(dot)postgresql(dot)org" <pgsql-general(at)lists(dot)postgresql(dot)org>
Subject: Re: JDBC driver - is "getGeneratedKeys()" guaranteed to return the ids in the same order a batch insert was made?
Date: 2020-12-11 00:36:55
Message-ID: CAKFQuwZesZPEmnycdcwCYMGWJ=TVXqc=OhrwyopSKGfe=c+KSA@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

On Wed, Dec 9, 2020 at 1:31 PM electrotype <electrotype(at)gmail(dot)com> wrote:

> Agreed.
>
>
> However, this isn't really the purview of JDBC - I'm doubting it does
> anything that would cause the order to be different than what is received,
> and the batch items are sent and results processed sequentially.
>
> The main question is whether any batch items are inserting multiple
> records themselves - i.e., RETURNING * is producing multiple results.
> Whatever order RETURNING * produces is what the driver will capture - but
> it isn't responsible for guaranteeing that the order of multiple inserted
> records going in matches what comes out. PostgreSQL needs to make that
> claim. I don't see where it does (i've sent an email to see if adding such
> a claim to the documentation is proper). Done manually one can always do
> "WITH insert returning SELECT ORDER BY", but it doesn't seem workable for
> the driver to try and do that when adding the returning clause, which I
> presume is what is in scope here.
>
> David J.
>
> Thank you, it's appreciated! I'm sure this clarification would help other
> developers too.
>

My take is that there is presently no guarantee, and that with current
efforts to add parallelism it is quite probable that observation of such
non-orderedness is simply a matter of time. With batching it seems best to
combine its use with single inserts in order to avoid this problem.

David J.

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Atul Kumar 2020-12-11 08:11:20 Required checkpoints occurs too frequently
Previous Message Michael Lewis 2020-12-10 19:47:46 Re: Extended statistics for correlated columns, row estimates when values are not in MCVs list