Re: absolute positioning - Mailing list pgsql-jdbc
From | Indra Heckenbach |
---|---|
Subject | Re: absolute positioning |
Date | |
Msg-id | 406138E0.8090501@macnica.com Whole thread Raw |
In response to | Re: absolute positioning (Oliver Jowett <oliver@opencloud.com>) |
Responses |
Re: absolute positioning
Re: absolute positioning |
List | pgsql-jdbc |
Hi Oliver, <br /><br /> Thanks for pointing me to this discussion. From what I can tell, work must have been done on thepostgres backend to improve support for cursors. I have been using cursors with fairly complex queries (joins and nestedsubqueries and order bys) without any problems. <br /><br /> I went ahead and patched the JDBC jar from the CVS headon gborg. This patch should enable scrollable cursor support, and provide absolute() w/o loading all results into theJDBC buffer. Unfortunately, the patch involves changing some core aspects of the driver. I have not reviewed the existingcode thoroughly, so I could have introduced problems. I have also not tested extensively. However, the patch worksfor me, and I could use the patched driver with existing applications. Is there a test suite for the driver? At thispoint I hope to get some feedback.<br /><br /> Here is a summary of the patch:<br /> AbstractJdbc1ResultSet<br /> - added "buffer_row" and "cursor_row" to track cursor and buffer position. remove "current_row", and use theseinstead.<br /> - use a new variable "needsRefresh" to control reload state explicitly<br /> - convertnext() method to load on demand instead of pre-load. the former method does not work with cursor positioning, orwould require a hack to load data twice, and support multiple modes of loading.<br /><br /> Abstract1Jdbc1Statement<br/> - to prevent pre-load, I made the while loop over reallyResultSet() occur only if cursorsare disabled. I don't think this is needed in this context for cursors, but I'm not certain.<br /> - addedDECLARE SCROLL CURSOR to handle scrollable case.<br /><br /> AbstractJdbc2ResultSet<br /> - use a new variable"internalIndex" in AbstractJdbc2ResultSet to track absolute position, to avoid overlapping repositioning.<br /> - implement absolute() as FETCH ABSOLUTE. relative() uses this code, so it should be supported as well.<br /><br/> thanks,<br /> Indra<br /><br /> Oliver Jowett wrote:<br /><blockquote cite="mid405E5CDF.4000308@opencloud.com" type="cite">IndraHeckenbach wrote: <br /><blockquote type="cite">Thanks for the info. So the implementation is functional,but does so by preventing cursors. Unfortunately, I am dealing with a large result set, so I need to use cursors. I started modifying the jdbc driver. Any other suggestions? <br /></blockquote><br /> There was a discussion aboutimplementing this a couple of months ago that might be useful to you, starting at: <a class="moz-txt-link-freetext" href="http://archives.postgresql.org/pgsql-jdbc/2004-01/msg00288.php">http://archives.postgresql.org/pgsql-jdbc/2004-01/msg00288.php</a><br /><br/> -O <br /><br /></blockquote><br />
pgsql-jdbc by date: