@@ -249,6 +249,7 @@ TOKEN: /* SQL Keywords. prefixed with K_ to avoid name clashes */
249249| <K_TIME_KEY_EXPR : ( "CURRENT_TIMESTAMP" | "CURRENT_TIME" | "CURRENT_DATE" ) ( "()" )?>
250250| <K_DOUBLE : "DOUBLE">
251251| <K_PRECISION : "PRECISION">
252+ | <K_TABLESPACE : "TABLESPACE">
252253}
253254
254255TOKEN : /* Stuff */
@@ -2561,7 +2562,7 @@ CreateIndex CreateIndex():
25612562 Token columnName;
25622563 Index index = null;
25632564 String name = null;
2564- String parameter = null ;
2565+ List< String> parameter = new ArrayList<String>() ;
25652566}
25662567{
25672568 <K_CREATE>
@@ -2571,7 +2572,7 @@ CreateIndex CreateIndex():
25712572 {
25722573 index = new Index();
25732574 index.setName(name);
2574- index.setType(parameter);
2575+ index.setType(parameter.isEmpty()?null:parameter.get(0) );
25752576 }
25762577
25772578 <K_ON> table=Table()
@@ -2629,7 +2630,8 @@ CreateTable CreateTable():
26292630 List colNames = null;
26302631 Index index = null;
26312632 ForeignKeyIndex fkIndex = null;
2632- String parameter = null;
2633+ List<String> parameter = new ArrayList<String>();
2634+ List<String> idxSpec = new ArrayList<String>();
26332635 Table fkTable = null;
26342636 Select select = null;
26352637 CheckConstraint checkCs = null;
@@ -2641,7 +2643,7 @@ CreateTable CreateTable():
26412643 /* [ [ (tk=<K_GLOBAL> | tk=<K_LOCAL>) {createOptions.add(tk.image);} ]
26422644 ( tk=<K_TEMPORARY> | tk=<K_TEMP> ) {createOptions.add(tk.image);}] */
26432645
2644- (parameter = CreateParameter() { createOptions.add (parameter); })*
2646+ (parameter = CreateParameter() { createOptions.addAll (parameter); })*
26452647
26462648 <K_TABLE>
26472649 [ <K_IF> <K_NOT> <K_EXISTS> { createTable.setIfNotExists(true); }]
@@ -2655,7 +2657,7 @@ CreateTable CreateTable():
26552657 columnSpecs = new ArrayList();
26562658 }
26572659
2658- ( parameter=CreateParameter() { columnSpecs.add (parameter); } )*
2660+ ( parameter=CreateParameter() { columnSpecs.addAll (parameter); } )*
26592661
26602662 {
26612663 coldef = new ColumnDefinition();
@@ -2693,9 +2695,10 @@ CreateTable CreateTable():
26932695 | tk=<K_UNIQUE> [ tk2=<K_KEY> ] {index.setType(tk.image + (tk2!=null?" " + tk2.image:""));}
26942696 )
26952697 colNames=ColumnsNamesList()
2698+ ( parameter=CreateParameter() { idxSpec.addAll(parameter); } )*
26962699 {
2697-
26982700 index.setColumnsNames(colNames);
2701+ index.setIndexSpec(idxSpec);
26992702 indexes.add(index);
27002703 }
27012704 )
@@ -2753,7 +2756,7 @@ CreateTable CreateTable():
27532756 columnSpecs = new ArrayList();
27542757 }
27552758
2756- ( parameter=CreateParameter() { columnSpecs.add (parameter); } )*
2759+ ( parameter=CreateParameter() { columnSpecs.addAll (parameter); } )*
27572760
27582761 {
27592762 coldef = new ColumnDefinition();
@@ -2768,7 +2771,7 @@ CreateTable CreateTable():
27682771 )*
27692772
27702773 ")"
2771- ( parameter=CreateParameter() { tableOptions.add (parameter); } )*
2774+ ( parameter=CreateParameter() { tableOptions.addAll (parameter); } )*
27722775 )
27732776 |
27742777 (
@@ -2848,58 +2851,64 @@ AlterView AlterView():
28482851 { return alterView; }
28492852}
28502853
2851- String CreateParameter():
2854+ List< String> CreateParameter():
28522855{
28532856 String retval = "";
28542857 Token tk = null;
28552858 Token sign = null;
2859+ List<String> param = new ArrayList<String>();
28562860}
28572861{
28582862 (
2859- tk=<S_IDENTIFIER> { retval = tk.image; }
2863+ tk=<S_IDENTIFIER> { param.add( tk.image) ; }
28602864 |
2861- tk=<K_NULL> { retval = tk.image; }
2865+ tk=<K_NULL> { param.add( tk.image) ; }
28622866 |
2863- tk=<K_NOT> { retval = tk.image; }
2867+ tk=<K_NOT> { param.add( tk.image) ; }
28642868 |
2865- tk=<K_PRIMARY> { retval = tk.image; }
2869+ tk=<K_PRIMARY> { param.add( tk.image) ; }
28662870 |
2867- tk=<K_FOREIGN> { retval= tk.image; }
2871+ tk=<K_FOREIGN> { param.add( tk.image) ; }
28682872 |
2869- tk=<K_REFERENCES> { retval= tk.image; }
2873+ tk=<K_REFERENCES> { param.add( tk.image) ; }
28702874 |
2871- tk=<K_KEY> { retval = tk.image; }
2875+ tk=<K_KEY> { param.add( tk.image) ; }
28722876 |
2873- tk=<S_CHAR_LITERAL> { retval = tk.image; }
2877+ tk=<S_CHAR_LITERAL> { param.add( tk.image) ; }
28742878 |
28752879 ("+" {retval = "+";} | "-" {retval = "-";})?
28762880 (
28772881 tk=<S_LONG> { retval += tk.image; }
28782882 |
28792883 tk=<S_DOUBLE> { retval += tk.image; }
2880- )
2884+ )
2885+ { param.add(retval); }
28812886 |
2882- tk=<K_ON> { retval = tk.image; }
2887+ tk=<K_ON> { param.add( tk.image) ; }
28832888 |
2884- tk=<K_COMMIT> { retval = tk.image; }
2889+ tk=<K_COMMIT> { param.add( tk.image) ; }
28852890 |
2886- tk=<K_ROWS> { retval = tk.image; }
2891+ tk=<K_ROWS> { param.add( tk.image) ; }
28872892 |
2888- tk=<K_UNIQUE> { retval = tk.image; }
2893+ tk=<K_UNIQUE> { param.add( tk.image) ; }
28892894 |
2890- tk=<K_CASCADE> { retval = tk.image; }
2895+ tk=<K_CASCADE> { param.add( tk.image) ; }
28912896 |
2892- tk=<K_DELETE> { retval = tk.image; }
2897+ tk=<K_DELETE> { param.add( tk.image) ; }
28932898 |
2894- tk=<K_UPDATE> { retval = tk.image; }
2899+ tk=<K_UPDATE> { param.add( tk.image) ; }
28952900 |
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() ); }
28972902 |
2898- "=" { retval = "="; }
2903+ "=" { param.add( "=") ; }
28992904 |
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); }
29012910 )
2902- {return retval ;}
2911+ {return param ;}
29032912}
29042913
29052914String AList():
0 commit comments