@@ -11529,6 +11529,9 @@ Index CreateTableConstraint():
1152911529 Token tk2 = null;
1153011530 Token tk3 = null;
1153111531 String sk3 = null;
11532+ String indexName = null;
11533+ String using = null;
11534+ boolean useConstraintKeyword = false;
1153211535 List<Index.ColumnParams> colNames = null;
1153311536 List<String> parameter = new ArrayList<String>();
1153411537 List<String> idxSpec = new ArrayList<String>();
@@ -11556,16 +11559,25 @@ Index CreateTableConstraint():
1155611559 {
1155711560 index = new NamedConstraint();
1155811561 tk2=null;
11562+ indexName=null;
11563+ using=null;
1155911564 idxSpec.clear();
1156011565 }
11561- [ <K_CONSTRAINT> sk3=RelObjectName() {index.setName(sk3);} ]
11566+ [ <K_CONSTRAINT> { ((NamedConstraint) index).setUseConstraintKeyword(true); }
11567+ [ LOOKAHEAD({ getToken(1).kind != K_PRIMARY && getToken(1).kind != K_UNIQUE })
11568+ sk3=RelObjectName() {index.setName(sk3);} ]
11569+ ]
1156211570 (
1156311571 tk=<K_PRIMARY> tk2=<K_KEY>
1156411572 |
11565- tk=<K_UNIQUE> [ tk2=<K_KEY> ]
11573+ tk=<K_UNIQUE> [ LOOKAHEAD(2) (tk2=<K_KEY> | tk2=<K_INDEX>) ]
11574+ [ LOOKAHEAD(2, { getToken(1).kind != K_USING }) indexName=RelObjectName() ]
11575+ [ LOOKAHEAD(2) using=UsingIndexType() ]
1156611576 )
1156711577 {
1156811578 index.setType( tk.image + ( tk2!=null ? " " + tk2.image : "" ));
11579+ ((NamedConstraint) index).setIndexName(indexName);
11580+ index.setUsing(using);
1156911581 tk2=null;
1157011582 }
1157111583 colNames = ColumnNamesWithParamsList()
@@ -11596,17 +11608,21 @@ Index CreateTableConstraint():
1159611608 )
1159711609 |
1159811610 LOOKAHEAD(3) (
11599- { sk3=null; }
11600- [ <K_CONSTRAINT> sk3=RelObjectName() ]
11611+ { sk3=null; useConstraintKeyword=false; }
11612+ [ <K_CONSTRAINT> { useConstraintKeyword=true; }
11613+ [ LOOKAHEAD({ getToken(1).kind != K_FOREIGN }) sk3=RelObjectName() ]
11614+ ]
1160111615 fkIndex = ForeignKeySpec(sk3)
11602- { index = fkIndex; }
11616+ { fkIndex.setUseConstraintKeyword(useConstraintKeyword); index = fkIndex; }
1160311617 )
1160411618 |
1160511619 LOOKAHEAD(3) (
11606- { sk3 = null; }
11607- [ <K_CONSTRAINT> sk3 = RelObjectName() ]
11620+ { sk3 = null; useConstraintKeyword=false; }
11621+ [ <K_CONSTRAINT> { useConstraintKeyword=true; }
11622+ [ LOOKAHEAD({ getToken(1).kind != K_CHECK }) sk3 = RelObjectName() ]
11623+ ]
1160811624 checkCs = CheckConstraintSpec(sk3)
11609- { index = checkCs; }
11625+ { checkCs.setUseConstraintKeyword(useConstraintKeyword); index = checkCs; }
1161011626 )
1161111627 |
1161211628 LOOKAHEAD(2) (
@@ -12094,6 +12110,7 @@ CheckConstraint CheckConstraintSpec(String constraintName):
1209412110ForeignKeyIndex ForeignKeySpec(String constraintName):
1209512111{
1209612112 ForeignKeyIndex fkIndex = new ForeignKeyIndex();
12113+ String indexName = null;
1209712114 Token tk;
1209812115 Token tk2;
1209912116 List<String> refColNames = null;
@@ -12102,6 +12119,7 @@ ForeignKeyIndex ForeignKeySpec(String constraintName):
1210212119}
1210312120{
1210412121 tk=<K_FOREIGN> tk2=<K_KEY>
12122+ [ LOOKAHEAD(2) indexName=RelObjectName() { fkIndex.setIndexName(indexName); } ]
1210512123 colNames = ColumnNamesWithParamsList()
1210612124 {
1210712125 if (constraintName != null) { fkIndex.setName(constraintName); }
@@ -13483,20 +13501,30 @@ AlterExpression AlterExpressionAddAlterModify():
1348313501 LOOKAHEAD(3) AlterExpressionColumnChanges(alterExp)
1348413502 |
1348513503 (
13486- <K_UNIQUE>
13504+ <K_UNIQUE> { index = new Index().withType("UNIQUE"); }
1348713505 (
1348813506 (
13489- <K_KEY> { alterExp.setUk(true); }
13490- | <K_INDEX> { alterExp.setUk(false); }
13507+ tk2= <K_KEY> { alterExp.setUk(true); }
13508+ | tk2= <K_INDEX> { alterExp.setUk(false); }
1349113509 )
13492- [ (tk=<S_IDENTIFIER> | tk=<S_QUOTED_IDENTIFIER>) { alterExp.setUkName(tk.image); } ]
13510+ [ (tk=<S_IDENTIFIER> | tk=<S_QUOTED_IDENTIFIER>) {
13511+ sk3 = tk.image;
13512+ alterExp.setUkName(sk3);
13513+ } ]
1349313514 |
1349413515 (tk=<S_IDENTIFIER> | tk=<S_QUOTED_IDENTIFIER>) {
13516+ sk3 = tk.image;
1349513517 alterExp.setUkTypeSpecified(false);
13496- alterExp.setUkName(tk.image );
13518+ alterExp.setUkName(sk3 );
1349713519 }
1349813520 )?
13499- columnNames=ColumnsNamesList() { alterExp.setUkColumns(columnNames); }
13521+ columnNames=ColumnsNamesList() {
13522+ alterExp.setUkColumns(columnNames);
13523+ index.withIndexKeyword(tk2 != null ? tk2.image : null)
13524+ .withName(sk3)
13525+ .withColumnsNames(columnNames);
13526+ alterExp.setIndex(index);
13527+ }
1350013528 [
1350113529 AlterExpressionUsingIndex(alterExp)
1350213530 ]
0 commit comments