]> granicus.if.org Git - postgresql/commitdiff
Attempt to fix setMaxFieldSize() logic that was checked in yesterday.
authorBarry Lind <barry@xythos.com>
Tue, 26 Aug 2003 06:50:39 +0000 (06:50 +0000)
committerBarry Lind <barry@xythos.com>
Tue, 26 Aug 2003 06:50:39 +0000 (06:50 +0000)
I think this should fix the problem, but since I don't have a reproducable test
case, I can't be sure.  This problem is reported by Kim Ho of redhat, who will
test this fix.  This also includes a test case for the original functionality.

 Modified Files:
  jdbc/org/postgresql/jdbc1/AbstractJdbc1Statement.java
  jdbc/org/postgresql/test/jdbc2/ResultSetTest.java

src/interfaces/jdbc/org/postgresql/jdbc1/AbstractJdbc1Statement.java
src/interfaces/jdbc/org/postgresql/test/jdbc2/ResultSetTest.java

index 60b57083645edd0aed3a8bb0edf42d71e5e50ef2..5048f015328eff58134932d022afaae360eabf73 100644 (file)
@@ -25,7 +25,7 @@ import java.sql.Timestamp;
 import java.sql.Types;
 import java.util.Vector;
 
-/* $Header: /cvsroot/pgsql/src/interfaces/jdbc/org/postgresql/jdbc1/Attic/AbstractJdbc1Statement.java,v 1.32 2003/08/24 22:10:09 barry Exp $
+/* $Header: /cvsroot/pgsql/src/interfaces/jdbc/org/postgresql/jdbc1/Attic/AbstractJdbc1Statement.java,v 1.33 2003/08/26 06:50:39 barry Exp $
  * This class defines methods of the jdbc1 specification.  This class is
  * extended by org.postgresql.jdbc2.AbstractJdbc2Statement which adds the jdbc2
  * methods.  The real Statement class (for jdbc1) is org.postgresql.jdbc1.Jdbc1Statement
@@ -87,7 +87,7 @@ public abstract class AbstractJdbc1Statement implements BaseStatement
        // returnTypeSet is true when a proper call to registerOutParameter has been made
        private boolean returnTypeSet;
        protected Object callResult;
-       protected static int maxfieldSize = 0;
+       protected int maxfieldSize = 0;
 
        public abstract BaseResultSet createResultSet(Field[] fields, Vector tuples, String status, int updateCount, long insertOID, boolean binaryCursor) throws SQLException;
 
index 617034f76bfb2f29381715b4703d77d27d59ae1a..c8b34f2c67a889b890bd8503b225f8cdc73d7e80 100644 (file)
@@ -4,6 +4,7 @@ import org.postgresql.test.TestUtil;
 import java.sql.Connection;
 import java.sql.ResultSet;
 import java.sql.Statement;
+import java.sql.SQLException;
 
 import junit.framework.TestCase;
 
@@ -32,6 +33,12 @@ public class ResultSetTest extends TestCase
                stmt.executeUpdate("INSERT INTO testrs VALUES (4)");
                stmt.executeUpdate("INSERT INTO testrs VALUES (6)");
                stmt.executeUpdate("INSERT INTO testrs VALUES (9)");
+               
+               TestUtil.createTable(con, "teststring", "a text");
+               stmt.executeUpdate("INSERT INTO teststring VALUES ('12345')");
+               
+               TestUtil.createTable(con, "testint", "a int");
+               stmt.executeUpdate("INSERT INTO testint VALUES (12345)");
 
                stmt.close();
        }
@@ -39,6 +46,8 @@ public class ResultSetTest extends TestCase
        protected void tearDown() throws Exception
        {
                TestUtil.dropTable(con, "testrs");
+               TestUtil.dropTable(con, "teststring");
+               TestUtil.dropTable(con, "testint");
                TestUtil.closeDB(con);
        }
 
@@ -85,4 +94,25 @@ public class ResultSetTest extends TestCase
                }
 
        }
+       
+       public void testMaxFieldSize() throws Exception
+       {
+                       Statement stmt = con.createStatement();
+                       stmt.setMaxFieldSize(2);
+
+                       ResultSet rs = stmt.executeQuery("select * from testint");
+                       
+                       //max should not apply to the following since per the spec
+                       //it should apply only to binary and char/varchar columns
+                       rs.next();
+                       assertEquals(rs.getString(1),"12345");
+                       assertEquals(new String(rs.getBytes(1)), "12345");
+                       
+                       //max should apply to the following since the column is 
+                       //a varchar column
+                       rs = stmt.executeQuery("select * from teststring");
+                       rs.next();
+                       assertEquals(rs.getString(1), "12");
+                       assertEquals(new String(rs.getBytes(1)), "12");
+       }
 }