Re: 9.0 Driver - Mailing list pgsql-jdbc

From John T. Dow
Subject Re: 9.0 Driver
Date
Msg-id 201008110446.o7B4kZSQ053206@web7.nidhog.com
Whole thread Raw
In response to 9.0 Driver  (Jason Tesser <jasontesser@gmail.com>)
List pgsql-jdbc
On Tue, 10 Aug 2010 13:56:27 -0400 (EDT), Kris Jurka wrote:

>
>
>On Sun, 8 Aug 2010, John T. Dow wrote:
>
>> There is, I believe, a problem with the JDBC driver in that it gives
>> very poor performance doing a refreshRow. The problem is that the driver
>> queries the server for every column in the resultset.
>>
>> I implemented a quick and dirty fix by modifying the driver to (on
>> demand) use the labels returned in the resultset.
>>
>> This solution of course will fail if the original query used an alias
>> for a column. Other than that, it seems to be a good solution.
>>
>> Apparently I am the only one who uses refreshrow, because I reported the
>> fact that it was slow in January (and there was a little discussion) but
>> when in April I reported my crude solution there was no discussion.
>
>I think it's a combination of factors, few people use refreshRow and fewer
>people use it on results with hundreds of columns.  Yes, it is slow, but
>it isn't abysmal and it's only slow for the first refreshRow execution
>on the ResultSet, so subsequent refreshes are fast.  As you've stated, the
>solution you've implemented is inadequate for the general case, so I'm not
>sure what further discussion there should be about it.  Is there something
>in particular you'd like feedback on?
>
>So yes, it's a known issue, but not a high priority one.
>
>Kris Jurka
>
>


I see that once a field gets its name, it remembers it. You're right about that.

I am not looking for any feedback on my quick and dirty solution, although it seemed that if others were experiencing
theproblem they might be interested to know that there is a solution of sorts at hand. Didn't happen. I must be alone. 

All I know is a client complained that it was taking 20 seconds for their remote warehouse staff to update the
database.Made me look bad after I'd sold them on PG. (I timed it - it wasn't always that bad, but after I implemented
myfix and tested it several times, it dropped from 15 seconds to 3 seconds to do a refreshRow.) 

I should think the code could get all the attname, attnum pairs for a given attrelid with one round trip and cache the
results.Is there some good reason not to do so? 

John


pgsql-jdbc by date:

Previous
From: Andreas Joseph Krogh
Date:
Subject: Re: Object types and ResultSets (java.sql.Struct)
Next
From: Adam Todorski
Date:
Subject: Returning generated keys