| Bug #29526 | syntax error: "show create procedure" with catalog names containing hyphens | ||
|---|---|---|---|
| Submitted: | 3 Jul 2007 18:17 | Modified: | 6 Jul 2007 2:50 |
| Reporter: | Maxim Mass | Email Updates: | |
| Status: | Closed | Impact on me: | |
| Category: | Connector / NET | Severity: | S3 (Non-critical) |
| Version: | 5.0.6 | OS: | Any |
| Assigned to: | CPU Architecture: | Any | |
[5 Jul 2007 19:32]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/30405
[5 Jul 2007 19:32]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/30405
[5 Jul 2007 19:34]
Reggie Burnett
Fixed in 5.0.8 and 5.1.3
[6 Jul 2007 2:47]
Paul DuBois
Noted in 5.0.8, 5.1.13 changelogs. Calling SHOW CREATE PROCEDURE for routines with a hyphen in the catalog name produced a syntax error.
[18 Jul 2007 22:09]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/31140

Description: I'm getting a syntax error when calling a sproc within a catalog whose name contains a hyphen. The procedure cache is used to retrieve the sproc body with the SHOW CREATE PROCEDURE command. This results in a syntax error when the sproc is in a catalog containing a hyphen (or possibly other characters). How to repeat: For example SHOW CREATE PROCEDURE foo-bar.some_sproc; You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-bar.some_sproc' The same command with an escaped catalog name will work correctly. SHOW CREATE PROCEDURE `foo-bar`.some_sproc; Storing the `quoted` version of the catalog name in the connection string results in other errors--such as permissions to the db (it doesn't find that exact catalog name). Suggested fix: Here's a possible fix to the .net connector that seems to work for me. I'm not certain though if it should be fixed here in the connector or in the mysql parser. Index: ISSchemaProvider.cs =================================================================== --- ISSchemaProvider.cs (revision 706) +++ ISSchemaProvider.cs (working copy) @@ -352,7 +352,7 @@ foreach (DataRow routine in routines.Rows) { - string showCreateSql = String.Format("SHOW CREATE {0} {1}.{2}", + string showCreateSql = String.Format("SHOW CREATE {0} `{1}`.{2}", routine["ROUTINE_TYPE"], routine["ROUTINE_SCHEMA"], routine["ROUTINE_NAME"]); cmd.CommandText = showCreateSql;