|
24 | 24 | import net.sf.jsqlparser.statement.create.table.*;
|
25 | 25 | import net.sf.jsqlparser.statement.create.table.Index.ColumnParams;
|
26 | 26 | import org.junit.jupiter.api.Test;
|
| 27 | +import org.junit.jupiter.params.ParameterizedTest; |
| 28 | +import org.junit.jupiter.params.provider.Arguments; |
| 29 | +import org.junit.jupiter.params.provider.MethodSource; |
27 | 30 |
|
28 | 31 | import java.util.Arrays;
|
29 | 32 | import java.util.Collections;
|
30 | 33 | import java.util.List;
|
| 34 | +import java.util.stream.Stream; |
31 | 35 |
|
32 | 36 | import static net.sf.jsqlparser.test.TestUtils.*;
|
33 | 37 | import static org.junit.jupiter.api.Assertions.*;
|
@@ -834,7 +838,7 @@ public void testAlterTableDefaultValueTrueIssue926() throws JSQLParserException
|
834 | 838 | }
|
835 | 839 |
|
836 | 840 | private void assertReferentialActionOnConstraint(Alter parsed, Action onUpdate,
|
837 |
| - Action onDelete) { |
| 841 | + Action onDelete) { |
838 | 842 | AlterExpression alterExpression = parsed.getAlterExpressions().get(0);
|
839 | 843 | ForeignKeyIndex index = (ForeignKeyIndex) alterExpression.getIndex();
|
840 | 844 |
|
@@ -1092,45 +1096,56 @@ public void testIssue2090LockExclusive() throws JSQLParserException {
|
1092 | 1096 | assertEquals("EXCLUSIVE", lockExp.getLockOption());
|
1093 | 1097 | }
|
1094 | 1098 |
|
1095 |
| - @Test |
1096 |
| - public void testIssue2089() throws JSQLParserException { |
1097 |
| - String sql = "ALTER TABLE test_table CONVERT TO CHARACTER SET utf8mb4"; |
| 1099 | + @ParameterizedTest |
| 1100 | + @MethodSource("provideMySQLConvertTestCases") |
| 1101 | + public void testIssue2089(String sql, String expectedCharacterSet, String expectedCollation) |
| 1102 | + throws JSQLParserException { |
1098 | 1103 | Statement stmt = CCJSqlParserUtil.parse(sql);
|
1099 |
| - assertTrue(stmt instanceof Alter); |
1100 |
| - Alter alter = (Alter) stmt; |
1101 |
| - assertEquals("test_table", alter.getTable().getFullyQualifiedName()); |
1102 |
| - |
1103 |
| - List<AlterExpression> alterExpressions = alter.getAlterExpressions(); |
1104 |
| - assertNotNull(alterExpressions); |
1105 |
| - assertEquals(1, alterExpressions.size()); |
1106 |
| - |
1107 |
| - AlterExpression convertExp = alterExpressions.get(0); |
1108 |
| - assertEquals(AlterOperation.CONVERT, convertExp.getOperation()); |
1109 |
| - assertEquals("utf8mb4", convertExp.getCharacterSet()); |
1110 |
| - assertNull(convertExp.getCollation()); |
1111 |
| - } |
| 1104 | + assertTrue(stmt instanceof Alter, |
| 1105 | + "Expected instance of Alter but got: " + stmt.getClass().getSimpleName()); |
1112 | 1106 |
|
1113 |
| - @Test |
1114 |
| - public void testIssue2089ConvertWithCollation() throws JSQLParserException { |
1115 |
| - String sql = |
1116 |
| - "ALTER TABLE test_table CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci"; |
1117 |
| - Statement stmt = CCJSqlParserUtil.parse(sql); |
1118 |
| - assertTrue(stmt instanceof Alter); |
1119 | 1107 | Alter alter = (Alter) stmt;
|
1120 | 1108 | assertEquals("test_table", alter.getTable().getFullyQualifiedName());
|
1121 | 1109 |
|
1122 | 1110 | List<AlterExpression> alterExpressions = alter.getAlterExpressions();
|
1123 |
| - assertNotNull(alterExpressions); |
1124 |
| - assertEquals(1, alterExpressions.size()); |
| 1111 | + assertNotNull(alterExpressions, "Alter expressions should not be null for SQL: " + sql); |
| 1112 | + assertEquals(1, alterExpressions.size(), "Expected 1 alter expression for SQL: " + sql); |
1125 | 1113 |
|
1126 | 1114 | AlterExpression convertExp = alterExpressions.get(0);
|
1127 | 1115 | assertEquals(AlterOperation.CONVERT, convertExp.getOperation());
|
1128 |
| - assertEquals("utf8mb4", convertExp.getCharacterSet()); |
1129 |
| - assertEquals("utf8mb4_general_ci", convertExp.getCollation()); |
1130 | 1116 |
|
| 1117 | + assertEquals(expectedCharacterSet, convertExp.getCharacterSet(), |
| 1118 | + "CHARACTER SET mismatch for SQL: " + sql); |
| 1119 | + assertEquals(expectedCollation, convertExp.getCollation(), |
| 1120 | + "COLLATE mismatch for SQL: " + sql); |
1131 | 1121 | assertSqlCanBeParsedAndDeparsed(sql);
|
1132 | 1122 | }
|
1133 | 1123 |
|
| 1124 | + private static Stream<Arguments> provideMySQLConvertTestCases() { |
| 1125 | + return Stream.of( |
| 1126 | + Arguments.of("ALTER TABLE test_table CONVERT TO CHARACTER SET utf8mb4", "utf8mb4", |
| 1127 | + null), |
| 1128 | + Arguments.of( |
| 1129 | + "ALTER TABLE test_table CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci", |
| 1130 | + "utf8mb4", "utf8mb4_general_ci"), |
| 1131 | + Arguments.of( |
| 1132 | + "ALTER TABLE test_table DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci", |
| 1133 | + "utf8mb4", "utf8mb4_general_ci"), |
| 1134 | + Arguments.of( |
| 1135 | + "ALTER TABLE test_table DEFAULT CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci", |
| 1136 | + "utf8mb4", "utf8mb4_general_ci"), |
| 1137 | + Arguments.of( |
| 1138 | + "ALTER TABLE test_table CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci", |
| 1139 | + "utf8mb4", "utf8mb4_general_ci"), |
| 1140 | + Arguments.of( |
| 1141 | + "ALTER TABLE test_table CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci", |
| 1142 | + "utf8mb4", "utf8mb4_general_ci"), |
| 1143 | + Arguments.of("ALTER TABLE test_table DEFAULT CHARACTER SET utf8mb4", "utf8mb4", |
| 1144 | + null), |
| 1145 | + Arguments.of("ALTER TABLE test_table DEFAULT CHARACTER SET = utf8mb4", "utf8mb4", |
| 1146 | + null)); |
| 1147 | + } |
| 1148 | + |
1134 | 1149 | @Test
|
1135 | 1150 | public void testIssue2106AlterTableAddPartition1() throws JSQLParserException {
|
1136 | 1151 | String sql = "ALTER TABLE t1 ADD PARTITION (PARTITION p3 VALUES LESS THAN (2002));";
|
|
0 commit comments