001package gudusoft.gsqlparser.sqlcmds;
002
003import gudusoft.gsqlparser.*;
004import gudusoft.gsqlparser.stmt.*;
005import gudusoft.gsqlparser.stmt.teradata.*;
006import gudusoft.gsqlparser.stmt.mssql.*;
007
008/**
009 * Teradata SQL command resolver.
010 * Handles Teradata-specific statement detection and command resolution.
011 *
012 * @since 3.1.0.9
013 */
014public class TSqlCmdsTeradata extends AbstractSqlCmds {
015
016    public TSqlCmdsTeradata() {
017        super(EDbVendor.dbvteradata);
018    }
019
020    @Override
021    protected void initializeCommands() {
022        // Teradata commands - sorted alphabetically by first token
023        // Note: Longer patterns should come before shorter ones with same prefix
024
025        addCmd(TBaseType.rrw_abort,  " "," "," "," "," "," ", ESqlStatementType.sstteradataabort);
026        addCmd(TBaseType.rrw_alter,"constraint"," "," "," "," "," ", ESqlStatementType.sstteradataalterconstraint);
027        addCmd(TBaseType.rrw_alter,"function"," "," "," "," "," ", ESqlStatementType.sstteradataalterfunction);
028        addCmd(TBaseType.rrw_alter,"specific","function"," "," "," "," ", ESqlStatementType.sstteradataalterfunction);
029        addCmd(TBaseType.rrw_alter,"method"," "," "," "," "," ", ESqlStatementType.sstteradataaltermethod);
030        addCmd(TBaseType.rrw_alter,"constructor","method"," "," "," "," ", ESqlStatementType.sstteradataaltermethod);
031        addCmd(TBaseType.rrw_alter,"instance","method"," "," "," "," ", ESqlStatementType.sstteradataaltermethod);
032        addCmd(TBaseType.rrw_alter,"specific","method"," "," "," "," ", ESqlStatementType.sstteradataaltermethod);
033        addCmd(TBaseType.rrw_alter,"procedure"," "," "," "," "," ", ESqlStatementType.sstteradataalterprocedure);
034        addCmd(TBaseType.rrw_alter,"replication","group"," "," "," "," ", ESqlStatementType.sstteradataalterreplicationgroup);
035        addCmd(TBaseType.rrw_alter,"table"," "," "," "," "," ", ESqlStatementType.sstteradataaltertable);
036        addCmd(TBaseType.rrw_alter,"trigger"," "," "," "," "," ", ESqlStatementType.sstteradataaltertrigger);
037        addCmd(TBaseType.rrw_alter,"type"," "," "," "," "," ", ESqlStatementType.sstteradataaltertype);
038        addCmd(TBaseType.rrw_alter,"zone"," "," "," "," "," ", ESqlStatementType.sstteradataalterzone);
039        addCmd(TBaseType.rrw_begin,"delcare","section"," "," "," "," ", ESqlStatementType.sstteradatabegindeclaresection);
040        addCmd(TBaseType.rrw_begin,"logging"," "," "," "," "," ", ESqlStatementType.sstteradatabeginlogging);
041        addCmd(TBaseType.rrw_begin,"transaction"," "," "," "," "," ", ESqlStatementType.sstteradatabegintransaction);
042        addCmd(TBaseType.rrw_begin,"request"," "," "," "," "," ", ESqlStatementType.sstteradatabeginrequest);
043        addCmd(TBaseType.rrw_bt," "," "," "," "," "," ", ESqlStatementType.sstteradatabegintransaction);
044        addCmd(TBaseType.rrw_call," "," "," "," "," "," ", ESqlStatementType.sstteradatacall);
045        addCmd(TBaseType.rrw_check,"workload"," "," "," "," "," ", ESqlStatementType.sstteradatacheckworkload);
046        addCmd(TBaseType.rrw_checkpoint," "," "," "," "," "," ", ESqlStatementType.sstteradatacheckpoint);
047        addCmd(TBaseType.rrw_close," "," "," "," "," "," ", ESqlStatementType.sstteradataclose);
048        addCmd(TBaseType.rrw_teradata_cm," "," "," "," "," "," ", ESqlStatementType.sstteradatacreatemacro);
049        addCmd(TBaseType.rrw_teradata_collect,"demographics"," "," "," "," "," ", ESqlStatementType.sstteradatacollectdemographics);
050        addCmd(TBaseType.rrw_teradata_collect,"statistics"," "," "," "," "," ", ESqlStatementType.sstteradatacollectstatistics);
051        addCmd(TBaseType.rrw_teradata_collect,"stats"," "," "," "," "," ", ESqlStatementType.sstteradatacollectstatistics);
052        addCmd(TBaseType.rrw_teradata_collect,"stat"," "," "," "," "," ", ESqlStatementType.sstteradatacollectstatistics);
053        addCmd(TBaseType.rrw_teradata_collect,"summary","statistics"," "," "," "," ", ESqlStatementType.sstteradatacollectstatistics);
054        addCmd(TBaseType.rrw_teradata_collect,"summary","stats"," "," "," "," ", ESqlStatementType.sstteradatacollectstatistics);
055        addCmd(TBaseType.rrw_teradata_collect,"summary","stat"," "," "," "," ", ESqlStatementType.sstteradatacollectstatistics);
056        addCmd(TBaseType.rrw_comment," "," "," "," "," "," ", ESqlStatementType.sstteradatacomment);
057        addCmd(TBaseType.rrw_commit," "," "," "," "," "," ", ESqlStatementType.sstteradatacommit);
058        addCmd(TBaseType.rrw_connect," "," "," "," "," "," ", ESqlStatementType.sstteradataconnect);
059        addCmd(TBaseType.rrw_create,"authorization"," "," "," "," "," ", ESqlStatementType.sstteradatacreateauthorization);
060        addCmd(TBaseType.rrw_create,"cast"," "," "," "," "," ", ESqlStatementType.sstteradatacreatecast);
061        addCmd(TBaseType.rrw_create,"constructor","method"," "," "," "," ", ESqlStatementType.sstteradatacreatemethod);
062        addCmd(TBaseType.rrw_create,"database"," "," "," "," "," ", ESqlStatementType.sstteradatacreatedatabase);
063        addCmd(TBaseType.rrw_create,"error","table"," "," "," "," ", ESqlStatementType.sstcreatetable);
064        addCmd(TBaseType.rrw_create,"external","role"," "," "," "," ", ESqlStatementType.sstteradatacreaterole);
065        addCmd(TBaseType.rrw_create,"foreign","table"," "," "," "," ", ESqlStatementType.sstcreatetable);
066        addCmd(TBaseType.rrw_create,"or","replace","function"," "," "," ", ESqlStatementType.sstteradatacreatefunction);
067        addCmd(TBaseType.rrw_create,"function"," "," "," "," "," ", ESqlStatementType.sstteradatacreatefunction);
068        addCmd(TBaseType.rrw_create,"global","temporary","multiset","table"," "," ", ESqlStatementType.sstcreatetable);
069        addCmd(TBaseType.rrw_create,"global","temporary","set","table"," "," ", ESqlStatementType.sstcreatetable);
070        addCmd(TBaseType.rrw_create,"global","temporary","table"," "," "," ", ESqlStatementType.sstcreatetable);
071        addCmd(TBaseType.rrw_create,"hash","index"," "," "," "," ", ESqlStatementType.sstcreateindex);
072        addCmd(TBaseType.rrw_create,"index"," "," "," "," "," ", ESqlStatementType.sstcreateindex);
073        addCmd(TBaseType.rrw_create,"instance","method"," "," "," "," ", ESqlStatementType.sstteradatacreatemethod);
074        addCmd(TBaseType.rrw_create,"join","index"," "," "," "," ", ESqlStatementType.sstcreateindex);
075        addCmd(TBaseType.rrw_create,"or","replace","macro"," "," "," ", ESqlStatementType.sstteradatacreatemacro);
076        addCmd(TBaseType.rrw_create,"macro"," "," "," "," "," ", ESqlStatementType.sstteradatacreatemacro);
077        addCmd(TBaseType.rrw_create,"method"," "," "," "," "," ", ESqlStatementType.sstteradatacreatemethod);
078        addCmd(TBaseType.rrw_create,"multiset","global","temporary","table"," "," ", ESqlStatementType.sstcreatetable);
079        addCmd(TBaseType.rrw_create,"multiset","foreign","table"," "," "," ", ESqlStatementType.sstcreatetable);
080        addCmd(TBaseType.rrw_create,"multiset","table"," "," "," "," ", ESqlStatementType.sstcreatetable);
081        addCmd(TBaseType.rrw_create,"multiset","volatile","table"," "," "," ", ESqlStatementType.sstcreatetable);
082        addCmd(TBaseType.rrw_create,"ordering"," "," "," "," "," ", ESqlStatementType.sstteradatacreateordering);
083        addCmd(TBaseType.rrw_create,"or","replace","proc"," "," "," ", ESqlStatementType.sstcreateprocedure);
084        addCmd(TBaseType.rrw_create,"or","replace","procedure"," "," "," ", ESqlStatementType.sstcreateprocedure);
085        addCmd(TBaseType.rrw_create,"proc"," "," "," "," "," ", ESqlStatementType.sstcreateprocedure);
086        addCmd(TBaseType.rrw_create,"procedure"," "," "," "," "," ", ESqlStatementType.sstcreateprocedure);
087        addCmd(TBaseType.rrw_create,"profile"," "," "," "," "," ", ESqlStatementType.sstteradatacreateprofile);
088        addCmd(TBaseType.rrw_create,"or","replace","recursive","view"," "," ", ESqlStatementType.sstcreateview);
089        addCmd(TBaseType.rrw_create,"or","replace","view"," "," "," ", ESqlStatementType.sstcreateview);
090        addCmd(TBaseType.rrw_create,"recursive","view"," "," "," "," ", ESqlStatementType.sstcreateview);
091        addCmd(TBaseType.rrw_create,"replication","group"," "," "," "," ", ESqlStatementType.sstteradatacreatereplicationgroup);
092        addCmd(TBaseType.rrw_create,"role"," "," "," "," "," ", ESqlStatementType.sstteradatacreaterole);
093        addCmd(TBaseType.rrw_create,"set","global","temporary","table"," "," ", ESqlStatementType.sstcreatetable);
094        addCmd(TBaseType.rrw_create,"set","foreign","table"," "," "," ", ESqlStatementType.sstcreatetable);
095        addCmd(TBaseType.rrw_create,"set","table"," "," "," "," ", ESqlStatementType.sstcreatetable);
096        addCmd(TBaseType.rrw_create,"set","volatile","table"," "," "," ", ESqlStatementType.sstcreatetable);
097        addCmd(TBaseType.rrw_create,"table"," "," "," "," "," ", ESqlStatementType.sstcreatetable);
098        addCmd(TBaseType.rrw_create,"temporary","table"," "," "," "," ", ESqlStatementType.sstcreatetable);
099        addCmd(TBaseType.rrw_create,"transform"," "," "," "," "," ", ESqlStatementType.sstteradatacreatetransform);
100        addCmd(TBaseType.rrw_create,"or","replace","trigger"," "," "," ", ESqlStatementType.sstteradatacreatetrigger);
101        addCmd(TBaseType.rrw_create,"trigger"," "," "," "," "," ", ESqlStatementType.sstteradatacreatetrigger);
102        addCmd(TBaseType.rrw_create,"type"," "," "," "," "," ", ESqlStatementType.sstteradatacreatetype);
103        addCmd(TBaseType.rrw_create,"unique","index"," "," "," "," ", ESqlStatementType.sstcreateindex);
104        addCmd(TBaseType.rrw_create,"user"," "," "," "," "," ", ESqlStatementType.sstteradatacreateuser);
105        addCmd(TBaseType.rrw_create,"view"," "," "," "," "," ", ESqlStatementType.sstcreateview);
106        addCmd(TBaseType.rrw_create,"volatile","multiset","table"," "," "," ", ESqlStatementType.sstcreatetable);
107        addCmd(TBaseType.rrw_create,"volatile","table"," "," "," "," ", ESqlStatementType.sstcreatetable);
108        addCmd(TBaseType.rrw_create,"volatile","set","table"," "," "," ", ESqlStatementType.sstcreatetable);
109        addCmd(TBaseType.rrw_create,"zone"," "," "," "," "," ", ESqlStatementType.sstcreatezone);
110        addCmd(TBaseType.rrw_ct," "," "," "," "," "," ", ESqlStatementType.sstcreatetable);
111        addCmd(TBaseType.rrw_teradata_cv," "," "," "," "," "," ", ESqlStatementType.sstcreateview);
112        addCmd(TBaseType.rrw_database," "," "," "," "," "," ", ESqlStatementType.sstteradatadatabase);
113        addCmd(TBaseType.rrw_declare,"cursor"," "," "," "," "," ", ESqlStatementType.sstteradatadeclarecursor);
114        addCmd(TBaseType.rrw_declare,"statement"," "," "," "," "," ", ESqlStatementType.sstteradatadeclarestatement);
115        addCmd(TBaseType.rrw_declare,"table"," "," "," "," "," ", ESqlStatementType.sstteradatadeclaretable);
116        addCmd(TBaseType.rrw_teradata_del," "," "," "," "," "," ", ESqlStatementType.sstdelete);
117        addCmd(TBaseType.rrw_delete," "," "," "," "," "," ", ESqlStatementType.sstdelete);
118        addCmd(TBaseType.rrw_delete,"database"," "," "," "," "," ", ESqlStatementType.sstteradatadeletedatabase);
119        addCmd(TBaseType.rrw_delete,"user"," "," "," "," "," ", ESqlStatementType.sstteradatadeleteuser);
120        addCmd(TBaseType.rrw_describe," "," "," "," "," "," ", ESqlStatementType.sstteradatadescribe);
121        addCmd(TBaseType.rrw_teradata_diagnostic," "," "," "," "," "," ", ESqlStatementType.sstteradatadiagnostic);
122        addCmd(TBaseType.rrw_drop,"authorization"," "," "," "," "," ", ESqlStatementType.sstteradatadropauthorization);
123        addCmd(TBaseType.rrw_drop,"cast"," "," "," "," "," ", ESqlStatementType.sstteradatadropcast);
124        addCmd(TBaseType.rrw_drop,"constraint"," "," "," "," "," ", ESqlStatementType.sstteradatadropconstraint);
125        addCmd(TBaseType.rrw_drop,"database"," "," "," "," "," ", ESqlStatementType.sstteradatadropdatabase);
126        addCmd(TBaseType.rrw_drop,"error","table"," "," "," "," ", ESqlStatementType.sstdroptable);
127        addCmd(TBaseType.rrw_drop,"external","role"," "," "," "," ", ESqlStatementType.sstteradatadroprole);
128        addCmd(TBaseType.rrw_drop,"function"," "," "," "," "," ", ESqlStatementType.sstteradatadropfunction);
129        addCmd(TBaseType.rrw_drop,"hash","index"," "," "," "," ", ESqlStatementType.sstdropindex);
130        addCmd(TBaseType.rrw_drop,"index"," "," "," "," "," ", ESqlStatementType.sstdropindex);
131        addCmd(TBaseType.rrw_drop,"join","index"," "," "," "," ", ESqlStatementType.sstdropindex);
132        addCmd(TBaseType.rrw_drop,"macro"," "," "," "," "," ", ESqlStatementType.sstteradatadropmacro);
133        addCmd(TBaseType.rrw_drop,"ordering"," "," "," "," "," ", ESqlStatementType.sstteradatadropordering);
134        addCmd(TBaseType.rrw_drop,"procedure"," "," "," "," "," ", ESqlStatementType.sstteradatadropprocedure);
135        addCmd(TBaseType.rrw_drop,"profile"," "," "," "," "," ", ESqlStatementType.sstteradatadropprofile);
136        addCmd(TBaseType.rrw_drop,"replication","group"," "," "," "," ", ESqlStatementType.sstteradatadropreplicationgroup);
137        addCmd(TBaseType.rrw_drop,"role"," "," "," "," "," ", ESqlStatementType.sstteradatadroprole);
138        addCmd(TBaseType.rrw_drop,"specific","function"," "," "," "," ", ESqlStatementType.sstteradatadropfunction);
139        addCmd(TBaseType.rrw_drop,"stat"," "," "," "," "," ", ESqlStatementType.sstteradatadropstatistics);
140        addCmd(TBaseType.rrw_drop,"statistics"," "," "," "," "," ", ESqlStatementType.sstteradatadropstatistics);
141        addCmd(TBaseType.rrw_drop,"stats"," "," "," "," "," ", ESqlStatementType.sstteradatadropstatistics);
142        addCmd(TBaseType.rrw_drop,"table"," "," "," "," "," ", ESqlStatementType.sstdroptable);
143        addCmd(TBaseType.rrw_drop,"temporary","table"," "," "," "," ", ESqlStatementType.sstdroptable);
144        addCmd(TBaseType.rrw_drop,"transform"," "," "," "," "," ", ESqlStatementType.sstteradatadroptransform);
145        addCmd(TBaseType.rrw_drop,"trigger"," "," "," "," "," ", ESqlStatementType.sstteradatadroptrigger);
146        addCmd(TBaseType.rrw_drop,"type"," "," "," "," "," ", ESqlStatementType.sstteradatadroptype);
147        addCmd(TBaseType.rrw_drop,"unique","index"," "," "," "," ", ESqlStatementType.sstdropindex);
148        addCmd(TBaseType.rrw_drop,"user"," "," "," "," "," ", ESqlStatementType.sstteradatadropuser);
149        addCmd(TBaseType.rrw_drop,"view"," "," "," "," "," ", ESqlStatementType.sstdropview);
150        addCmd(TBaseType.rrw_drop,"zone"," "," "," "," "," ", ESqlStatementType.sstteradatadropzone);
151        addCmd(TBaseType.rrw_teradata_dump,"explain"," "," "," "," "," ", ESqlStatementType.sstteradatadumpexplain);
152        addCmd(TBaseType.rrw_teradata_echo," "," "," "," "," "," ", ESqlStatementType.sstteradataecho);
153        addCmd(TBaseType.rrw_end,"declare","section"," "," "," "," ", ESqlStatementType.sstteradataenddeclaresection);
154        addCmd(TBaseType.rrw_end,"logging"," "," "," "," "," ", ESqlStatementType.sstteradataendlogging);
155        addCmd(TBaseType.rrw_end,"query","logging"," "," "," "," ", ESqlStatementType.sstteradataendquerylogging);
156        addCmd(TBaseType.rrw_end,"transaction"," "," "," "," "," ", ESqlStatementType.sstteradataendtransaction);
157        addCmd(TBaseType.rrw_end,"request"," "," "," "," "," ", ESqlStatementType.sstteradataendrequest);
158        addCmd(TBaseType.rrw_et," "," "," "," "," "," ", ESqlStatementType.sstteradataendtransaction);
159        addCmd(TBaseType.rrw_execute," "," "," "," "," "," ", ESqlStatementType.sstteradataexecute);
160        addCmd(TBaseType.rrw_exec," "," "," "," "," "," ", ESqlStatementType.sstteradataexecute);
161        addCmd(TBaseType.rrw_execute,"immediate"," "," "," "," "," ", ESqlStatementType.sstteradataexecuteimmediate);
162        addCmd(TBaseType.rrw_teradata_exit," "," "," "," "," "," ", ESqlStatementType.sstteradataExit);
163        addCmd(TBaseType.rrw_explain, " ", " ", " ", " ", " ", " ", ESqlStatementType.sstExplain);
164        addCmd(TBaseType.rrw_fetch," "," "," "," "," "," ", ESqlStatementType.sstteradatafetch);
165        addCmd(TBaseType.rrw_get,"crash"," "," "," "," "," ", ESqlStatementType.sstteradatagetcrash);
166        addCmd(TBaseType.rrw_get,"diagnostics"," "," "," "," "," ", ESqlStatementType.sstgetdiagnostics);
167        addCmd(TBaseType.rrw_teradata_give," "," "," "," "," "," ", ESqlStatementType.sstteradatagive);
168        addCmd(TBaseType.rrw_grant," "," "," "," "," "," ", ESqlStatementType.sstteradatagrant);
169        addCmd(TBaseType.rrw_teradata_help," "," "," "," "," "," ", ESqlStatementType.sstteradatahelp);
170        addCmd(TBaseType.rrw_include," "," "," "," "," "," ", ESqlStatementType.sstteradatainclude);
171        addCmd(TBaseType.rrw_teradata_ins," "," "," "," "," "," ", ESqlStatementType.sstinsert);
172        addCmd(TBaseType.rrw_insert," "," "," "," "," "," ", ESqlStatementType.sstinsert);
173        addCmd(TBaseType.rrw_insert,"explain"," "," "," "," "," ", ESqlStatementType.sstteradatainsertexplain);
174        addCmd(TBaseType.rrw_teradata_label," "," "," "," "," "," ", ESqlStatementType.sstteradatalabel);
175        addCmd(TBaseType.rrw_lock," "," "," "," "," "," ", ESqlStatementType.sstteradatalock);
176        addCmd(TBaseType.rrw_teradata_locking," "," "," "," "," "," ", ESqlStatementType.sstteradatalock);
177        addCmd(TBaseType.rrw_teradata_logon," "," "," "," "," "," ", ESqlStatementType.sstteradatalogon);
178        addCmd(TBaseType.rrw_merge," "," "," "," "," "," ", ESqlStatementType.sstmerge);
179        addCmd(TBaseType.rrw_teradata_modify,"database"," "," "," "," "," ", ESqlStatementType.sstteradatamodifydatabase);
180        addCmd(TBaseType.rrw_teradata_modify,"profile"," "," "," "," "," ", ESqlStatementType.sstteradatamodifyprofile);
181        addCmd(TBaseType.rrw_teradata_modify,"user"," "," "," "," "," ", ESqlStatementType.sstteradatamodifyuser);
182        addCmd(TBaseType.rrw_open," "," "," "," "," "," ", ESqlStatementType.sstteradataopen);
183        addCmd(TBaseType.rrw_teradata_position," "," "," "," "," "," ", ESqlStatementType.sstteradataposition);
184        addCmd(TBaseType.rrw_prepare," "," "," "," "," "," ", ESqlStatementType.sstteradataprepare);
185        addCmd(TBaseType.rrw_release,"lock"," "," "," "," "," ", ESqlStatementType.sstteradatareleaseLock);
186        addCmd(TBaseType.rrw_rename,"function"," "," "," "," "," ", ESqlStatementType.sstteradatarenamefunction);
187        addCmd(TBaseType.rrw_rename,"macro"," "," "," "," "," ", ESqlStatementType.sstteradatarenamemacro);
188        addCmd(TBaseType.rrw_rename,"procedure"," "," "," "," "," ", ESqlStatementType.sstteradatarenameprocedure);
189        addCmd(TBaseType.rrw_rename,"table"," "," "," "," "," ", ESqlStatementType.sstteradatarenametable);
190        addCmd(TBaseType.rrw_rename,"trigger"," "," "," "," "," ", ESqlStatementType.sstteradatarenametrigger);
191        addCmd(TBaseType.rrw_rename,"view"," "," "," "," "," ", ESqlStatementType.sstteradatarenameview);
192        addCmd(TBaseType.rrw_replace,"cast"," "," "," "," "," ", ESqlStatementType.sstteradatareplacecast);
193        addCmd(TBaseType.rrw_replace,"constructor","method"," "," "," "," ", ESqlStatementType.sstteradatareplacemethod);
194        addCmd(TBaseType.rrw_replace,"function"," "," "," "," "," ", ESqlStatementType.sstteradatareplacefunction);
195        addCmd(TBaseType.rrw_replace,"instance","method"," "," "," "," ", ESqlStatementType.sstteradatareplacemethod);
196        addCmd(TBaseType.rrw_replace,"macro"," "," "," "," "," ", ESqlStatementType.sstteradatareplacemacro);
197        addCmd(TBaseType.rrw_replace,"method"," "," "," "," "," ", ESqlStatementType.sstteradatareplacemethod);
198        addCmd(TBaseType.rrw_replace,"ordering"," "," "," "," "," ", ESqlStatementType.sstteradatareplaceordering);
199        addCmd(TBaseType.rrw_replace,"procedure"," "," "," "," "," ", ESqlStatementType.sstteradatareplaceprocedure);
200        addCmd(TBaseType.rrw_replace,"specific","method"," "," "," "," ", ESqlStatementType.sstteradatareplacemethod);
201        addCmd(TBaseType.rrw_replace,"transform"," "," "," "," "," ", ESqlStatementType.sstteradatareplacetransform);
202        addCmd(TBaseType.rrw_replace,"trigger"," "," "," "," "," ", ESqlStatementType.sstteradatacreatetrigger);
203        addCmd(TBaseType.rrw_replace,"view"," "," "," "," "," ", ESqlStatementType.sstteradatareplaceview);
204        addCmd(TBaseType.rrw_replace,"recursive","view"," "," "," "," ", ESqlStatementType.sstteradatareplaceview);
205        addCmd(TBaseType.rrw_teradata_restart,"index","analysis"," "," "," "," ", ESqlStatementType.sstteradatarestartindexanalysis);
206        addCmd(TBaseType.rrw_revoke," "," "," "," "," "," ", ESqlStatementType.sstteradatarevoke);
207        addCmd(TBaseType.rrw_rollback," "," "," "," "," "," ", ESqlStatementType.sstteradatarollback);
208        addCmd(TBaseType.rrw_teradata_sel," "," "," "," "," "," ", ESqlStatementType.sstselect);
209        addCmd(TBaseType.rrw_select," "," "," "," "," "," ", ESqlStatementType.sstselect);
210        addCmd(TBaseType.rrw_set,"role"," "," "," "," "," ", ESqlStatementType.sstteradatasetrole);
211        addCmd(TBaseType.rrw_set,"session"," "," "," "," "," ", ESqlStatementType.sstteradatasetsession);
212        addCmd(TBaseType.rrw_ss," "," "," "," "," "," ", ESqlStatementType.sstteradatasetsession);
213        addCmd(TBaseType.rrw_set,"time","zone"," "," "," "," ", ESqlStatementType.sstteradatasettimezone);
214        addCmd(TBaseType.rrw_show," "," "," "," "," "," ", ESqlStatementType.sstteradatashow);
215        addCmd(TBaseType.rrw_show,"constructor","method"," "," "," "," ", ESqlStatementType.sstteradatashowmethod);
216        addCmd(TBaseType.rrw_show,"function"," "," "," "," "," ", ESqlStatementType.sstteradatashowfunction);
217        addCmd(TBaseType.rrw_show,"hash","index"," "," "," "," ", ESqlStatementType.sstteradatashowindex);
218        addCmd(TBaseType.rrw_show,"instance","method"," "," "," "," ", ESqlStatementType.sstteradatashowmethod);
219        addCmd(TBaseType.rrw_show,"join","index"," "," "," "," ", ESqlStatementType.sstteradatashowindex);
220        addCmd(TBaseType.rrw_show,"macro"," "," "," "," "," ", ESqlStatementType.sstteradatashowmacro);
221        addCmd(TBaseType.rrw_show,"method"," "," "," "," "," ", ESqlStatementType.sstteradatashowmethod);
222        addCmd(TBaseType.rrw_show,"procedure"," "," "," "," "," ", ESqlStatementType.sstteradatashowprocedure);
223        addCmd(TBaseType.rrw_show,"replication","group"," "," "," "," ", ESqlStatementType.sstteradatashowreplicationgroup);
224        addCmd(TBaseType.rrw_show,"specific","function"," "," "," "," ", ESqlStatementType.sstteradatashowfunction);
225        addCmd(TBaseType.rrw_show,"specific","method"," "," "," "," ", ESqlStatementType.sstteradatashowmethod);
226        addCmd(TBaseType.rrw_show,"table"," "," "," "," "," ", ESqlStatementType.sstteradatashowtable);
227        addCmd(TBaseType.rrw_show,"temporary","table"," "," "," "," ", ESqlStatementType.sstteradatashowtable);
228        addCmd(TBaseType.rrw_show,"trigger"," "," "," "," "," ", ESqlStatementType.sstteradatashowtrigger);
229        addCmd(TBaseType.rrw_show,"type"," "," "," "," "," ", ESqlStatementType.sstteradatashowtype);
230        addCmd(TBaseType.rrw_show,"view"," "," "," "," "," ", ESqlStatementType.sstteradatashowview);
231        addCmd(TBaseType.rrw_teradata_upd," "," "," "," "," "," ", ESqlStatementType.sstupdate);
232        addCmd(TBaseType.rrw_update," "," "," "," "," "," ", ESqlStatementType.sstupdate);
233        addCmd(TBaseType.rrw_teradata_using," "," "," "," "," "," ", ESqlStatementType.sstteradatausing);
234        addCmd(TBaseType.rrw_teradata_wait," "," "," "," "," "," ", ESqlStatementType.sstteradatawait);
235    }
236
237    @Override
238    protected String getToken1Str(int token1) {
239        // Handle Teradata vendor-specific reserved words
240        switch (token1) {
241            case TBaseType.rrw_teradata_wait:
242                return "wait";
243            case TBaseType.rrw_teradata_using:
244                return "using";
245            case TBaseType.rrw_teradata_upd:
246                return "update";
247            case TBaseType.rrw_teradata_sel:
248                return "select";
249            case TBaseType.rrw_teradata_restart:
250                return "restart";
251            case TBaseType.rrw_teradata_position:
252                return "position";
253            case TBaseType.rrw_teradata_modify:
254                return "modify";
255            case TBaseType.rrw_teradata_logon:
256                return "logon";
257            case TBaseType.rrw_teradata_locking:
258                return "locking";
259            case TBaseType.rrw_teradata_ins:
260                return "insert";
261            case TBaseType.rrw_teradata_help:
262                return "help";
263            case TBaseType.rrw_teradata_give:
264                return "give";
265            case TBaseType.rrw_teradata_exit:
266                return "exit";
267            case TBaseType.rrw_teradata_echo:
268                return "echo";
269            case TBaseType.rrw_teradata_dump:
270                return "dump";
271            case TBaseType.rrw_teradata_diagnostic:
272                return "diagnostic";
273            case TBaseType.rrw_teradata_del:
274                return "delete";
275            case TBaseType.rrw_teradata_cv:
276                return "create view";
277            case TBaseType.rrw_teradata_collect:
278                return "collect";
279            case TBaseType.rrw_teradata_cm:
280                return "create macro";
281            case TBaseType.rrw_teradata_label:
282                return "label";
283            default:
284                return null;
285        }
286    }
287
288    @Override
289    public TCustomSqlStatement issql(TSourceToken token, EFindSqlStateType state, TCustomSqlStatement currentStatement) {
290        TCustomSqlStatement ret = null;
291        if (token == null) return null;
292
293        int k;
294        boolean lcisnewsql;
295        TSourceToken lcpprevsolidtoken,lcnextsolidtoken,lctoken;
296
297        gnewsqlstatementtype = ESqlStatementType.sstinvalid;
298
299        if ( (token.tokencode  == TBaseType.cmtdoublehyphen)
300                || (token.tokencode  == TBaseType.cmtslashstar)
301                || (token.tokencode  == TBaseType.lexspace)
302                || (token.tokencode  == TBaseType.lexnewline)
303                || (token.tokentype == ETokenType.ttsemicolon) )
304        {
305            return ret;
306        }
307
308        int lcpos = token.posinlist;
309        TSourceTokenList lcsourcetokenlist = token.container;
310
311        //subquery after semicolon || at first line
312        if ( (state == EFindSqlStateType.stnormal) && (token.tokentype == ETokenType.ttleftparenthesis) )
313        {
314            k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
315            if ( k >0 )
316            {
317                ret =  new TSelectSqlStatement(vendor);
318            }else{
319                k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_teradata_sel,1,"(");
320                if ( k >0 )
321                {
322                    ret =  new TSelectSqlStatement(vendor);
323                }
324            }
325
326            return ret;
327        }
328
329        //cte
330        if ( (state == EFindSqlStateType.stnormal) && (token.tokencode == TBaseType.rrw_with) )
331        {
332            ret = findcte(token);
333            if ( (ret != null) )  return ret;
334        }
335
336        // using
337        if ( (state == EFindSqlStateType.stnormal) && (token.tokencode == TBaseType.rrw_teradata_using) ){
338           //return mapTeradataUsing(token);
339            return new TTeradataUsing(vendor);
340        }
341        
342        if ( (state == EFindSqlStateType.stnormal) &&
343                ((token.tokencode == TBaseType.rrw_lock)||(token.tokencode == TBaseType.rrw_teradata_locking)) ){
344            return new TTeradataLock(vendor);
345        }
346
347        gnewsqlstatementtype = getStatementTypeForToken(token);
348
349        TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
350        switch(gnewsqlstatementtype ) {   //
351            case sstinvalid:
352            {
353                ret = null;
354                break;
355            }
356            case sstselect:
357            {
358                lcisnewsql = true;
359
360                if ( state != EFindSqlStateType.stnormal )
361                {
362                    // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
363                    if ( (lcprevsolidtoken != null) )
364                    {
365                        if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
366                            lcisnewsql = false; //subqery
367                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
368                            lcisnewsql = false;
369                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
370                            lcisnewsql = false;
371                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
372                            lcisnewsql = false;
373                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
374                            lcisnewsql = false;
375                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
376                            lcisnewsql = false;
377                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
378                        {
379                            if ( currentStatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
380                                lcisnewsql = false;
381                            if ( currentStatement.sqlstatementtype == ESqlStatementType.sstcreateview )
382                                lcisnewsql = false;
383                            if ( currentStatement.sqlstatementtype == ESqlStatementType.sstteradatareplaceview )
384                                lcisnewsql = false;
385                        }
386
387                        if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
388                        {
389                            lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
390                            if ( (lcpprevsolidtoken != null) )
391                            {
392                                if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
393                                    lcisnewsql = false;
394                            }
395                        }
396
397                    }
398
399                    if ( (currentStatement != null) )
400                    {
401                        if ( currentStatement.sqlstatementtype == ESqlStatementType.sstinsert )
402                        {
403                        }
404                        else if ( currentStatement.sqlstatementtype == ESqlStatementType.sstcreateview ){
405                            lcisnewsql = false;
406                        }
407                    }
408
409                }
410
411                if ( lcisnewsql )
412                    ret =  new TSelectSqlStatement(vendor);
413
414                break;
415
416            }
417            case sstinsert:
418            {
419                lcisnewsql = true;
420                if ( state != EFindSqlStateType.stnormal )
421                {
422                    if ( (currentStatement != null) )
423                    {
424                        // merge
425                        if (currentStatement.sqlstatementtype == ESqlStatementType.sstmerge)
426                        {
427                              if (lcprevsolidtoken != null)
428                              {
429                                  if (lcprevsolidtoken.tokencode == TBaseType.rrw_then)
430                                  {lcisnewsql = false;}
431                              }
432                        }
433
434
435
436                        if ( currentStatement.sqlstatementtype == ESqlStatementType.sstteradatacreatetrigger )
437                        {
438                            if ( (lcprevsolidtoken != null) )
439                            {
440                                if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
441                                    lcisnewsql = false;
442                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(),"after") == 0 )
443                                    lcisnewsql = false;
444                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(),"before") == 0 )
445                                    lcisnewsql = false;
446                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(), "of") == 0 )
447                                    lcisnewsql = false;
448                            }
449                        }
450
451
452                    }
453                }
454
455                if ( lcisnewsql )
456                {
457                    ret =  new TInsertSqlStatement(vendor);
458                    ret.dummytag = 1; //  select stmt in insert is permitted
459                    for ( k = lcpos + 1; k < lcsourcetokenlist.size();k++ )    // iterate
460                    {
461                        if ( lcsourcetokenlist.get(k).isnonsolidtoken() ) continue;
462                        if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_values ) break;
463                        // if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_go ) break;
464                        if ( lcsourcetokenlist.get(k).tokentype == ETokenType.ttsemicolon ) break;
465                        if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_select ) break;
466                        if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_execute ) break;
467                        if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_exec ) break;
468                    }    // for (
469                    if ( k > lcsourcetokenlist.size() - 1 )
470                        k = lcsourcetokenlist.size() - 1;
471
472                    for ( int i = lcpos + 1; i <=  k; i++ )    // iterate
473                    {
474                        lcsourcetokenlist.get(i).tokenstatus = ETokenStatus.tsignoredbygetrawstatement;
475                    }    // for (
476
477                }
478
479                break;
480            }
481            case sstupdate:
482            {
483                lcisnewsql = true;
484                if ( state != EFindSqlStateType.stnormal )
485                {
486                    // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
487                    if ( (lcprevsolidtoken != null) )
488                    { //
489                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
490                            lcisnewsql = false;
491                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
492                            lcisnewsql = false;
493                    }
494
495                    lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
496                    if ( TBaseType.assigned(lcnextsolidtoken) )
497                    {
498                        if ( lcnextsolidtoken.tokentype == ETokenType.ttleftparenthesis)
499                        {
500                            k = lcsourcetokenlist.solidtokenafterpos(lcnextsolidtoken.posinlist,TBaseType.rrw_select,1,"(");
501                            if ( k  == 0 ) lcisnewsql = false;
502                        }
503                    }
504
505
506                    if ( TBaseType.assigned(currentStatement) )
507                    {
508                        // merge
509                        if (currentStatement.sqlstatementtype == ESqlStatementType.sstmerge)
510                        {
511                              if (lcprevsolidtoken != null)
512                              {
513                                  if (lcprevsolidtoken.tokencode == TBaseType.rrw_then)
514                                  {lcisnewsql = false;}
515                              }
516                        }
517
518
519                        if ( currentStatement.sqlstatementtype == ESqlStatementType.sstteradatacreatetrigger )
520                        {
521                            if ( TBaseType.assigned(lcprevsolidtoken) )
522                            {
523                                if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
524                                    lcisnewsql = false;
525                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(),"after") == 0 )
526                                    lcisnewsql = false;
527                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(),"before") == 0 )
528                                    lcisnewsql = false;
529                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(), "of") == 0 )
530                                    lcisnewsql = false;
531                            }
532                        }
533
534                    }
535                }
536
537                if ( lcisnewsql )
538                {
539                    ret =  new TUpdateSqlStatement(vendor);
540                    ret.dummytag = 1; // means set clause in update is not found yet, used to seperate set clause from set statement
541                }
542
543                break;
544            }
545            case sstdelete:
546            {
547                lcisnewsql = true;
548
549                if ( state != EFindSqlStateType.stnormal )
550                {
551                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
552                    if ( TBaseType.assigned(lcprevsolidtoken) )
553                    {
554                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
555                            lcisnewsql = false;
556                    }
557
558                    if ( TBaseType.assigned(currentStatement) )
559                    {
560                        // merge
561                        if (currentStatement.sqlstatementtype == ESqlStatementType.sstmerge)
562                        {
563                              if (lcprevsolidtoken != null)
564                              {
565                                  if (lcprevsolidtoken.tokencode == TBaseType.rrw_then)
566                                  {lcisnewsql = false;}
567                              }
568                        }
569
570
571                        if ( currentStatement.sqlstatementtype == ESqlStatementType.sstteradatacreatetrigger )
572                        {
573                            if ( TBaseType.assigned(lcprevsolidtoken) )
574                            {
575                                if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
576                                    lcisnewsql = false;
577                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(),"after") == 0 )
578                                    lcisnewsql = false;
579                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(),"before") == 0 )
580                                    lcisnewsql = false;
581                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(), "of") == 0 )
582                                    lcisnewsql = false;
583                            }
584                        }
585
586                    }
587                }
588
589                if ( lcisnewsql )
590                    ret =  new TDeleteSqlStatement(vendor);
591
592                break;
593            }
594            case sstcreatetable:
595            {
596                ret =  new TCreateTableSqlStatement(vendor);
597                break;
598            }
599            case sstaltertable:
600            case sstteradataaltertable:
601            {
602                ret =  new TAlterTableStatement(vendor);
603                break;
604            }
605            case sstteradatafetch:
606            {
607                ret =  new TMssqlFetch(vendor);
608                break;
609            }
610            case sstcreateprocedure :
611            case sstteradatareplaceprocedure:
612            {
613                ret = new TCreateProcedureStmt(vendor);
614                break;
615            }
616            case sstteradataalterprocedure:
617                ret = new TAlterProcedureStmt(vendor);
618                break;
619            case sstteradatacreatefunction :
620            case sstteradatareplacefunction:
621            {
622                ret =  new TTeradataCreateFunction(vendor);
623                break;
624            }
625            case sstteradataalterfunction:
626                ret =  new TAlterFunctionStmt(vendor);
627                break;
628            case sstteradatacreatetrigger :
629            case sstteradataaltertrigger:
630            case sstteradatareplacetrigger:
631            {                              
632                ret =  new TCreateTriggerStmt(vendor);
633                break;
634            }
635            case sstteradatagrant:
636            {
637                lcisnewsql = true;
638                // prev tokentext can't be with
639                if ( state != EFindSqlStateType.stnormal )
640                {
641                    if ( TBaseType.assigned(lcprevsolidtoken) )
642                    {
643                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_with )
644                        {
645                            ret = null;
646                            lcisnewsql = false;
647                        }
648                    }
649                }
650                if ( lcisnewsql )
651                {
652                    ret =  new TTeradataGrant(vendor);
653                    ret.sqlstatementtype = gnewsqlstatementtype;
654                    for ( k = lcpos + 1; k< lcsourcetokenlist.size();k++ )    // iterate
655                    {
656                        lctoken = lcsourcetokenlist.get(k);
657                        if (lctoken.isnonsolidtoken() ) continue;
658                        if ( lctoken.tokencode == TBaseType.rrw_go ) break;
659                        if ( lctoken.tokentype == ETokenType.ttsemicolon ) break;
660                        if ( lctoken.tokencode == TBaseType.rrw_to   ) break;
661                        lctoken.tokenstatus = ETokenStatus.tsignoredbygetrawstatement;
662                    }
663                }
664                break;
665            }
666            case sstdropindex:
667            {
668                ret =  new TDropIndexSqlStatement(vendor);
669                break;
670            }
671            case sstdroptable:
672            {
673                ret =  new TDropTableSqlStatement(vendor);
674                break;
675            }
676            case sstdropview:
677            {
678                ret =  new TDropViewSqlStatement(vendor);
679                break;
680            }
681            case sstteradatadropprocedure:
682                ret =  new TDropProcedureStmt(vendor);
683                break;
684            case sstteradatadropauthorization:
685            case sstteradatadropcast:
686            case sstteradatadropdatabase:
687            case sstteradatadropfunction:
688            case sstteradatadroptrigger:
689            case sstteradatadropordering:
690            case sstteradatadropprofile:
691            case sstteradatadropreplicationgroup:
692            case sstteradatadroprole:
693            case sstteradatadroptransform:
694            case sstteradatadroptype:
695            case sstteradatadropuser:
696            case sstteradatadropzone:
697            {
698                ret =  new TTeradataDropDbObject(EDbVendor.dbvteradata);
699                ret.sqlstatementtype = gnewsqlstatementtype;
700                break;
701            }
702            case sstteradatadropmacro:
703                ret = new TDropMacro(EDbVendor.dbvteradata);
704                break;
705            case sstteradatadropconstraint:
706                ret = new TDropConstraintStmt(EDbVendor.dbvteradata);
707                break;
708            case sstteradatabegintransaction:
709            {
710                ret =  new TBeginTran(vendor);
711                break;
712            }
713            case sstteradataendtransaction:
714            {
715                ret =  new TEndTran(vendor);
716                break;
717            }
718            case sstteradatacommit:
719            {
720                ret =  new TTeradataCommit(vendor);
721                break;
722            }
723            case sstteradatarollback:
724            {
725                ret =  new TTeradataRollback(vendor);
726                break;
727            }
728            case sstcreateindex:
729            {
730                ret =  new TCreateIndexSqlStatement(vendor);
731                break;
732            }
733            case sstmerge:
734            {
735                lcisnewsql = true;
736
737                if (state != EFindSqlStateType.stnormal)
738                {
739
740                    if (currentStatement != null)
741                    {
742                        // merge union, merge join
743                        if (currentStatement.sqlstatementtype == ESqlStatementType.sstselect)
744                        {
745                                    lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
746                                    if (lcnextsolidtoken != null)
747                                       {
748                                        if ((lcnextsolidtoken.tokencode == TBaseType.rrw_union) || (lcnextsolidtoken.tokencode == TBaseType.rrw_join))
749                                           {
750                                              lcisnewsql = false;
751                                           }
752                                        }
753                        }
754
755                    }
756                }
757
758                if (lcisnewsql)
759                {
760                    ret = new TMergeSqlStatement(vendor);
761                    ret.sqlstatementtype = gnewsqlstatementtype;
762                }
763
764                break;
765            }
766            case sstteradataexecute:
767            {
768                lcisnewsql = true;
769                // prev tokentext can't be with
770                if ( state != EFindSqlStateType.stnormal )
771                {
772                    if ( TBaseType.assigned(currentStatement) )
773                    {
774                        if ( currentStatement.sqlstatementtype == ESqlStatementType.sstinsert )
775                        {
776                            if ( currentStatement.dummytag == 1 )
777                            {
778                                lcisnewsql = false;
779                                currentStatement.dummytag = 0; // no select is permited after it
780                            }
781                        }
782
783                        if ( currentStatement.sqlstatementtype == ESqlStatementType.sstteradatagrant )
784                        {
785                            if ( TBaseType.assigned(lcprevsolidtoken) )
786                            {
787                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_grant )
788                                    lcisnewsql = false;
789                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
790                                    lcisnewsql = false;
791                            }
792                        }
793
794                        if (
795                                (currentStatement.sqlstatementtype == ESqlStatementType.sstcreateprocedure)
796                                        ||(      currentStatement.sqlstatementtype == ESqlStatementType.sstteradatacreatetrigger)
797                                        ||(      currentStatement.sqlstatementtype == ESqlStatementType.sstteradatacreatefunction)
798                                        ||(currentStatement.sqlstatementtype == ESqlStatementType.sstteradataalterprocedure)
799                                        ||(      currentStatement.sqlstatementtype == ESqlStatementType.sstteradataaltertrigger)
800                                        ||(      currentStatement.sqlstatementtype == ESqlStatementType.sstteradataalterfunction)
801                                )
802                        {
803                            if ( TBaseType.assigned(lcprevsolidtoken) )
804                            {
805                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_with )
806                                    lcisnewsql = false;
807                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
808                                    lcisnewsql = false;
809                            }
810                        }
811                    }
812                }
813                if ( lcisnewsql )
814                {
815                    ret =  new TTeradataExecute(vendor);
816                }
817                break;
818            }
819            case sstteradatasetsession:
820            {
821                ret =  new TTeradataSetSession(vendor);
822                break;
823            }
824            case sstteradatadatabase:
825                if (token.isFirstTokenOfLine()){
826                    ret =  new TTeradataSetSession(vendor);
827                }
828
829                break;
830            case sstteradatasettimezone:
831            {
832                ret =  new TTeradataSetTimezone(vendor);
833                break;
834            }
835            case sstteradatasetrole:
836            {
837                ret =  new TTeradataSetRole(vendor);
838                break;
839            }
840            case sstteradataendlogging:
841            {
842                ret =  new TTeradataEndLogging(vendor);
843                break;
844            }
845            case sstteradatabeginlogging:
846            {
847                ret =  new TTeradataBeginLogging(vendor);
848                break;
849            }
850            case sstteradataabort:
851            {
852                ret = new TTeradataAbort(vendor);
853                break;
854            }
855            case sstteradatareplaceview:
856            case sstcreateview:
857            {
858                ret = new TCreateViewSqlStatement(vendor);
859                ret.sqlstatementtype = ESqlStatementType.sstcreateview;
860                break;
861            }
862            case sstteradatacollectstatistics:
863            {
864                ret = new TTeradataCollectStatistics(vendor);
865                break;
866            }
867            case sstteradatagive:
868            {
869                ret = new TTeradataGive(vendor);
870                break;
871            }
872            case sstteradatacall:
873                ret = new TCallStatement(vendor);
874                break;
875            case sstteradatacreatemacro:
876            case sstteradatareplacemacro:
877                ret = new TCreateMacro(vendor);
878                break;
879            case sstteradatarenametable:
880            case sstteradatarenameview:
881                ret = new TRenameStmt(vendor);
882                break;
883            case sstteradatacomment:
884                ret = new TCommentOnSqlStmt(vendor);
885                break;
886            case sstteradatacheckworkload:
887                ret = new TCheckWorkload(vendor);
888                break;
889            case sstgetdiagnostics:
890                ret = new TGetDiagStmt(vendor);
891                break;
892            case sstteradatacreaterole:
893                ret = new TCreateRoleStmt(vendor);
894                break;
895            case sstteradatarevoke:
896                ret = new TRevokeStmt(vendor);
897                break;
898            case sstteradataalterzone:
899                ret = new TAlterZoneStmt(vendor);
900                break;
901            case sstcreatezone:
902                ret = new TCreateZoneStmt(vendor);
903                break;
904            case sstteradataalterconstraint:
905                ret = new TAlterConstraintStmt(vendor);
906                break;
907            case sstExplain:
908                ret = new TExplainPlan(vendor);
909                break;
910            case sstteradatareleaseLock:
911                ret = new TTeradataReleaseLockStmt(vendor);
912                break;
913            default:
914            {
915                ret =  new TTeradataNotImplement(vendor);
916                ret.sqlstatementtype = gnewsqlstatementtype;
917                break;
918            }
919        }    // case
920
921        return ret;
922    }
923
924}