Bug #52167 | Can't parse parameter list with special characters inside | ||
---|---|---|---|
Submitted: | 18 Mar 2010 7:39 | Modified: | 24 Mar 2010 13:32 |
Reporter: | Tonci Grgin | Email Updates: | |
Status: | Closed | Impact on me: | |
Category: | Connector / J | Severity: | S3 (Non-critical) |
Version: | 5.1 branch | OS: | Any |
Assigned to: | Tony Bedford | CPU Architecture: | Any |
[18 Mar 2010 7:39]
Tonci Grgin
[18 Mar 2010 7:41]
Tonci Grgin
This will be fixed as a part of fix for Bug#51912.
[18 Mar 2010 8:37]
Tonci Grgin
Patch: DatabaseMetaData.java, ~ Ln 1732 if (declaration.trim().length() == 0) { break; // no parameters actually declared, but whitespace spans lines } + //Bug#52167, tokenizer will break if declaration contains special characters like \n + declaration = declaration.replaceAll("[\\t\\n\\x0B\\f\\r]", " "); StringTokenizer declarationTok = new StringTokenizer( declaration, " \t");
[18 Mar 2010 8:42]
Tonci Grgin
mysql> show create procedure foo1\G *************************** 1. row *************************** Procedure: foo1 sql_mode: Create Procedure: CREATE DEFINER=`root`@`%` PROCEDURE `foo1`(OUT nfact VARCH AR(100), IN ccuenta VARCHAR(100), OUT ffact VARCHAR(100), OUT fdoc VARCHAR(100)) BEGIN SET nfact = 'ncfact string'; SET ffact = 'ffact string'; SET fdoc = 'fdoc string'; END character_set_client: latin1 collation_connection: latin1_swedish_ci Database Collation: latin1_swedish_ci 1 row in set (0.00 sec)
[24 Mar 2010 7:14]
Tonci Grgin
Fixed in patch for Bug#51912. Regression test case will be added for this problem.
[24 Mar 2010 13:32]
Tony Bedford
An entry has been added to the 5.1.13 changelog: In the file DatabaseMetadata.java, the function private void getCallStmtParameterTypes failed if the parameter was defined over more than one line by using the '\n' character.