Skip site navigation (1) Skip section navigation (2)

pgsql/src/interfaces/jdbc/org/postgresql Conne ...

From: "Marc G(dot) Fournier" <scrappy(at)hub(dot)org>
To: pgsql-committers(at)postgresql(dot)org
Subject: pgsql/src/interfaces/jdbc/org/postgresql Conne ...
Date: 2001-09-10 15:07:06
Message-ID: 200109101507.f8AF76j14103@hub.org (view raw or flat)
Thread:
Lists: pgsql-committers
CVSROOT:	/home/projects/pgsql/cvsroot
Module name:	pgsql
Changes by:	scrappy(at)hub(dot)org	01/09/10 11:07:05

Modified files:
	src/interfaces/jdbc/org/postgresql: Connection.java 
	                                    Driver.java.in 
	                                    ResultSet.java 
	src/interfaces/jdbc/org/postgresql/jdbc1: Connection.java 
	                                          PreparedStatement.java 
	                                          ResultSet.java 
	src/interfaces/jdbc/org/postgresql/jdbc2: Connection.java 
	                                          PreparedStatement.java 
	                                          ResultSet.java 
Added files:
	src/interfaces/jdbc/org/postgresql/util: PGbytea.java 

Log message:
	Attached is a patch to add bytea support to JDBC.
	
	This patch does the following:
	
	- Adds binary datatype support (bytea)
	- Changes getXXXStream()/setXXXStream() methods to be spec compliant
	- Adds ability to revert to old behavior
	
	Details:
	
	Adds support for the binary type bytea.  The ResultSet.getBytes() and
	PreparedStatement.setBytes() methods now work against columns of bytea
	type.  This is a change in behavior from the previous code which assumed
	the column type was OID and thus a LargeObject.  The new behavior is
	more complient with the JDBC spec as BLOB/CLOB are to be used for
	LargeObjects and the getBytes()/setBytes() methods are for the databases
	binary datatype (which is bytea in postgres).
	
	Changes the behavior of the getBinaryStream(), getAsciiStream(),
	getCharacterStream(), getUnicodeStream() and their setXXXStream()
	counterparts.  These methos now work against either the bytea type
	(BinaryStream) or the text types (AsciiStream, CharacterStream,
	UnicodeStream).  The previous behavior was that these all assumed the
	underlying column was of type OID and thus a LargeObject.  The
	spec/javadoc for these methods indicate that they are for LONGVARCHAR
	and LONGVARBINARY datatypes, which are distinct from the BLOB/CLOB
	datatypes.  Given that the bytea and text types support upto 1G, they
	are the LONGVARBINARY and LONGVARCHAR datatypes in postgres.
	
	Added support for turning off the above new functionality.  Given that
	the changes above are not backwardly compatible (however they are more
	spec complient), I added the ability to revert back to the old behavior.
	The Connection now takes an optional parameter named 'compatible'.  If
	the value of '7.1' is passed, the driver reverts to the 7.1 behavior.
	If the parameter is not passed or the value '7.2' is passed the behavior
	is the new behavior.  The mechanism put in place can be used in the
	future when/if similar needs arise to change behavior.  This is
	patterned after how Oracle does this (i.e. Oracle has a 'compatible'
	parameter that behaves in a similar manner).
	
	Misc fixes.  Cleaned up a few things I encountered along the way.
	
	Note that in testing the patch I needed to ignore whitespace differences
	in order to get it to apply cleanly (i.e. patch -l -i byteapatch.diff).
	Also this patch introduces a new file
	(src/interfaces/jdbc/org/postgresql/util/PGbytea.java).
	
	Barry Lind


pgsql-committers by date

Next:From: Marc G. FournierDate: 2001-09-10 15:07:58
Subject: pgsql/src/interfaces/jdbc/org/postgresql/test/ ...
Previous:From: Marc G. FournierDate: 2001-09-10 14:55:08
Subject: pgsql/src/interfaces/jdbc/org/postgresql jdbc1 ...

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group