diff options
Diffstat (limited to 'src/interfaces/jdbc/org/postgresql/jdbc2')
10 files changed, 172 insertions, 23 deletions
diff --git a/src/interfaces/jdbc/org/postgresql/jdbc2/AbstractJdbc2Blob.java b/src/interfaces/jdbc/org/postgresql/jdbc2/AbstractJdbc2Blob.java new file mode 100644 index 0000000000..cb6c5b01dc --- /dev/null +++ b/src/interfaces/jdbc/org/postgresql/jdbc2/AbstractJdbc2Blob.java @@ -0,0 +1,57 @@ +package org.postgresql.jdbc2; + +import java.lang.*; +import java.io.*; +import java.math.*; +import java.text.*; +import java.util.*; +import java.sql.*; +import org.postgresql.Field; +import org.postgresql.PGConnection; +import org.postgresql.largeobject.*; + +public abstract class AbstractJdbc2Blob +{ + private int oid; + private LargeObject lo; + + public AbstractJdbc2Blob(PGConnection conn, int oid) throws SQLException + { + this.oid = oid; + LargeObjectManager lom = conn.getLargeObjectAPI(); + this.lo = lom.open(oid); + } + + public long length() throws SQLException + { + return lo.size(); + } + + public InputStream getBinaryStream() throws SQLException + { + return lo.getInputStream(); + } + + public byte[] getBytes(long pos, int length) throws SQLException + { + lo.seek((int)pos, LargeObject.SEEK_SET); + return lo.read(length); + } + + /* + * For now, this is not implemented. + */ + public long position(byte[] pattern, long start) throws SQLException + { + throw org.postgresql.Driver.notImplemented(); + } + + /* + * This should be simply passing the byte value of the pattern Blob + */ + public long position(Blob pattern, long start) throws SQLException + { + return position(pattern.getBytes(0, (int)pattern.length()), start); + } + +} diff --git a/src/interfaces/jdbc/org/postgresql/jdbc2/AbstractJdbc2Clob.java b/src/interfaces/jdbc/org/postgresql/jdbc2/AbstractJdbc2Clob.java new file mode 100644 index 0000000000..c185bb4f4f --- /dev/null +++ b/src/interfaces/jdbc/org/postgresql/jdbc2/AbstractJdbc2Clob.java @@ -0,0 +1,63 @@ +package org.postgresql.jdbc2; + + +import java.lang.*; +import java.io.*; +import java.math.*; +import java.text.*; +import java.util.*; +import java.sql.*; +import org.postgresql.Field; +import org.postgresql.PGConnection; +import org.postgresql.largeobject.*; + +public class AbstractJdbc2Clob +{ + private int oid; + private LargeObject lo; + + public AbstractJdbc2Clob(PGConnection conn, int oid) throws SQLException + { + this.oid = oid; + LargeObjectManager lom = conn.getLargeObjectAPI(); + this.lo = lom.open(oid); + } + + public long length() throws SQLException + { + return lo.size(); + } + + public InputStream getAsciiStream() throws SQLException + { + return lo.getInputStream(); + } + + public Reader getCharacterStream() throws SQLException + { + return new InputStreamReader(lo.getInputStream()); + } + + public String getSubString(long i, int j) throws SQLException + { + lo.seek((int)i - 1); + return new String(lo.read(j)); + } + + /* + * For now, this is not implemented. + */ + public long position(String pattern, long start) throws SQLException + { + throw org.postgresql.Driver.notImplemented(); + } + + /* + * This should be simply passing the byte value of the pattern Blob + */ + public long position(Clob pattern, long start) throws SQLException + { + throw org.postgresql.Driver.notImplemented(); + } + +} diff --git a/src/interfaces/jdbc/org/postgresql/jdbc2/AbstractJdbc2ResultSet.java b/src/interfaces/jdbc/org/postgresql/jdbc2/AbstractJdbc2ResultSet.java index 1a6379bf59..3b493de2f4 100644 --- a/src/interfaces/jdbc/org/postgresql/jdbc2/AbstractJdbc2ResultSet.java +++ b/src/interfaces/jdbc/org/postgresql/jdbc2/AbstractJdbc2ResultSet.java @@ -15,12 +15,13 @@ import org.postgresql.util.PGbytea; import org.postgresql.util.PSQLException; -/* $Header: /cvsroot/pgsql/src/interfaces/jdbc/org/postgresql/jdbc2/Attic/AbstractJdbc2ResultSet.java,v 1.3 2002/07/25 22:45:28 barry Exp $ +/* $Header: /cvsroot/pgsql/src/interfaces/jdbc/org/postgresql/jdbc2/Attic/AbstractJdbc2ResultSet.java,v 1.4 2002/08/14 20:35:39 barry Exp $ * This class defines methods of the jdbc2 specification. This class extends * org.postgresql.jdbc1.AbstractJdbc1ResultSet which provides the jdbc1 * methods. The real Statement class (for jdbc2) is org.postgresql.jdbc2.Jdbc2ResultSet */ -public class AbstractJdbc2ResultSet extends org.postgresql.jdbc1.AbstractJdbc1ResultSet { +public abstract class AbstractJdbc2ResultSet extends org.postgresql.jdbc1.AbstractJdbc1ResultSet { + protected String sqlQuery = null; //needed for updateable result set support @@ -237,9 +238,7 @@ public class AbstractJdbc2ResultSet extends org.postgresql.jdbc1.AbstractJdbc1Re } - public Blob getBlob(int i) throws SQLException { - return new org.postgresql.largeobject.PGblob(connection, getInt(i)); - } + public abstract Blob getBlob(int i) throws SQLException; public java.io.Reader getCharacterStream(String columnName) throws SQLException { @@ -276,9 +275,7 @@ public class AbstractJdbc2ResultSet extends org.postgresql.jdbc1.AbstractJdbc1Re } - public Clob getClob(int i) throws SQLException { - return new org.postgresql.largeobject.PGclob(connection, getInt(i)); - } + public abstract Clob getClob(int i) throws SQLException; public int getConcurrency() throws SQLException { @@ -919,7 +916,7 @@ public class AbstractJdbc2ResultSet extends org.postgresql.jdbc1.AbstractJdbc1Re selectStatement.setObject( i, ((PrimaryKey) primaryKeys.get(j)).getValue() ); } - Jdbc2ResultSet rs = (Jdbc2ResultSet) selectStatement.executeQuery(); + AbstractJdbc2ResultSet rs = (AbstractJdbc2ResultSet) selectStatement.executeQuery(); if ( rs.first() ) { rowBuffer = rs.rowBuffer; diff --git a/src/interfaces/jdbc/org/postgresql/jdbc2/Array.java b/src/interfaces/jdbc/org/postgresql/jdbc2/Array.java index 99cbf0ea8c..6be102691b 100644 --- a/src/interfaces/jdbc/org/postgresql/jdbc2/Array.java +++ b/src/interfaces/jdbc/org/postgresql/jdbc2/Array.java @@ -124,33 +124,33 @@ public class Array implements java.sql.Array case Types.BIT: retVal = new boolean[ count ]; for ( ; count > 0; count-- ) - ((boolean[])retVal)[i++] = Jdbc2ResultSet.toBoolean( arrayContents[(int)index++] ); + ((boolean[])retVal)[i++] = AbstractJdbc2ResultSet.toBoolean( arrayContents[(int)index++] ); break; case Types.SMALLINT: case Types.INTEGER: retVal = new int[ count ]; for ( ; count > 0; count-- ) - ((int[])retVal)[i++] = Jdbc2ResultSet.toInt( arrayContents[(int)index++] ); + ((int[])retVal)[i++] = AbstractJdbc2ResultSet.toInt( arrayContents[(int)index++] ); break; case Types.BIGINT: retVal = new long[ count ]; for ( ; count > 0; count-- ) - ((long[])retVal)[i++] = Jdbc2ResultSet.toLong( arrayContents[(int)index++] ); + ((long[])retVal)[i++] = AbstractJdbc2ResultSet.toLong( arrayContents[(int)index++] ); break; case Types.NUMERIC: retVal = new BigDecimal[ count ]; for ( ; count > 0; count-- ) - ((BigDecimal[])retVal)[i++] = Jdbc2ResultSet.toBigDecimal( arrayContents[(int)index++], 0 ); + ((BigDecimal[])retVal)[i++] = AbstractJdbc2ResultSet.toBigDecimal( arrayContents[(int)index++], 0 ); break; case Types.REAL: retVal = new float[ count ]; for ( ; count > 0; count-- ) - ((float[])retVal)[i++] = Jdbc2ResultSet.toFloat( arrayContents[(int)index++] ); + ((float[])retVal)[i++] = AbstractJdbc2ResultSet.toFloat( arrayContents[(int)index++] ); break; case Types.DOUBLE: retVal = new double[ count ]; for ( ; count > 0; count-- ) - ((double[])retVal)[i++] = Jdbc2ResultSet.toDouble( arrayContents[(int)index++] ); + ((double[])retVal)[i++] = AbstractJdbc2ResultSet.toDouble( arrayContents[(int)index++] ); break; case Types.CHAR: case Types.VARCHAR: @@ -161,18 +161,18 @@ public class Array implements java.sql.Array case Types.DATE: retVal = new java.sql.Date[ count ]; for ( ; count > 0; count-- ) - ((java.sql.Date[])retVal)[i++] = Jdbc2ResultSet.toDate( arrayContents[(int)index++] ); + ((java.sql.Date[])retVal)[i++] = AbstractJdbc2ResultSet.toDate( arrayContents[(int)index++] ); break; case Types.TIME: retVal = new java.sql.Time[ count ]; for ( ; count > 0; count-- ) - ((java.sql.Time[])retVal)[i++] = Jdbc2ResultSet.toTime( arrayContents[(int)index++], rs, getBaseTypeName() ); + ((java.sql.Time[])retVal)[i++] = AbstractJdbc2ResultSet.toTime( arrayContents[(int)index++], rs, getBaseTypeName() ); break; case Types.TIMESTAMP: retVal = new Timestamp[ count ]; StringBuffer sbuf = null; for ( ; count > 0; count-- ) - ((java.sql.Timestamp[])retVal)[i++] = Jdbc2ResultSet.toTimestamp( arrayContents[(int)index++], rs, getBaseTypeName() ); + ((java.sql.Timestamp[])retVal)[i++] = AbstractJdbc2ResultSet.toTimestamp( arrayContents[(int)index++], rs, getBaseTypeName() ); break; // Other datatypes not currently supported. If you are really using other types ask @@ -340,7 +340,7 @@ public class Array implements java.sql.Array default: throw org.postgresql.Driver.notImplemented(); } - return ((Jdbc2Connection)conn).getResultSet(null, fields, rows, "OK", 1 ); + return ((AbstractJdbc2Connection)conn).getResultSet(null, fields, rows, "OK", 1 ); } public String toString() diff --git a/src/interfaces/jdbc/org/postgresql/jdbc2/Jdbc2Blob.java b/src/interfaces/jdbc/org/postgresql/jdbc2/Jdbc2Blob.java new file mode 100644 index 0000000000..5f5d28a5e5 --- /dev/null +++ b/src/interfaces/jdbc/org/postgresql/jdbc2/Jdbc2Blob.java @@ -0,0 +1,12 @@ +package org.postgresql.jdbc2; + + +public class Jdbc2Blob extends AbstractJdbc2Blob implements java.sql.Blob +{ + + public Jdbc2Blob(org.postgresql.PGConnection conn, int oid) throws java.sql.SQLException + { + super(conn, oid); + } + +} diff --git a/src/interfaces/jdbc/org/postgresql/jdbc2/Jdbc2CallableStatement.java b/src/interfaces/jdbc/org/postgresql/jdbc2/Jdbc2CallableStatement.java index c8bc1b7907..46ff83a1e0 100644 --- a/src/interfaces/jdbc/org/postgresql/jdbc2/Jdbc2CallableStatement.java +++ b/src/interfaces/jdbc/org/postgresql/jdbc2/Jdbc2CallableStatement.java @@ -3,7 +3,7 @@ package org.postgresql.jdbc2; import java.sql.*; -public class Jdbc2CallableStatement extends AbstractJdbc2Statement implements java.sql.CallableStatement +public class Jdbc2CallableStatement extends org.postgresql.jdbc2.AbstractJdbc2Statement implements java.sql.CallableStatement { public Jdbc2CallableStatement(Jdbc2Connection connection, String sql) throws SQLException diff --git a/src/interfaces/jdbc/org/postgresql/jdbc2/Jdbc2Clob.java b/src/interfaces/jdbc/org/postgresql/jdbc2/Jdbc2Clob.java new file mode 100644 index 0000000000..71de2f5433 --- /dev/null +++ b/src/interfaces/jdbc/org/postgresql/jdbc2/Jdbc2Clob.java @@ -0,0 +1,12 @@ +package org.postgresql.jdbc2; + + +public class Jdbc2Clob extends AbstractJdbc2Clob implements java.sql.Clob +{ + + public Jdbc2Clob(org.postgresql.PGConnection conn, int oid) throws java.sql.SQLException + { + super(conn, oid); + } + +} diff --git a/src/interfaces/jdbc/org/postgresql/jdbc2/Jdbc2DatabaseMetaData.java b/src/interfaces/jdbc/org/postgresql/jdbc2/Jdbc2DatabaseMetaData.java index 2e7171913e..7dbf8a0f17 100644 --- a/src/interfaces/jdbc/org/postgresql/jdbc2/Jdbc2DatabaseMetaData.java +++ b/src/interfaces/jdbc/org/postgresql/jdbc2/Jdbc2DatabaseMetaData.java @@ -1,7 +1,7 @@ package org.postgresql.jdbc2; -public class Jdbc2DatabaseMetaData extends AbstractJdbc2DatabaseMetaData implements java.sql.DatabaseMetaData +public class Jdbc2DatabaseMetaData extends org.postgresql.jdbc2.AbstractJdbc2DatabaseMetaData implements java.sql.DatabaseMetaData { public Jdbc2DatabaseMetaData(Jdbc2Connection conn) { diff --git a/src/interfaces/jdbc/org/postgresql/jdbc2/Jdbc2PreparedStatement.java b/src/interfaces/jdbc/org/postgresql/jdbc2/Jdbc2PreparedStatement.java index 0472007d3d..15fd8d9a75 100644 --- a/src/interfaces/jdbc/org/postgresql/jdbc2/Jdbc2PreparedStatement.java +++ b/src/interfaces/jdbc/org/postgresql/jdbc2/Jdbc2PreparedStatement.java @@ -3,7 +3,7 @@ package org.postgresql.jdbc2; import java.sql.*; -public class Jdbc2PreparedStatement extends AbstractJdbc2Statement implements java.sql.PreparedStatement +public class Jdbc2PreparedStatement extends org.postgresql.jdbc2.AbstractJdbc2Statement implements java.sql.PreparedStatement { public Jdbc2PreparedStatement(Jdbc2Connection connection, String sql) throws SQLException diff --git a/src/interfaces/jdbc/org/postgresql/jdbc2/Jdbc2ResultSet.java b/src/interfaces/jdbc/org/postgresql/jdbc2/Jdbc2ResultSet.java index c6415f0f7a..1e9805be1d 100644 --- a/src/interfaces/jdbc/org/postgresql/jdbc2/Jdbc2ResultSet.java +++ b/src/interfaces/jdbc/org/postgresql/jdbc2/Jdbc2ResultSet.java @@ -5,7 +5,7 @@ import java.sql.*; import java.util.Vector; import org.postgresql.Field; -/* $Header: /cvsroot/pgsql/src/interfaces/jdbc/org/postgresql/jdbc2/Attic/Jdbc2ResultSet.java,v 1.3 2002/07/26 05:29:35 barry Exp $ +/* $Header: /cvsroot/pgsql/src/interfaces/jdbc/org/postgresql/jdbc2/Attic/Jdbc2ResultSet.java,v 1.4 2002/08/14 20:35:39 barry Exp $ * This class implements the java.sql.ResultSet interface for JDBC2. * However most of the implementation is really done in * org.postgresql.jdbc2.AbstractJdbc2ResultSet or one of it's parents @@ -23,5 +23,13 @@ public class Jdbc2ResultSet extends org.postgresql.jdbc2.AbstractJdbc2ResultSet return new Jdbc2ResultSetMetaData(rows, fields); } + public java.sql.Clob getClob(int i) throws SQLException { + return new org.postgresql.jdbc2.Jdbc2Clob(connection, getInt(i)); + } + + public java.sql.Blob getBlob(int i) throws SQLException { + return new org.postgresql.jdbc2.Jdbc2Blob(connection, getInt(i)); + } + } |
