From: | Matti Aarnio <matti(dot)aarnio(at)methics(dot)fi> |
---|---|
To: | Heikki Linnakangas <hlinnakangas(at)vmware(dot)com> |
Cc: | pgsql-bugs(at)postgresql(dot)org |
Subject: | Re: BUG #7865: Unexpected error code on insert of duplicate to composite primary key |
Date: | 2013-02-12 00:04:43 |
Message-ID: | 5119871B.6040506@methics.fi |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-bugs |
On 02/11/2013 07:52 PM, Heikki Linnakangas wrote:
> On 11.02.2013 17:34, Matti Aarnio wrote:
>> } catch (SQLException e) {
>> int code = e.getErrorCode();
>> if (code == 20000 // Derby
>> || code == 23505) {// PostgreSQL, Oracle, ...
>> System.out.println("Expected SQL duplicate insert indication
>> status code: "+code)
>> } else {
>> System.out.println("Insert into example at "+this.jdbcUrl+
>> " resulted unexpected SQL Exception code: "+
>> code + " " + e.getMessage());
>> }
>
> Hmm, looking at the PSQLException source code, I don't think the driver has ever set the vendor-specific error code that getErrorCode() returns. I tested the snippet you posted with server 8,4 and 9.2, and with jdbc driver 8.4 and 8.2, and saw no difference; getErrorCode() always returned 0.
>
> You should be using getSQLState() instead. The "23505" sqlstate is defined by the SQL standard, so if the other DBMS' you're supporting follow the spec on that, you won't even need any vendor-specific code there.
Indeed..
Going over my codebase I see that this was the only one where the getErrorCode() was used in place of getSQLState().
It worked just fine, but was noisy in the logs, thus this bugreport.
[x] User error.
> - Heikki
BR, Matti Aarnio
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2013-02-12 00:44:51 | Re: BUG #7867: Similarity function fails |
Previous Message | Heikki Linnakangas | 2013-02-11 17:52:57 | Re: BUG #7865: Unexpected error code on insert of duplicate to composite primary key |