Другое поведение в pgjdbc-ng по сравнению с pgjdbc?

#java #pgjdbc-ng

Вопрос:

Я поменял драйвер jdbc postgresql с pgjdbc на pgjdbc-ng, чтобы использовать асинхронные уведомления, и у меня другое поведение с сериализуемым уровнем изоляции транзакций.

Выполнение запроса: insert into "_revision"(revision, timestamp) select coalesce(max(revision), 0) 1, transaction_timestamp() at time zone 'utc' from "_revision" returning revision дважды одновременно с уровнем изоляции транзакций, сериализуемым с помощью драйвера pgjdbc, приводит к ошибке:

 ERROR:  could not serialize access due to read/write dependencies among transactions
DETAIL:  Reason code: Canceled on identification as a pivot, during write.
HINT:  The transaction might succeed if retried.
 

В то время как то же самое с драйвером pgjdbc-ng приводит к ошибке:

 ERROR:  duplicate key value violates unique constraint "_revision_pkey"
DETAIL:  Key (revision)=(2) already exists.
 

Я не изменил выполняемый код, кроме настройки пула соединений hikari с правильным источником данных.
Кто-нибудь испытывал нечто подобное или знает, почему сценарий pgjdbc-ng не приводит к сбою сериализации?