Skip to content

Commit d0cd8f8

Browse files
committed
fixes #924
1 parent a03d235 commit d0cd8f8

File tree

2 files changed

+60
-47
lines changed

2 files changed

+60
-47
lines changed

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

Lines changed: 50 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -3562,12 +3562,43 @@ SubSelect SubSelect() #SubSelect:
35623562
}
35633563
}
35643564

3565+
List<Index.ColumnParams> ColumnNamesWithParamsList() : {
3566+
List<Index.ColumnParams> colNames = new ArrayList<Index.ColumnParams>();
3567+
String columnName;
3568+
List<String> parameter = null;
3569+
}
3570+
{
3571+
"("
3572+
columnName=RelObjectName()
3573+
3574+
{ parameter = null; }
3575+
[ parameter = CreateParameter() ]
3576+
{
3577+
colNames.add(new Index.ColumnParams(columnName,parameter));
3578+
}
3579+
3580+
(
3581+
","
3582+
columnName=RelObjectName()
3583+
3584+
{ parameter = null; }
3585+
[ parameter = CreateParameter() ]
3586+
{
3587+
colNames.add(new Index.ColumnParams(columnName,parameter));
3588+
}
3589+
)*
3590+
3591+
")"
3592+
3593+
{ return colNames; }
3594+
}
3595+
35653596
CreateIndex CreateIndex():
35663597
{
35673598
CreateIndex createIndex = new CreateIndex();
35683599
Table table = null;
3569-
List<Index.ColumnParams> colNames = new ArrayList<Index.ColumnParams>();
3570-
Token columnName;
3600+
List<Index.ColumnParams> colNames;
3601+
//Token columnName;
35713602
Token using;
35723603
Index index = null;
35733604
//String name = null;
@@ -3591,31 +3622,8 @@ CreateIndex CreateIndex():
35913622

35923623
[ <K_USING> using=<S_IDENTIFIER> {index.setUsing(using.image);} ]
35933624

3594-
"("
3595-
(columnName=<S_IDENTIFIER>
3596-
|
3597-
columnName=<S_QUOTED_IDENTIFIER>)
3598-
3599-
{ parameter = null; }
3600-
[ parameter = CreateParameter() ]
3601-
{
3602-
colNames.add(new Index.ColumnParams(columnName.image,parameter));
3603-
}
3604-
3605-
(
3606-
","
3607-
(columnName=<S_IDENTIFIER>
3608-
|
3609-
columnName=<S_QUOTED_IDENTIFIER>)
3625+
colNames = ColumnNamesWithParamsList()
36103626

3611-
{ parameter = null; }
3612-
[ parameter = CreateParameter() ]
3613-
{
3614-
colNames.add(new Index.ColumnParams(columnName.image,parameter));
3615-
}
3616-
)*
3617-
3618-
")"
36193627
[ tailParameter = CreateParameter() {} ]
36203628

36213629
{
@@ -3667,7 +3675,8 @@ CreateTable CreateTable():
36673675
String stringList = null;
36683676
ColumnDefinition coldef = null;
36693677
List indexes = new ArrayList();
3670-
List colNames = null;
3678+
List<Index.ColumnParams> colNames = null;
3679+
List<String> colNames2 = null;
36713680
Index index = null;
36723681
ForeignKeyIndex fkIndex = null;
36733682
List<String> parameter = new ArrayList<String>();
@@ -3702,12 +3711,13 @@ CreateTable CreateTable():
37023711
LOOKAHEAD(3) (
37033712
tk=<K_INDEX>
37043713
sk3=RelObjectName()
3705-
colNames=ColumnsNamesList()
3714+
/* colNames=ColumnsNamesList() */
3715+
colNames = ColumnNamesWithParamsList()
37063716
{
37073717
index = new Index();
37083718
index.setType(tk.image);
37093719
index.setName(sk3);
3710-
index.setColumnsNames(colNames);
3720+
index.setColumnNamesWithParams(colNames);
37113721
indexes.add(index);
37123722
}
37133723
)
@@ -3721,10 +3731,11 @@ CreateTable CreateTable():
37213731
(tk=<K_PRIMARY> tk2=<K_KEY> {index.setType(tk.image + " " + tk2.image);}
37223732
| tk=<K_UNIQUE> [ tk2=<K_KEY> ] {index.setType(tk.image + (tk2!=null?" " + tk2.image:""));}
37233733
)
3724-
colNames=ColumnsNamesList()
3734+
/* colNames=ColumnsNamesList() */
3735+
colNames = ColumnNamesWithParamsList()
37253736
( parameter=CreateParameter() { idxSpec.addAll(parameter); } )*
37263737
{
3727-
index.setColumnsNames(colNames);
3738+
index.setColumnNamesWithParams(colNames);
37283739
index.setIndexSpec(idxSpec);
37293740
indexes.add(index);
37303741
}
@@ -3733,12 +3744,13 @@ CreateTable CreateTable():
37333744
LOOKAHEAD(3) ( {tk=null;}
37343745
[ tk=<K_UNIQUE> ] [ tk3=<K_FULLTEXT> ] tk2=<K_KEY>
37353746
sk3=RelObjectName()
3736-
colNames=ColumnsNamesList()
3747+
/* colNames=ColumnsNamesList() */
3748+
colNames = ColumnNamesWithParamsList()
37373749
{
37383750
index = new Index();
37393751
index.setType((tk!=null?tk.image + " ":"") + (tk3!=null?tk3.image + " ":"") + tk2.image);
37403752
index.setName(sk3);
3741-
index.setColumnsNames(colNames);
3753+
index.setColumnNamesWithParams(colNames);
37423754
indexes.add(index);
37433755
}
37443756
)
@@ -3749,15 +3761,16 @@ CreateTable CreateTable():
37493761
}
37503762
[<K_CONSTRAINT> sk3=RelObjectName() {fkIndex.setName(sk3);} ]
37513763
tk=<K_FOREIGN> tk2=<K_KEY>
3752-
colNames=ColumnsNamesList()
3764+
/* colNames=ColumnsNamesList() */
3765+
colNames = ColumnNamesWithParamsList()
37533766
{
37543767
fkIndex.setType(tk.image + " " + tk2.image);
3755-
fkIndex.setColumnsNames(colNames);
3768+
fkIndex.setColumnNamesWithParams(colNames);
37563769
}
3757-
<K_REFERENCES> fkTable=Table() colNames=ColumnsNamesList()
3770+
<K_REFERENCES> fkTable=Table() colNames2=ColumnsNamesList()
37583771
{
37593772
fkIndex.setTable(fkTable);
3760-
fkIndex.setReferencedColumnNames(colNames);
3773+
fkIndex.setReferencedColumnNames(colNames2);
37613774
indexes.add(fkIndex);
37623775
}
37633776
[LOOKAHEAD(2) (<K_ON> <K_DELETE>

src/test/java/net/sf/jsqlparser/statement/create/CreateTableTest.java

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -343,7 +343,7 @@ public void testQuotedPKColumnsIssue491_2() throws JSQLParserException {
343343

344344
@Test
345345
public void testKeySyntaxWithLengthColumnParameter() throws JSQLParserException {
346-
assertSqlCanBeParsedAndDeparsed("CREATE TABLE basic (BASIC_TITLE varchar (255) NOT NULL, KEY BASIC_TITLE (BASIC_TITLE(255)))");
346+
assertSqlCanBeParsedAndDeparsed("CREATE TABLE basic (BASIC_TITLE varchar (255) NOT NULL, KEY BASIC_TITLE (BASIC_TITLE (255)))");
347347
}
348348

349349
@Test
@@ -570,15 +570,15 @@ public void testSettingCharacterSetIssue829() throws JSQLParserException {
570570
assertEquals("GBK", colName.getColDataType().getCharacterSet());
571571
}
572572

573-
// @Test
574-
// public void testCreateTableIssue924() throws JSQLParserException {
575-
// assertSqlCanBeParsedAndDeparsed("CREATE TABLE test_descending_indexes (c1 INT, c2 INT, INDEX idx1 (c1 ASC, c2 DESC))");
576-
// }
577-
//
578-
// @Test
579-
// public void testCreateTableIssue924_2() throws JSQLParserException {
580-
// assertSqlCanBeParsedAndDeparsed("CREATE TABLE test_descending_indexes (c1 INT, c2 INT, INDEX idx1 (c1 ASC, c2 ASC), INDEX idx2 (c1 ASC, c2 DESC), INDEX idx3 (c1 DESC, c2 ASC), INDEX idx4 (c1 DESC, c2 DESC))");
581-
// }
573+
@Test
574+
public void testCreateTableIssue924() throws JSQLParserException {
575+
assertSqlCanBeParsedAndDeparsed("CREATE TABLE test_descending_indexes (c1 INT, c2 INT, INDEX idx1 (c1 ASC, c2 DESC))");
576+
}
577+
578+
@Test
579+
public void testCreateTableIssue924_2() throws JSQLParserException {
580+
assertSqlCanBeParsedAndDeparsed("CREATE TABLE test_descending_indexes (c1 INT, c2 INT, INDEX idx1 (c1 ASC, c2 ASC), INDEX idx2 (c1 ASC, c2 DESC), INDEX idx3 (c1 DESC, c2 ASC), INDEX idx4 (c1 DESC, c2 DESC))");
581+
}
582582

583583
@Test
584584
public void testCreateTableIssue921() throws JSQLParserException {

0 commit comments

Comments
 (0)