From c86aff2b7e5f12531c89b63f75a4ad309a69f9c8 Mon Sep 17 00:00:00 2001 From: jxnu-liguobin Date: Tue, 26 Dec 2023 18:08:01 +0800 Subject: [PATCH 1/2] Fix: mysql comment with `=` --- .../net/sf/jsqlparser/statement/alter/AlterExpression.java | 7 +++++-- .../net/sf/jsqlparser/statement/alter/AlterOperation.java | 2 +- src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt | 1 + .../java/net/sf/jsqlparser/statement/alter/AlterTest.java | 5 +++++ 4 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/main/java/net/sf/jsqlparser/statement/alter/AlterExpression.java b/src/main/java/net/sf/jsqlparser/statement/alter/AlterExpression.java index c5e0f5078..f31de0da3 100644 --- a/src/main/java/net/sf/jsqlparser/statement/alter/AlterExpression.java +++ b/src/main/java/net/sf/jsqlparser/statement/alter/AlterExpression.java @@ -442,8 +442,11 @@ public String toString() { // Oracle Multi Column Drop b.append("DROP (").append(PlainSelect.getStringList(pkColumns)).append(')'); } else { - b.append(operation).append(" "); - + if (operation == AlterOperation.COMMENT_WITH_EQUAL_SIGN) { + b.append("COMMENT =").append(" "); + } else { + b.append(operation).append(" "); + } if (commentText != null) { if (columnName != null) { b.append(columnName).append(" COMMENT "); diff --git a/src/main/java/net/sf/jsqlparser/statement/alter/AlterOperation.java b/src/main/java/net/sf/jsqlparser/statement/alter/AlterOperation.java index d1791cc8b..adddaa14d 100644 --- a/src/main/java/net/sf/jsqlparser/statement/alter/AlterOperation.java +++ b/src/main/java/net/sf/jsqlparser/statement/alter/AlterOperation.java @@ -10,7 +10,7 @@ package net.sf.jsqlparser.statement.alter; public enum AlterOperation { - ADD, ALTER, DROP, DROP_PRIMARY_KEY, DROP_UNIQUE, DROP_FOREIGN_KEY, MODIFY, CHANGE, ALGORITHM, RENAME, RENAME_TABLE, RENAME_INDEX, RENAME_KEY, RENAME_CONSTRAINT, COMMENT, UNSPECIFIC; + ADD, ALTER, DROP, DROP_PRIMARY_KEY, DROP_UNIQUE, DROP_FOREIGN_KEY, MODIFY, CHANGE, ALGORITHM, RENAME, RENAME_TABLE, RENAME_INDEX, RENAME_KEY, RENAME_CONSTRAINT, COMMENT, COMMENT_WITH_EQUAL_SIGN, UNSPECIFIC; public static AlterOperation from(String operation) { return Enum.valueOf(AlterOperation.class, operation.toUpperCase()); diff --git a/src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt b/src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt index 37b7a329f..f8ff2bf01 100644 --- a/src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt +++ b/src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt @@ -6500,6 +6500,7 @@ AlterExpression AlterExpression(): ) | ( {alterExp.setOperation(AlterOperation.COMMENT);} + ["="]{alterExp.setOperation(AlterOperation.COMMENT_WITH_EQUAL_SIGN);} tk= { alterExp.setCommentText(tk.image); } ) | diff --git a/src/test/java/net/sf/jsqlparser/statement/alter/AlterTest.java b/src/test/java/net/sf/jsqlparser/statement/alter/AlterTest.java index c399bcb71..5d6aa59bb 100644 --- a/src/test/java/net/sf/jsqlparser/statement/alter/AlterTest.java +++ b/src/test/java/net/sf/jsqlparser/statement/alter/AlterTest.java @@ -896,6 +896,11 @@ public void testAlterTableDropColumnIfExists() throws JSQLParserException { assertSqlCanBeParsedAndDeparsed("ALTER TABLE test DROP COLUMN IF EXISTS name"); } + @Test + public void testAlterTableCommentIssue1935() throws JSQLParserException { + assertSqlCanBeParsedAndDeparsed("ALTER TABLE table_name COMMENT = 'New table comment'"); + } + @Test public void testAlterTableDropMultipleColumnsIfExists() throws JSQLParserException { assertSqlCanBeParsedAndDeparsed( From 4ff88aab8d0cde1e6053d823cdc8ee4a4799e8d2 Mon Sep 17 00:00:00 2001 From: jxnu-liguobin Date: Tue, 26 Dec 2023 18:10:03 +0800 Subject: [PATCH 2/2] Fix: mysql comment with `=` --- src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt | 2 +- src/test/java/net/sf/jsqlparser/statement/alter/AlterTest.java | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt b/src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt index f8ff2bf01..3144b3103 100644 --- a/src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt +++ b/src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt @@ -6500,7 +6500,7 @@ AlterExpression AlterExpression(): ) | ( {alterExp.setOperation(AlterOperation.COMMENT);} - ["="]{alterExp.setOperation(AlterOperation.COMMENT_WITH_EQUAL_SIGN);} + ["=" {alterExp.setOperation(AlterOperation.COMMENT_WITH_EQUAL_SIGN);} ] tk= { alterExp.setCommentText(tk.image); } ) | diff --git a/src/test/java/net/sf/jsqlparser/statement/alter/AlterTest.java b/src/test/java/net/sf/jsqlparser/statement/alter/AlterTest.java index 5d6aa59bb..ab07437a6 100644 --- a/src/test/java/net/sf/jsqlparser/statement/alter/AlterTest.java +++ b/src/test/java/net/sf/jsqlparser/statement/alter/AlterTest.java @@ -899,6 +899,7 @@ public void testAlterTableDropColumnIfExists() throws JSQLParserException { @Test public void testAlterTableCommentIssue1935() throws JSQLParserException { assertSqlCanBeParsedAndDeparsed("ALTER TABLE table_name COMMENT = 'New table comment'"); + assertSqlCanBeParsedAndDeparsed("ALTER TABLE table_name COMMENT 'New table comment'"); } @Test