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 f15361f82..ce511dd33 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 @@ -1094,20 +1094,17 @@ indexHintType ; joinPart - : (INNER | CROSS)? JOIN LATERAL? tableSourceItem - ( - ON expression - | USING '(' uidList ')' - )? #innerJoin - | STRAIGHT_JOIN tableSourceItem (ON expression)? #straightJoin - | (LEFT | RIGHT) OUTER? JOIN LATERAL? tableSourceItem - ( - ON expression - | USING '(' uidList ')' - ) #outerJoin + : (INNER | CROSS)? JOIN LATERAL? tableSourceItem joinSpec* #innerJoin + | STRAIGHT_JOIN tableSourceItem (ON expression)* #straightJoin + | (LEFT | RIGHT) OUTER? JOIN LATERAL? tableSourceItem joinSpec* #outerJoin | NATURAL ((LEFT | RIGHT) OUTER?)? JOIN tableSourceItem #naturalJoin ; +joinSpec + : (ON expression) + | USING '(' uidList ')' + ; + // Select Statement's Details queryExpression diff --git a/debezium-ddl-parser/src/test/resources/mysql/examples/dml_select.sql b/debezium-ddl-parser/src/test/resources/mysql/examples/dml_select.sql index 3a4cc1b34..563cf2eb3 100644 --- a/debezium-ddl-parser/src/test/resources/mysql/examples/dml_select.sql +++ b/debezium-ddl-parser/src/test/resources/mysql/examples/dml_select.sql @@ -115,6 +115,8 @@ order by ship_power.ship_name; select * from t1 inner join (t1 as tt1, t2 as tt2) on t1.col1 = tt1.col1; select * from (t1 as tt1, t2 as tt2) inner join t1 on t1.col1 = tt1.col1; select * from t1 as tt1, t2 as tt2 inner join t1 on true; +SELECT * FROM test_table_1 t1 LEFT JOIN test_table_2 t2 JOIN test_table_3 t3 ON t3.id=t2.id ON t1.id=t2.id; +SELECT * FROM TABLE1 T1 STRAIGHT_JOIN TABLE2 T2 STRAIGHT_JOIN TABLE3 T3 ON T3.ID=T2.ID ON T1.ID=T2.ID; #end #begin -- where_condition test