List:Commits« Previous MessageNext Message »
From:mmatthews Date:March 19 2008 4:44pm
Subject:Connector/J commit: r6763 - in branches/branch_5_1: . src/com/mysql/jdbc src/testsuite/regression
View as plain text  
Modified:
   branches/branch_5_1/CHANGES
   branches/branch_5_1/src/com/mysql/jdbc/DatabaseMetaData.java
   branches/branch_5_1/src/testsuite/regression/CallableStatementRegressionTest.java
Log:
Fixed BUG#35199 - Parse error for metadata in stored function.

Modified: branches/branch_5_1/CHANGES
===================================================================
--- branches/branch_5_1/CHANGES	2008-03-13 18:46:04 UTC (rev 6762)
+++ branches/branch_5_1/CHANGES	2008-03-19 15:44:36 UTC (rev 6763)
@@ -6,6 +6,8 @@
 	- Fixed BUG#35170- ResultSet.isAfterLast() doesn't work with for
 	  streaming result sets.
 	  
+	- Fixed BUG#35199 - Parse error for metadata in stored function.
+	  
 03-06-08 - Version 5.1.6
 
     - JDBC-4.0-ized XAConnections and datasources.

Modified: branches/branch_5_1/src/com/mysql/jdbc/DatabaseMetaData.java
===================================================================
--- branches/branch_5_1/src/com/mysql/jdbc/DatabaseMetaData.java	2008-03-13 18:46:04 UTC
(rev 6762)
+++ branches/branch_5_1/src/com/mysql/jdbc/DatabaseMetaData.java	2008-03-19 15:44:36 UTC
(rev 6763)
@@ -1892,18 +1892,26 @@
 
 		int startLookingAt = positionOfReturnKeyword + "RETURNS".length() + 1;
 
+		int endOfReturn = -1;
+		
 		for (int i = 0; i < tokens.length; i++) {
-			int endOfReturn = StringUtils.indexOfIgnoreCaseRespectQuotes(
+			int nextEndOfReturn = StringUtils.indexOfIgnoreCaseRespectQuotes(
 					startLookingAt, procedureDefn, tokens[i], quoteChar
 							.charAt(0), !this.conn.isNoBackslashEscapesSet());
 
-			if (endOfReturn != -1) {
-				return endOfReturn;
+			if (nextEndOfReturn != -1) {
+				if (endOfReturn == -1 || (nextEndOfReturn < endOfReturn)) {
+					endOfReturn = nextEndOfReturn;
+				}
 			}
 		}
+		
+		if (endOfReturn != -1) {
+			return endOfReturn;
+		}
 
 		// Label?
-		int endOfReturn = StringUtils.indexOfIgnoreCaseRespectQuotes(
+		endOfReturn = StringUtils.indexOfIgnoreCaseRespectQuotes(
 				startLookingAt, procedureDefn, ":", quoteChar.charAt(0),
 				!this.conn.isNoBackslashEscapesSet());
 

Modified:
branches/branch_5_1/src/testsuite/regression/CallableStatementRegressionTest.java
===================================================================
---
branches/branch_5_1/src/testsuite/regression/CallableStatementRegressionTest.java	2008-03-13
18:46:04 UTC (rev 6762)
+++
branches/branch_5_1/src/testsuite/regression/CallableStatementRegressionTest.java	2008-03-19
15:44:36 UTC (rev 6763)
@@ -1571,4 +1571,29 @@
 			}
 		}
 	}
+	
+	public void testBug35199() throws Exception {
+		if (!versionMeetsMinimum(5, 0)) {
+			return;
+		}
+
+		createFunction("test_function", "(a varchar(40), " + "b bigint(20), "
+				+ "c varchar(80)) " + "RETURNS bigint(20) " + "LANGUAGE SQL "
+				+ "DETERMINISTIC " + "MODIFIES SQL DATA " + "COMMENT 'bbb' "
+				+ "BEGIN " + "RETURN 1; " + "END; ");
+
+		CallableStatement callable = null;
+		try {
+			callable = conn.prepareCall("{? = call test_function(?,101,?)}");
+			callable.registerOutParameter(1, Types.BIGINT);
+
+			callable.setString(2, "FOO");
+			callable.setString(3, "BAR");
+			callable.executeUpdate();
+		} finally {
+			if (callable != null) {
+				callable.close();
+			}
+		}
+	}
 }
\ No newline at end of file

Thread
Connector/J commit: r6763 - in branches/branch_5_1: . src/com/mysql/jdbc src/testsuite/regressionmmatthews19 Mar