It's already being done, you should post this to the jdbc list.

On Fri, 2003-01-24 at 11:07, Chris Smith wrote:
> I'm about to start implemention streaming of queries to the server in the
> pgsql jdbc drivers when PreparedStatement is used with setBinaryStream...
> but before I get started, since I've never contributed before, I wanted to
> run it by everyone.
> I'm planning on making the following changes:
> 1. In QueryExecutor.sendQuery, if an object in m_binds is a,
> then instead of calling toString and sending that, I'll read and send the
> contents in 16K increments.
> 2. In AbstractJdbc1Statement.setBinaryStream, instead of delegating to
> setBytes, I'll call bind directly, but send a custom subclass
> (which adds the quotes and properly escapes the bytes and such) as the
> object.
> A couple questions:
> - There are a few constants that could probably be tuned for performance
> (ie, the size of the buffer used for streaming, and a threshold to avoid the
> streaming overhead for very short streams).  Is there a fairly standard way
> to handle this stuff in the JDBC drivers?  Should it be made configurable to
> the user?  Read from a properties file?  Stored in any specific class as a
> constant?
> - It seems to be quite a pain that org.postgresql.core.Encoding works only
> with String, and can't copy into a provided char[] -- this will mean
> creating a large number of String objects during the streaming.  I could fix
> this easily with java.nio.CharsetEncoder, but it would make the code
> dependent on JDK 1.4.  Not desired?
> - If there's a general dislike for runtime testing of object classes among
> the developer community, then I could, instead of special-casing Reader in
> sendQuery, wrap *all* PreparedStatement parameters in an interface that has
> a getReader method, and provide a default non-streaming implementation that
> uses StringReader.  This is more intrusive, but I'll go whichever way makes
> it more likely for the patch to be committed.
> - Am I missing anything?  Is this harder than it seems?  Seems like someone
> would have done it already...
> --
> The Easiest Way to Train Anyone... Anywhere.
> Chris Smith - Lead Software Developer/Technical Trainer
> MindIQ Corporation
> ---------------------------(end of broadcast)---------------------------
> TIP 1: subscribe and unsubscribe commands go to [EMAIL PROTECTED]
Cramer Consulting

---------------------------(end of broadcast)---------------------------
TIP 2: you can get off all lists at once with the unregister command
    (send "unregister YourEmailAddressHere" to [EMAIL PROTECTED])

Reply via email to