From fd9559763d692b5810e7ff4672752727653bbb68 Mon Sep 17 00:00:00 2001 From: dengliming Date: Sun, 15 Mar 2026 05:34:53 +0800 Subject: [PATCH] test: add regression for ALTER TABLE MODIFY COLUMN CHARACTER SET --- .../jsqlparser/statement/alter/AlterTest.java | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) 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 0ec01993d..ab135ebb2 100644 --- a/src/test/java/net/sf/jsqlparser/statement/alter/AlterTest.java +++ b/src/test/java/net/sf/jsqlparser/statement/alter/AlterTest.java @@ -1188,6 +1188,30 @@ public void testIssue2090LockExclusive() throws JSQLParserException { assertEquals("EXCLUSIVE", lockExp.getLockOption()); } + @Test + public void testIssue2091ModifyColumnCharacterSet() throws JSQLParserException { + String sql = "ALTER TABLE `jobs`.`runs` MODIFY COLUMN triggerInfo text " + + "CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL"; + + Statement stmt = CCJSqlParserUtil.parse(sql); + assertTrue(stmt instanceof Alter); + + Alter alter = (Alter) stmt; + assertEquals("`jobs`.`runs`", alter.getTable().getFullyQualifiedName()); + + List alterExpressions = alter.getAlterExpressions(); + assertNotNull(alterExpressions); + assertEquals(1, alterExpressions.size()); + + ColumnDataType column = alterExpressions.get(0).getColDataTypeList().get(0); + assertEquals("triggerInfo", column.getColumnName()); + assertEquals("text CHARACTER SET utf8mb4", column.getColDataType().toString()); + assertEquals(Arrays.asList("COLLATE", "utf8mb4_unicode_ci", "NOT", "NULL"), + column.getColumnSpecs()); + + assertSqlCanBeParsedAndDeparsed(sql); + } + @ParameterizedTest @MethodSource("provideMySQLConvertTestCases") public void testIssue2089(String sql, String expectedCharacterSet, String expectedCollation)