Fix for bug with the jdbc driver not properly working with binary cursors and
authorBarry Lind <barry@xythos.com>
Mon, 29 Mar 2004 17:47:47 +0000 (17:47 +0000)
committerBarry Lind <barry@xythos.com>
Mon, 29 Mar 2004 17:47:47 +0000 (17:47 +0000)
the V3 protocol.
 Modified Files:
  Tag: REL7_4_STABLE
  jdbc/org/postgresql/Driver.java.in
  jdbc/org/postgresql/core/BaseResultSet.java
  jdbc/org/postgresql/core/BaseStatement.java
  jdbc/org/postgresql/core/Field.java
  jdbc/org/postgresql/core/PGStream.java
  jdbc/org/postgresql/core/QueryExecutor.java
  jdbc/org/postgresql/jdbc1/AbstractJdbc1DatabaseMetaData.java
  jdbc/org/postgresql/jdbc1/AbstractJdbc1ResultSet.java
  jdbc/org/postgresql/jdbc1/AbstractJdbc1Statement.java
  jdbc/org/postgresql/jdbc1/Jdbc1CallableStatement.java
  jdbc/org/postgresql/jdbc1/Jdbc1PreparedStatement.java
  jdbc/org/postgresql/jdbc1/Jdbc1RefCursorResultSet.java
  jdbc/org/postgresql/jdbc1/Jdbc1ResultSet.java
  jdbc/org/postgresql/jdbc1/Jdbc1Statement.java
  jdbc/org/postgresql/jdbc2/AbstractJdbc2ResultSet.java
  jdbc/org/postgresql/jdbc2/Array.java
  jdbc/org/postgresql/jdbc2/Jdbc2CallableStatement.java
  jdbc/org/postgresql/jdbc2/Jdbc2PreparedStatement.java
  jdbc/org/postgresql/jdbc2/Jdbc2RefCursorResultSet.java
  jdbc/org/postgresql/jdbc2/Jdbc2ResultSet.java
  jdbc/org/postgresql/jdbc2/Jdbc2Statement.java
  jdbc/org/postgresql/jdbc3/AbstractJdbc3ResultSet.java
  jdbc/org/postgresql/jdbc3/Jdbc3CallableStatement.java
  jdbc/org/postgresql/jdbc3/Jdbc3PreparedStatement.java
  jdbc/org/postgresql/jdbc3/Jdbc3RefCursorResultSet.java
  jdbc/org/postgresql/jdbc3/Jdbc3ResultSet.java
  jdbc/org/postgresql/jdbc3/Jdbc3Statement.java
  jdbc/org/postgresql/test/jdbc2/Jdbc2TestSuite.java
  jdbc/org/postgresql/test/jdbc2/OID74Test.java
 Added Files:
  Tag: REL7_4_STABLE
  jdbc/org/postgresql/test/jdbc2/ServerCursorTest.java

25 files changed:
src/interfaces/jdbc/org/postgresql/Driver.java.in
src/interfaces/jdbc/org/postgresql/jdbc1/AbstractJdbc1DatabaseMetaData.java
src/interfaces/jdbc/org/postgresql/jdbc1/AbstractJdbc1ResultSet.java
src/interfaces/jdbc/org/postgresql/jdbc1/AbstractJdbc1Statement.java
src/interfaces/jdbc/org/postgresql/jdbc1/Jdbc1CallableStatement.java
src/interfaces/jdbc/org/postgresql/jdbc1/Jdbc1PreparedStatement.java
src/interfaces/jdbc/org/postgresql/jdbc1/Jdbc1RefCursorResultSet.java
src/interfaces/jdbc/org/postgresql/jdbc1/Jdbc1ResultSet.java
src/interfaces/jdbc/org/postgresql/jdbc1/Jdbc1Statement.java
src/interfaces/jdbc/org/postgresql/jdbc2/AbstractJdbc2ResultSet.java
src/interfaces/jdbc/org/postgresql/jdbc2/Array.java
src/interfaces/jdbc/org/postgresql/jdbc2/Jdbc2CallableStatement.java
src/interfaces/jdbc/org/postgresql/jdbc2/Jdbc2PreparedStatement.java
src/interfaces/jdbc/org/postgresql/jdbc2/Jdbc2RefCursorResultSet.java
src/interfaces/jdbc/org/postgresql/jdbc2/Jdbc2ResultSet.java
src/interfaces/jdbc/org/postgresql/jdbc2/Jdbc2Statement.java
src/interfaces/jdbc/org/postgresql/jdbc3/AbstractJdbc3ResultSet.java
src/interfaces/jdbc/org/postgresql/jdbc3/Jdbc3CallableStatement.java
src/interfaces/jdbc/org/postgresql/jdbc3/Jdbc3PreparedStatement.java
src/interfaces/jdbc/org/postgresql/jdbc3/Jdbc3RefCursorResultSet.java
src/interfaces/jdbc/org/postgresql/jdbc3/Jdbc3ResultSet.java
src/interfaces/jdbc/org/postgresql/jdbc3/Jdbc3Statement.java
src/interfaces/jdbc/org/postgresql/test/jdbc2/Jdbc2TestSuite.java
src/interfaces/jdbc/org/postgresql/test/jdbc2/OID74Test.java
src/interfaces/jdbc/org/postgresql/test/jdbc2/ServerCursorTest.java [new file with mode: 0644]

index a1d16e7a72c75b5a6a09acefaa5ad18ed42cf4ad..2b80ee9deb192e2a1210fc0d537043759310c525 100644 (file)
@@ -494,6 +494,6 @@ public class Driver implements java.sql.Driver
 
 
        //The build number should be incremented for every new build
-       private static int m_buildNumber = 212;
+       private static int m_buildNumber = 213;
 
 }
index 1a0d978212d2574dfc05e34f0e87d027a4cf04b0..ec73b2865515cf0b0d94bbdceef6d29a50d7dcb2 100644 (file)
@@ -1926,7 +1926,7 @@ public abstract class AbstractJdbc1DatabaseMetaData
                }
                rs.close();
 
-               return (ResultSet) ((BaseStatement)connection.createStatement()).createResultSet(f, v, "OK", 1, 0, false);
+               return (ResultSet) ((BaseStatement)connection.createStatement()).createResultSet(f, v, "OK", 1, 0);
        }
 
        /*
@@ -2218,7 +2218,7 @@ public abstract class AbstractJdbc1DatabaseMetaData
                        v.addElement(tuple);
                }
 
-               return (ResultSet) ((BaseStatement)connection.createStatement()).createResultSet(f, v, "OK", 1, 0, false);
+               return (ResultSet) ((BaseStatement)connection.createStatement()).createResultSet(f, v, "OK", 1, 0);
        }
 
        /*
@@ -2392,7 +2392,7 @@ public abstract class AbstractJdbc1DatabaseMetaData
                }
                rs.close();
 
-               return (ResultSet) ((BaseStatement)connection.createStatement()).createResultSet(f, v, "OK", 1, 0, false);
+               return (ResultSet) ((BaseStatement)connection.createStatement()).createResultSet(f, v, "OK", 1, 0);
        }
 
        /*
@@ -2505,7 +2505,7 @@ public abstract class AbstractJdbc1DatabaseMetaData
                }
                rs.close();
 
-               return (ResultSet) ((BaseStatement)connection.createStatement()).createResultSet(f, v, "OK", 1, 0, false);
+               return (ResultSet) ((BaseStatement)connection.createStatement()).createResultSet(f, v, "OK", 1, 0);
        }
 
        /*
@@ -2607,7 +2607,7 @@ public abstract class AbstractJdbc1DatabaseMetaData
                }
                rs.close();
 
-               return (ResultSet) ((BaseStatement)connection.createStatement()).createResultSet(f, v, "OK", 1, 0, false);
+               return (ResultSet) ((BaseStatement)connection.createStatement()).createResultSet(f, v, "OK", 1, 0);
        }
 
        private static void sortStringArray(String s[]) {
@@ -2805,7 +2805,7 @@ public abstract class AbstractJdbc1DatabaseMetaData
                        v.addElement(tuple);
                }
 
-               return (ResultSet) ((BaseStatement)connection.createStatement()).createResultSet(f, v, "OK", 1, 0, false);
+               return (ResultSet) ((BaseStatement)connection.createStatement()).createResultSet(f, v, "OK", 1, 0);
        }
 
        /*
@@ -2875,7 +2875,7 @@ public abstract class AbstractJdbc1DatabaseMetaData
                /* Perhaps we should check that the given
                 * catalog.schema.table actually exists. -KJ
                 */
-               return (ResultSet) ((BaseStatement)connection.createStatement()).createResultSet(f, v, "OK", 1, 0, false);
+               return (ResultSet) ((BaseStatement)connection.createStatement()).createResultSet(f, v, "OK", 1, 0);
        }
 
        /*
@@ -3247,7 +3247,7 @@ public abstract class AbstractJdbc1DatabaseMetaData
                        tuples.addElement(tuple);
                }
 
-               return (ResultSet) ((BaseStatement)connection.createStatement()).createResultSet(f, tuples, "OK", 1, 0, false);
+               return (ResultSet) ((BaseStatement)connection.createStatement()).createResultSet(f, tuples, "OK", 1, 0);
        }
 
        /*
@@ -3532,7 +3532,7 @@ public abstract class AbstractJdbc1DatabaseMetaData
                }
                rs.close();
 
-               return (ResultSet) ((BaseStatement)connection.createStatement()).createResultSet(f, v, "OK", 1, 0, false);
+               return (ResultSet) ((BaseStatement)connection.createStatement()).createResultSet(f, v, "OK", 1, 0);
        }
 
        /*
index f301036960fc82a4513b83312baba90dcc9fd495..e19206707e5b376d5c98a1c4b82664eaf1f5312d 100644 (file)
@@ -41,7 +41,6 @@ public abstract class AbstractJdbc1ResultSet implements BaseResultSet
        protected BaseStatement statement;
        protected Field fields[];               // The field descriptions
        protected String status;                // Status of the result
-       protected boolean binaryCursor = false; // is the data binary or Strings
        protected int updateCount;              // How many rows did we get back?
        protected long insertOID;               // The oid of an inserted row
        protected int current_row;              // Our pointer to where we are at
@@ -71,8 +70,7 @@ public abstract class AbstractJdbc1ResultSet implements BaseResultSet
                                      Vector tuples,
                                      String status,
                                      int updateCount,
-                                     long insertOID, 
-                                         boolean binaryCursor)
+                                     long insertOID)
        {
                this.connection = statement.getPGConnection();
                this.statement = statement;
@@ -84,7 +82,6 @@ public abstract class AbstractJdbc1ResultSet implements BaseResultSet
                this.insertOID = insertOID;
                this.this_row = null;
                this.current_row = -1;
-               this.binaryCursor = binaryCursor;
 
                this.lastFetchSize = this.fetchSize = (statement == null ? 0 : statement.getFetchSize());
        }
@@ -103,7 +100,7 @@ public abstract class AbstractJdbc1ResultSet implements BaseResultSet
 
        //method to reinitialize a result set with more data
        public void reInit (Field[] fields, Vector tuples, String status,
-                         int updateCount, long insertOID, boolean binaryCursor)
+                         int updateCount, long insertOID)
        {
                this.fields = fields;
                // on a reinit the size of this indicates how many we pulled
@@ -114,7 +111,6 @@ public abstract class AbstractJdbc1ResultSet implements BaseResultSet
                this.insertOID = insertOID;
                this.this_row = null;
                this.current_row = -1;
-               this.binaryCursor = binaryCursor;
        }
 
        //
@@ -327,7 +323,7 @@ public abstract class AbstractJdbc1ResultSet implements BaseResultSet
                wasNullFlag = (this_row[columnIndex - 1] == null);
                if (!wasNullFlag)
                {
-                       if (binaryCursor)
+                       if (fields[columnIndex -1].getFormat() == Field.BINARY_FORMAT)
                        {
                                //If the data is already binary then just return it
                                return this_row[columnIndex - 1];
index aa705305b49b8fc3e9e431d085c5ab35f91cc00e..9d57c5bbbe04d81000faf97461065bcb8544fb06 100644 (file)
@@ -110,7 +110,7 @@ public abstract class AbstractJdbc1Statement implements BaseStatement
        protected Object callResult;
        protected int maxfieldSize = 0;
 
-       public abstract BaseResultSet createResultSet(Field[] fields, Vector tuples, String status, int updateCount, long insertOID, boolean binaryCursor) throws SQLException;
+       public abstract BaseResultSet createResultSet(Field[] fields, Vector tuples, String status, int updateCount, long insertOID) throws SQLException;
 
        public AbstractJdbc1Statement (BaseConnection connection)
        {
index 697a1869ab7cff252a8f338e504d326983531346..4d4b89f4c1a1c305535eac5673117f3f7375afdc 100644 (file)
@@ -15,9 +15,9 @@ public class Jdbc1CallableStatement extends AbstractJdbc1Statement implements ja
                super(connection, sql);
        }
 
-       public BaseResultSet createResultSet (Field[] fields, java.util.Vector tuples, String status, int updateCount, long insertOID, boolean binaryCursor) throws SQLException
+       public BaseResultSet createResultSet (Field[] fields, java.util.Vector tuples, String status, int updateCount, long insertOID) throws SQLException
        {
-               return new Jdbc1ResultSet(this, fields, tuples, status, updateCount, insertOID, binaryCursor);
+               return new Jdbc1ResultSet(this, fields, tuples, status, updateCount, insertOID);
        }
 
        public PGRefCursorResultSet createRefCursorResultSet (String cursorName) throws SQLException
index a80928ebddfe8010066bdf7d2d6bb0604f3f2432..e40201836151ffa790e9e6066c045a4cac0029fa 100644 (file)
@@ -14,9 +14,9 @@ public class Jdbc1PreparedStatement extends AbstractJdbc1Statement implements Pr
                super(connection, sql);
        }
 
-       public BaseResultSet createResultSet (Field[] fields, java.util.Vector tuples, String status, int updateCount, long insertOID, boolean binaryCursor) throws SQLException
+       public BaseResultSet createResultSet (Field[] fields, java.util.Vector tuples, String status, int updateCount, long insertOID) throws SQLException
        {
-               return new Jdbc1ResultSet(this, fields, tuples, status, updateCount, insertOID, binaryCursor);
+               return new Jdbc1ResultSet(this, fields, tuples, status, updateCount, insertOID);
        }
 
        public PGRefCursorResultSet createRefCursorResultSet (String cursorName) throws SQLException
index 7b83bf674279d0b6aaee2168f704c6fb205ee420..8ab6c14a2d642050dbfb41f946e37d676e31fc2d 100644 (file)
@@ -22,7 +22,7 @@ public class Jdbc1RefCursorResultSet extends Jdbc1ResultSet
         
         Jdbc1RefCursorResultSet(BaseStatement statement, String refCursorName)
         {
-                super(statement, null, null, null, -1, 0L, false);
+                super(statement, null, null, null, -1, 0L);
                 this.refCursorHandle = refCursorName;
         }
 
index ad555535974f758c90234373536382d662d16cdd..e78f5042d5ad49bc451ff60126983829455c1d8b 100644 (file)
@@ -14,9 +14,9 @@ import org.postgresql.core.Field;
 public class Jdbc1ResultSet extends org.postgresql.jdbc1.AbstractJdbc1ResultSet implements java.sql.ResultSet
 {
 
-       public Jdbc1ResultSet(BaseStatement statement, Field[] fields, Vector tuples, String status, int updateCount, long insertOID, boolean binaryCursor)
+       public Jdbc1ResultSet(BaseStatement statement, Field[] fields, Vector tuples, String status, int updateCount, long insertOID)
        {
-               super(statement, fields, tuples, status, updateCount, insertOID, binaryCursor);
+               super(statement, fields, tuples, status, updateCount, insertOID);
        }
 
        public java.sql.ResultSetMetaData getMetaData() throws SQLException
index 9762146d5c0c26bf1fe95be23de35a30d6c79638..1f05b695e545dd2bcce5bf2e4438ae24f8ef9456 100644 (file)
@@ -20,9 +20,9 @@ public class Jdbc1Statement extends org.postgresql.jdbc1.AbstractJdbc1Statement
                super(c);
        }
 
-       public BaseResultSet createResultSet (Field[] fields, Vector tuples, String status, int updateCount, long insertOID, boolean binaryCursor) throws SQLException
+       public BaseResultSet createResultSet (Field[] fields, Vector tuples, String status, int updateCount, long insertOID) throws SQLException
        {
-               return new Jdbc1ResultSet(this, fields, tuples, status, updateCount, insertOID, binaryCursor);
+               return new Jdbc1ResultSet(this, fields, tuples, status, updateCount, insertOID);
        }
 
        public PGRefCursorResultSet createRefCursorResultSet (String cursorName) throws SQLException
index 897f477d8a1e78b3fd8508c6c4eeb1ff18d3054f..ad1980f5d2aad6efd2434e413f0f0ec7884f2f45 100644 (file)
@@ -52,9 +52,9 @@ public abstract class AbstractJdbc2ResultSet extends org.postgresql.jdbc1.Abstra
        private PreparedStatement selectStatement = null;
 
   
-       public AbstractJdbc2ResultSet(BaseStatement statement, Field[] fields, Vector tuples, String status, int updateCount, long insertOID, boolean binaryCursor)
+       public AbstractJdbc2ResultSet(BaseStatement statement, Field[] fields, Vector tuples, String status, int updateCount, long insertOID)
        {
-               super (statement, fields, tuples, status, updateCount, insertOID, binaryCursor);
+               super (statement, fields, tuples, status, updateCount, insertOID);
        }
 
        public java.net.URL getURL(int columnIndex) throws SQLException
index e38b0c92edc99a9afc499f5bbfdfb61ee046c8d9..d3317b680c29999179af8ee87719449525bf761f 100644 (file)
@@ -353,7 +353,7 @@ public class Array implements java.sql.Array
                                throw org.postgresql.Driver.notImplemented();
                }
                BaseStatement stat = (BaseStatement) conn.createStatement();
-               return (ResultSet) stat.createResultSet(fields, rows, "OK", 1, 0, false);
+               return (ResultSet) stat.createResultSet(fields, rows, "OK", 1, 0);
        }
 
        public String toString()
index e10223e975ca245822299adb9277d485a5e2f242..59c8d90984a09e6bdd5a6441e8cd62e86ecf3d5e 100644 (file)
@@ -15,9 +15,9 @@ public class Jdbc2CallableStatement extends org.postgresql.jdbc2.AbstractJdbc2St
                super(connection, sql);
        }
 
-       public BaseResultSet createResultSet (Field[] fields, Vector tuples, String status, int updateCount, long insertOID, boolean binaryCursor) throws SQLException
+       public BaseResultSet createResultSet (Field[] fields, Vector tuples, String status, int updateCount, long insertOID) throws SQLException
        {
-               return new Jdbc2ResultSet(this, fields, tuples, status, updateCount, insertOID, binaryCursor);
+               return new Jdbc2ResultSet(this, fields, tuples, status, updateCount, insertOID);
        }
 
        public PGRefCursorResultSet createRefCursorResultSet (String cursorName) throws SQLException
index 83023f05f44535c77a5b569831e179f6ea323eea..515c527297e6fe850c2b9b5a0c9f4a51250d707b 100644 (file)
@@ -15,9 +15,9 @@ public class Jdbc2PreparedStatement extends org.postgresql.jdbc2.AbstractJdbc2St
                super(connection, sql);
        }
 
-       public BaseResultSet createResultSet (Field[] fields, Vector tuples, String status, int updateCount, long insertOID, boolean binaryCursor) throws SQLException
+       public BaseResultSet createResultSet (Field[] fields, Vector tuples, String status, int updateCount, long insertOID) throws SQLException
        {
-               return new Jdbc2ResultSet(this, fields, tuples, status, updateCount, insertOID, binaryCursor);
+               return new Jdbc2ResultSet(this, fields, tuples, status, updateCount, insertOID);
        }
 
  
index 08ec33d752f6c4de4f69e30cc9267e77a83f08f8..6e8f17696ff085c0daf53069bc84b659ad3c566a 100644 (file)
@@ -21,7 +21,7 @@ public class Jdbc2RefCursorResultSet extends Jdbc2ResultSet
 
         Jdbc2RefCursorResultSet(BaseStatement statement, String refCursorName) throws java.sql.SQLException
         {
-                super(statement, null, null, null, -1, 0L, false);
+                super(statement, null, null, null, -1, 0L);
                 this.refCursorHandle = refCursorName;
         }
 
index 2ccc6f3fcb3ef0e08c3a2f840f6c2246902e76ee..bb83aa9ac8dbe586cc571939a269988529e76ee7 100644 (file)
@@ -14,9 +14,9 @@ import org.postgresql.core.Field;
 public class Jdbc2ResultSet extends org.postgresql.jdbc2.AbstractJdbc2ResultSet implements java.sql.ResultSet
 {
 
-       public Jdbc2ResultSet(BaseStatement statement, Field[] fields, Vector tuples, String status, int updateCount, long insertOID, boolean binaryCursor)
+       public Jdbc2ResultSet(BaseStatement statement, Field[] fields, Vector tuples, String status, int updateCount, long insertOID)
        {
-               super(statement, fields, tuples, status, updateCount, insertOID, binaryCursor);
+               super(statement, fields, tuples, status, updateCount, insertOID);
        }
 
        public ResultSetMetaData getMetaData() throws SQLException
index 3e399f3888ff0cba7353f162f0a950dd85dca675..5c1ceea37e677b5175a29b0532d60bfd67133382 100644 (file)
@@ -20,9 +20,9 @@ public class Jdbc2Statement extends org.postgresql.jdbc2.AbstractJdbc2Statement
                super(c);
        }
 
-       public BaseResultSet createResultSet (Field[] fields, Vector tuples, String status, int updateCount, long insertOID, boolean binaryCursor) throws SQLException
+       public BaseResultSet createResultSet (Field[] fields, Vector tuples, String status, int updateCount, long insertOID) throws SQLException
        {
-               return new Jdbc2ResultSet(this, fields, tuples, status, updateCount, insertOID, binaryCursor);
+               return new Jdbc2ResultSet(this, fields, tuples, status, updateCount, insertOID);
        }
 
        public PGRefCursorResultSet createRefCursorResultSet (String cursorName) throws SQLException
index 72783bff9347d0c1acec53ca579d49626ed29d45..83740aeddc523fbeb04c3e05f893b00236cabaf8 100644 (file)
@@ -15,9 +15,9 @@ import org.postgresql.core.Field;
 public abstract class AbstractJdbc3ResultSet extends org.postgresql.jdbc2.AbstractJdbc2ResultSet
 {
 
-       public AbstractJdbc3ResultSet(BaseStatement statement, Field[] fields, Vector tuples, String status, int updateCount, long insertOID, boolean binaryCursor)
+       public AbstractJdbc3ResultSet(BaseStatement statement, Field[] fields, Vector tuples, String status, int updateCount, long insertOID)
        {
-               super (statement, fields, tuples, status, updateCount, insertOID, binaryCursor);
+               super (statement, fields, tuples, status, updateCount, insertOID);
        }
 
        /**
index 0008f0e98ca0f490c46cf138143149941856acd1..17eb965d320e6f061af33794de582cbb04b3cae7 100644 (file)
@@ -15,9 +15,9 @@ public class Jdbc3CallableStatement extends org.postgresql.jdbc3.AbstractJdbc3St
                super(connection, sql);
        }
 
-       public BaseResultSet createResultSet (Field[] fields, Vector tuples, String status, int updateCount, long insertOID, boolean binaryCursor) throws SQLException
+       public BaseResultSet createResultSet (Field[] fields, Vector tuples, String status, int updateCount, long insertOID) throws SQLException
        {
-               return new Jdbc3ResultSet(this, fields, tuples, status, updateCount, insertOID, binaryCursor);
+               return new Jdbc3ResultSet(this, fields, tuples, status, updateCount, insertOID);
        }
 
        public PGRefCursorResultSet createRefCursorResultSet (String cursorName) throws SQLException
index e9e25f76b02ce25a388be9ee43bd3102c99c7256..e2882a0ed37ce17f2420f2a1328b4e73a0775fbe 100644 (file)
@@ -15,9 +15,9 @@ public class Jdbc3PreparedStatement extends org.postgresql.jdbc3.AbstractJdbc3St
                super(connection, sql);
        }
 
-       public BaseResultSet createResultSet (Field[] fields, java.util.Vector tuples, String status, int updateCount, long insertOID, boolean binaryCursor) throws SQLException
+       public BaseResultSet createResultSet (Field[] fields, java.util.Vector tuples, String status, int updateCount, long insertOID) throws SQLException
        {
-                return new Jdbc3ResultSet((BaseStatement)this, fields, tuples, status, updateCount, insertOID, binaryCursor);
+                return new Jdbc3ResultSet((BaseStatement)this, fields, tuples, status, updateCount, insertOID);
        }
          
        public PGRefCursorResultSet createRefCursorResultSet (String cursorName) throws SQLException
index f6c0451b4b79a7716e956105010ae469ae4becd7..7625682bb66ae394f5071ea0dcb2b7db26aaaed1 100644 (file)
@@ -24,7 +24,7 @@ public class Jdbc3RefCursorResultSet extends Jdbc3ResultSet implements PGRefCurs
                 super((BaseStatement)statement,
                       (Field[])null,
                       (Vector)null,
-                      (String)null, -1, 0L, false);
+                      (String)null, -1, 0L);
                 this.refCursorHandle = refCursorName;
        }
 
index 0537f5bc2214cac28c63a8ee5197405af0b28f92..061ffffe5c9f38a8e57615c00bf57b2ac468de54 100644 (file)
@@ -14,9 +14,9 @@ import org.postgresql.core.BaseStatement;
 public class Jdbc3ResultSet extends org.postgresql.jdbc3.AbstractJdbc3ResultSet implements java.sql.ResultSet
 {
 
-       public Jdbc3ResultSet(BaseStatement statement, Field[] fields, Vector tuples, String status, int updateCount, long insertOID, boolean binaryCursor)
+       public Jdbc3ResultSet(BaseStatement statement, Field[] fields, Vector tuples, String status, int updateCount, long insertOID)
        {
-               super(statement, fields, tuples, status, updateCount, insertOID, binaryCursor);
+               super(statement, fields, tuples, status, updateCount, insertOID);
        }
 
        public java.sql.ResultSetMetaData getMetaData() throws SQLException
index 7d19afc9683fb762b3eeea2246a1774f9398e070..e271eb2acd264b110d0a0414ceaaa4d7a061547f 100644 (file)
@@ -20,9 +20,9 @@ public class Jdbc3Statement extends org.postgresql.jdbc3.AbstractJdbc3Statement
                super(c);
        }
 
-       public BaseResultSet createResultSet (Field[] fields, Vector tuples, String status, int updateCount, long insertOID, boolean binaryCursor) throws SQLException
+       public BaseResultSet createResultSet (Field[] fields, Vector tuples, String status, int updateCount, long insertOID) throws SQLException
        {
-               return new Jdbc3ResultSet(this, fields, tuples, status, updateCount, insertOID, binaryCursor);
+               return new Jdbc3ResultSet(this, fields, tuples, status, updateCount, insertOID);
        }
 
        public PGRefCursorResultSet createRefCursorResultSet (String cursorName) throws SQLException
index 3eab8e6633812eedb46c0a0b11629a4e41bf2b5e..3d6ebf699684a53a7f280aa2be827bd811f5829b 100644 (file)
@@ -65,6 +65,7 @@ public class Jdbc2TestSuite extends TestSuite
 
                suite.addTestSuite(CallableStmtTest.class );
                suite.addTestSuite(CursorFetchTest.class);
+               suite.addTestSuite(ServerCursorTest.class);
 
                // That's all folks
                return suite;
index a4708184deed218eb1ef9ecc0e5f20b64f4c595e..cf382c897295170e58ac702f94217de52eeb47e1 100644 (file)
@@ -75,6 +75,7 @@ public class OID74Test  extends TestCase
                }
 
                TestUtil.dropTable(c,"temp");
+                c.commit();
                TestUtil.closeDB(c);
        }       
 }
diff --git a/src/interfaces/jdbc/org/postgresql/test/jdbc2/ServerCursorTest.java b/src/interfaces/jdbc/org/postgresql/test/jdbc2/ServerCursorTest.java
new file mode 100644 (file)
index 0000000..27a2f67
--- /dev/null
@@ -0,0 +1,91 @@
+package org.postgresql.test.jdbc2;
+import java.sql.*;
+import junit.framework.TestCase;
+import org.postgresql.test.TestUtil;
+/*
+ *  Tests for using non-zero setFetchSize().
+ */
+public class ServerCursorTest extends TestCase
+{
+    private Connection con;
+    public ServerCursorTest(String name)
+    {
+        super(name);
+    }
+    protected void setUp() throws Exception
+    {
+        con = TestUtil.openDB();
+        TestUtil.createTable(con, "test_fetch", "value integer,data bytea");
+        con.setAutoCommit(false);
+    }
+    protected void tearDown() throws Exception
+    {
+        con.rollback();
+        con.setAutoCommit(true);
+        TestUtil.dropTable(con, "test_fetch");
+        TestUtil.closeDB(con);
+    }
+    protected void createRows(int count) throws Exception
+    {
+        PreparedStatement stmt = con.prepareStatement("insert into test_fetch(value,data) values(?,?)");
+        for (int i = 0; i < count; ++i) {
+            stmt.setInt(1,i+1);
+            stmt.setBytes(2,DATA_STRING.getBytes("UTF8"));
+            stmt.executeUpdate();
+        }
+        con.commit();
+    }
+
+    //Test regular cursor fetching
+    public void testBasicFetch() throws Exception
+    {
+        createRows(1);
+
+        PreparedStatement stmt = con.prepareStatement("declare test_cursor cursor for select * from test_fetch");
+        stmt.execute();
+
+        stmt = con.prepareStatement("fetch forward from test_cursor");
+        ResultSet rs = stmt.executeQuery();
+        while (rs.next()) {
+            //there should only be one row returned
+            assertEquals("query value error", 1, rs.getInt(1));
+            byte[] dataBytes = rs.getBytes(2);
+            assertEquals("binary data got munged", DATA_STRING, new String(dataBytes,"UTF8"));
+        }
+    }
+
+    //Test binary cursor fetching
+    public void testBinaryFetch() throws Exception
+    {
+        createRows(1);
+        PreparedStatement stmt = con.prepareStatement("declare test_cursor binary cursor for select * from test_fetch");
+        stmt.execute();
+
+        stmt = con.prepareStatement("fetch forward from test_cursor");
+        ResultSet rs = stmt.executeQuery();
+        while (rs.next()) {
+            //there should only be one row returned
+            byte[] dataBytes = rs.getBytes(2);
+            assertEquals("binary data got munged", DATA_STRING, new String(dataBytes,"UTF8"));
+        }
+    }
+
+    //This string contains a variety different data:
+    //  three japanese characters representing "japanese" in japanese
+    //  the four characters "\000"
+    //  a null character
+    //  the seven ascii characters "english"
+    private static final String DATA_STRING = "\u65E5\u672C\u8A9E\\000\u0000english";
+
+}