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/regression | mmatthews | 19 Mar |