From 313c8b8c38ef128e6f12bec55247334536453e41 Mon Sep 17 00:00:00 2001 From: Kanthi Subramanian Date: Wed, 1 May 2024 11:36:38 -0400 Subject: [PATCH] [559] Fixed drop column when the column keyword is not included --- .../ddl/parser/MySqlDDLParserListenerImpl.java | 2 +- .../embedded/ddl/parser/AlterTableAddColumnIT.java | 1 + .../ddl/parser/MySqlDDLParserListenerImplTest.java | 10 ++++++++++ 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/sink-connector-lightweight/src/main/java/com/altinity/clickhouse/debezium/embedded/ddl/parser/MySqlDDLParserListenerImpl.java b/sink-connector-lightweight/src/main/java/com/altinity/clickhouse/debezium/embedded/ddl/parser/MySqlDDLParserListenerImpl.java index 62b48e91d..621aa8939 100644 --- a/sink-connector-lightweight/src/main/java/com/altinity/clickhouse/debezium/embedded/ddl/parser/MySqlDDLParserListenerImpl.java +++ b/sink-connector-lightweight/src/main/java/com/altinity/clickhouse/debezium/embedded/ddl/parser/MySqlDDLParserListenerImpl.java @@ -518,7 +518,7 @@ public void enterAlterTable(MySqlParser.AlterTableContext alterTableContext) { for (ParseTree dropColumnTree : ((MySqlParser.AlterByDropColumnContext) (tree)).children) { if (dropColumnTree instanceof MySqlParser.UidContext) { for(ParseTree dropColumnChild: ((MySqlParser.UidContext) dropColumnTree).children) { - if(dropColumnChild instanceof MySqlParser.SimpleIdContext) { + if(dropColumnChild instanceof MySqlParser.SimpleIdContext || dropColumnChild instanceof TerminalNodeImpl) { this.query.append(String.format(Constants.DROP_COLUMN, dropColumnChild.getText())); } } diff --git a/sink-connector-lightweight/src/test/java/com/altinity/clickhouse/debezium/embedded/ddl/parser/AlterTableAddColumnIT.java b/sink-connector-lightweight/src/test/java/com/altinity/clickhouse/debezium/embedded/ddl/parser/AlterTableAddColumnIT.java index b112de8c0..219c6dcb8 100644 --- a/sink-connector-lightweight/src/test/java/com/altinity/clickhouse/debezium/embedded/ddl/parser/AlterTableAddColumnIT.java +++ b/sink-connector-lightweight/src/test/java/com/altinity/clickhouse/debezium/embedded/ddl/parser/AlterTableAddColumnIT.java @@ -78,6 +78,7 @@ public void testAddColumn() throws Exception { conn.prepareStatement(" alter table add_test drop column col101;").execute(); conn.prepareStatement(" alter table add_test add column col5 ENUM ('M','F');").execute(); conn.prepareStatement(" alter table add_test add column col6 JSON;").execute(); + conn.prepareStatement(" alter table add_test drop col4").execute(); Thread.sleep(25000); diff --git a/sink-connector-lightweight/src/test/java/com/altinity/clickhouse/debezium/embedded/ddl/parser/MySqlDDLParserListenerImplTest.java b/sink-connector-lightweight/src/test/java/com/altinity/clickhouse/debezium/embedded/ddl/parser/MySqlDDLParserListenerImplTest.java index 2ba400509..d49e32a95 100644 --- a/sink-connector-lightweight/src/test/java/com/altinity/clickhouse/debezium/embedded/ddl/parser/MySqlDDLParserListenerImplTest.java +++ b/sink-connector-lightweight/src/test/java/com/altinity/clickhouse/debezium/embedded/ddl/parser/MySqlDDLParserListenerImplTest.java @@ -618,6 +618,16 @@ public void testDropColumn() { } + @Test + public void testDropColumnWithoutColumnSyntax() { + StringBuffer clickHouseQuery = new StringBuffer(); + + String sql = "alter table `leads` drop `country`"; + mySQLDDLParserService.parseSql(sql, "", clickHouseQuery); + + Assert.assertTrue(clickHouseQuery.toString().equalsIgnoreCase("alter table employees.`leads` drop column `country`")); + } + @Test public void renameMultipleTables() { StringBuffer clickHouseQuery = new StringBuffer();