Re: sharing Connection object and SQLExceptions - Mailing list pgsql-jdbc

From Michael Paesold
Subject Re: sharing Connection object and SQLExceptions
Date
Msg-id 00b601c24eb7$75ca5050$0100a8c0@beeblebrox
Whole thread Raw
In response to sharing Connection object and SQLExceptions  (Steve Linabery <slinabery@worldcycling.com>)
List pgsql-jdbc
Steve Linabery wrote:

> Hi,
>
> Another question from me today.
>
> So I had some java (1.4) code that shared a Connection object to do a
> transaction.  There were no threading issues with the code in question;
> it was a case where one object created another using a live Connection
> in the second object's constructor.  Then the first object made some
> method calls to the second object during an SQL transaction
> (db.setAutoCommitMode(false)).
>
> One of the methods in the second object was throwing an SQLException.
> It was trying to delete a table that did not exist.
>
> After some debugging, it appeared that something in the Connection went
> south after that error.  Subsequently, if I created a Statement and
> tried to query a table in the database (*not* the one that the program
> had attempted to drop) I'd get another SQLException about the query
> returned no rows.
>
> Any thoughts on this one?
>
> Thank you,
> Steve Linabery


Have you checked connection.getWarnings() or statement.getWarnings()?
I suggest your problem is, that after dropping a non existent table,
the transaction is in ABORT mode, which means that any query will
fail until the next commit or rollback.

An example:

test=# begin;
BEGIN
test=# drop table non_existing;
ERROR:  table "non_existing" does not exist
test=# select 1;
NOTICE:  current transaction is aborted, queries ignored until end of
transaction block
*ABORT STATE*
test=#

Regards,
Michael Paesold




pgsql-jdbc by date:

Previous
From: Steve Linabery
Date:
Subject: sharing Connection object and SQLExceptions
Next
From: Padraic Renaghan
Date:
Subject: Batch Update updatecounts when error happens