@@ -6217,78 +6217,85 @@ CreateTable CreateTable(boolean isUsingOrReplace):
62176217 [ LOOKAHEAD(2) <K_IF> <K_NOT> <K_EXISTS> { createTable.setIfNotExists(true); }]
62186218 table=Table()
62196219 [ LOOKAHEAD(2) (
6220- LOOKAHEAD(3)
6221- ("(" tableColumn=RelObjectName() { columns.add(tableColumn); } ("," tableColumn=RelObjectName() { columns.add(tableColumn); } )* ")")
6220+ LOOKAHEAD(3) (
6221+ "(" tableColumn=RelObjectName() { columns.add(tableColumn); } ("," tableColumn=RelObjectName() { columns.add(tableColumn); } )* ")"
6222+ )
62226223 |
6223- ("("
6224- coldef = ColumnDefinition()
6225-
6226- { columnDefinitions.add(coldef); }
6227-
62286224 (
6229- ","
6225+ "("
6226+ coldef = ColumnDefinition() { columnDefinitions.add(coldef); }
62306227
62316228 (
6232- LOOKAHEAD(3) (
6233- tk=<K_INDEX>
6229+ ","
6230+ (
6231+ LOOKAHEAD(3) (
6232+ {
6233+ idxSpec.clear();
6234+ }
6235+ tk=<K_INDEX>
62346236 sk3=RelObjectName()
6235- /* colNames=ColumnsNamesList() */
62366237 colNames = ColumnNamesWithParamsList()
6237- { idxSpec.clear(); }
62386238 ( parameter=CreateParameter() { idxSpec.addAll(parameter); } )*
62396239 {
62406240 index = new Index().withType(tk.image).withName(sk3).withColumns(colNames).withIndexSpec(new ArrayList<String>(idxSpec));
62416241 indexes.add(index);
62426242 }
6243- )
6244- |
6245- LOOKAHEAD(3) (
6246- {
6247- index = new NamedConstraint();
6248- }
6249- [<K_CONSTRAINT> sk3=RelObjectName() {index.setName(sk3);} ]
6243+ )
6244+ |
6245+ LOOKAHEAD(3) (
6246+ {
6247+ index = new NamedConstraint();
6248+ tk2=null;
6249+ idxSpec.clear();
6250+ }
6251+ [ <K_CONSTRAINT> sk3=RelObjectName() {index.setName(sk3);} ]
6252+
6253+ (
6254+ tk=<K_PRIMARY> tk2=<K_KEY>
6255+ |
6256+ tk=<K_UNIQUE> [ tk2=<K_KEY> ]
6257+ )
6258+ {
6259+ index.setType( tk.image + ( tk2!=null ? " " + tk2.image : "" ));
6260+ tk2=null;
6261+ }
62506262
6251- (tk=<K_PRIMARY> tk2=<K_KEY> {index.setType(tk.image + " " + tk2.image);}
6252- | tk=<K_UNIQUE> [ tk2=<K_KEY> ] {index.setType(tk.image + (tk2!=null?" " + tk2.image:""));}
6253- )
6254- /* colNames=ColumnsNamesList() */
62556263 colNames = ColumnNamesWithParamsList()
6256- { idxSpec.clear(); }
62576264 ( parameter=CreateParameter() { idxSpec.addAll(parameter); } )*
62586265 {
62596266 index.withColumns(colNames).withIndexSpec(new ArrayList<String>(idxSpec));
62606267 indexes.add(index);
62616268 }
6262- // reset Token to null forcefullly
6269+ )
6270+ |
6271+ LOOKAHEAD(3) (
62636272 {
6264- tk2=null;
6265- }
6266- )
6267- |
6268- LOOKAHEAD(3) ( {tk=null;}
6269- [ tk=<K_UNIQUE> ] [ tk3=<K_FULLTEXT> ] tk2=<K_KEY>
6273+ tk=null;
6274+ idxSpec.clear();
6275+ }
6276+ [ tk=<K_UNIQUE> ]
6277+ [ tk3=<K_FULLTEXT> ] tk2=<K_KEY>
62706278 sk3=RelObjectName()
6271- /* colNames=ColumnsNamesList() */
62726279 colNames = ColumnNamesWithParamsList()
6273- { idxSpec.clear(); }
62746280 ( parameter=CreateParameter() { idxSpec.addAll(parameter); } )*
62756281 {
62766282 index = new Index()
6277- .withType(( tk!=null? tk.image + " ": "") + (tk3!=null? tk3.image + " ":"") + tk2.image)
6278- .withName(sk3)
6279- .withColumns(colNames)
6280- .withIndexSpec(new ArrayList<String>(idxSpec));
6283+ .withType( ( tk!=null ? tk.image + " " : "") + ( tk3!=null ? tk3.image + " ":"" ) + tk2.image)
6284+ .withName(sk3)
6285+ .withColumns(colNames)
6286+ .withIndexSpec(new ArrayList<String>(idxSpec));
62816287 indexes.add(index);
62826288 }
6283- )
6284- |
6285- LOOKAHEAD(3)(
6286- {
6287- fkIndex = new ForeignKeyIndex();
6288- }
6289- [<K_CONSTRAINT> sk3=RelObjectName() {fkIndex.setName(sk3);} ]
6290- tk=<K_FOREIGN> tk2=<K_KEY>
6291- /* colNames=ColumnsNamesList() */
6289+ )
6290+ |
6291+ LOOKAHEAD(3)(
6292+ {
6293+ fkIndex = new ForeignKeyIndex();
6294+ sk3=null;
6295+
6296+ }
6297+ [ <K_CONSTRAINT> sk3=RelObjectName() { fkIndex.setName(sk3); } ]
6298+ tk=<K_FOREIGN> tk2=<K_KEY>
62926299 colNames = ColumnNamesWithParamsList()
62936300 {
62946301 fkIndex.withType(tk.image + " " + tk2.image).withColumns(colNames);
@@ -6299,60 +6306,50 @@ CreateTable CreateTable(boolean isUsingOrReplace):
62996306 fkIndex.setReferencedColumnNames(colNames2);
63006307 indexes.add(fkIndex);
63016308 }
6302- [LOOKAHEAD(2) (<K_ON> (tk=<K_DELETE> | tk=<K_UPDATE>) action = Action()
6303- { fkIndex.setReferentialAction(ReferentialAction.Type.from(tk.image), action); }
6304- )]
6305- [LOOKAHEAD(2) (<K_ON> (tk=<K_DELETE> | tk=<K_UPDATE>) action = Action()
6306- { fkIndex.setReferentialAction(ReferentialAction.Type.from(tk.image), action); }
6307- )]
6308- )
6309- |
6310- LOOKAHEAD(3)(
6311- [<K_CONSTRAINT> sk3 = RelObjectName()]
6312- {Expression exp = null;}
6313- <K_CHECK> ("(" exp = Expression() ")")* {
6314- checkCs = new CheckConstraint().withName(sk3).withExpression(exp);
6315- indexes.add(checkCs);
6316- }
6317- )
6318- |
6319- LOOKAHEAD(2) tk=<K_EXCLUDE> {excludeC = new ExcludeConstraint(); Expression exp = null;}
6320- (tk2=<K_WHERE>
6321- ("(" exp = Expression() ")")* {excludeC.setExpression(exp);})
6322- {
6323- indexes.add(excludeC);
6324- }
6325- |
6326- (
6327-
6328- coldef = ColumnDefinition()
6329-
6330- /*
6331- columnName=RelObjectName()
6332-
6333- colDataType = ColDataType()
6334- {
6335- columnSpecs = new ArrayList<String>();
6336- }
6337-
6338- ( parameter=CreateParameter() { columnSpecs.addAll(parameter); } )*
6339-
6340- {
6341- coldef = new ColumnDefinition();
6342- coldef.setColumnName(columnName);
6343- coldef.setColDataType(colDataType);
6344- if (columnSpecs.size() > 0)
6345- coldef.setColumnSpecs(columnSpecs);
6346- columnDefinitions.add(coldef);
6347- } */
6348- { columnDefinitions.add(coldef); }
6309+ [ LOOKAHEAD(2) (
6310+ <K_ON>
6311+ ( tk=<K_DELETE> | tk=<K_UPDATE> ) action = Action()
6312+ { fkIndex.setReferentialAction(ReferentialAction.Type.from(tk.image), action); }
6313+ )
6314+ ]
6315+ [ LOOKAHEAD(2) (
6316+ <K_ON>
6317+ ( tk=<K_DELETE> | tk=<K_UPDATE>) action = Action()
6318+ { fkIndex.setReferentialAction(ReferentialAction.Type.from(tk.image), action); }
6319+ )
6320+ ]
6321+ )
6322+ |
6323+ LOOKAHEAD(3)(
6324+ {
6325+ sk3 = null;
6326+ Expression exp = null;
6327+ }
6328+ [ <K_CONSTRAINT> sk3 = RelObjectName() ]
6329+ <K_CHECK> ( "(" exp = Expression() ")" )*
6330+ {
6331+ checkCs = new CheckConstraint().withName(sk3).withExpression(exp);
6332+ indexes.add(checkCs);
6333+ }
6334+ )
6335+ |
6336+ LOOKAHEAD(2) tk=<K_EXCLUDE> {excludeC = new ExcludeConstraint(); Expression exp = null;}
6337+ (tk2=<K_WHERE>
6338+ ("(" exp = Expression() ")")* {excludeC.setExpression(exp);})
6339+ {
6340+ indexes.add(excludeC);
6341+ }
6342+ |
6343+ (
6344+ coldef = ColumnDefinition()
6345+ { columnDefinitions.add(coldef); }
6346+ )
63496347 )
6350- )
6351- )*
6348+ )*
63526349
6353- ")"
6350+ ")"
63546351 )
6355- )
6352+ )
63566353 ]
63576354 ( LOOKAHEAD(2, { getToken(1).kind != K_AS }) parameter=CreateParameter() { tableOptions.addAll(parameter); } )*
63586355
0 commit comments