Hi,
There is a bug report and associated mailing list thread
[JDBC] [BUGS] BUG #6293: JDBC driver performance, dated Nov 15 2011
>>>
>>> The following bug has been logged online:
>>>
>>> Bug reference: 6293
>>> PostgreSQL version: 9.1
>>> Description: JDBC driver performance
>>> Details:
>>
>> The 9.1 JDBC driver was changed to try and fetch all metadata for the
>> entire resultset in one query instead of potentially issuing multiple
>> queries for each column. So this change was supposed to improve things.
>>
>> Looking at the code, the caching pattern has changed slightly, so now it's
>> important to hold onto the same ResultSetMetaData instance. That is you
>> need to do:
I have a proposed fix available as a pull request on GitHub. The commit itself is here:
https://github.com/NessComputing/pgjdbc/commit/15dee25198c0a7a4d3bdeca2193a003d552fac2f
and the pull request complete with an in-progress discussion is here:
https://github.com/pgjdbc/pgjdbc/pull/1
I requested guidance on the mailing list last week on the best way to approach this problem,
but there were no responses, so I have changed the ResultSet to cache the MetaData instances.
As best as I can tell the MetaData is immutable, so hopefully there will be no ill effects from
caching instances.
I saw some discussion about licensing re: GitHub on the mailing list the other day, so to be
perfectly clear I am releasing this code to the pgsql-jdbc project under whatever terms they
so choose, or the public domain if that is the appropriate choice.
I hope this will be an example of how moving to GitHub pull requests can be a positive change :-)
I believe this fixes the referenced bug, and I've asked the original submitter to test out my change
to see if it fixes it for him.
Regards,
Steven Schlansker
Ness Computing