diff options
-rw-r--r-- | mysql-test/r/mysqldump.result | 58 | ||||
-rw-r--r-- | mysql-test/t/mysqldump.test | 41 | ||||
-rw-r--r-- | sql/sql_show.cc | 8 |
3 files changed, 105 insertions, 2 deletions
diff --git a/mysql-test/r/mysqldump.result b/mysql-test/r/mysqldump.result index 1d4083ab8b3..0914f0bc883 100644 --- a/mysql-test/r/mysqldump.result +++ b/mysql-test/r/mysqldump.result @@ -5746,4 +5746,62 @@ character_set_client utf8 collation_connection utf8_general_ci Database Collation latin1_swedish_ci DROP DATABASE td; +# +# MDEV-24200: Syntax error in mysqldump +# +create database td; +create table td.t1 (a int); +CREATE TRIGGER td.tr BEFORE INSERT ON td.t1 FOR EACH ROW BEGIN +set @a=1; +END// +insert into td.t1 (a) values (1)// +select * from td.t1// +a 1 +create trigger td.tr2 after insert on td.t1 for each row set @a=1 ; +select 1 // +1 1 +# SHOW CREATE TRIGGER before upgrade +SHOW CREATE TRIGGER td.tr; +Trigger tr +sql_mode +SQL Original Statement CREATE DEFINER=`root`@`localhost` TRIGGER td.tr BEFORE INSERT ON td.t1 FOR EACH ROW BEGIN +set @a=1; +END +character_set_client utf8 +collation_connection utf8_general_ci +Database Collation latin1_swedish_ci +Created Created at date # time # +SHOW CREATE TRIGGER td.tr2; +Trigger tr2 +sql_mode +SQL Original Statement CREATE DEFINER=`root`@`localhost` trigger td.tr2 after insert on td.t1 for each row set @a=1 +character_set_client utf8 +collation_connection utf8_general_ci +Database Collation latin1_swedish_ci +Created Created at date # time # +SELECT action_statement FROM information_schema.triggers WHERE TRIGGER_NAME='tr'; +action_statement BEGIN +set @a=1; +END +# Run mysql_upgrade +# Show create trigger after upgrade +SHOW CREATE TRIGGER td.tr; +Trigger tr +sql_mode +SQL Original Statement CREATE DEFINER=`root`@`localhost` TRIGGER td.tr BEFORE INSERT ON td.t1 FOR EACH ROW BEGIN +set @a=1; +END +character_set_client utf8 +collation_connection utf8_general_ci +Database Collation latin1_swedish_ci +Created Created at date # time # +SHOW CREATE TRIGGER td.tr2; +Trigger tr2 +sql_mode +SQL Original Statement CREATE DEFINER=`root`@`localhost` trigger td.tr2 after insert on td.t1 for each row set @a=1 +character_set_client utf8 +collation_connection utf8_general_ci +Database Collation latin1_swedish_ci +Created Created at date # time # +DROP DATABASE td; # End of 10.2 tests diff --git a/mysql-test/t/mysqldump.test b/mysql-test/t/mysqldump.test index 202547bf002..73d850b5546 100644 --- a/mysql-test/t/mysqldump.test +++ b/mysql-test/t/mysqldump.test @@ -2761,4 +2761,45 @@ SELECT EVENT_DEFINITION FROM information_schema.events; SHOW CREATE EVENT td.fooEvent; DROP DATABASE td; +--echo # +--echo # MDEV-24200: Syntax error in mysqldump +--echo # +create database td; + +create table td.t1 (a int); +delimiter //; +CREATE TRIGGER td.tr BEFORE INSERT ON td.t1 FOR EACH ROW BEGIN +set @a=1; +END// +insert into td.t1 (a) values (1)// +select * from td.t1// +DELIMITER ;// + +delimiter //; +create trigger td.tr2 after insert on td.t1 for each row set @a=1 ; +select 1 // +delimiter ;// + +--echo # SHOW CREATE TRIGGER before upgrade +--vertical_results +--replace_regex /[1-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]\s{1}[0-9][0-9]:[0-9][0-9]:[0-9][0-9].[0-9][0-9]/Created at date # time #/ +SHOW CREATE TRIGGER td.tr; +--vertical_results +--replace_regex /[1-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]\s{1}[0-9][0-9]:[0-9][0-9]:[0-9][0-9].[0-9][0-9]/Created at date # time #/ +SHOW CREATE TRIGGER td.tr2; +--vertical_results +--replace_regex /[1-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]\s{1}[0-9][0-9]:[0-9][0-9]:[0-9][0-9].[0-9][0-9]/Created at date # time #/ +SELECT action_statement FROM information_schema.triggers WHERE TRIGGER_NAME='tr'; +--echo # Run mysql_upgrade +--exec $MYSQL_DUMP td >$MYSQLTEST_VARDIR/tmp/MDEV-24200.sql +--exec $MYSQL td<$MYSQLTEST_VARDIR/tmp/MDEV-24200.sql +--echo # Show create trigger after upgrade +--vertical_results +--replace_regex /[1-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]\s{1}[0-9][0-9]:[0-9][0-9]:[0-9][0-9].[0-9][0-9]/Created at date # time #/ +SHOW CREATE TRIGGER td.tr; +--vertical_results +--replace_regex /[1-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]\s{1}[0-9][0-9]:[0-9][0-9]:[0-9][0-9].[0-9][0-9]/Created at date # time #/ +SHOW CREATE TRIGGER td.tr2; +DROP DATABASE td; + --echo # End of 10.2 tests diff --git a/sql/sql_show.cc b/sql/sql_show.cc index 80d084c62f7..14b5e85672c 100644 --- a/sql/sql_show.cc +++ b/sql/sql_show.cc @@ -9632,8 +9632,12 @@ static bool show_create_trigger_impl(THD *thd, Trigger *trigger) /* Prepare trigger "object". */ - trigger->get_trigger_info(&trg_sql_original_stmt, - &trg_body, &trg_definer); + trigger->get_trigger_info(&trg_sql_original_stmt, &trg_body, &trg_definer); + if (!strcmp(&trg_sql_original_stmt.str[trg_sql_original_stmt.length -1], ";")) + { + --trg_sql_original_stmt.length; + trg_sql_original_stmt.str[trg_sql_original_stmt.length]= '\0'; + } sql_mode_string_representation(thd, trigger->sql_mode, &trg_sql_mode_str); |