List:Commits« Previous MessageNext Message »
From:mmatthews Date:July 18 2006 6:01pm
Subject: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...
View as plain text  
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...mmatthews18 Jul