Re: PSQLException: The column name <col> was not found in this ResultSet.

From: Michael Fork <mfork00(at)yahoo(dot)com>
To: Kris Jurka <books(at)ejurka(dot)com>
Cc: pgsql-jdbc(at)postgresql(dot)org
Subject: Re: PSQLException: The column name <col> was not found in this ResultSet.
Date: 2010-11-10 17:49:40
Message-ID: 476129.36153.qm@web113402.mail.gq1.yahoo.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: 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(at)ejurka(dot)com>
To: Michael Fork <mfork00(at)yahoo(dot)com>
Cc: pgsql-jdbc(at)postgresql(dot)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(at)postgresql(dot)org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-jdbc

In response to

Browse pgsql-jdbc by date

  From Date Subject
Next Message Lew 2010-11-12 02:09:12 Re: PSQLException: The column name <col> was not found in this ResultSet.
Previous Message Maciek Sakrejda 2010-11-10 17:13:05 Re: Inserting Fingerprint templates as varchar not as bytea type in PostgreSQL