From: Dmitry Shulga Date: May 27 2011 12:38pm Subject: bzr commit into mysql-5.1 branch (Dmitry.Shulga:3625) Bug#60347 Bug#11840395 List-Archive: http://lists.mysql.com/commits/138329 X-Bug: 60347,11840395 Message-Id: <201105271238.p4RCcKQf011656@acsmt358.oracle.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============3265113958505847592==" --===============3265113958505847592== 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 12:38:09 +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 12:38:09 +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 12:38:09 +0000 @@ -8083,6 +8083,15 @@ 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; + } + if (check_routine_name(&$3)) + { + MYSQL_YYABORT; + } builder= find_qualified_function_builder(thd); DBUG_ASSERT(builder); item= builder->create(thd, $1, $3, true, $5); --===============3265113958505847592== 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\ # pi4n1v2ui2gzo957 # target_branch: file:///Users/shulga/projects/mysql/mysql-5.1-\ # bug11840395/ # testament_sha1: 5e7c63a66e1a6c6fa3f90178bc8f83a566df25b2 # timestamp: 2011-05-27 19:38:15 +0700 # base_revision_id: vasil.dimov@stripped\ # d5bemprd5a5ruziu # # Begin bundle IyBCYXphYXIgcmV2aXNpb24gYnVuZGxlIHY0CiMKQlpoOTFBWSZTWT8kaKIABEdfgEBQfef//3/v /+C////+YAp31nuNt0KEgN3cN9aRez1TttG73W7m2NN3hJJNJqntNNNBT9T0BGap6PSaj1MjTRgm ymTTyhoGgJJRpqYNTJPJkTaSfpGp6jQBpoNDQANABkOMjTJiaDJkwmmQMhoDQGmTQwAmgMJEQpqR p+qfqh6QemEmgaeptRoGmh6QADQABtSQ1T2pH6UNDQzUaAaeoAGgZAAAAAkiCAEyBoBTGlPFPRT9 UZPUyaaB6h5QabUep5TncLCv7tn3zFQZuro0nxeazF+ggdLM1Y9qLIjZJ9YBX2tZCX5/QcZnsf8N tDHC9fVT/aAisYW7PwL89eVGohqjqipfms3pdkZ03ySgwrGUjCCZBeRA7k+haG7Gs5Ifpg3XGZUW TmyLctSZMwzM0pJ9glhr2djoOGsY+WLJDmzea4xlrOTmICOTdPrxmwMB1DFVpOM+TogRwxxcbHcs N+XkajJGcNJY7RpsQoq6W37V3sUPYf6pNzLjfLUCIoyg/+8i1H5xltpeEqs5hGcfNqbJKFanDBsA b3lxmVjG0YrwbmMyKfNQVpB/Yed81ooq0O9RmTCiSKrL7Zja544uFEmaFUVa8SkU3Mgsnzppe+4K TB3VomaaiAn/Ms12EkitOpm6suir04D3Sk+iH1xXD2rkt2O0T6XCTPExjbyAa/PMYzJw72INWLtj QZXnMbYMYN6Q5MGDWn23gZ6s621quaKirz5ytFJsuow3JcxcQBu3mzULnE+5rIyc7/kEXDKDsVSX qRWW0OpztFH4+2FLltZooEnXe/xLkTSIaiCHQckb1VOK4zbAax6ADbXx0bFJPJUrRAgBuYdUg4Ax 3sJlI+4WopK6aEJ3HeVQpCkKRAiMIgNJRhETqjSSNx4FE5nEvCFThAv/h1Y/TUHe1SZMhe7SZ3le GeUAhacyNuSWTQSiKCZ0OF0LX11kavREXfvLVO+9hdd5wxIlZTo3lbm+gXPRSb6VKF7yW7FcTg69 QjbgVqp4KuOJaBW0UyFpJR2e3hQoqw1kDdviI3O5l2kcahHyWI9ZooMGM4WC4Gcj06rAR7S68RXV w7tB0V64LI1m8d5Qkc+yWqlaj6LCREsSOy1QFkQyuaKf/JnEMdssDHOKwWplbUVFLshumeNY0jX7 IdccsWHZ2KZS995QElSqLh2kminn0QWsRo2qkmNENbKuDUQMmJciZPXEA1+3QOoWJTMrhbuudWG3 QIwZUjRsmvoycsM7baSwp7aFZyUq2t09fFSMSPFypMydjrr01ci15+VRgZYEs60Z6DnoJ7i/1eCj axkwXJlBEBWJEXFWWGBpkYQjgNhQoKXhIgijvHuctVSvoIMzSjcK0tEMOVzE5eU0D0YxLaL9jx5q Q5AnvXlfcCsWCnAcofWRM5oxNYiahMe2ldCRlTla20pNNbGR5hZKqasg91L3QLmnGElHQ1NEQkIc 2oK+VNXCJ2BYrnRbWs5kLWyEajaOAM9VKuJXoGZkNn+a5XlSpBeMyXkbObtLeYXySeLUTXhmYGOc WRh74yP3HneKdZkAw8XS4UpOgKOiFYWDH5ZN7iIQ/L4xFXAlpKLai75fjifEzdZN9iG1qovgsTH/ kJLH5mHU1nCpQ0nyGiZD2Um0xQcVHh/5VRqGbp9qSyMCIML5rmUBqtLg3QI4l5mK2K7CzoF1JIbd nSOX6RbKYcRtI3udRJoTkTBNyyVSgfBTHFAsFslLagNt+bgNGxbVjXTlULGpMk7K5jrgKXqH16K0 gSigLw3AsDNMrqnFysc3PFRer5TsRSIq+vGVXY+c3kTooEn3Cne6HhCKy8NgbYpwOklBGgAYWiud 1nJbtCD6DJGrkEGa9LzQDLBZVzsT7B5GoLWHfikp0Fc1mvwzU9xEkplnL1YuoJk8wKhHfnrJbmxi M2/WGBiREZYIyocPc88HFMMZ2SGpibIMEFncjyz95AMvGekrUI4bC5fy2COYWTcJQEvvQFEEohSI k44McGEOxcvNYmu3np9RgQOKfauSe5Fpd1a1HSUiJNLEdAcSRwUfvJ6TUOR8AxX1UrdEnecgMsRi IVJHcfhTr5xsWcdIPywOIb2IKKj6ppJaGDNRBBTHKVp6MCUpDXBc9HKI3dwf1/Ao1R3d/kNBeOZg L0TKcNrrSgIRMhUi1OpJjWweK0nYEQiq2s/w9CN/R8yYRjNAPh4n1eUPs9m9t40GPFwhe09+qnFt n9ipWjfENOnEHC1ZQw39TMte1OiSo0xuEUdOfcjyY3zptVnrpsFU109DHh2uHZSA7J4rmCphcRCR A8JSZMXbE3bbWbjZgUo2kwUanPgvDqmWK7TeOgh+hM4vTiec0dGGAYKU/LihbA4b04qsg567+tx0 W/1iHOiwTP2AMUwTfxHBkxO8SzBAzCyLSnha7IxDNiSixMXb4jfEaVbeXMBPPY68o6Rx2AwZiVPQ s+QkTzjGGH6RSssvJYs9tAYFYZdm6y2thDIZmTHmsF9dTDIYYdQKLU+bKhOeztK+PWQJKRXdJztI WODUyHrSV31XOvUKAYL133iimvFWmuCQo6YL5wkjDOldWgJMg8EewKlSQ+rClCvcuephZspFyn2j BjwUhSLaDVy7+5S65TQDCL7pqpJBIlBQWsNF6bJfcaUjVTSJVQ7kcyppCKGVD5u8PXUXlGRpSaPj TiMYjacQNjIWaem+8I3VAFcFuMBgNNWRdzoBTJOkQ9OZzVSyARinwNYs7amJwnSYZhMVgns5cQZA cSG/qIrSduN4UVrZ3IBhrkOyQPhKK2QUFgsw5rjJ1pBhJEiKHFhY7YeftEK5EPPEp6AszRhoaaOL icRDcRMKwYX35hFL15C2gpsplOTunOsqlbhMCwTF1NRwKGYtUHMzBBgpZo8WEamVSZSBHjYoIZWc iQq0GUeqGDV3uFSuvKIKoWuBWdzl3vBmpqhvH7lYqkhhc2LbvJRUq6tsE2gyLqF0NlUyHy4JKlCX MwYExlHSKLmwCu2pBPZOkKMcqRGfSwWq9IfkTPoaAmJrVoRrlQqei4NbbIOxXsiMoKcTFFTApioF SMoC7o6Nlp6FXr3hwkc1seFTJlsrm2MTyoioWiaBQnixkoyasrlsNIaiJqIMA9CogIxZH7Y4y0m/ hqLMly6sLXLkbYHPB4AoVYCNmjBXoGroofNFSs6LqHGzIpXs6n4jC7xF/ghfWVJeaHGZLvhnccQf LDGwX4CMiS2nBclVms27xgt9kQPRenLu3EFmqAiEyyqhuAQUIVWQweEW4GEmVHaXKKUSZLZKBPlK FTaHhUaaVkaoxODGSuFe2hZFPEWl5N43B5/xdyRThQkD8kaKIA== --===============3265113958505847592==--