summaryrefslogtreecommitdiff
path: root/src/interfaces/jdbc/org/postgresql/jdbc2
diff options
context:
space:
mode:
authorBarry Lind <barry@xythos.com>2002-08-14 20:35:40 +0000
committerBarry Lind <barry@xythos.com>2002-08-14 20:35:40 +0000
commitb3dd55c6517a6a9f531a7bab463e9bcf6291aa9b (patch)
treee78512bb088ee72bff62abd640335c29cc5965c9 /src/interfaces/jdbc/org/postgresql/jdbc2
parent64a0649432408b407e477caf11056b380b5689bd (diff)
downloadpostgresql-b3dd55c6517a6a9f531a7bab463e9bcf6291aa9b.tar.gz
Added support for JDBC3. The driver will now build under JDBC3 (i.e. Java 1.4).
This concludes my changes that restructured the code to support JDBC3. The jdbc unit tests were also resturctured to allow different tests between jdbc2 and jdbc3, although currently make check (aka ant test) for JDBC3 just runs the JDBC2 tests. Of special note the largeobject/PGblob and PGclob classes have been moved under the jdbc2/jdbc3 specific directories as they now differ by jdbc version. Also note that this checkin removes the PostgresqlDataSource and files in the xa directory. A recent checkin has added new datasource support that replaces the functionality provided by these classes. Modified Files: jdbc/build.xml jdbc/org/postgresql/jdbc1/AbstractJdbc1DatabaseMetaData.java jdbc/org/postgresql/jdbc1/AbstractJdbc1ResultSet.java jdbc/org/postgresql/jdbc1/AbstractJdbc1ResultSetMetaData.java jdbc/org/postgresql/jdbc1/AbstractJdbc1Statement.java jdbc/org/postgresql/jdbc2/AbstractJdbc2Connection.java jdbc/org/postgresql/jdbc2/AbstractJdbc2DatabaseMetaData.java jdbc/org/postgresql/jdbc2/AbstractJdbc2ResultSet.java jdbc/org/postgresql/jdbc2/AbstractJdbc2ResultSetMetaData.java jdbc/org/postgresql/jdbc2/AbstractJdbc2Statement.java jdbc/org/postgresql/jdbc2/Array.java jdbc/org/postgresql/jdbc2/Jdbc2CallableStatement.java jdbc/org/postgresql/jdbc2/Jdbc2Connection.java jdbc/org/postgresql/jdbc2/Jdbc2DatabaseMetaData.java jdbc/org/postgresql/jdbc2/Jdbc2PreparedStatement.java jdbc/org/postgresql/jdbc2/Jdbc2ResultSet.java jdbc/org/postgresql/jdbc2/Jdbc2ResultSetMetaData.java jdbc/org/postgresql/jdbc2/Jdbc2Statement.java jdbc/org/postgresql/test/jdbc2/BatchExecuteTest.java jdbc/org/postgresql/test/jdbc2/BlobTest.java jdbc/org/postgresql/test/jdbc2/CallableStmtTest.java jdbc/org/postgresql/test/jdbc2/ConnectionTest.java jdbc/org/postgresql/test/jdbc2/DatabaseMetaDataTest.java jdbc/org/postgresql/test/jdbc2/DateTest.java jdbc/org/postgresql/test/jdbc2/DriverTest.java jdbc/org/postgresql/test/jdbc2/JBuilderTest.java jdbc/org/postgresql/test/jdbc2/MiscTest.java jdbc/org/postgresql/test/jdbc2/ResultSetTest.java jdbc/org/postgresql/test/jdbc2/TimeTest.java jdbc/org/postgresql/test/jdbc2/TimestampTest.java jdbc/org/postgresql/test/jdbc2/UpdateableResultTest.java Added Files: jdbc/org/postgresql/jdbc2/AbstractJdbc2Blob.java jdbc/org/postgresql/jdbc2/AbstractJdbc2Clob.java jdbc/org/postgresql/jdbc2/Jdbc2Blob.java jdbc/org/postgresql/jdbc2/Jdbc2Clob.java jdbc/org/postgresql/jdbc3/AbstractJdbc3Blob.java jdbc/org/postgresql/jdbc3/AbstractJdbc3Clob.java jdbc/org/postgresql/jdbc3/AbstractJdbc3Connection.java jdbc/org/postgresql/jdbc3/AbstractJdbc3DatabaseMetaData.java jdbc/org/postgresql/jdbc3/AbstractJdbc3ResultSet.java jdbc/org/postgresql/jdbc3/AbstractJdbc3Statement.java jdbc/org/postgresql/jdbc3/Jdbc3Blob.java jdbc/org/postgresql/jdbc3/Jdbc3CallableStatement.java jdbc/org/postgresql/jdbc3/Jdbc3Clob.java jdbc/org/postgresql/jdbc3/Jdbc3Connection.java jdbc/org/postgresql/jdbc3/Jdbc3DatabaseMetaData.java jdbc/org/postgresql/jdbc3/Jdbc3PreparedStatement.java jdbc/org/postgresql/jdbc3/Jdbc3ResultSet.java jdbc/org/postgresql/jdbc3/Jdbc3ResultSetMetaData.java jdbc/org/postgresql/jdbc3/Jdbc3Statement.java jdbc/org/postgresql/test/TestUtil.java jdbc/org/postgresql/test/jdbc2/Jdbc2TestSuite.java jdbc/org/postgresql/test/jdbc3/Jdbc3TestSuite.java Removed Files: jdbc/org/postgresql/PostgresqlDataSource.java jdbc/org/postgresql/largeobject/PGblob.java jdbc/org/postgresql/largeobject/PGclob.java jdbc/org/postgresql/test/JDBC2Tests.java jdbc/org/postgresql/xa/ClientConnection.java jdbc/org/postgresql/xa/TwoPhaseConnection.java jdbc/org/postgresql/xa/TxConnection.java jdbc/org/postgresql/xa/XAConnectionImpl.java jdbc/org/postgresql/xa/XADataSourceImpl.java
Diffstat (limited to 'src/interfaces/jdbc/org/postgresql/jdbc2')
-rw-r--r--src/interfaces/jdbc/org/postgresql/jdbc2/AbstractJdbc2Blob.java57
-rw-r--r--src/interfaces/jdbc/org/postgresql/jdbc2/AbstractJdbc2Clob.java63
-rw-r--r--src/interfaces/jdbc/org/postgresql/jdbc2/AbstractJdbc2ResultSet.java15
-rw-r--r--src/interfaces/jdbc/org/postgresql/jdbc2/Array.java20
-rw-r--r--src/interfaces/jdbc/org/postgresql/jdbc2/Jdbc2Blob.java12
-rw-r--r--src/interfaces/jdbc/org/postgresql/jdbc2/Jdbc2CallableStatement.java2
-rw-r--r--src/interfaces/jdbc/org/postgresql/jdbc2/Jdbc2Clob.java12
-rw-r--r--src/interfaces/jdbc/org/postgresql/jdbc2/Jdbc2DatabaseMetaData.java2
-rw-r--r--src/interfaces/jdbc/org/postgresql/jdbc2/Jdbc2PreparedStatement.java2
-rw-r--r--src/interfaces/jdbc/org/postgresql/jdbc2/Jdbc2ResultSet.java10
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));
+ }
+
}