From 06bbd98a151036b0d7a581067e936b5d0698f053 Mon Sep 17 00:00:00 2001 From: Barry Lind Date: Tue, 26 Aug 2003 06:50:39 +0000 Subject: [PATCH] Attempt to fix setMaxFieldSize() logic that was checked in yesterday. 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 --- .../jdbc1/AbstractJdbc1Statement.java | 4 +-- .../postgresql/test/jdbc2/ResultSetTest.java | 30 +++++++++++++++++++ 2 files changed, 32 insertions(+), 2 deletions(-) diff --git a/src/interfaces/jdbc/org/postgresql/jdbc1/AbstractJdbc1Statement.java b/src/interfaces/jdbc/org/postgresql/jdbc1/AbstractJdbc1Statement.java index 60b5708364..5048f01532 100644 --- a/src/interfaces/jdbc/org/postgresql/jdbc1/AbstractJdbc1Statement.java +++ b/src/interfaces/jdbc/org/postgresql/jdbc1/AbstractJdbc1Statement.java @@ -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; diff --git a/src/interfaces/jdbc/org/postgresql/test/jdbc2/ResultSetTest.java b/src/interfaces/jdbc/org/postgresql/test/jdbc2/ResultSetTest.java index 617034f76b..c8b34f2c67 100644 --- a/src/interfaces/jdbc/org/postgresql/test/jdbc2/ResultSetTest.java +++ b/src/interfaces/jdbc/org/postgresql/test/jdbc2/ResultSetTest.java @@ -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"); + } }