Skip to content

Commit 2619ce0

Browse files
Fixes PR #1524 support hive alter sql (#1609)
* Adjust Gradle to JUnit 5 Parallel Test execution Gradle Caching Explicitly request for latest JavaCC 7.0.10 * Do not mark SpeedTest for concurrent execution * Remove unused imports * Adjust Gradle to JUnit 5 Parallel Test execution Gradle Caching Explicitly request for latest JavaCC 7.0.10 * Do not mark SpeedTest for concurrent execution * Remove unused imports * Fixes broken PR #1524 and Commit fb6e950
1 parent fb6e950 commit 2619ce0

File tree

2 files changed

+158
-148
lines changed

2 files changed

+158
-148
lines changed

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ dependencies {
4545
testImplementation 'org.mockito:mockito-junit-jupiter:4.+'
4646

4747
// enforce latest version of JavaCC
48-
javacc 'net.java.dev.javacc:javacc:7.0.11'
48+
javacc 'net.java.dev.javacc:javacc:7.0.12'
4949
}
5050

5151
compileJavacc {

src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt

Lines changed: 157 additions & 147 deletions
Original file line numberDiff line numberDiff line change
@@ -5833,169 +5833,179 @@ AlterExpression AlterExpression():
58335833
{
58345834

58355835
(
5836-
((<K_ADD> { alterExp.setOperation(AlterOperation.ADD); } | <K_ALTER> { alterExp.setOperation(AlterOperation.ALTER); } | <K_MODIFY> { alterExp.setOperation(AlterOperation.MODIFY); })
58375836
(
5838-
LOOKAHEAD(2) (
5839-
<K_PRIMARY> <K_KEY> columnNames=ColumnsNamesList() { alterExp.setPkColumns(columnNames); }
5840-
) constraints=AlterExpressionConstraintState() { alterExp.setConstraints(constraints); }
5841-
[<K_USING> sk4=RelObjectName() { alterExp.addParameters("USING", sk4); }]
5842-
|
5843-
LOOKAHEAD(2) (
5844-
(tk=<K_KEY> { alterExp.setUk(true); } | tk=<K_INDEX>)
5845-
sk3 = RelObjectName()
5846-
columnNames = ColumnsNamesList()
5847-
{
5848-
index = new Index().withType(tk.image).withName(sk3).withColumnsNames(columnNames);
5849-
alterExp.setIndex(index);
5850-
}
5851-
constraints=AlterExpressionConstraintState() { alterExp.setConstraints(constraints); }
5852-
[<K_USING> sk4=RelObjectName() { alterExp.addParameters("USING", sk4); }]
5853-
)
5854-
|
5855-
LOOKAHEAD(3) (
5856-
( LOOKAHEAD(2) <K_COLUMN> { alterExp.hasColumn(true); } )?
5857-
5858-
(
5859-
LOOKAHEAD(2) alterExpressionColumnDataType = AlterExpressionColumnDataType() {
5860-
alterExp.addColDataType(alterExpressionColumnDataType);
5861-
}
5862-
|
5863-
LOOKAHEAD(3) alterExpressionColumnDropNotNull = AlterExpressionColumnDropNotNull() {
5864-
alterExp.addColDropNotNull( alterExpressionColumnDropNotNull);
5865-
}
5866-
|
5867-
LOOKAHEAD(4) "("
5868-
( alterExpressionColumnDataType = AlterExpressionColumnDataType() {
5869-
if (alterExp.getOperation()== AlterOperation.ADD ){
5870-
alterExp.addColDataType(alterExpressionColumnDataType);
5871-
} else if(alterExp.getOperation()== AlterOperation.ALTER){
5872-
error_skipto(K_ALTER);
5873-
}else if(alterExp.getOperation()== AlterOperation.MODIFY){
5874-
error_skipto(K_MODIFY);
5875-
}
5876-
}
5877-
(LOOKAHEAD(2) "," alterExpressionColumnDataType = AlterExpressionColumnDataType() { alterExp.addColDataType(alterExpressionColumnDataType); }) *
5878-
)
5879-
")" {alterExp.useBrackets(true);}
5880-
|
5881-
alterExpressionColumnDropDefault = AlterExpressionColumnDropDefault() {
5882-
alterExp.addColDropDefault( alterExpressionColumnDropDefault);
5883-
}
5884-
)
5885-
)
5886-
|
58875837
(
5888-
"(" alterExpressionColumnDataType = AlterExpressionColumnDataType() { alterExp.addColDataType(alterExpressionColumnDataType); }
5889-
("," alterExpressionColumnDataType = AlterExpressionColumnDataType() { alterExp.addColDataType(alterExpressionColumnDataType); } )* ")"
5890-
)
5891-
|
5892-
( <K_UNIQUE> ((<K_KEY> { alterExp.setUk(true); } | <K_INDEX>) (tk=<S_IDENTIFIER> | tk=<S_QUOTED_IDENTIFIER>) { alterExp.setUkName(tk.image); } )?
5893-
columnNames=ColumnsNamesList() { alterExp.setUkColumns(columnNames); }
5894-
[<K_USING> sk4=RelObjectName() { alterExp.addParameters("USING", sk4); }])
5895-
|
5896-
//following two choices regarding foreign keys should be merged
5897-
( <K_FOREIGN> <K_KEY> columnNames=ColumnsNamesList() { alterExp.setFkColumns(columnNames); columnNames = null; }
5898-
/*
5899-
<K_REFERENCES> tk=<S_IDENTIFIER> [ columnNames=ColumnsNamesList() ]
5900-
{ alterExp.setFkSourceTable(tk.image); alterExp.setFkSourceColumns(columnNames); }
5901-
*/
5902-
<K_REFERENCES> fkTable=Table() [ columnNames=ColumnsNamesList() ]
5903-
{
5904-
alterExp.setFkSourceSchema(fkTable.getSchemaName());
5905-
alterExp.setFkSourceTable(fkTable.getName());
5906-
alterExp.setFkSourceColumns(columnNames);
5907-
}
5908-
5909-
[LOOKAHEAD(2) (<K_ON> (tk=<K_DELETE> | tk=<K_UPDATE>) action = Action()
5910-
{ alterExp.setReferentialAction(ReferentialAction.Type.valueOf(tk.image), action); }
5911-
)]
5912-
[LOOKAHEAD(2) (<K_ON> (tk=<K_DELETE> | tk=<K_UPDATE>) action = Action()
5913-
{ alterExp.setReferentialAction(ReferentialAction.Type.valueOf(tk.image), action); }
5914-
)]
5838+
<K_ADD> { alterExp.setOperation(AlterOperation.ADD); }
5839+
|
5840+
<K_ALTER> { alterExp.setOperation(AlterOperation.ALTER); }
5841+
|
5842+
<K_MODIFY> { alterExp.setOperation(AlterOperation.MODIFY); }
59155843
)
5916-
|
5844+
59175845
(
5918-
<K_CONSTRAINT> sk3=RelObjectName()
5919-
5920-
( ( tk=<K_FOREIGN> tk2=<K_KEY>
5921-
columnNames=ColumnsNamesList()
5922-
{
5923-
fkIndex = new ForeignKeyIndex()
5924-
.withName(sk3)
5925-
.withType(tk.image + " " + tk2.image)
5926-
.withColumnsNames(columnNames);
5927-
columnNames = null;
5928-
}
5929-
<K_REFERENCES> fkTable=Table() [ columnNames=ColumnsNamesList() ]
5930-
{
5931-
fkIndex.withTable(fkTable).withReferencedColumnNames(columnNames);
5932-
alterExp.setIndex(fkIndex);
5933-
}
5934-
5935-
[LOOKAHEAD(2) (<K_ON> (tk=<K_DELETE> | tk=<K_UPDATE>) action = Action()
5936-
{ fkIndex.setReferentialAction(ReferentialAction.Type.valueOf(tk.image), action); }
5937-
)]
5938-
[LOOKAHEAD(2) (<K_ON> (tk=<K_DELETE> | tk=<K_UPDATE>) action = Action()
5939-
{ fkIndex.setReferentialAction(ReferentialAction.Type.valueOf(tk.image), action); }
5940-
)]
5941-
constraints=AlterExpressionConstraintState() { alterExp.setConstraints(constraints); }
5846+
LOOKAHEAD(2) (
5847+
<K_PRIMARY> <K_KEY> columnNames=ColumnsNamesList() { alterExp.setPkColumns(columnNames); }
59425848
)
5849+
5850+
constraints=AlterExpressionConstraintState() { alterExp.setConstraints(constraints); }
5851+
[<K_USING> sk4=RelObjectName() { alterExp.addParameters("USING", sk4); }]
59435852
|
5944-
( tk=<K_PRIMARY> tk2=<K_KEY>
5945-
columnNames=ColumnsNamesList()
5946-
{
5947-
index = new NamedConstraint()
5948-
.withName(sk3)
5949-
.withType(tk.image + " " + tk2.image)
5950-
.withColumnsNames(columnNames);
5951-
alterExp.setIndex(index);
5952-
}
5953-
constraints=AlterExpressionConstraintState() { alterExp.setConstraints(constraints); }
5954-
[<K_USING> sk4=RelObjectName() { alterExp.addParameters("USING", sk4); }]
5853+
LOOKAHEAD(2) (
5854+
(tk=<K_KEY> { alterExp.setUk(true); } | tk=<K_INDEX>)
5855+
sk3 = RelObjectName()
5856+
columnNames = ColumnsNamesList()
5857+
{
5858+
index = new Index().withType(tk.image).withName(sk3).withColumnsNames(columnNames);
5859+
alterExp.setIndex(index);
5860+
}
5861+
constraints=AlterExpressionConstraintState() { alterExp.setConstraints(constraints); }
5862+
[<K_USING> sk4=RelObjectName() { alterExp.addParameters("USING", sk4); }]
5863+
)
5864+
|
5865+
LOOKAHEAD(3) (
5866+
( LOOKAHEAD(2) <K_COLUMN> { alterExp.hasColumn(true); } )?
5867+
5868+
(
5869+
LOOKAHEAD(4) (
5870+
"(" { alterExp.useBrackets(true);}
5871+
alterExpressionColumnDataType = AlterExpressionColumnDataType() {
5872+
alterExp.addColDataType(alterExpressionColumnDataType);
5873+
}
5874+
(
5875+
","
5876+
alterExpressionColumnDataType = AlterExpressionColumnDataType() {
5877+
alterExp.addColDataType(alterExpressionColumnDataType);
5878+
}
5879+
)*
5880+
")"
5881+
)
5882+
|
5883+
LOOKAHEAD(2) alterExpressionColumnDataType = AlterExpressionColumnDataType() {
5884+
alterExp.addColDataType(alterExpressionColumnDataType);
5885+
}
5886+
|
5887+
LOOKAHEAD(3) alterExpressionColumnDropNotNull = AlterExpressionColumnDropNotNull() {
5888+
alterExp.addColDropNotNull( alterExpressionColumnDropNotNull);
5889+
}
5890+
|
5891+
alterExpressionColumnDropDefault = AlterExpressionColumnDropDefault() {
5892+
alterExp.addColDropDefault( alterExpressionColumnDropDefault);
5893+
}
5894+
)
59555895
)
59565896
|
59575897
(
5958-
<K_CHECK> {Expression exp = null;} ("(" exp = Expression() ")")* {
5959-
CheckConstraint checkCs = new CheckConstraint().withName(sk3).withExpression(exp);
5960-
alterExp.setIndex(checkCs);
5961-
}
5898+
"(" alterExpressionColumnDataType = AlterExpressionColumnDataType() { alterExp.addColDataType(alterExpressionColumnDataType); }
5899+
("," alterExpressionColumnDataType = AlterExpressionColumnDataType() { alterExp.addColDataType(alterExpressionColumnDataType); } )* ")"
5900+
)
5901+
|
5902+
( <K_UNIQUE> ((<K_KEY> { alterExp.setUk(true); } | <K_INDEX>) (tk=<S_IDENTIFIER> | tk=<S_QUOTED_IDENTIFIER>) { alterExp.setUkName(tk.image); } )?
5903+
columnNames=ColumnsNamesList() { alterExp.setUkColumns(columnNames); }
5904+
[<K_USING> sk4=RelObjectName() { alterExp.addParameters("USING", sk4); }])
5905+
|
5906+
//following two choices regarding foreign keys should be merged
5907+
( <K_FOREIGN> <K_KEY> columnNames=ColumnsNamesList() { alterExp.setFkColumns(columnNames); columnNames = null; }
5908+
/*
5909+
<K_REFERENCES> tk=<S_IDENTIFIER> [ columnNames=ColumnsNamesList() ]
5910+
{ alterExp.setFkSourceTable(tk.image); alterExp.setFkSourceColumns(columnNames); }
5911+
*/
5912+
<K_REFERENCES> fkTable=Table() [ columnNames=ColumnsNamesList() ]
5913+
{
5914+
alterExp.setFkSourceSchema(fkTable.getSchemaName());
5915+
alterExp.setFkSourceTable(fkTable.getName());
5916+
alterExp.setFkSourceColumns(columnNames);
5917+
}
5918+
5919+
[LOOKAHEAD(2) (<K_ON> (tk=<K_DELETE> | tk=<K_UPDATE>) action = Action()
5920+
{ alterExp.setReferentialAction(ReferentialAction.Type.valueOf(tk.image), action); }
5921+
)]
5922+
[LOOKAHEAD(2) (<K_ON> (tk=<K_DELETE> | tk=<K_UPDATE>) action = Action()
5923+
{ alterExp.setReferentialAction(ReferentialAction.Type.valueOf(tk.image), action); }
5924+
)]
59625925
)
59635926
|
59645927
(
5965-
tk=<K_UNIQUE> (tk2=<K_KEY> { alterExp.setUk(true); } | tk2=<K_INDEX>)?
5966-
columnNames=ColumnsNamesList()
5967-
{
5968-
index = new NamedConstraint()
5928+
<K_CONSTRAINT> sk3=RelObjectName()
5929+
5930+
( ( tk=<K_FOREIGN> tk2=<K_KEY>
5931+
columnNames=ColumnsNamesList()
5932+
{
5933+
fkIndex = new ForeignKeyIndex()
5934+
.withName(sk3)
5935+
.withType(tk.image + " " + tk2.image)
5936+
.withColumnsNames(columnNames);
5937+
columnNames = null;
5938+
}
5939+
<K_REFERENCES> fkTable=Table() [ columnNames=ColumnsNamesList() ]
5940+
{
5941+
fkIndex.withTable(fkTable).withReferencedColumnNames(columnNames);
5942+
alterExp.setIndex(fkIndex);
5943+
}
5944+
5945+
[LOOKAHEAD(2) (<K_ON> (tk=<K_DELETE> | tk=<K_UPDATE>) action = Action()
5946+
{ fkIndex.setReferentialAction(ReferentialAction.Type.valueOf(tk.image), action); }
5947+
)]
5948+
[LOOKAHEAD(2) (<K_ON> (tk=<K_DELETE> | tk=<K_UPDATE>) action = Action()
5949+
{ fkIndex.setReferentialAction(ReferentialAction.Type.valueOf(tk.image), action); }
5950+
)]
5951+
constraints=AlterExpressionConstraintState() { alterExp.setConstraints(constraints); }
5952+
)
5953+
|
5954+
( tk=<K_PRIMARY> tk2=<K_KEY>
5955+
columnNames=ColumnsNamesList()
5956+
{
5957+
index = new NamedConstraint()
59695958
.withName(sk3)
5970-
.withType(tk.image + (tk2!=null?" " + tk2.image:""))
5971-
.withColumnsNames(columnNames);
5972-
alterExp.setIndex(index);
5973-
}
5974-
constraints=AlterExpressionConstraintState() { alterExp.setConstraints(constraints); }
5975-
[<K_USING> sk4=RelObjectName() { alterExp.addParameters("USING", sk4); }]
5959+
.withType(tk.image + " " + tk2.image)
5960+
.withColumnsNames(columnNames);
5961+
alterExp.setIndex(index);
5962+
}
5963+
constraints=AlterExpressionConstraintState() { alterExp.setConstraints(constraints); }
5964+
[<K_USING> sk4=RelObjectName() { alterExp.addParameters("USING", sk4); }]
5965+
)
5966+
|
5967+
(
5968+
<K_CHECK> {Expression exp = null;} ("(" exp = Expression() ")")* {
5969+
CheckConstraint checkCs = new CheckConstraint().withName(sk3).withExpression(exp);
5970+
alterExp.setIndex(checkCs);
5971+
}
5972+
)
5973+
|
5974+
(
5975+
tk=<K_UNIQUE> (tk2=<K_KEY> { alterExp.setUk(true); } | tk2=<K_INDEX>)?
5976+
columnNames=ColumnsNamesList()
5977+
{
5978+
index = new NamedConstraint()
5979+
.withName(sk3)
5980+
.withType(tk.image + (tk2!=null?" " + tk2.image:""))
5981+
.withColumnsNames(columnNames);
5982+
alterExp.setIndex(index);
5983+
}
5984+
constraints=AlterExpressionConstraintState() { alterExp.setConstraints(constraints); }
5985+
[<K_USING> sk4=RelObjectName() { alterExp.addParameters("USING", sk4); }]
5986+
)
5987+
|
5988+
(
5989+
tk=<K_KEY>
5990+
columnNames=ColumnsNamesList()
5991+
{
5992+
index = new NamedConstraint()
5993+
.withName(sk3)
5994+
.withType(tk.image)
5995+
.withColumnsNames(columnNames);
5996+
alterExp.setIndex(index);
5997+
}
5998+
constraints=AlterExpressionConstraintState() { alterExp.setConstraints(constraints); }
5999+
)
6000+
)
59766001
)
59776002
|
5978-
(
5979-
tk=<K_KEY>
5980-
columnNames=ColumnsNamesList()
5981-
{
5982-
index = new NamedConstraint()
5983-
.withName(sk3)
5984-
.withType(tk.image)
5985-
.withColumnsNames(columnNames);
5986-
alterExp.setIndex(index);
5987-
}
5988-
constraints=AlterExpressionConstraintState() { alterExp.setConstraints(constraints); }
6003+
( sk3=RelObjectName() <K_COMMENT>
6004+
tk=<S_CHAR_LITERAL> {
6005+
alterExp.withColumnName(sk3).withCommentText(tk.image);
6006+
}
59896007
)
5990-
)
5991-
)
5992-
|
5993-
( sk3=RelObjectName() <K_COMMENT>
5994-
tk=<S_CHAR_LITERAL> {
5995-
alterExp.withColumnName(sk3).withCommentText(tk.image);
5996-
}
5997-
)
5998-
)
6008+
)
59996009
)
60006010
|
60016011
(

0 commit comments

Comments
 (0)