Re: Serializable transactions and SQLException - Mailing list pgsql-jdbc

From Oliver Jowett
Subject Re: Serializable transactions and SQLException
Date
Msg-id 41815066.1060308@opencloud.com
Whole thread Raw
In response to Serializable transactions and SQLException  (Giampaolo Tomassoni <g.tomassoni@libero.it>)
List pgsql-jdbc
Giampaolo Tomassoni wrote:
> Dears,
>
> I would like to develop java code using the pgsql-jdbc driver on serializable
> isolated transactions. The (general) pgsql manual states that this, of
> course, may cause concurrent updating transaction failures to inform the
> client to retry the transaction as a whole.
>
> This is said to be reported by the error message:
>
>     ERROR:  Can't serialize access due to concurrent update
>
>
> Great. I want to cope with it. But what's the SQLException.getSQLState() value
> associated to this? Or is it a SQLException.getErrorCode()? Is this value
> something 'standard', in the sense that, ie., if I need to switch to Oracle
> it works fine? Is there a better way to identify 'please, retry' suggestions
> than browsing the SQLException object?

Your best bet is to use a 7.4 or later server and inspect the SQLState
of the exception.

To find out what SQLState to expect, either try it and see, or take a
look at src/include/utils/errcodes.h in the server source tree and pair
it up with the appropriate ereport() call you are interested in. For
transaction serialization failures it is
ERRCODE_T_R_SERIALIZATION_FAILURE which has a SQLState of 40001.

SQLStates are somewhat standardized around SQL99. The comments in
errcodes.h say:

>>  * The SQL99 code set is rather impoverished, especially in the area of
>>  * syntactical and semantic errors.  We have borrowed codes from IBM's DB2
>>  * and invented our own codes to develop a useful code set.

I have no idea what Oracle does in this area.

-O

pgsql-jdbc by date:

Previous
From: skeize@gmail.com (skeize@gmail.com)
Date:
Subject: Setting up JDBC on a Windows Platform (PostgreSQL)
Next
From: Oliver Jowett
Date:
Subject: Re: PGobject overhaul (was Re: tightening up on use of oid