Received: from p1.selectacast.net (IDENT:root@p1.selectacast.net [206.41.1.251]) by hub.org (8.10.1/8.10.1) with ESMTP id e9BHo8r63404 for ; Wed, 11 Oct 2000 13:50:09 -0400 (EDT) Received: from selectacast.net (IDENT:jks@d1 [209.219.91.66]) by p1.selectacast.net (8.9.3/8.9.3) with ESMTP id NAA27903; Wed, 11 Oct 2000 13:50:06 -0400 Message-ID: <39E4A84E.7741C8C6@selectacast.net> Date: Wed, 11 Oct 2000 13:50:06 -0400 From: Joseph Shraibman Organization: Xtenit X-Mailer: Mozilla 4.75 [en] (X11; U; Linux 2.2.15 i686) X-Accept-Language: en MIME-Version: 1.0 To: Peter Mount , "pgsql-interfaces@postgreSQL.org" Subject: Re: JDBC Large ResultSet problem + BadTimeStamp Patch References: Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-Archive-Number: 200010/91 X-Sequence-Number: 1448 Peter Mount wrote: > > On Wed, 11 Oct 2000, Michael Stephenson wrote: > > > Two things. > > > > Firstly, when dealing with a large ResultSet (about 120000 rows), I get a > > null pointer exception on the line: > > wasNullFlag = (this_row[columnIndex - 1] == null); > > Whenever I call getString(), has anyone else had this? And does anybody > > have a solution? > > Are you getting any out of memory errors at all? > > The problem with the current implementation is that it reads the entire > result into memory, so 120000 rows may be filling up your VM's memory > (defaults to about 16Mb). > > Does it occur if you add the -mx argument to java, ie: > > java -mx 64m uk.org.retep.sql.RetepSQL > > I'm in the design stage of implementing a version of ResultSet that will > use cursors, to limit how much is loaded in memory at a time. > The problem with that is the same problem I ran into with locking. cursors need to be in a BEGIN END block, and other calls from different Statement objects using the same db connectioni will interfere. Make sure it is clearly documented that that will not be thread safe (unless postgres gets named locks by then).