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