Обсуждение: Transaction serialization
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
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
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
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. >