From 06bbd98a151036b0d7a581067e936b5d0698f053 Mon Sep 17 00:00:00 2001
From: Barry Lind <barry@xythos.com>
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 60b57083645..5048f015328 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 617034f76bf..c8b34f2c67a 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");
+	}
 }
-- 
GitLab