Patch to fix bug #6293 - regression in driver performance with regards to ResultSetMetaData-heavy workloads

From: Steven Schlansker <steven(at)likeness(dot)com>
To: pgsql-jdbc(at)postgresql(dot)org
Subject: Patch to fix bug #6293 - regression in driver performance with regards to ResultSetMetaData-heavy workloads
Date: 2012-02-10 00:01:25
Message-ID: 5CBAD10C-C4DB-4AE3-ADB4-8197E0AA4146@likeness.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-jdbc

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

Responses

Browse pgsql-jdbc by date

  From Date Subject
Next Message Dave Cramer 2012-02-10 00:50:13 Fwd: [pgjdbc] Change Jdbc4ResultSet to cache Jdbc4ResultSetMetaData instances (#1)
Previous Message Dave Cramer 2012-02-09 11:34:05 Re: bug on to do list reproducable at version 9.0-801