Обсуждение: Transaction serialization

Поиск
Список
Период
Сортировка

Transaction serialization

От
Dusan Milanov
Дата:
Hi,

A question about transactions: does postgres report serialization errors before a transaction is committed? Obviously, it does on commit, but how about previous statements? Can there be an ERRCODE_T_R_SERIALIZATION_FAILURE error as a response to anything else but the commit?

Best regards,

Dusan Milanov

Re: Transaction serialization

От
Thomas Munro
Дата:
On Fri, Jun 24, 2016 at 4:13 AM, Dusan Milanov <dusanmilanov@gmail.com> wrote:
> Hi,
>
> A question about transactions: does postgres report serialization errors
> before a transaction is committed? Obviously, it does on commit, but how
> about previous statements? Can there be an ERRCODE_T_R_SERIALIZATION_FAILURE
> error as a response to anything else but the commit?

Yes.  See src/test/isolation/expected/project-manager.out, which shows
how to reach this error:

postgres=# UPDATE person SET is_project_manager = false WHERE person_id = 1;
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.

--
Thomas Munro
http://www.enterprisedb.com


Re: Transaction serialization

От
Dusan Milanov
Дата:
Thank you Thomas, this was exactly what I was looking for.


On 24.6.2016 0:57, Thomas Munro wrote:
> On Fri, Jun 24, 2016 at 4:13 AM, Dusan Milanov <dusanmilanov@gmail.com> wrote:
>> Hi,
>>
>> A question about transactions: does postgres report serialization errors
>> before a transaction is committed? Obviously, it does on commit, but how
>> about previous statements? Can there be an ERRCODE_T_R_SERIALIZATION_FAILURE
>> error as a response to anything else but the commit?
> Yes.  See src/test/isolation/expected/project-manager.out, which shows
> how to reach this error:
>
> postgres=# UPDATE person SET is_project_manager = false WHERE person_id = 1;
> 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.
>