Per the error codes section of the manual the 40xxxx
SQLSTATE
category is "transaction rollback".
It includes the error codes:
40000
transaction_rollback
40002
transaction_integrity_constraint_violation
40001
serialization_failure
40003
statement_completion_unknown
40P01
deadlock_detected
Of these, I would not generally expect transaction_integrity_constraint_violation
to trigger a retry, since that'll be raised when a DEFERRED
foreign key check causes a transaction to abort when commit is attempted. This is unlikely to go away if retried unless your application has issues with concurrency and locking design.
I haven't encountered statement_completion_unknown
; I'd suggest looking it up.
Personally I would retry on deadlock_detected
and serialization_failure
only.