import java.sql.*;

public class Repro3230 {

    public static void main(String[] args) throws Exception{
	String FIFTEEN_THOUSAND_STRING = repeatChar("a",15000);
	String SEVEN_THOUSAND_500_STRING = repeatChar("a",7500);
	String FIVE_THOUSAND_STRING = repeatChar("a",5000);
	String TWO_THOUSAND_STRING = repeatChar("a",2000);
	String ONE_THOUSAND_600_STRING = repeatChar("a",1600);
	String EIGHT_HUNDRED_STRING = repeatChar("a",800);
	String FOUR_HUNDRED_STRING = repeatChar("a",400);
	String TWO_HUNDRED_STRING = repeatChar("a",200);
	String ONE_HUNDRED_STRING = repeatChar("a",100);


	Class.forName("org.apache.derby.jdbc.ClientDriver");
	String url = "jdbc:derby://localhost:1528/testdb;create=true";
	Connection conn = DriverManager.getConnection(url);
	Statement s = conn.createStatement();
	try {
	    s.executeUpdate("DROP TABLE TAB");
	} catch (SQLException se)
	    {
		//ignore table not found exception
		    }
	s.executeUpdate("CREATE TABLE TAB (col1 varchar(32672) NOT NULL)");
	PreparedStatement ps = conn.prepareStatement("INSERT INTO TAB VALUES(?)");
	ps.setString(1,FIFTEEN_THOUSAND_STRING);
	ps.executeUpdate();
	ps.setString(1,SEVEN_THOUSAND_500_STRING);
	ps.executeUpdate();
	ps.setString(1,FIVE_THOUSAND_STRING);
	ps.executeUpdate();
	ps.setString(1,TWO_THOUSAND_STRING);
	ps.executeUpdate();
	ps.setString(1,ONE_THOUSAND_600_STRING);
	ps.executeUpdate();
	ps.setString(1,EIGHT_HUNDRED_STRING);
	ps.executeUpdate();
	ps.setString(1,FOUR_HUNDRED_STRING);
	ps.executeUpdate();
	ps.setString(1,TWO_HUNDRED_STRING);
	ps.executeUpdate();
	ps.setString(1,ONE_HUNDRED_STRING);
	ps.executeUpdate();
	ps.setString(1,repeatChar("c",56));
	ps.executeUpdate();
        
	ResultSet rs = s.executeQuery("SELECT * from tab");
	// drain the resultset
	while (rs.next())
	    {
		rs.getString(1);
	    }
	rs.close();
	s.close();
	ps.close();
		
    }
	


/**
    	 * repeatChar is used to create strings of varying lengths.
    	 * called from various tests to test edge cases and such.
    	 *
    	 * @param c             character to repeat
    	 * @param repeatCount   Number of times to repeat character
    	 * @return              String of repeatCount characters c
    	 */
       public static String repeatChar(String c, int repeatCount)
       {
    	   char ch = c.charAt(0);

    	   char[] chArray = new char[repeatCount];
    	   for (int i = 0; i < repeatCount; i++)
    	   {
    		   chArray[i] = ch;
    	   }

    	   return new String(chArray);

       }

}
