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

Поиск
Список
Период
Сортировка
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>)
От Samuel Gendler
Тема Re: PSQLException: The column name
Дата
Msg-id AANLkTimb4b+hv-8M+VwEUw_91y6Bw75u+i26sVZCD=kF@mail.gmail.com
обсуждение исходный текст
Ответ на Re: PSQLException: The column name
Ответы Re: PSQLException: The column name
Список 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 по дате отправления:

Предыдущее
От: Kris Jurka
Дата:
Сообщение: Re: JDBC4 and JDK 1.6
Следующее
От: Michael musset
Дата:
Сообщение: JDBC : this statement has been closed : postgresql 9