From 44576f6a5560fbea165ef0cccec5d035a0651a6d Mon Sep 17 00:00:00 2001 From: einar-rt Date: Fri, 17 May 2024 22:52:36 +0300 Subject: [PATCH] DBZ-7881 DDL parse error in MySQL create trigger if not exists statement --- .../io/debezium/ddl/parser/mysql/generated/MySqlParser.g4 | 2 +- .../src/test/resources/mysql/examples/ddl_create.sql | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/debezium-ddl-parser/src/main/antlr4/io/debezium/ddl/parser/mysql/generated/MySqlParser.g4 b/debezium-ddl-parser/src/main/antlr4/io/debezium/ddl/parser/mysql/generated/MySqlParser.g4 index 88ebf57ad..cdc7a4d8e 100644 --- a/debezium-ddl-parser/src/main/antlr4/io/debezium/ddl/parser/mysql/generated/MySqlParser.g4 +++ b/debezium-ddl-parser/src/main/antlr4/io/debezium/ddl/parser/mysql/generated/MySqlParser.g4 @@ -238,7 +238,7 @@ createTablespaceNdb createTrigger : CREATE orReplace? ownerStatement? // orReplace is MariaDB-specific only - TRIGGER thisTrigger=fullId + TRIGGER ifNotExists? thisTrigger=fullId triggerTime=(BEFORE | AFTER) triggerEvent=(INSERT | UPDATE | DELETE) ON tableName FOR EACH ROW diff --git a/debezium-ddl-parser/src/test/resources/mysql/examples/ddl_create.sql b/debezium-ddl-parser/src/test/resources/mysql/examples/ddl_create.sql index 935a4cb3f..524c2e9c5 100644 --- a/debezium-ddl-parser/src/test/resources/mysql/examples/ddl_create.sql +++ b/debezium-ddl-parser/src/test/resources/mysql/examples/ddl_create.sql @@ -347,6 +347,11 @@ END create or replace trigger trg_my1 before delete on test.t1 for each row begin insert into log_table values ("delete row from test.t1"); insert into t4 values (old.col1, old.col1 + 5, old.col1 + 7); end; -- //-- delimiter ; #end #begin +-- Create trigger 7 +-- delimiter // +CREATE TRIGGER IF NOT EXISTS `my_trigger` BEFORE INSERT ON `my_table` FOR EACH ROW BEGIN SET NEW.my_col = CONCAT(NEW.mycol, NEW.id); END; -- //-- delimiter ; +#end +#begin -- Create view create or replace view my_view1 as select 1 union select 2 limit 0,5; create algorithm = merge view my_view2(col1, col2) as select * from t2 with check option;