Re: PSQLException: The column name was not found in this ResultSet. - Mailing list pgsql-jdbc

was not found in this ResultSet.was not found in this ResultSet.  (Kris Jurka <books@ejurka.com>)
From Michael Fork
Subject Re: PSQLException: The column name
Date
Msg-id 476129.36153.qm@web113402.mail.gq1.yahoo.com
Whole thread Raw
In response to Re: PSQLException: The column name
List pgsql-jdbc
Looking into this further, I think the initial fix was insufficient.  I think
there are two ways to go.  One is to synchronize the entire findColumnIndex.
Since we are using a standard HashMap and not a synchronized one, the additional
put could cause issues when doing a get if a resize was underway.  The
alternative would be to use Collections.synchronizedMap at instantiation of the
HashMap and wrap the initial load of it in the synchronized(this) block as
proposed below.  Once loaded, the get/puts would be synchronized by the map.

Thanks.

Michael

----- Original Message ----
From: Kris Jurka <books@ejurka.com>
To: Michael Fork <mfork00@yahoo.com>
Cc: pgsql-jdbc@postgresql.org
Sent: Tue, November 9, 2010 7:10:18 PM
Subject: Re: [JDBC] PSQLException: The column name <col> was not found in this
ResultSet.



On Mon, 8 Nov 2010, Michael Fork wrote:

> Caused by: org.postgresql.util.PSQLException: The column name mdn was not
found
> in this ResultSet.
>
> I receive the above error message when accessing the JDBC resultset from
>multiple threads.  It does not occur consistently, but roughly every 20 or 30
>runs and almost immediately upon invocation.  Looking at
>org/postgresql/jdbc2/AbstractJdbc2ResultSet.java it appears there is a race
>condition around building columnNameIndexMap
>
> I cannot confirm this, but I would guess that on thread enters, has the NULL
>map and creates the new HashMap.  The second thread enters, sees the non-NULL
>columnNameIndexMap, and gets to the HashMap.get call prior to the first thread
>fully populating the map.  If this is the problem, would wrapping the IF block
>in a synchronized(this) block fix it?
>

That looks like the correct diagnosis and fix to me.

Kris Jurka


-- Sent via pgsql-jdbc mailing list (pgsql-jdbc@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-jdbc


pgsql-jdbc by date:

Previous
From: Stephen Ripley
Date:
Subject: Re: JDBC4 and JDK 1.6
Next
From: Lew
Date:
Subject: Re: PSQLException: The column name was not found in this ResultSet.