On Wed, Dec 9, 2020 at 1:31 PM electrotype <electrot...@gmail.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.