From 0244905959cbcd9debc1d6b48b606f1ccf8a3007 Mon Sep 17 00:00:00 2001 From: jxnu-liguobin Date: Tue, 26 Dec 2023 18:37:41 +0800 Subject: [PATCH] Fix: mysql comment with `=` (#1936) * Fix: mysql comment with `=` * 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 | 6 ++++++ 4 files changed, 13 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..3144b3103 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..ab07437a6 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,12 @@ 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'"); + assertSqlCanBeParsedAndDeparsed("ALTER TABLE table_name COMMENT 'New table comment'"); + } + @Test public void testAlterTableDropMultipleColumnsIfExists() throws JSQLParserException { assertSqlCanBeParsedAndDeparsed(