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

From Steven Schlansker
Subject Patch to fix bug #6293 - regression in driver performance with regards to ResultSetMetaData-heavy workloads
Date
Msg-id 5CBAD10C-C4DB-4AE3-ADB4-8197E0AA4146@likeness.com
Whole thread Raw
Responses Re: Patch to fix bug #6293 - regression in driver performance with regards to ResultSetMetaData-heavy workloads  (Dave Cramer <pg@fastcrypt.com>)
List 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


pgsql-jdbc by date:

Previous
From: Dave Cramer
Date:
Subject: Re: bug on to do list reproducable at version 9.0-801
Next
From: Dave Cramer
Date:
Subject: Fwd: [pgjdbc] Change Jdbc4ResultSet to cache Jdbc4ResultSetMetaData instances (#1)