summaryrefslogtreecommitdiff
path: root/src/interfaces/jdbc/org/postgresql/jdbc2
diff options
context:
space:
mode:
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));
+ }
+
}