summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mysql-test/r/mysqldump.result58
-rw-r--r--mysql-test/t/mysqldump.test41
-rw-r--r--sql/sql_show.cc8
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);