Commit d463677f authored by Sergei Golubchik's avatar Sergei Golubchik

failing to parse an SP should not abort information_schema.routines

parent f7ff8f5d
...@@ -142,7 +142,10 @@ DROP FUNCTION bug48766; ...@@ -142,7 +142,10 @@ DROP FUNCTION bug48766;
call mtr.add_suppression('invalid value in column mysql.proc.'); call mtr.add_suppression('invalid value in column mysql.proc.');
set collation_connection=ucs2_general_ci; set collation_connection=ucs2_general_ci;
insert into mysql.proc (db, name, type, specific_name, language, sql_data_access, is_deterministic, security_type, param_list, returns, body, definer, created, modified, sql_mode, comment, character_set_client, collation_connection, db_collation, body_utf8 ) values ( 'a', 'a', 'function', 'bug14233_1', 'sql', 'reads_sql_data', 'no', 'definer', '', 'int(10)', 'select * from mysql.user', 'root@localhost', now(), '0000-00-00 00:00:00', '', '', '', '', '', 'select * from mysql.user' ); insert into mysql.proc (db, name, type, specific_name, language, sql_data_access, is_deterministic, security_type, param_list, returns, body, definer, created, modified, sql_mode, comment, character_set_client, collation_connection, db_collation, body_utf8 ) values ( 'a', 'a', 'function', 'bug14233_1', 'sql', 'reads_sql_data', 'no', 'definer', '', 'int(10)', 'select * from mysql.user', 'root@localhost', now(), '0000-00-00 00:00:00', '', '', '', '', '', 'select * from mysql.user' );
select * from information_schema.routines where routine_name='a'; select routine_name from information_schema.routines where routine_name='a';
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 1 routine_name
a
Warnings:
Warning 1601 Creation context of stored routine `a`.`a` is invalid
set collation_connection=default; set collation_connection=default;
delete from mysql.proc where name='a'; delete from mysql.proc where name='a';
...@@ -179,7 +179,6 @@ DROP FUNCTION bug48766; ...@@ -179,7 +179,6 @@ DROP FUNCTION bug48766;
call mtr.add_suppression('invalid value in column mysql.proc.'); call mtr.add_suppression('invalid value in column mysql.proc.');
set collation_connection=ucs2_general_ci; set collation_connection=ucs2_general_ci;
insert into mysql.proc (db, name, type, specific_name, language, sql_data_access, is_deterministic, security_type, param_list, returns, body, definer, created, modified, sql_mode, comment, character_set_client, collation_connection, db_collation, body_utf8 ) values ( 'a', 'a', 'function', 'bug14233_1', 'sql', 'reads_sql_data', 'no', 'definer', '', 'int(10)', 'select * from mysql.user', 'root@localhost', now(), '0000-00-00 00:00:00', '', '', '', '', '', 'select * from mysql.user' ); insert into mysql.proc (db, name, type, specific_name, language, sql_data_access, is_deterministic, security_type, param_list, returns, body, definer, created, modified, sql_mode, comment, character_set_client, collation_connection, db_collation, body_utf8 ) values ( 'a', 'a', 'function', 'bug14233_1', 'sql', 'reads_sql_data', 'no', 'definer', '', 'int(10)', 'select * from mysql.user', 'root@localhost', now(), '0000-00-00 00:00:00', '', '', '', '', '', 'select * from mysql.user' );
--error ER_PARSE_ERROR select routine_name from information_schema.routines where routine_name='a';
select * from information_schema.routines where routine_name='a';
set collation_connection=default; set collation_connection=default;
delete from mysql.proc where name='a'; delete from mysql.proc where name='a';
...@@ -5059,7 +5059,8 @@ class Warnings_only_error_handler : public Internal_error_handler ...@@ -5059,7 +5059,8 @@ class Warnings_only_error_handler : public Internal_error_handler
Sql_condition::enum_warning_level *level, Sql_condition::enum_warning_level *level,
const char* msg, Sql_condition ** cond_hdl) const char* msg, Sql_condition ** cond_hdl)
{ {
if (sql_errno == ER_TRG_NO_DEFINER || sql_errno == ER_TRG_NO_CREATION_CTX) if (sql_errno == ER_TRG_NO_DEFINER || sql_errno == ER_TRG_NO_CREATION_CTX
|| sql_errno == ER_PARSE_ERROR)
return true; return true;
if (*level != Sql_condition::WARN_LEVEL_ERROR) if (*level != Sql_condition::WARN_LEVEL_ERROR)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment