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

Поиск
Список
Период
Сортировка
От Dave Cramer
Тема Re: JDBC driver - is "getGeneratedKeys()" guaranteed to return the ids in the same order a batch insert was made?
Дата
Msg-id CADK3HHKHYFxHucSuThrVngdDFaZRUpTK0jo-H-ifZM+UEDPaMg@mail.gmail.com
обсуждение исходный текст
Ответ на Re: JDBC driver - is "getGeneratedKeys()" guaranteed to return the ids in the same order a batch insert was made?  ("David G. Johnston" <david.g.johnston@gmail.com>)
Список pgsql-general



On Thu, 10 Dec 2020 at 19:37, David G. Johnston <david.g.johnston@gmail.com> wrote:
On Wed, Dec 9, 2020 at 1:31 PM electrotype <electrotype@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.

I'd have to agree.

Dave Cramer
www.postgres.rocks 

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

Предыдущее
От: "Peter J. Holzer"
Дата:
Сообщение: Re: Set COLLATE on a session level
Следующее
От: Stephen Frost
Дата:
Сообщение: Re: "Required checkpoints occurs too frequently"