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
    // 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;
 
 
 import java.sql.Connection;
 import java.sql.ResultSet;
 import java.sql.Statement;
+import java.sql.SQLException;
 
 import junit.framework.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();
    }
    protected void tearDown() throws Exception
    {
        TestUtil.dropTable(con, "testrs");
+       TestUtil.dropTable(con, "teststring");
+       TestUtil.dropTable(con, "testint");
        TestUtil.closeDB(con);
    }
 
        }
 
    }
+   
+   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");
+   }
 }