From: Dmitry Shulga Date: May 27 2011 7:06am Subject: bzr commit into mysql-5.1 branch (Dmitry.Shulga:3625) Bug#60347 Bug#11840395 List-Archive: http://lists.mysql.com/commits/138279 X-Bug: 60347,11840395 Message-Id: <201105270706.p4R76Rhx016460@acsmt356.oracle.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============6654451775545963102==" --===============6654451775545963102== MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline #At file:///Users/shulga/projects/mysql/mysql-5.1-bug11840395/ based on revid:vasil.dimov@stripped 3625 Dmitry Shulga 2011-05-27 Fixed bug#11840395 (formerly known as bug#60347): THE STRING "VERSIONDATA" SEEMS TO BE 'LEAKING' INTO THE SCHEMA NAME SPACE. The problem was that if you create a stored function at a schema that have uppercase letters in its name AND --lower_case_table_names is equal to either 1 or 2, then when you try to call this stored function like such a way select someMixedCaseDb.my_function_name(); you will got error like this ERROR 1305 (42000): FUNCTION someMixedCaseDb.my_function_name does not exist The reason for this bug is that when a stored function is being created its name schema name is converted to lowercase if the value of option --lower_case_table_names is not equal to 0. However, this conversion isn't done when this stored function called by fully qualified name (i.e. in manner as schema_name.function_name). For stored procedures all is ok since during parsing clause 'call schemaName.sp_name()' schema name converted to lowercase. The solution is to convert stored function name to lowercase when it called and the value of option lower_case_table_names is not equal to 0. @ mysql-test/r/parser.result Added result for testcase for bug#11840395. @ mysql-test/t/parser.test Added testcase for bug#11840395. @ sql/sql_yacc.yy Processing for rule for 'function_call_generic:' was modified: add call to check_db_name() when handling token ident '.' ident. Function implementation for check_db_name() makes convertion of schema name to lowercase as its side effect. modified: mysql-test/r/parser.result mysql-test/t/parser.test sql/sql_yacc.yy === modified file 'mysql-test/r/parser.result' --- a/mysql-test/r/parser.result 2009-04-17 20:00:53 +0000 +++ b/mysql-test/r/parser.result 2011-05-27 07:06:17 +0000 @@ -616,5 +616,20 @@ SELECT a1, a4 FROM t2 WHERE a4 LIKE {fn a1 a4 DROP TABLE t1, t2, t3; # +# Bug#11840395 (formerly known as bug#60347): The string "versiondata" seems to be 'leaking' into the schema name space +# to be 'leaking' into the schema name space +# +DROP DATABASE IF EXISTS mixedCaseDbName; +CREATE DATABASE mixedCaseDbName; +CREATE PROCEDURE mixedCaseDbName.tryMyProc() begin end +| +CREATE FUNCTION mixedCaseDbName.tryMyFunc() returns text begin return 'IT WORKS'; end +| +call mixedCaseDbName.tryMyProc(); +select mixedCaseDbName.tryMyFunc(); +mixedCaseDbName.tryMyFunc() +IT WORKS +DROP DATABASE mixedCaseDbName; +# # End of 5.1 tests # === modified file 'mysql-test/t/parser.test' --- a/mysql-test/t/parser.test 2009-04-17 20:00:53 +0000 +++ b/mysql-test/t/parser.test 2011-05-27 07:06:17 +0000 @@ -726,5 +726,23 @@ SELECT a1, a4 FROM t2 WHERE a4 LIKE {fn DROP TABLE t1, t2, t3; --echo # +--echo # Bug#11840395 (formerly known as bug#60347): The string "versiondata" seems to be 'leaking' into the schema name space +--echo # to be 'leaking' into the schema name space +--echo # +--disable_warnings +DROP DATABASE IF EXISTS mixedCaseDbName; +--enable_warnings +CREATE DATABASE mixedCaseDbName; +DELIMITER |; +CREATE PROCEDURE mixedCaseDbName.tryMyProc() begin end +| +CREATE FUNCTION mixedCaseDbName.tryMyFunc() returns text begin return 'IT WORKS'; end +| +DELIMITER ;| +call mixedCaseDbName.tryMyProc(); +select mixedCaseDbName.tryMyFunc(); +DROP DATABASE mixedCaseDbName; + +--echo # --echo # End of 5.1 tests --echo # === modified file 'sql/sql_yacc.yy' --- a/sql/sql_yacc.yy 2010-10-13 05:28:58 +0000 +++ b/sql/sql_yacc.yy 2011-05-27 07:06:17 +0000 @@ -8083,6 +8083,11 @@ function_call_generic: version() (a vendor can specify any schema). */ + if (!$1.str || check_db_name(&$1)) + { + my_error(ER_WRONG_DB_NAME, MYF(0), $1.str); + MYSQL_YYABORT; + } builder= find_qualified_function_builder(thd); DBUG_ASSERT(builder); item= builder->create(thd, $1, $3, true, $5); --===============6654451775545963102== MIME-Version: 1.0 Content-Type: text/bzr-bundle; charset="us-ascii"; name="bzr/dmitry.shulga@stripped" Content-Transfer-Encoding: 7bit Content-Disposition: inline # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: dmitry.shulga@stripped\ # 5n79pzkdm18cl7a3 # target_branch: file:///Users/shulga/projects/mysql/mysql-5.1-\ # bug11840395/ # testament_sha1: 63f599fffe876aa193e60b84b659fdc202e2e300 # timestamp: 2011-05-27 14:06:23 +0700 # base_revision_id: vasil.dimov@stripped\ # d5bemprd5a5ruziu # # Begin bundle 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 7kinChITFgx+wA== --===============6654451775545963102==--