/** * */ import java.sql.Connection; import java.sql.ResultSet; import java.sql.Statement; import java.util.Properties; import com.mysql.jdbc.PreparedStatement; import com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource; /** * @author Tonci * */ public class TestBug38244 { /** * @param name */ public TestBug38244(String name) { // TODO Auto-generated constructor stub } public static Connection getConnection() { MysqlConnectionPoolDataSource ds = new MysqlConnectionPoolDataSource(); ds.setServerName("localhost"); ds.setPortNumber(3306); ds.setDatabaseName("vtba"); ds.setUser("root"); ds.setPassword("12345678"); ds.setJdbcCompliantTruncation(true); ds.setUseInformationSchema(true); System.out.println("URL:" + ds.getURL()); try { Connection conn = ds.getConnection(); System.out.println("Get connection: " + conn.toString()); return conn; }catch (Exception e) { e.printStackTrace(); return null; } } public static void testBug38244() throws Exception { System.out.println("java.vm.version : " + System.getProperty("java.vm.version")); System.out.println("java.vm.vendor : " + System.getProperty("java.vm.vendor")); System.out.println("java.runtime.version : " + System.getProperty("java.runtime.version")); System.out.println("os.name : " + System.getProperty("os.name")); System.out.println("os.version : " + System.getProperty("os.version ")); System.out.println("sun.management.compiler : " + System.getProperty("sun.management.compiler")); Connection rewriteConn = null; Properties props = new Properties(); props.put("jdbcCompliantTruncation","true"); props.put("useInformationSchema","true"); Statement stmt = null; ResultSet rs = null; java.sql.PreparedStatement pstmt = null; try { //createTable("bug38244", "(c BIT(10))"); System.out.println("Test 1.1: jdbcCompliantTruncation=true, useInformationSchema=true"); byte[] b = null; rewriteConn = getConnection(); stmt = rewriteConn.createStatement(); stmt.execute("INSERT INTO testbit VALUES (111)"); pstmt = rewriteConn.prepareStatement("SELECT * FROM testbit"); rs = pstmt.executeQuery(); while (rs.next()) { System.out.println(rs.getObject(1).getClass().getName()); b = (byte[])rs.getObject(1); for (byte bb: b) System.out.println(bb); } pstmt = rewriteConn.prepareStatement("update testbit set b=222 where b = ?"); pstmt.setBytes(1, b); int i = pstmt.executeUpdate(); System.out.println("Update count (i) = " + i); System.out.println("Update count = " + pstmt.getUpdateCount()); rs.close(); stmt.close(); pstmt.close(); rewriteConn.close(); props.clear(); props.put("jdbcCompliantTruncation", "false"); props.put("useInformationSchema","true"); System.out.println("Test 1.2: jdbcCompliantTruncation=false, useInformationSchema=true"); rewriteConn = getConnection(); pstmt = rewriteConn.prepareStatement("SELECT * FROM testbit"); rs = pstmt.executeQuery(); while (rs.next()) { System.out.println(rs.getObject(1).getClass().getName()); b = (byte[])rs.getObject(1); for (byte bb: b) System.out.println(bb); } pstmt = rewriteConn.prepareStatement("update testbit set b=333 where b = ?"); pstmt.setBytes(1, b); i = pstmt.executeUpdate(); System.out.println("Update count (i) = " + i); System.out.println("Update count = " + pstmt.getUpdateCount()); rs.close(); stmt.close(); pstmt.close(); rewriteConn.close(); props.clear(); } finally { } } /** * @param args */ public static void main(String[] args) throws Exception { // TODO Auto-generated method stub testBug38244(); } }