Modified:
branches/branch_3_1/connector-j/CHANGES
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/ResultSet.java
branches/branch_5_0/connector-j/src/testsuite/regression/ResultSetRegressionTest.java
Log:
Fixed BUG#21062 - ResultSet.getSomeInteger() doesn't work for BIT(>1).
Modified: branches/branch_3_1/connector-j/CHANGES
===================================================================
--- branches/branch_3_1/connector-j/CHANGES 2006-07-18 00:01:23 UTC (rev 5523)
+++ branches/branch_3_1/connector-j/CHANGES 2006-07-18 16:00:59 UTC (rev 5524)
@@ -23,6 +23,8 @@
- Fixed BUG#20687 - Can't pool server-side prepared statements, exception
raised when re-using them.
+ - Fixed BUG#21062 - ResultSet.getSomeInteger() doesn't work for BIT(>1).
+
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/ResultSet.java
===================================================================
--- branches/branch_3_1/connector-j/src/com/mysql/jdbc/ResultSet.java 2006-07-18 00:01:23
UTC (rev 5523)
+++ branches/branch_3_1/connector-j/src/com/mysql/jdbc/ResultSet.java 2006-07-18 16:00:59
UTC (rev 5524)
@@ -4693,12 +4693,13 @@
byte[] asBytes = (byte[])this.thisRow[columnIndex - 1];
+
int shift = 0;
long[] steps = new long[asBytes.length];
- for (int i = asBytes.length; i >= 0; i--) {
- steps[i] = (long)(asBytes[i] & 0xff) << 48;
+ for (int i = asBytes.length - 1; i >= 0; i--) {
+ steps[i] = (long)(asBytes[i] & 0xff) << shift;
shift += 8;
}
Modified:
branches/branch_3_1/connector-j/src/testsuite/regression/ResultSetRegressionTest.java
===================================================================
---
branches/branch_3_1/connector-j/src/testsuite/regression/ResultSetRegressionTest.java 2006-07-18
00:01:23 UTC (rev 5523)
+++
branches/branch_3_1/connector-j/src/testsuite/regression/ResultSetRegressionTest.java 2006-07-18
16:00:59 UTC (rev 5524)
@@ -2596,6 +2596,38 @@
}
}
+ /**
+ * Tests fix for BUG#21062 - ResultSet.getSomeInteger() doesn't work for BIT(>1)
+ *
+ * @throws Exception if the test fails.
+ */
+ public void testBug21062() throws Exception {
+ if (versionMeetsMinimum(5, 0, 5)) {
+ createTable("testBug21062", "(bit_7_field BIT(7), bit_31_field BIT(31), bit_12_field
BIT(12))");
+
+ int max7Bits = 127;
+ long max31Bits = 2147483647L;
+ int max12Bits = 4095;
+
+ this.stmt.executeUpdate("INSERT INTO testBug21062 VALUES (" + max7Bits + "," +
max31Bits + "," + max12Bits + ")");
+
+ this.rs = this.stmt.executeQuery("SELECT * FROM testBug21062");
+
+ this.rs.next();
+
+ assertEquals(127, this.rs.getInt(1));
+ assertEquals(127, this.rs.getShort(1));
+ assertEquals(127, this.rs.getLong(1));
+
+ assertEquals(2147483647, this.rs.getInt(2));
+ assertEquals(2147483647, this.rs.getLong(2));
+
+ assertEquals(4095, this.rs.getInt(3));
+ assertEquals(4095, this.rs.getShort(3));
+ assertEquals(4095, this.rs.getLong(3));
+ }
+ }
+
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-07-18 00:01:23 UTC (rev 5523)
+++ branches/branch_5_0/connector-j/CHANGES 2006-07-18 16:00:59 UTC (rev 5524)
@@ -185,6 +185,8 @@
- Fixed BUG#20687 - Can't pool server-side prepared statements, exception
raised when re-using them.
+ - Fixed BUG#21062 - ResultSet.getSomeInteger() doesn't work for BIT(>1).
+
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/ResultSet.java
===================================================================
--- branches/branch_5_0/connector-j/src/com/mysql/jdbc/ResultSet.java 2006-07-18 00:01:23
UTC (rev 5523)
+++ branches/branch_5_0/connector-j/src/com/mysql/jdbc/ResultSet.java 2006-07-18 16:00:59
UTC (rev 5524)
@@ -5163,12 +5163,13 @@
byte[] asBytes = (byte[])this.thisRow[columnIndex - 1];
+
int shift = 0;
long[] steps = new long[asBytes.length];
- for (int i = asBytes.length; i >= 0; i--) {
- steps[i] = (long)(asBytes[i] & 0xff) << 48;
+ for (int i = asBytes.length - 1; i >= 0; i--) {
+ steps[i] = (long)(asBytes[i] & 0xff) << shift;
shift += 8;
}
Modified:
branches/branch_5_0/connector-j/src/testsuite/regression/ResultSetRegressionTest.java
===================================================================
---
branches/branch_5_0/connector-j/src/testsuite/regression/ResultSetRegressionTest.java 2006-07-18
00:01:23 UTC (rev 5523)
+++
branches/branch_5_0/connector-j/src/testsuite/regression/ResultSetRegressionTest.java 2006-07-18
16:00:59 UTC (rev 5524)
@@ -3415,4 +3415,36 @@
assertEquals(133.0, this.rs.getDouble(2), 0);
assertEquals(133, this.rs.getBigDecimal(2).intValue());
}
+
+ /**
+ * Tests fix for BUG#21062 - ResultSet.getSomeInteger() doesn't work for BIT(>1)
+ *
+ * @throws Exception if the test fails.
+ */
+ public void testBug21062() throws Exception {
+ if (versionMeetsMinimum(5, 0, 5)) {
+ createTable("testBug21062", "(bit_7_field BIT(7), bit_31_field BIT(31), bit_12_field
BIT(12))");
+
+ int max7Bits = 127;
+ long max31Bits = 2147483647L;
+ int max12Bits = 4095;
+
+ this.stmt.executeUpdate("INSERT INTO testBug21062 VALUES (" + max7Bits + "," +
max31Bits + "," + max12Bits + ")");
+
+ this.rs = this.stmt.executeQuery("SELECT * FROM testBug21062");
+
+ this.rs.next();
+
+ assertEquals(127, this.rs.getInt(1));
+ assertEquals(127, this.rs.getShort(1));
+ assertEquals(127, this.rs.getLong(1));
+
+ assertEquals(2147483647, this.rs.getInt(2));
+ assertEquals(2147483647, this.rs.getLong(2));
+
+ assertEquals(4095, this.rs.getInt(3));
+ assertEquals(4095, this.rs.getShort(3));
+ assertEquals(4095, this.rs.getLong(3));
+ }
+ }
}
| Thread |
|---|
| • Connector/J commit: r5524 - in branches: branch_3_1/connector-j branch_3_1/connector-j/src/com/mysql/jdbc branch_3_1/connector-j/src/testsuite/regress... | mmatthews | 18 Jul |