@@ -249,6 +249,7 @@ TOKEN: /* SQL Keywords. prefixed with K_ to avoid name clashes */
249
249
| <K_TIME_KEY_EXPR : ( "CURRENT_TIMESTAMP" | "CURRENT_TIME" | "CURRENT_DATE" ) ( "()" )?>
250
250
| <K_DOUBLE : "DOUBLE">
251
251
| <K_PRECISION : "PRECISION">
252
+ | <K_TABLESPACE : "TABLESPACE">
252
253
}
253
254
254
255
TOKEN : /* Stuff */
@@ -2561,7 +2562,7 @@ CreateIndex CreateIndex():
2561
2562
Token columnName;
2562
2563
Index index = null;
2563
2564
String name = null;
2564
- String parameter = null ;
2565
+ List< String> parameter = new ArrayList<String>() ;
2565
2566
}
2566
2567
{
2567
2568
<K_CREATE>
@@ -2571,7 +2572,7 @@ CreateIndex CreateIndex():
2571
2572
{
2572
2573
index = new Index();
2573
2574
index.setName(name);
2574
- index.setType(parameter);
2575
+ index.setType(parameter.isEmpty()?null:parameter.get(0) );
2575
2576
}
2576
2577
2577
2578
<K_ON> table=Table()
@@ -2629,7 +2630,8 @@ CreateTable CreateTable():
2629
2630
List colNames = null;
2630
2631
Index index = null;
2631
2632
ForeignKeyIndex fkIndex = null;
2632
- String parameter = null;
2633
+ List<String> parameter = new ArrayList<String>();
2634
+ List<String> idxSpec = new ArrayList<String>();
2633
2635
Table fkTable = null;
2634
2636
Select select = null;
2635
2637
CheckConstraint checkCs = null;
@@ -2641,7 +2643,7 @@ CreateTable CreateTable():
2641
2643
/* [ [ (tk=<K_GLOBAL> | tk=<K_LOCAL>) {createOptions.add(tk.image);} ]
2642
2644
( tk=<K_TEMPORARY> | tk=<K_TEMP> ) {createOptions.add(tk.image);}] */
2643
2645
2644
- (parameter = CreateParameter() { createOptions.add (parameter); })*
2646
+ (parameter = CreateParameter() { createOptions.addAll (parameter); })*
2645
2647
2646
2648
<K_TABLE>
2647
2649
[ <K_IF> <K_NOT> <K_EXISTS> { createTable.setIfNotExists(true); }]
@@ -2655,7 +2657,7 @@ CreateTable CreateTable():
2655
2657
columnSpecs = new ArrayList();
2656
2658
}
2657
2659
2658
- ( parameter=CreateParameter() { columnSpecs.add (parameter); } )*
2660
+ ( parameter=CreateParameter() { columnSpecs.addAll (parameter); } )*
2659
2661
2660
2662
{
2661
2663
coldef = new ColumnDefinition();
@@ -2693,9 +2695,10 @@ CreateTable CreateTable():
2693
2695
| tk=<K_UNIQUE> [ tk2=<K_KEY> ] {index.setType(tk.image + (tk2!=null?" " + tk2.image:""));}
2694
2696
)
2695
2697
colNames=ColumnsNamesList()
2698
+ ( parameter=CreateParameter() { idxSpec.addAll(parameter); } )*
2696
2699
{
2697
-
2698
2700
index.setColumnsNames(colNames);
2701
+ index.setIndexSpec(idxSpec);
2699
2702
indexes.add(index);
2700
2703
}
2701
2704
)
@@ -2753,7 +2756,7 @@ CreateTable CreateTable():
2753
2756
columnSpecs = new ArrayList();
2754
2757
}
2755
2758
2756
- ( parameter=CreateParameter() { columnSpecs.add (parameter); } )*
2759
+ ( parameter=CreateParameter() { columnSpecs.addAll (parameter); } )*
2757
2760
2758
2761
{
2759
2762
coldef = new ColumnDefinition();
@@ -2768,7 +2771,7 @@ CreateTable CreateTable():
2768
2771
)*
2769
2772
2770
2773
")"
2771
- ( parameter=CreateParameter() { tableOptions.add (parameter); } )*
2774
+ ( parameter=CreateParameter() { tableOptions.addAll (parameter); } )*
2772
2775
)
2773
2776
|
2774
2777
(
@@ -2848,58 +2851,64 @@ AlterView AlterView():
2848
2851
{ return alterView; }
2849
2852
}
2850
2853
2851
- String CreateParameter():
2854
+ List< String> CreateParameter():
2852
2855
{
2853
2856
String retval = "";
2854
2857
Token tk = null;
2855
2858
Token sign = null;
2859
+ List<String> param = new ArrayList<String>();
2856
2860
}
2857
2861
{
2858
2862
(
2859
- tk=<S_IDENTIFIER> { retval = tk.image; }
2863
+ tk=<S_IDENTIFIER> { param.add( tk.image) ; }
2860
2864
|
2861
- tk=<K_NULL> { retval = tk.image; }
2865
+ tk=<K_NULL> { param.add( tk.image) ; }
2862
2866
|
2863
- tk=<K_NOT> { retval = tk.image; }
2867
+ tk=<K_NOT> { param.add( tk.image) ; }
2864
2868
|
2865
- tk=<K_PRIMARY> { retval = tk.image; }
2869
+ tk=<K_PRIMARY> { param.add( tk.image) ; }
2866
2870
|
2867
- tk=<K_FOREIGN> { retval= tk.image; }
2871
+ tk=<K_FOREIGN> { param.add( tk.image) ; }
2868
2872
|
2869
- tk=<K_REFERENCES> { retval= tk.image; }
2873
+ tk=<K_REFERENCES> { param.add( tk.image) ; }
2870
2874
|
2871
- tk=<K_KEY> { retval = tk.image; }
2875
+ tk=<K_KEY> { param.add( tk.image) ; }
2872
2876
|
2873
- tk=<S_CHAR_LITERAL> { retval = tk.image; }
2877
+ tk=<S_CHAR_LITERAL> { param.add( tk.image) ; }
2874
2878
|
2875
2879
("+" {retval = "+";} | "-" {retval = "-";})?
2876
2880
(
2877
2881
tk=<S_LONG> { retval += tk.image; }
2878
2882
|
2879
2883
tk=<S_DOUBLE> { retval += tk.image; }
2880
- )
2884
+ )
2885
+ { param.add(retval); }
2881
2886
|
2882
- tk=<K_ON> { retval = tk.image; }
2887
+ tk=<K_ON> { param.add( tk.image) ; }
2883
2888
|
2884
- tk=<K_COMMIT> { retval = tk.image; }
2889
+ tk=<K_COMMIT> { param.add( tk.image) ; }
2885
2890
|
2886
- tk=<K_ROWS> { retval = tk.image; }
2891
+ tk=<K_ROWS> { param.add( tk.image) ; }
2887
2892
|
2888
- tk=<K_UNIQUE> { retval = tk.image; }
2893
+ tk=<K_UNIQUE> { param.add( tk.image) ; }
2889
2894
|
2890
- tk=<K_CASCADE> { retval = tk.image; }
2895
+ tk=<K_CASCADE> { param.add( tk.image) ; }
2891
2896
|
2892
- tk=<K_DELETE> { retval = tk.image; }
2897
+ tk=<K_DELETE> { param.add( tk.image) ; }
2893
2898
|
2894
- tk=<K_UPDATE> { retval = tk.image; }
2899
+ tk=<K_UPDATE> { param.add( tk.image) ; }
2895
2900
|
2896
- tk=<K_TIME_KEY_EXPR> { retval = new TimeKeyExpression(tk.image).toString(); }
2901
+ tk=<K_TIME_KEY_EXPR> { param.add( new TimeKeyExpression(tk.image).toString() ); }
2897
2902
|
2898
- "=" { retval = "="; }
2903
+ "=" { param.add( "=") ; }
2899
2904
|
2900
- retval=AList()
2905
+ <K_USING> <K_INDEX> <K_TABLESPACE> retval=RelObjectName() { param.add("USING"); param.add("INDEX"); param.add("TABLESPACE"); param.add(retval); }
2906
+ |
2907
+ <K_TABLESPACE> retval=RelObjectName() { param.add("TABLESPACE"); param.add(retval); }
2908
+ |
2909
+ retval=AList() { param.add(retval); }
2901
2910
)
2902
- {return retval ;}
2911
+ {return param ;}
2903
2912
}
2904
2913
2905
2914
String AList():
0 commit comments