@@ -1198,7 +1198,8 @@ public class CCJSqlParser extends AbstractJSqlParser<CCJSqlParser> {
11981198
11991199 private boolean isMySqlTableOptionAhead() {
12001200 int kind = getToken(1).kind;
1201- if (kind == K_ENGINE) {
1201+ if (kind == K_ENGINE || kind == K_COLLATE || kind == K_COMMENT
1202+ || kind == K_AUTO_INCREMENT) {
12021203 return true;
12031204 }
12041205 if (kind == K_CHARACTER && getToken(2).kind == K_SET
@@ -1212,7 +1213,7 @@ public class CCJSqlParser extends AbstractJSqlParser<CCJSqlParser> {
12121213 return false;
12131214 }
12141215 int secondKind = getToken(2).kind;
1215- return secondKind == K_CHARACTER || secondKind == K_CHAR
1216+ return secondKind == K_CHARACTER || secondKind == K_CHAR || secondKind == K_COLLATE
12161217 || secondKind == S_IDENTIFIER
12171218 && "CHARSET".equalsIgnoreCase(getToken(2).image);
12181219 }
@@ -11880,7 +11881,7 @@ TableOption MySqlTableOption(): {
1188011881 String value;
1188111882 boolean useEquals = false;
1188211883 String name = "";
11883- TableOption.Kind kind;
11884+ TableOption.Kind kind = null ;
1188411885 TableOption option;
1188511886} {
1188611887 (
@@ -11902,8 +11903,27 @@ TableOption MySqlTableOption(): {
1190211903 }
1190311904 |
1190411905 tk=<S_IDENTIFIER> { name += tk.image; }
11906+ |
11907+ tk=<K_COLLATE> {
11908+ name += tk.image;
11909+ kind = TableOption.Kind.COLLATE;
11910+ }
1190511911 )
11906- { kind = TableOption.Kind.CHARACTER_SET; }
11912+ { if (kind == null) { kind = TableOption.Kind.CHARACTER_SET; } }
11913+ [ "=" { useEquals = true; } ]
11914+ value=MySqlTableOptionValue()
11915+ |
11916+ tk=<K_COMMENT> {
11917+ name = tk.image;
11918+ kind = TableOption.Kind.COMMENT;
11919+ }
11920+ [ "=" { useEquals = true; } ]
11921+ value=MySqlTableOptionValue()
11922+ |
11923+ tk=<K_AUTO_INCREMENT> {
11924+ name = tk.image;
11925+ kind = TableOption.Kind.AUTO_INCREMENT;
11926+ }
1190711927 [ "=" { useEquals = true; } ]
1190811928 value=MySqlTableOptionValue()
1190911929 )
@@ -11921,6 +11941,9 @@ String MySqlTableOptionValue(): {
1192111941 value=RelObjectName()
1192211942 | token=<K_CSV> { value = token.image; }
1192311943 | token=<K_BINARY> { value = token.image; }
11944+ | token=<S_CHAR_LITERAL> { value = token.image; }
11945+ | token=<S_LONG> { value = token.image; }
11946+ | token=<S_DOUBLE> { value = token.image; }
1192411947 )
1192511948 { return value; }
1192611949}
@@ -12352,6 +12375,7 @@ CheckConstraint CheckConstraintSpec(String constraintName):
1235212375{
1235312376 Expression exp = null;
1235412377 Boolean enforced = null;
12378+ CheckConstraint checkConstraint;
1235512379}
1235612380{
1235712381 <K_CHECK> ( LOOKAHEAD(2) "(" exp = Expression() ")" )*
@@ -12360,8 +12384,10 @@ CheckConstraint CheckConstraintSpec(String constraintName):
1236012384 <K_ENFORCED> { if (enforced == null) { enforced = true; } }
1236112385 ]
1236212386 {
12363- return new CheckConstraint().withName(constraintName).withExpression(exp)
12387+ checkConstraint = new CheckConstraint().withName(constraintName).withExpression(exp)
1236412388 .withEnforced(enforced);
12389+ checkConstraint.setKind(Index.Kind.CHECK);
12390+ return checkConstraint;
1236512391 }
1236612392}
1236712393
0 commit comments