Re: Re: [BUGS] no way in LargeObject API to detect short read?
От | Peter T Mount |
---|---|
Тема | Re: Re: [BUGS] no way in LargeObject API to detect short read? |
Дата | |
Msg-id | 980501473.3a7143e156efd@webmail.retep.org.uk обсуждение исходный текст |
Ответ на | Re: [BUGS] no way in LargeObject API to detect short read? (aoki@acm.org (Paul M. Aoki)) |
Ответы |
Re: Re: [BUGS] no way in LargeObject API to detect short read?
|
Список | pgsql-jdbc |
Hmmm, what's the performance issues with this? Is there going to be a problem with very large LargeObject's? Quoting "Paul M. Aoki" <aoki@acm.org>: > Bruce Momjian <pgman@candle.pha.pa.us> writes: > > Anyone able to fix this? > > here's a hack we've been using in-house (written by Jun Gabayan, > <jgabayan@pahv.xerox.com>). > > you may not like the style but it's a stab at a solution. > -- > Paul M. Aoki / Xerox Palo Alto Research Center / 3333 Coyote Hill Road > aoki@acm.org / Computer Science Laboratory / Palo Alto, CA > 94304-1314 > > Index: LargeObject.java > =================================================================== > RCS file: > /project/placeless/cvsroot/placeless2/src/org/postgresql/largeobject/LargeObje ct.java,v > retrieving revision 1.1 > retrieving revision 1.3 > diff -r1.1 -r1.3 > 64c64,67 > < > --- > > > > private int pos = 0; //current position > > private int size = 0; > > > 85a89,90 > > pos = tell(); > > size = size(); > 102a108 > > if(fd == 0) return; > 105a112 > > fd = 0; > 118a126,132 > > // calculate available data to read to avoid reading pass the > end > > // to avoid an exception > > pos = tell(); > > int avail = size - pos; > > if(avail == 0) return null; > > if(avail < len) len = avail; > > try { > 123c137,141 > < > --- > > }catch(SQLException se) { > > System.out.println("***LargeObject.read: Caught > SQLException: " + se.getMessage()); > > return null; > > } > > > 157c175 > < public void read(byte buf[],int off,int len) throws SQLException > --- > > public int read(byte buf[],int off,int len) throws SQLException > 159c177,180 > < System.arraycopy(read(len),0,buf,off,len); > --- > > byte mybuf[] = read(len); > > int sz = (mybuf != null) ? mybuf.length : -1; //must return -1 for > end of data > > if(sz > 0) System.arraycopy(mybuf,0,buf,off,sz); > > return sz; > -- Peter Mount peter@retep.org.uk PostgreSQL JDBC Driver: http://www.retep.org.uk/postgres/ RetepPDF PDF library for Java: http://www.retep.org.uk/pdf/
В списке pgsql-jdbc по дате отправления: