Attached you'll find a simple multi-threaded example of a couple of
SERIALIZABLE transactions. I hope, I'm not making a complete ass of myself,
but it seems that the JDBC driver is unprepared to handle simultaneous
SERIALIZABLE transactions.
The table structure to test with is really simple:
CREATE TABLE test (
id integer UNIQUE NOT NULL
);
The program tries to access the database for the highest id available, then
use it in a preparedstatement.
(The reason we do that is to prepare for the worst DB server available, we
know that there are other ways to do this in postgres.)
It first opens the connections, stores them, than hands them to the threads.
No connection is issued twice simultaneously.
Please edit the variables at the top, but check not to have more
InserterThreads than dbConnections.
Thanks
Andras Gerlits