From: Date: June 15 2006 9:46pm Subject: Connector/J commit: r5391 - in branches: branch_3_1/connector-j branch_3_1/connector-j/src/com/mysql/jdbc branch_3_1/connector-j/src/testsuite/regression branch_5_0/connector-j branch_5_0/connector-j/src/com/mysql/jdbc branch_5_0/connector-j/src/testsuite/regression branch_5_1/connector-j branch_5_1/connector-j/src/com/mysql/jdbc branch_5_1/connector-j/src/testsuite/regression List-Archive: http://lists.mysql.com/commits/7721 X-Bug: 20485 Message-Id: <200606151946.k5FJkAFH026927@bk-internal.mysql.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Modified: branches/branch_3_1/connector-j/CHANGES branches/branch_3_1/connector-j/src/com/mysql/jdbc/MysqlIO.java branches/branch_3_1/connector-j/src/com/mysql/jdbc/ResultSet.java branches/branch_3_1/connector-j/src/testsuite/regression/ResultSetRegressionTest.java branches/branch_5_0/connector-j/CHANGES branches/branch_5_0/connector-j/src/com/mysql/jdbc/MysqlIO.java branches/branch_5_0/connector-j/src/testsuite/regression/ResultSetRegressionTest.java branches/branch_5_1/connector-j/CHANGES branches/branch_5_1/connector-j/src/com/mysql/jdbc/MysqlIO.java branches/branch_5_1/connector-j/src/testsuite/regression/ResultSetRegressionTest.java Log: - Fixed BUG#20485 - Updatable result set that contains a BIT column fails when server-side prepared statements are used. Modified: branches/branch_3_1/connector-j/CHANGES =================================================================== --- branches/branch_3_1/connector-j/CHANGES 2006-06-15 19:24:26 UTC (rev 5390) +++ branches/branch_3_1/connector-j/CHANGES 2006-06-15 19:46:05 UTC (rev 5391) @@ -6,6 +6,9 @@ - Fixed BUG#20479 - Updatable result set throws ClassCastException when there is row data and moveToInsertRow() is called. + - Fixed BUG#20485 - Updatable result set that contains + a BIT column fails when server-side prepared statements are used. + 05-26-06 - Version 3.1.13 - Fixed BUG#15464 - INOUT parameter does not store IN value. Modified: branches/branch_3_1/connector-j/src/com/mysql/jdbc/MysqlIO.java =================================================================== --- branches/branch_3_1/connector-j/src/com/mysql/jdbc/MysqlIO.java 2006-06-15 19:24:26 UTC (rev 5390) +++ branches/branch_3_1/connector-j/src/com/mysql/jdbc/MysqlIO.java 2006-06-15 19:46:05 UTC (rev 5391) @@ -4194,6 +4194,7 @@ case MysqlDefs.FIELD_TYPE_DECIMAL: case MysqlDefs.FIELD_TYPE_NEW_DECIMAL: case MysqlDefs.FIELD_TYPE_GEOMETRY: + case MysqlDefs.FIELD_TYPE_BIT: unpackedRowData[columnIndex] = binaryData.readLenByteArray(0); break; Modified: branches/branch_3_1/connector-j/src/com/mysql/jdbc/ResultSet.java =================================================================== --- branches/branch_3_1/connector-j/src/com/mysql/jdbc/ResultSet.java 2006-06-15 19:24:26 UTC (rev 5390) +++ branches/branch_3_1/connector-j/src/com/mysql/jdbc/ResultSet.java 2006-06-15 19:46:05 UTC (rev 5391) @@ -4796,6 +4796,8 @@ return String.valueOf(asBytes[0]); } + + return String.valueOf(getNumericRepresentationOfSQLBitType(columnIndex + 1)); } String encoding = this.fields[columnIndex].getCharacterSet(); Modified: branches/branch_3_1/connector-j/src/testsuite/regression/ResultSetRegressionTest.java =================================================================== --- branches/branch_3_1/connector-j/src/testsuite/regression/ResultSetRegressionTest.java 2006-06-15 19:24:26 UTC (rev 5390) +++ branches/branch_3_1/connector-j/src/testsuite/regression/ResultSetRegressionTest.java 2006-06-15 19:46:05 UTC (rev 5391) @@ -2523,6 +2523,38 @@ } } + /** + * Tests fix for BUG#20485 - Updatable result set that contains + * a BIT column fails when server-side prepared statements are used. + * + * @throws Exception if the test fails. + */ + public void testBug20485() throws Exception { + if (!versionMeetsMinimum(5, 0)) { + return; + } + + PreparedStatement updStmt = null; + + createTable("testBug20485", "(field1 INT NOT NULL PRIMARY KEY, field2 BIT)"); + this.stmt.executeUpdate("INSERT INTO testBug20485 VALUES (2, 1), (3, 1), (4, 1)"); + + try { + updStmt = this.conn.prepareStatement("SELECT * FROM testBug20485 ORDER BY field1", + ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); + this.rs = updStmt.executeQuery(); + } finally { + if (this.rs != null) { + this.rs.close(); + this.rs = null; + } + + if (updStmt != null) { + updStmt.close(); + } + } + } + private void traverseResultSetBug14562() throws SQLException { assertTrue(this.rs.next()); Modified: branches/branch_5_0/connector-j/CHANGES =================================================================== --- branches/branch_5_0/connector-j/CHANGES 2006-06-15 19:24:26 UTC (rev 5390) +++ branches/branch_5_0/connector-j/CHANGES 2006-06-15 19:46:05 UTC (rev 5391) @@ -134,6 +134,9 @@ - Fixed BUG#20479 - Updatable result set throws ClassCastException when there is row data and moveToInsertRow() is called. + - Fixed BUG#20485 - Updatable result set that contains + a BIT column fails when server-side prepared statements are used. + 05-26-06 - Version 3.1.13 - Fixed BUG#15464 - INOUT parameter does not store IN value. Modified: branches/branch_5_0/connector-j/src/com/mysql/jdbc/MysqlIO.java =================================================================== --- branches/branch_5_0/connector-j/src/com/mysql/jdbc/MysqlIO.java 2006-06-15 19:24:26 UTC (rev 5390) +++ branches/branch_5_0/connector-j/src/com/mysql/jdbc/MysqlIO.java 2006-06-15 19:46:05 UTC (rev 5391) @@ -3758,6 +3758,7 @@ case MysqlDefs.FIELD_TYPE_VARCHAR: case MysqlDefs.FIELD_TYPE_DECIMAL: case MysqlDefs.FIELD_TYPE_NEW_DECIMAL: + case MysqlDefs.FIELD_TYPE_BIT: unpackedRowData[columnIndex] = binaryData.readLenByteArray(0); break; Modified: branches/branch_5_0/connector-j/src/testsuite/regression/ResultSetRegressionTest.java =================================================================== --- branches/branch_5_0/connector-j/src/testsuite/regression/ResultSetRegressionTest.java 2006-06-15 19:24:26 UTC (rev 5390) +++ branches/branch_5_0/connector-j/src/testsuite/regression/ResultSetRegressionTest.java 2006-06-15 19:46:05 UTC (rev 5391) @@ -3342,4 +3342,36 @@ } } } + + /** + * Tests fix for BUG#20485 - Updatable result set that contains + * a BIT column fails when server-side prepared statements are used. + * + * @throws Exception if the test fails. + */ + public void testBug20485() throws Exception { + if (!versionMeetsMinimum(5, 0)) { + return; + } + + PreparedStatement updStmt = null; + + createTable("testBug20485", "(field1 INT NOT NULL PRIMARY KEY, field2 BIT)"); + this.stmt.executeUpdate("INSERT INTO testBug20485 VALUES (2, 1), (3, 1), (4, 1)"); + + try { + updStmt = this.conn.prepareStatement("SELECT * FROM testBug20485 ORDER BY field1", + ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); + this.rs = updStmt.executeQuery(); + } finally { + if (this.rs != null) { + this.rs.close(); + this.rs = null; + } + + if (updStmt != null) { + updStmt.close(); + } + } + } } Modified: branches/branch_5_1/connector-j/CHANGES =================================================================== --- branches/branch_5_1/connector-j/CHANGES 2006-06-15 19:24:26 UTC (rev 5390) +++ branches/branch_5_1/connector-j/CHANGES 2006-06-15 19:46:05 UTC (rev 5391) @@ -108,6 +108,9 @@ - Fixed BUG#20479 - Updatable result set throws ClassCastException when there is row data and moveToInsertRow() is called. + - Fixed BUG#20485 - Updatable result set that contains + a BIT column fails when server-side prepared statements are used. + 05-26-06 - Version 3.1.13 - Fixed BUG#15464 - INOUT parameter does not store IN value. Modified: branches/branch_5_1/connector-j/src/com/mysql/jdbc/MysqlIO.java =================================================================== --- branches/branch_5_1/connector-j/src/com/mysql/jdbc/MysqlIO.java 2006-06-15 19:24:26 UTC (rev 5390) +++ branches/branch_5_1/connector-j/src/com/mysql/jdbc/MysqlIO.java 2006-06-15 19:46:05 UTC (rev 5391) @@ -3846,6 +3846,7 @@ case MysqlDefs.FIELD_TYPE_VARCHAR: case MysqlDefs.FIELD_TYPE_DECIMAL: case MysqlDefs.FIELD_TYPE_NEW_DECIMAL: + case MysqlDefs.FIELD_TYPE_BIT: unpackedRowData[columnIndex] = binaryData.readLenByteArray(0); break; Modified: branches/branch_5_1/connector-j/src/testsuite/regression/ResultSetRegressionTest.java =================================================================== --- branches/branch_5_1/connector-j/src/testsuite/regression/ResultSetRegressionTest.java 2006-06-15 19:24:26 UTC (rev 5390) +++ branches/branch_5_1/connector-j/src/testsuite/regression/ResultSetRegressionTest.java 2006-06-15 19:46:05 UTC (rev 5391) @@ -3041,4 +3041,36 @@ } } + /** + * Tests fix for BUG#20485 - Updatable result set that contains + * a BIT column fails when server-side prepared statements are used. + * + * @throws Exception if the test fails. + */ + public void testBug20485() throws Exception { + if (!versionMeetsMinimum(5, 0)) { + return; + } + + PreparedStatement updStmt = null; + + createTable("testBug20485", "(field1 INT NOT NULL PRIMARY KEY, field2 BIT)"); + this.stmt.executeUpdate("INSERT INTO testBug20485 VALUES (2, 1), (3, 1), (4, 1)"); + + try { + updStmt = this.conn.prepareStatement("SELECT * FROM testBug20485 ORDER BY field1", + ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); + this.rs = updStmt.executeQuery(); + } finally { + if (this.rs != null) { + this.rs.close(); + this.rs = null; + } + + if (updStmt != null) { + updStmt.close(); + } + } + } + }