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>)was not found in this ResultSet.  (Lew <noone@lewscanon.com>)
From Samuel Gendler
Subject Re: PSQLException: The column name
Date
Msg-id AANLkTimb4b+hv-8M+VwEUw_91y6Bw75u+i26sVZCD=kF@mail.gmail.com
Whole thread Raw
In response to Re: PSQLException: The column name
Responses Re: PSQLException: The column name
List pgsql-jdbc
On Tue, Nov 9, 2010 at 4:10 PM, Kris Jurka <books@ejurka.com> wrote:


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.


That would only be a valid fix if ResultSet is intended to be inherently threadsafe. I wouldn't think that is the case.  There is no mention of thread safety at all in the javadocs, which I would always take to imply that there is no implicit thread safety.  Code which utilizes a ResultSet should do so in a thread safe manner, rather than attempting to make the resultset implementation thread-safe - unless my assumptions about the intent of the interface designers is incorrect.

 

pgsql-jdbc by date:

Previous
From: Kris Jurka
Date:
Subject: Re: JDBC4 and JDK 1.6
Next
From: Michael musset
Date:
Subject: JDBC : this statement has been closed : postgresql 9