List:Commits« Previous MessageNext Message »
From:mmatthews Date:August 16 2006 4:18pm
Subject:Connector/J commit: r5639 - branches/branch_3_1/connector-j branches/branch_3_1/connector-j/src/com/mysql/jdbc branches/branch_3_1/connector-j/src/tes...
View as plain text  
Modified:
   branches/branch_3_1/connector-j/CHANGES
   branches/branch_3_1/connector-j/src/com/mysql/jdbc/Field.java
   branches/branch_3_1/connector-j/src/testsuite/regression/MetaDataRegressionTest.java
   branches/branch_5_0/connector-j/CHANGES
   branches/branch_5_0/connector-j/src/com/mysql/jdbc/Field.java
   branches/branch_5_0/connector-j/src/testsuite/regression/MetaDataRegressionTest.java
   trunk/connector-j/CHANGES
   trunk/connector-j/src/com/mysql/jdbc/Field.java
   trunk/connector-j/src/testsuite/regression/MetaDataRegressionTest.java
Log:
Fixed calling toString() on ResultSetMetaData for driver-generated
	  (i.e. from DatabaseMetaData method calls, or from getGeneratedKeys())
	  result sets would raise a NullPointerException.

Modified: branches/branch_3_1/connector-j/CHANGES
===================================================================
--- branches/branch_3_1/connector-j/CHANGES	2006-08-16 00:01:45 UTC (rev 5638)
+++ branches/branch_3_1/connector-j/CHANGES	2006-08-16 14:18:23 UTC (rev 5639)
@@ -35,7 +35,11 @@
 	  
 	- Fixed BUG#19993 - ReplicationDriver does not always round-robin load
 	  balance depending on URL used for slaves list.
-	  
+	
+	- Fixed calling toString() on ResultSetMetaData for driver-generated
+	  (i.e. from DatabaseMetaData method calls, or from getGeneratedKeys())
+	  result sets would raise a NullPointerException.
+	    
 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/Field.java
===================================================================
--- branches/branch_3_1/connector-j/src/com/mysql/jdbc/Field.java	2006-08-16 00:01:45 UTC
(rev 5638)
+++ branches/branch_3_1/connector-j/src/com/mysql/jdbc/Field.java	2006-08-16 14:18:23 UTC
(rev 5639)
@@ -832,36 +832,34 @@
 		this.useOldNameMetadata = useOldNameMetadata;
 	}
 
-	/**
-	 * DOCUMENT ME!
-	 * 
-	 * @return DOCUMENT ME!
-	 */
 	public String toString() {
 		try {
 			StringBuffer asString = new StringBuffer();
 			asString.append(super.toString());
-			
+
 			asString.append("\n  catalog: ");
 			asString.append(this.getDatabaseName());
-					asString.append("\n  table name: ");
-					asString.append(this.getTableName());
-					asString.append("\n  original table name: ");
-					asString.append(this.getOriginalTableName());
-					asString.append("\n  column name: ");
-					asString.append(this.getName());
-					asString.append("\n  original column name: ");
-					asString.append(this.getOriginalName());
-					asString.append("\n  MySQL data type: ");
-					asString.append(getMysqlType());
-					asString.append("\n\nData as received from server:\n\n");
-					asString.append(StringUtils.dumpAsHex(this.buffer, this.buffer.length));
-					
-					return asString.toString();
-		} catch (SQLException sqlEx) {
+			asString.append("\n  table name: ");
+			asString.append(this.getTableName());
+			asString.append("\n  original table name: ");
+			asString.append(this.getOriginalTableName());
+			asString.append("\n  column name: ");
+			asString.append(this.getName());
+			asString.append("\n  original column name: ");
+			asString.append(this.getOriginalName());
+			asString.append("\n  MySQL data type: ");
+			asString.append(getMysqlType());
+
+			if (this.buffer != null) {
+				asString.append("\n\nData as received from server:\n\n");
+				asString.append(StringUtils.dumpAsHex(this.buffer,
+						this.buffer.length));
+			}
+
+			return asString.toString();
+		} catch (Throwable t) {
 			return super.toString();
 		}
-
 	}
 
 	protected boolean isSingleBit() {

Modified:
branches/branch_3_1/connector-j/src/testsuite/regression/MetaDataRegressionTest.java
===================================================================
---
branches/branch_3_1/connector-j/src/testsuite/regression/MetaDataRegressionTest.java	2006-08-16
00:01:45 UTC (rev 5638)
+++
branches/branch_3_1/connector-j/src/testsuite/regression/MetaDataRegressionTest.java	2006-08-16
14:18:23 UTC (rev 5639)
@@ -1453,6 +1453,19 @@
 	}
 	
 	/**
+	 * Tests fix for BUG#18258 - Nonexistent catalog/database causes SQLException
+	 * to be raised, rather than returning empty result set.
+	 * 
+	 * @throws Exception if the test fails.
+	 */
+	public void testBug18258() throws Exception {
+		String bogusDatabaseName = "abcdefghijklmnopqrstuvwxyz";
+		this.conn.getMetaData().getTables(bogusDatabaseName, "%", "%", new String[] {"TABLE",
"VIEW"});
+		this.conn.getMetaData().getColumns(bogusDatabaseName, "%", "%", "%");
+		this.conn.getMetaData().getProcedures(bogusDatabaseName, "%", "%");
+	}
+	
+	/**
 	 * Tests fix for BUG#18554 - Aliased column names where
 	 * length of name > 251 are corrupted.
 	 * 
@@ -1468,6 +1481,52 @@
 		testBug18554(255);
 	}
 	
+	/*
+	public void testBug20491() throws Exception {
+		createTable("testBug20491",  "("
+				 + "`field1_ae_+				 + "`field2_ue_+				 + "`field3_oe_+				 + "`field4_sz_+				 + "PRIMARY KEY  (`field1_ae_+				);
+		this.rs = this.conn.getMetaData().getColumns(this.conn.getCatalog(), 
+				null, "testBug20491", "%");
+		this.rs.next();
+		assertEquals("field1_ae_+	}*/
+	
+	public void testBug20191() throws Exception {
+		if (versionMeetsMinimum(5, 0)) {
+			stmt.executeUpdate("drop table if exists t1;");
+		    stmt.executeUpdate("create table t1 (id int(10))");
+		    stmt.executeUpdate("insert into t1 values (1);");
+		    stmt.executeUpdate("drop view if exists v1");
+		    stmt.executeUpdate("CREATE ALGORITHM=UNDEFINED SQL SECURITY DEFINER VIEW v1 AS
select t1.id as id from t1");
+		    ResultSet rs = stmt.executeQuery("select * from v1 group by id limit 1");
+		    System.out.println("when limit is 1, getTableName gives: ");
+		    ResultSetMetaData rsmd = rs.getMetaData();
+		    System.out.println(rsmd.getTableName(1));
+		    System.out.println("<P>");
+		    rs = stmt.executeQuery("select * from v1 group by id limit 0");
+		    System.out.println("when limit is 0, getTableName gives: ");
+		    rsmd = rs.getMetaData();
+		    System.out.println(rsmd.getTableName(1));
+		    System.out.println("<P>");
+		    rs = stmt.executeQuery("select * from v1 where id=1000 group by id ");
+		    System.out.println("when result not found, getTableName gives: ");
+		    rsmd = rs.getMetaData();
+		    System.out.println(rsmd.getTableName(1));
+		    System.out.println("<P>");
+		    rs = stmt.executeQuery("select * from v1 where id=1 group by id ");
+		    System.out.println("when result not found, getTableName gives: ");
+		    rsmd = rs.getMetaData();
+		    System.out.println(rsmd.getTableName(1));
+		    System.out.println("<P>");
+		    System.out.println("Note that \"group by\" is essential in this case");
+		    rs.close();
+		}
+	}
 	private void testBug18554(int columnNameLength) throws Exception {
 		StringBuffer buf = new StringBuffer(columnNameLength + 2);
 		
@@ -1506,6 +1565,16 @@
 		assertEquals(true, dbmd.supportsGroupByUnrelated());
 	}
 	
+	public void testRSMDToStringFromDBMD() throws Exception {
+		try {		
+			this.rs = this.conn.getMetaData().getTypeInfo();
+			
+			this.rs.getMetaData().toString(); // used to cause NPE
+		} finally {
+			closeMemberJDBCResources();
+		}
+	}
+	
 	private void testAbsenceOfMetadataForQuery(String query) throws Exception {
 		try {
 			this.pstmt = this.conn.prepareStatement(query);

Modified: branches/branch_5_0/connector-j/CHANGES
===================================================================
--- branches/branch_5_0/connector-j/CHANGES	2006-08-16 00:01:45 UTC (rev 5638)
+++ branches/branch_5_0/connector-j/CHANGES	2006-08-16 14:18:23 UTC (rev 5639)
@@ -226,7 +226,11 @@
 	  
 	- Fixed BUG#19993 - ReplicationDriver does not always round-robin load
 	  balance depending on URL used for slaves list.
-	  	  	  	  	  
+		
+	- Fixed calling toString() on ResultSetMetaData for driver-generated
+	  (i.e. from DatabaseMetaData method calls, or from getGeneratedKeys())
+	  result sets would raise a NullPointerException.
+	      	  	  	  	  
 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/Field.java
===================================================================
--- branches/branch_5_0/connector-j/src/com/mysql/jdbc/Field.java	2006-08-16 00:01:45 UTC
(rev 5638)
+++ branches/branch_5_0/connector-j/src/com/mysql/jdbc/Field.java	2006-08-16 14:18:23 UTC
(rev 5639)
@@ -853,36 +853,34 @@
 		this.useOldNameMetadata = useOldNameMetadata;
 	}
 
-	/**
-	 * DOCUMENT ME!
-	 * 
-	 * @return DOCUMENT ME!
-	 */
 	public String toString() {
 		try {
 			StringBuffer asString = new StringBuffer();
 			asString.append(super.toString());
-			
+
 			asString.append("\n  catalog: ");
 			asString.append(this.getDatabaseName());
-					asString.append("\n  table name: ");
-					asString.append(this.getTableName());
-					asString.append("\n  original table name: ");
-					asString.append(this.getOriginalTableName());
-					asString.append("\n  column name: ");
-					asString.append(this.getName());
-					asString.append("\n  original column name: ");
-					asString.append(this.getOriginalName());
-					asString.append("\n  MySQL data type: ");
-					asString.append(getMysqlType());
-					asString.append("\n\nData as received from server:\n\n");
-					asString.append(StringUtils.dumpAsHex(this.buffer, this.buffer.length));
-					
-					return asString.toString();
-		} catch (SQLException sqlEx) {
+			asString.append("\n  table name: ");
+			asString.append(this.getTableName());
+			asString.append("\n  original table name: ");
+			asString.append(this.getOriginalTableName());
+			asString.append("\n  column name: ");
+			asString.append(this.getName());
+			asString.append("\n  original column name: ");
+			asString.append(this.getOriginalName());
+			asString.append("\n  MySQL data type: ");
+			asString.append(getMysqlType());
+
+			if (this.buffer != null) {
+				asString.append("\n\nData as received from server:\n\n");
+				asString.append(StringUtils.dumpAsHex(this.buffer,
+						this.buffer.length));
+			}
+
+			return asString.toString();
+		} catch (Throwable t) {
 			return super.toString();
 		}
-	
 	}
 
 	protected boolean isSingleBit() {

Modified:
branches/branch_5_0/connector-j/src/testsuite/regression/MetaDataRegressionTest.java
===================================================================
---
branches/branch_5_0/connector-j/src/testsuite/regression/MetaDataRegressionTest.java	2006-08-16
00:01:45 UTC (rev 5638)
+++
branches/branch_5_0/connector-j/src/testsuite/regression/MetaDataRegressionTest.java	2006-08-16
14:18:23 UTC (rev 5639)
@@ -1602,4 +1602,14 @@
 		}
 	}
 
+	public void testRSMDToStringFromDBMD() throws Exception {
+		try {		
+			this.rs = this.conn.getMetaData().getTypeInfo();
+			
+			this.rs.getMetaData().toString(); // used to cause NPE
+		} finally {
+			closeMemberJDBCResources();
+		}
+	}
+
 }

Modified: trunk/connector-j/CHANGES
===================================================================
--- trunk/connector-j/CHANGES	2006-08-16 00:01:45 UTC (rev 5638)
+++ trunk/connector-j/CHANGES	2006-08-16 14:18:23 UTC (rev 5639)
@@ -217,7 +217,11 @@
 	  
 	- Fixed BUG#19993 - ReplicationDriver does not always round-robin load
 	  balance depending on URL used for slaves list.
-	  	  	  	  	  
+	
+	- Fixed calling toString() on ResultSetMetaData for driver-generated
+	  (i.e. from DatabaseMetaData method calls, or from getGeneratedKeys())
+	  result sets would raise a NullPointerException.
+	    	  	  	  	  	  
 05-26-06 - Version 3.1.13
 
     - Fixed BUG#15464 - INOUT parameter does not store IN value.

Modified: trunk/connector-j/src/com/mysql/jdbc/Field.java
===================================================================
--- trunk/connector-j/src/com/mysql/jdbc/Field.java	2006-08-16 00:01:45 UTC (rev 5638)
+++ trunk/connector-j/src/com/mysql/jdbc/Field.java	2006-08-16 14:18:23 UTC (rev 5639)
@@ -853,36 +853,34 @@
 		this.useOldNameMetadata = useOldNameMetadata;
 	}
 
-	/**
-	 * DOCUMENT ME!
-	 * 
-	 * @return DOCUMENT ME!
-	 */
 	public String toString() {
 		try {
 			StringBuffer asString = new StringBuffer();
 			asString.append(super.toString());
-			
+
 			asString.append("\n  catalog: ");
 			asString.append(this.getDatabaseName());
-					asString.append("\n  table name: ");
-					asString.append(this.getTableName());
-					asString.append("\n  original table name: ");
-					asString.append(this.getOriginalTableName());
-					asString.append("\n  column name: ");
-					asString.append(this.getName());
-					asString.append("\n  original column name: ");
-					asString.append(this.getOriginalName());
-					asString.append("\n  MySQL data type: ");
-					asString.append(getMysqlType());
-					asString.append("\n\nData as received from server:\n\n");
-					asString.append(StringUtils.dumpAsHex(this.buffer, this.buffer.length));
-					
-					return asString.toString();
-		} catch (SQLException sqlEx) {
+			asString.append("\n  table name: ");
+			asString.append(this.getTableName());
+			asString.append("\n  original table name: ");
+			asString.append(this.getOriginalTableName());
+			asString.append("\n  column name: ");
+			asString.append(this.getName());
+			asString.append("\n  original column name: ");
+			asString.append(this.getOriginalName());
+			asString.append("\n  MySQL data type: ");
+			asString.append(getMysqlType());
+
+			if (this.buffer != null) {
+				asString.append("\n\nData as received from server:\n\n");
+				asString.append(StringUtils.dumpAsHex(this.buffer,
+						this.buffer.length));
+			}
+
+			return asString.toString();
+		} catch (Throwable t) {
 			return super.toString();
 		}
-	
 	}
 
 	protected boolean isSingleBit() {

Modified: trunk/connector-j/src/testsuite/regression/MetaDataRegressionTest.java
===================================================================
--- trunk/connector-j/src/testsuite/regression/MetaDataRegressionTest.java	2006-08-16
00:01:45 UTC (rev 5638)
+++ trunk/connector-j/src/testsuite/regression/MetaDataRegressionTest.java	2006-08-16
14:18:23 UTC (rev 5639)
@@ -1559,4 +1559,14 @@
 		}
 	}
 
+	public void testRSMDToStringFromDBMD() throws Exception {
+		try {		
+			this.rs = this.conn.getMetaData().getTypeInfo();
+			
+			this.rs.getMetaData().toString(); // used to cause NPE
+		} finally {
+			closeMemberJDBCResources();
+		}
+	}
+
 }

Thread
Connector/J commit: r5639 - branches/branch_3_1/connector-j branches/branch_3_1/connector-j/src/com/mysql/jdbc branches/branch_3_1/connector-j/src/tes...mmatthews16 Aug