001package gudusoft.gsqlparser.sqlcmds;
002
003//import gudusoft.gsqlparser.*;
004import gudusoft.gsqlparser.*;
005import gudusoft.gsqlparser.stmt.*;
006import gudusoft.gsqlparser.stmt.bigquery.TExportDataStmt;
007import gudusoft.gsqlparser.stmt.couchbase.TInferKeyspaceStmt;
008import gudusoft.gsqlparser.stmt.couchbase.TTBuildIndexesStmt;
009import gudusoft.gsqlparser.stmt.databricks.*;
010import gudusoft.gsqlparser.stmt.hana.*;
011import gudusoft.gsqlparser.stmt.hive.*;
012import gudusoft.gsqlparser.stmt.informix.*;
013import gudusoft.gsqlparser.stmt.netezza.TNetezzaGenerateStatistics;
014import gudusoft.gsqlparser.stmt.netezza.TNetezzaGroomTable;
015import gudusoft.gsqlparser.stmt.postgresql.*;
016import gudusoft.gsqlparser.stmt.presto.TResetSessionStmt;
017import gudusoft.gsqlparser.stmt.redshift.*;
018import gudusoft.gsqlparser.stmt.snowflake.*;
019import gudusoft.gsqlparser.stmt.sparksql.*;
020import gudusoft.gsqlparser.stmt.sybase.TInsertBulk;
021import gudusoft.gsqlparser.stmt.sybase.TSybaseDeleteStatistics;
022import gudusoft.gsqlparser.stmt.sybase.TSybaseWritetext;
023import gudusoft.gsqlparser.stmt.teradata.*;
024import gudusoft.gsqlparser.stmt.mysql.*;
025import gudusoft.gsqlparser.stmt.db2.*;
026import gudusoft.gsqlparser.stmt.mssql.*;
027import gudusoft.gsqlparser.stmt.oracle.*;
028import gudusoft.gsqlparser.stmt.mdx.*;
029import gudusoft.gsqlparser.stmt.vertica.*;
030
031
032public class TSqlCmds {
033
034    /**
035     * @deprecated Use standalone TSqlCmd class directly
036     */
037    @Deprecated
038    public class TSqlCmd extends gudusoft.gsqlparser.sqlcmds.TSqlCmd {
039        public TSqlCmd() {
040            super();
041        }
042    }
043
044    /**
045     * @deprecated Use standalone TSqlCmdList class directly
046     */
047    @Deprecated
048    public class TSqlCmdList extends gudusoft.gsqlparser.sqlcmds.TSqlCmdList {
049        public TSqlCmdList() {
050            super();
051        }
052    }
053
054    TSqlCmdList mssqlcmds,oraclecmds,db2cmds,mysqlcmds,accesscmds,mdxcmds,teradatacmds,
055            postgresqlcmds,netezzacmds,sybasecmds,informixcmds,hivecmds,greenplumcmds,
056            redshiftcmds,hanacmds,verticacmds,couchbasecmds,snowflakecmds,bigquerycmds,
057            sparksqlcmds,prestocmds,athenacmds,databrickscmds,gaussdbcmds;
058
059    public TSqlCmdList getSqlCmdList(EDbVendor dbVendor){
060        TSqlCmdList sqlCmdList = null;
061        switch(dbVendor){
062            case dbvmssql:
063                if (mssqlcmds.size() == 0) {initmssqlcmds();}
064                sqlCmdList = mssqlcmds;
065                break;
066            case dbvoracle:
067                if (oraclecmds.size() == 0) {initoraclecmds();}
068                sqlCmdList = oraclecmds;
069                break;
070            case dbvmysql:
071                if (mysqlcmds.size() == 0) {initmysqlcmds();}
072                sqlCmdList = mysqlcmds;
073                break;
074            case dbvdb2:
075                if (db2cmds.size() == 0) {initdb2cmds();}
076                sqlCmdList = db2cmds;
077                break;
078            case dbvmdx:
079                if (mdxcmds.size() == 0) {initmdxcmds();}
080                sqlCmdList = mdxcmds;
081                break;
082            case dbvteradata:
083                if (teradatacmds.size() == 0) {initteradatacmds();}
084                sqlCmdList = teradatacmds;
085                break;
086            case dbvpostgresql:
087                if (postgresqlcmds.size() == 0) {initpostgresqlcmds();}
088                sqlCmdList = postgresqlcmds;
089                break;
090            case dbvredshift:
091                if (redshiftcmds.size() == 0) {initredshiftcmds();}
092                sqlCmdList = redshiftcmds;
093                break;
094            case dbvnetezza:
095                if (netezzacmds.size() == 0) {initnetezzacmds();}
096                sqlCmdList = netezzacmds;
097                break;
098            case dbvsybase:
099                if (sybasecmds.size() == 0) {initsybasecmds();}
100                sqlCmdList = sybasecmds;
101                break;
102            case dbvinformix:
103                if (informixcmds.size() == 0) {initinformixcmds();}
104                sqlCmdList = informixcmds;
105                break;
106            case dbvhive:
107                if (hivecmds.size() == 0) {inithivecmds();}
108                sqlCmdList = hivecmds;
109                break;
110            case dbvimpala:
111                if (hivecmds.size() == 0) {inithivecmds();
112                }
113                sqlCmdList = hivecmds;
114                break;
115            case dbvgreenplum:
116                if (greenplumcmds.size() == 0) {initgreenplumcmds();
117                }
118                sqlCmdList = greenplumcmds;
119                break;
120            case dbvhana:
121                if (hanacmds.size() == 0) {inithanacmds();
122                }
123                sqlCmdList = hanacmds;
124                break;
125            case dbvvertica:
126                if (verticacmds.size() == 0) {initverticacmds();
127                }
128                sqlCmdList = verticacmds;
129                break;
130            case dbvcouchbase:
131                if (couchbasecmds.size() == 0) {initcouchbasecmds();
132                }
133                sqlCmdList = couchbasecmds;
134                break;
135            case dbvsnowflake:
136                if (snowflakecmds.size() == 0) {initsnowflakecmds();
137                }
138                sqlCmdList = snowflakecmds;
139                break;
140            case dbvbigquery:
141                if (bigquerycmds.size() == 0) {initbigquerycmds();
142                }
143                sqlCmdList = bigquerycmds;
144                break;
145            case dbvsparksql:
146                if (sparksqlcmds.size() == 0) {initsparksqlcmds();
147                }
148                sqlCmdList = sparksqlcmds;
149                break;
150            case dbvpresto:
151                if (prestocmds.size() == 0) {initprestocmds();
152                }
153                sqlCmdList = prestocmds;
154                break;
155            case dbvathena:
156                if (athenacmds.size() == 0) {initathenacmds();
157                }
158                sqlCmdList = athenacmds;
159                break;
160            case dbvdatabricks:
161                if (databrickscmds.size() == 0) {initdatabrickscmds();
162                }
163                sqlCmdList = databrickscmds;
164                break;
165            case dbvgaussdb:
166                if (gaussdbcmds.size() == 0) {initgaussdbcmds();
167                }
168                sqlCmdList = gaussdbcmds;
169                break;
170        }
171        return  sqlCmdList;
172    }
173
174    ESqlStatementType gnewsqlstatementtype;
175
176   // int  mssqlcmdscurrentcount,oraclecmdscurrentcount,db2cmdscurrentcount,mysqlcmdscurrentcount,mdxcmdscurrentcount ;
177
178    public TSqlCmds(){
179//        mssqlcmdscurrentcount = 0;
180//        oraclecmdscurrentcount = 0;
181//        db2cmdscurrentcount = 0;
182//        mysqlcmdscurrentcount = 0;
183//        mdxcmdscurrentcount = 0;
184        mssqlcmds = new TSqlCmdList();
185        sybasecmds = new TSqlCmdList();
186        oraclecmds = new TSqlCmdList();
187        db2cmds = new TSqlCmdList();
188        mysqlcmds = new TSqlCmdList();
189        accesscmds = new TSqlCmdList();
190        mdxcmds = new TSqlCmdList();
191        teradatacmds = new TSqlCmdList();
192        postgresqlcmds = new TSqlCmdList();
193        netezzacmds = new TSqlCmdList();
194        informixcmds = new TSqlCmdList();
195        hivecmds = new TSqlCmdList();
196        greenplumcmds = new TSqlCmdList();
197        redshiftcmds = new TSqlCmdList();
198        hanacmds = new TSqlCmdList();
199        verticacmds = new TSqlCmdList();
200        couchbasecmds = new TSqlCmdList();
201        snowflakecmds = new TSqlCmdList();
202        bigquerycmds = new TSqlCmdList();
203        sparksqlcmds = new TSqlCmdList();
204        prestocmds = new TSqlCmdList();
205        athenacmds = new TSqlCmdList();
206        databrickscmds = new TSqlCmdList();
207        gaussdbcmds = new TSqlCmdList();
208    }
209
210    void addcmds(EDbVendor dbVendor, ESqlStatementType psqlstatementtype, int ptoken1, String ptoken2, String ptoken3, String ptoken4, String ptoken5,String ptoken6,String ptoken7){
211      TSqlCmd sc = new TSqlCmd();
212      sc.sqlstatementtype = psqlstatementtype;
213      sc.token1 = ptoken1;
214      sc.token2 = ptoken2;
215      sc.token3 = ptoken3;
216      sc.token4 = ptoken4;
217      sc.token5 = ptoken5;
218      sc.token6 = ptoken6;
219      sc.token7 = ptoken7;
220      switch(dbVendor){
221          case dbvmssql:
222              if (sc.token1 > TBaseType.rrw_abort){
223                  switch (sc.token1){
224                      case TBaseType.rrw_sqlserver_throw:
225                          sc.token1Str = "throw";
226                          break;
227                      default:
228                          break;
229                  }
230              }
231              mssqlcmds.add(sc);
232              break;
233          case dbvoracle:
234              oraclecmds.add(sc);
235              break;
236          case dbvmysql:
237              if (sc.token1 > TBaseType.rrw_abort){
238                  switch (sc.token1){
239                      case TBaseType.rrw_mysql_delimiter:
240                          sc.token1Str = "delimiter";
241                          break;
242                      case TBaseType.rrw_mysql_desc:
243                          sc.token1Str = "desc";
244                          break;
245                      default:
246                          break;
247                  }
248              }
249              mysqlcmds.add(sc);
250              break;
251          case dbvdb2:
252              db2cmds.add(sc);
253              break;
254          case dbvmdx:
255              mdxcmds.add(sc);
256              break;
257          case dbvteradata:
258              if (sc.token1 > TBaseType.rrw_abort){
259                  switch (sc.token1){
260                      case TBaseType.rrw_teradata_wait:
261                          sc.token1Str = "wait";
262                          break;
263                      case TBaseType.rrw_teradata_using:
264                          sc.token1Str = "using";
265                          break;
266                      case TBaseType.rrw_teradata_upd:
267                          sc.token1Str = "update";
268                          break;
269                      case TBaseType.rrw_teradata_sel:
270                          sc.token1Str = "select";
271                          break;
272                      case TBaseType.rrw_teradata_restart:
273                          sc.token1Str = "restart";
274                          break;
275                      case TBaseType.rrw_teradata_position:
276                          sc.token1Str = "position";
277                          break;
278                      case TBaseType.rrw_teradata_modify:
279                          sc.token1Str = "modify";
280                          break;
281                      case TBaseType.rrw_teradata_logon:
282                          sc.token1Str = "logon";
283                          break;
284                      case TBaseType.rrw_teradata_locking:
285                          sc.token1Str = "locking";
286                          break;
287                      case TBaseType.rrw_teradata_ins:
288                          sc.token1Str = "insert";
289                          break;
290                      case TBaseType.rrw_teradata_help:
291                          sc.token1Str = "help";
292                          break;
293                      case TBaseType.rrw_teradata_give:
294                          sc.token1Str = "give";
295                          break;
296                      case TBaseType.rrw_teradata_echo:
297                          sc.token1Str = "echo";
298                          break;
299                      case TBaseType.rrw_teradata_dump:
300                          sc.token1Str = "dump";
301                          break;
302                      case TBaseType.rrw_teradata_diagnostic:
303                          sc.token1Str = "diagnostic";
304                          break;
305                      case TBaseType.rrw_teradata_del:
306                          sc.token1Str = "delete";
307                          break;
308                      case TBaseType.rrw_teradata_cv:
309                          sc.token1Str = "create view";
310                          break;
311                      case TBaseType.rrw_teradata_collect:
312                          sc.token1Str = "collect";
313                          break;
314                      case TBaseType.rrw_teradata_cm:
315                          sc.token1Str = "create macro";
316                          break;
317                      default:
318                          break;
319                  }
320              }
321              teradatacmds.add(sc);
322              break;
323          case dbvpostgresql:
324              if (sc.token1 > TBaseType.rrw_abort){
325                  switch (sc.token1){
326                      case TBaseType.rrw_postgresql_cluster:
327                          sc.token1Str = "cluster";
328                          break;
329                      case TBaseType.rrw_postgresql_copy:
330                          sc.token1Str = "copy";
331                          break;
332                      case TBaseType.rrw_postgresql_discard:
333                          sc.token1Str = "discard";
334                          break;
335                      case TBaseType.rrw_postgresql_listen:
336                          sc.token1Str = "listen";
337                          break;
338                      case TBaseType.rrw_postgresql_notify:
339                          sc.token1Str = "notify";
340                          break;
341                      case TBaseType.rrw_postgresql_reassign:
342                          sc.token1Str = "reassign";
343                          break;
344                      case TBaseType.rrw_postgresql_reindex:
345                          sc.token1Str = "reindex";
346                          break;
347                      case TBaseType.rrw_postgresql_security:
348                          sc.token1Str = "security";
349                          break;
350                      case TBaseType.rrw_postgresql_unlisten:
351                          sc.token1Str = "unlisten";
352                          break;
353                      default:
354                          break;
355                  }
356              }
357              postgresqlcmds.add(sc);
358              break;
359          case dbvredshift:
360              if (sc.token1 > TBaseType.rrw_abort){
361                  switch (sc.token1){
362                      case TBaseType.rrw_redshift_cancel:
363                          sc.token1Str = "cancel";
364                          break;
365                      case TBaseType.rrw_redshift_copy:
366                          sc.token1Str = "copy";
367                          break;
368                      case TBaseType.rrw_redshift_unload:
369                          sc.token1Str = "unload";
370                          break;
371                      case TBaseType.rrw_redshift_vacuum:
372                          sc.token1Str = "vacuum";
373                          break;
374                      default:
375                          break;
376                  }
377              }
378              redshiftcmds.add(sc);
379              break;
380          case dbvnetezza:
381              if (sc.token1 > TBaseType.rrw_abort){
382                  switch (sc.token1){
383                      case TBaseType.rrw_netezza_copy:
384                          sc.token1Str = "copy";
385                          break;
386                      case TBaseType.rrw_netezza_generate:
387                          sc.token1Str = "generate";
388                          break;
389                      case TBaseType.rrw_netezza_groom:
390                          sc.token1Str = "groom";
391                          break;
392                      default:
393                          break;
394                  }
395              }
396              netezzacmds.add(sc);
397              break;
398          case dbvsybase:
399
400              if (sc.token1 > TBaseType.rrw_abort){
401                  switch (sc.token1){
402                      case TBaseType.rrw_sybase_dump:
403                          sc.token1Str = "dump";
404                          break;
405                      default:
406                          break;
407                  }
408              }
409              sybasecmds.add(sc);
410              break;
411          case dbvinformix:
412              if (sc.token1 > TBaseType.rrw_abort){
413                  switch (sc.token1){
414                      case TBaseType.rrw_informix_connect_to:
415                          sc.token1Str = "connect to";
416                          break;
417                      case TBaseType.rrw_informix_info:
418                          sc.token1Str = "info";
419                          break;
420                      case TBaseType.rrw_informix_output:
421                          sc.token1Str = "output";
422                          break;
423                      case TBaseType.rrw_informix_put:
424                          sc.token1Str = "put";
425                          break;
426                      case TBaseType.rrw_informix_unload:
427                          sc.token1Str = "unload";
428                          break;
429                      case TBaseType.rrw_informix_whenever:
430                          sc.token1Str = "whenever";
431                          break;
432                      default:
433                          break;
434                  }
435              }
436              informixcmds.add(sc);
437              break;
438          case dbvhive:
439              if (sc.token1 > TBaseType.rrw_abort){
440                  switch (sc.token1){
441                      case TBaseType.rrw_hive_desc:
442                          sc.token1Str = "desc";
443                          break;
444                      case TBaseType.rrw_hive_export:
445                          sc.token1Str = "export";
446                          break;
447                      case TBaseType.rrw_hive_import:
448                          sc.token1Str = "import";
449                          break;
450                      case TBaseType.rrw_hive_msck:
451                          sc.token1Str = "msck";
452                          break;
453                      default:
454                          break;
455                  }
456              }
457              hivecmds.add(sc);
458              break;
459          case dbvimpala:
460              hivecmds.add(sc);
461              break;
462          case dbvgreenplum:
463              if (sc.token1 > TBaseType.rrw_abort){
464                  switch (sc.token1){
465                      case TBaseType.rrw_greenplum_cluster:
466                          sc.token1Str = "cluster";
467                          break;
468                      case TBaseType.rrw_greenplum_copy:
469                          sc.token1Str = "copy";
470                          break;
471                      case TBaseType.rrw_greenplum_reassign:
472                          sc.token1Str = "reassign";
473                          break;
474                      case TBaseType.rrw_greenplum_reindex:
475                          sc.token1Str = "reindex";
476                          break;
477                      case TBaseType.rrw_greenplum_vacuum:
478                          sc.token1Str = "vacuum";
479                          break;
480                      case TBaseType.rrw_greenplum_analyse:
481                          sc.token1Str = "analyse";
482                          break;
483                      default:
484                          break;
485                  }
486              }
487              greenplumcmds.add(sc);
488              break;
489          case dbvhana:
490              if (sc.token1 > TBaseType.rrw_abort){
491                  switch (sc.token1){
492                      case TBaseType.rrw_hana_unset:
493                          sc.token1Str = "unset";
494                          break;
495                      case TBaseType.rrw_hana_upsert:
496                          sc.token1Str = "upsert";
497                          break;
498                      case TBaseType.rrw_hana_import:
499                          sc.token1Str = "import";
500                          break;
501                      case TBaseType.rrw_hana_export:
502                          sc.token1Str = "export";
503                          break;
504                      case TBaseType.rrw_hana_recover:
505                          sc.token1Str = "recover";
506                          break;
507                      case TBaseType.rrw_hana_unload:
508                          sc.token1Str = "unload";
509                          break;
510                      default:
511                          break;
512                  }
513              }
514              hanacmds.add(sc);
515              break;
516          case dbvvertica:
517              verticacmds.add(sc);
518              break;
519          case dbvcouchbase:
520              couchbasecmds.add(sc);
521              break;
522          case dbvsnowflake:
523              snowflakecmds.add(sc);
524              break;
525          case dbvbigquery:
526              bigquerycmds.add(sc);
527              break;
528          case dbvsparksql:
529              sparksqlcmds.add(sc);
530              break;
531          case dbvpresto:
532              prestocmds.add(sc);
533              break;
534          case dbvathena:
535              athenacmds.add(sc);
536              break;
537          case dbvdatabricks:
538              databrickscmds.add(sc);
539              break;
540          case dbvgaussdb:
541              gaussdbcmds.add(sc);
542              break;
543      }
544  }
545
546  void addmssqlcmds(ESqlStatementType psqlstatementtype, int ptoken1, String ptoken2, String ptoken3, String ptoken4, String ptoken5, String ptoken6, String ptoken7){
547    addcmds(EDbVendor.dbvmssql,psqlstatementtype,ptoken1,ptoken2,ptoken3,ptoken4,ptoken5,ptoken6,ptoken7);
548  }
549
550void addsybasecmds(ESqlStatementType psqlstatementtype, int ptoken1, String ptoken2, String ptoken3, String ptoken4, String ptoken5, String ptoken6, String ptoken7){
551  addcmds(EDbVendor.dbvsybase,psqlstatementtype,ptoken1,ptoken2,ptoken3,ptoken4,ptoken5,ptoken6,ptoken7);
552}
553
554void addpostgresqlcmds(ESqlStatementType psqlstatementtype, int ptoken1, String ptoken2, String ptoken3, String ptoken4, String ptoken5, String ptoken6, String ptoken7){
555  addcmds(EDbVendor.dbvpostgresql,psqlstatementtype,ptoken1,ptoken2,ptoken3,ptoken4,ptoken5,ptoken6,ptoken7);
556}
557
558    void addgaussdbcmds(ESqlStatementType psqlstatementtype, int ptoken1, String ptoken2, String ptoken3, String ptoken4, String ptoken5, String ptoken6, String ptoken7){
559        addcmds(EDbVendor.dbvgaussdb,psqlstatementtype,ptoken1,ptoken2,ptoken3,ptoken4,ptoken5,ptoken6,ptoken7);
560    }
561
562void addredshiftcmds(ESqlStatementType psqlstatementtype, int ptoken1, String ptoken2, String ptoken3, String ptoken4, String ptoken5, String ptoken6, String ptoken7){
563    addcmds(EDbVendor.dbvredshift,psqlstatementtype,ptoken1,ptoken2,ptoken3,ptoken4,ptoken5,ptoken6,ptoken7);
564}
565
566    void addnetezzacmds(ESqlStatementType psqlstatementtype, int ptoken1, String ptoken2, String ptoken3, String ptoken4, String ptoken5, String ptoken6, String ptoken7){
567  addcmds(EDbVendor.dbvnetezza,psqlstatementtype,ptoken1,ptoken2,ptoken3,ptoken4,ptoken5,ptoken6,ptoken7);
568}
569
570
571void addoraclecmds(ESqlStatementType psqlstatementtype, int ptoken1, String ptoken2, String ptoken3, String ptoken4, String ptoken5, String ptoken6, String ptoken7){
572  addcmds(EDbVendor.dbvoracle,psqlstatementtype,ptoken1,ptoken2,ptoken3,ptoken4,ptoken5,ptoken6,ptoken7);
573}
574
575void addhivecmds(ESqlStatementType psqlstatementtype, int ptoken1, String ptoken2, String ptoken3, String ptoken4, String ptoken5, String ptoken6, String ptoken7){
576  addcmds(EDbVendor.dbvhive,psqlstatementtype,ptoken1,ptoken2,ptoken3,ptoken4,ptoken5,ptoken6,ptoken7);
577}
578
579void addmysqlcmds(ESqlStatementType psqlstatementtype, int ptoken1, String ptoken2, String ptoken3, String ptoken4, String ptoken5, String ptoken6, String ptoken7){
580  addcmds(EDbVendor.dbvmysql,psqlstatementtype,ptoken1,ptoken2,ptoken3,ptoken4,ptoken5,ptoken6,ptoken7);
581}
582
583void addsparksqlcmds(ESqlStatementType psqlstatementtype, int ptoken1, String ptoken2, String ptoken3, String ptoken4, String ptoken5, String ptoken6, String ptoken7){
584    addcmds(EDbVendor.dbvsparksql,psqlstatementtype,ptoken1,ptoken2,ptoken3,ptoken4,ptoken5,ptoken6,ptoken7);
585}
586
587void addprestocmds(ESqlStatementType psqlstatementtype, int ptoken1, String ptoken2, String ptoken3, String ptoken4, String ptoken5, String ptoken6, String ptoken7){
588    addcmds(EDbVendor.dbvpresto,psqlstatementtype,ptoken1,ptoken2,ptoken3,ptoken4,ptoken5,ptoken6,ptoken7);
589}
590
591void addathenacmds(ESqlStatementType psqlstatementtype, int ptoken1, String ptoken2, String ptoken3, String ptoken4, String ptoken5, String ptoken6, String ptoken7){
592    addcmds(EDbVendor.dbvathena,psqlstatementtype,ptoken1,ptoken2,ptoken3,ptoken4,ptoken5,ptoken6,ptoken7);
593}
594
595void adddatabrickscmds(ESqlStatementType psqlstatementtype, int ptoken1, String ptoken2, String ptoken3, String ptoken4, String ptoken5, String ptoken6, String ptoken7){
596    addcmds(EDbVendor.dbvdatabricks,psqlstatementtype,ptoken1,ptoken2,ptoken3,ptoken4,ptoken5,ptoken6,ptoken7);
597}
598
599
600void adddb2cmds(ESqlStatementType psqlstatementtype, int ptoken1, String ptoken2, String ptoken3, String ptoken4, String ptoken5, String ptoken6, String ptoken7){
601  addcmds(EDbVendor.dbvdb2,psqlstatementtype,ptoken1,ptoken2,ptoken3,ptoken4,ptoken5,ptoken6,ptoken7);
602}
603
604void addmdxcmds(ESqlStatementType psqlstatementtype, int ptoken1, String ptoken2, String ptoken3, String ptoken4, String ptoken5, String ptoken6, String ptoken7){
605  addcmds(EDbVendor.dbvmdx,psqlstatementtype,ptoken1,ptoken2,ptoken3,ptoken4,ptoken5,ptoken6,ptoken7);
606}
607
608void addteradatacmds(ESqlStatementType psqlstatementtype, int ptoken1, String ptoken2, String ptoken3, String ptoken4, String ptoken5, String ptoken6, String ptoken7){
609  addcmds(EDbVendor.dbvteradata,psqlstatementtype,ptoken1,ptoken2,ptoken3,ptoken4,ptoken5,ptoken6,ptoken7);
610}
611
612void addinformixcmds(ESqlStatementType psqlstatementtype, int ptoken1, String ptoken2, String ptoken3, String ptoken4, String ptoken5, String ptoken6, String ptoken7){
613  addcmds(EDbVendor.dbvinformix,psqlstatementtype,ptoken1,ptoken2,ptoken3,ptoken4,ptoken5,ptoken6,ptoken7);
614}
615
616void addgreenplumcmds(ESqlStatementType psqlstatementtype, int ptoken1, String ptoken2, String ptoken3, String ptoken4, String ptoken5, String ptoken6, String ptoken7){
617  addcmds(EDbVendor.dbvgreenplum,psqlstatementtype,ptoken1,ptoken2,ptoken3,ptoken4,ptoken5,ptoken6,ptoken7);
618}
619
620void addhanacmds(ESqlStatementType psqlstatementtype, int ptoken1, String ptoken2, String ptoken3, String ptoken4, String ptoken5, String ptoken6, String ptoken7){
621    addcmds(EDbVendor.dbvhana,psqlstatementtype,ptoken1,ptoken2,ptoken3,ptoken4,ptoken5,ptoken6,ptoken7);
622}
623
624void addverticacmds(ESqlStatementType psqlstatementtype, int ptoken1, String ptoken2, String ptoken3, String ptoken4, String ptoken5, String ptoken6, String ptoken7){
625    addcmds(EDbVendor.dbvvertica,psqlstatementtype,ptoken1,ptoken2,ptoken3,ptoken4,ptoken5,ptoken6,ptoken7);
626}
627
628void addcouchbasecmds(ESqlStatementType psqlstatementtype, int ptoken1, String ptoken2, String ptoken3, String ptoken4, String ptoken5, String ptoken6, String ptoken7){
629    addcmds(EDbVendor.dbvcouchbase,psqlstatementtype,ptoken1,ptoken2,ptoken3,ptoken4,ptoken5,ptoken6,ptoken7);
630}
631
632void addsnowflakecmds(ESqlStatementType psqlstatementtype, int ptoken1, String ptoken2, String ptoken3, String ptoken4, String ptoken5, String ptoken6, String ptoken7){
633        addcmds(EDbVendor.dbvsnowflake,psqlstatementtype,ptoken1,ptoken2,ptoken3,ptoken4,ptoken5,ptoken6,ptoken7);
634    }
635
636void addbigquerycmds(ESqlStatementType psqlstatementtype, int ptoken1, String ptoken2, String ptoken3, String ptoken4, String ptoken5, String ptoken6, String ptoken7){
637    addcmds(EDbVendor.dbvbigquery,psqlstatementtype,ptoken1,ptoken2,ptoken3,ptoken4,ptoken5,ptoken6,ptoken7);
638}
639
640ESqlStatementType finddbcmd(TSourceToken ptoken, TSqlCmdList pdbcmds ){
641    ESqlStatementType ret = ESqlStatementType.sstinvalid;
642    if (ptoken.tokentype != ETokenType.ttkeyword){return ret;}
643    int lcchecktokens = 0;
644
645    // Look up initial command array index in hash using first token code
646
647    int startIndex = pdbcmds.getStartIndex(ptoken.tokencode);
648    if (startIndex == -1)
649        return ret;
650
651    for(int i=startIndex; i<pdbcmds.size();i++){
652        if ( ((TSqlCmd)pdbcmds.get(i)).token1 != ptoken.tokencode)
653        {
654            if (lcchecktokens > 0 ) {break;}
655            else
656              continue;
657        }
658        else
659        {
660            if (lcchecktokens < 1)
661            {lcchecktokens = 1;}
662        }
663
664        // first cmd tokentext is same, then check second
665        if ((((TSqlCmd)pdbcmds.get(i)).token2 == "") || (((TSqlCmd)pdbcmds.get(i)).token2 == " ") )
666        {
667            ret = ((TSqlCmd)pdbcmds.get(i)).sqlstatementtype;
668            if (((TSqlCmd)pdbcmds.get(i)).token2 == "")
669              break;
670        }
671
672        int k;
673        TSourceToken lcnextsolidtoken  = nextsolidtoken(ptoken);
674        if (lcnextsolidtoken == null)  break;
675        if ((((TSqlCmd)pdbcmds.get(i)).token2 == "*"))// && (lcchecktokens < 2) ) // can match any string
676        {
677            k = 0;
678        }
679        else {
680          k = TBaseType.mycomparetext(lcnextsolidtoken.toString() ,((TSqlCmd)pdbcmds.get(i)).token2);
681        }
682        if (k != 0)
683        {
684            if (lcchecktokens > 1)  break;
685            else
686              continue;
687        }
688        else if (k == 0)
689        {
690            if (lcchecktokens < 2)
691              lcchecktokens = 2;
692        }
693
694        // second cmd tokentext is same, then check third
695        if ((((TSqlCmd)pdbcmds.get(i)).token3 == "") || (((TSqlCmd)pdbcmds.get(i)).token3 == " "))
696        {
697            ret = ((TSqlCmd)pdbcmds.get(i)).sqlstatementtype;
698            if (((TSqlCmd)pdbcmds.get(i)).token3 == "")
699              break;
700        }
701
702        TSourceToken lcnnextsolidtoken = nextsolidtoken(lcnextsolidtoken);
703        if (lcnnextsolidtoken == null) break;
704        if ((((TSqlCmd)pdbcmds.get(i)).token3 == "*"))// && (lcchecktokens < 3))  // can match any string
705          k = 0;
706        else
707        {
708            k = TBaseType.mycomparetext(lcnnextsolidtoken.toString(), ((TSqlCmd)pdbcmds.get(i)).token3);
709        }
710        if (k != 0)
711        {
712            if (lcchecktokens > 2)  {break;}
713            else
714              continue;
715        }
716        else
717        {
718            if (lcchecktokens < 3)
719            {lcchecktokens = 3;}
720        }
721
722        // third cmd tokentext is same, then check fourth
723        if ((((TSqlCmd)pdbcmds.get(i)).token4 == "") || (((TSqlCmd)pdbcmds.get(i)).token4 == " "))
724        {
725            ret = ((TSqlCmd)pdbcmds.get(i)).sqlstatementtype;
726            if (((TSqlCmd)pdbcmds.get(i)).token4 == "")
727              break;
728        }
729
730        TSourceToken lcnnnextsolidtoken = nextsolidtoken(lcnnextsolidtoken);
731        if (lcnnnextsolidtoken == null) { break;}
732        if ((((TSqlCmd)(pdbcmds.get(i))).token4 == "*"))// && (lcchecktokens < 4))  // can match any string
733        {k = 0;}
734        else
735        {k = TBaseType.mycomparetext(lcnnnextsolidtoken.getAstext(),((TSqlCmd)pdbcmds.get(i)).token4);}
736
737        if (k != 0 )
738        {
739            if (lcchecktokens > 3)  break;
740            else
741              continue;
742        }
743        else
744        {
745            if (lcchecktokens < 4)
746              lcchecktokens = 4;
747        }
748
749        // fourth cmd tokentext is same, then check fiveth
750        if ((((TSqlCmd)pdbcmds.get(i)).token5 == "") || (((TSqlCmd)pdbcmds.get(i)).token5 == " ") )
751        {
752            ret = ((TSqlCmd)pdbcmds.get(i)).sqlstatementtype;
753            if (((TSqlCmd)pdbcmds.get(i)).token5 == "")
754              break;
755        }
756
757        TSourceToken lcnnnnextsolidtoken = nextsolidtoken(lcnnnextsolidtoken);
758        if (lcnnnnextsolidtoken == null)  break;
759        if ((((TSqlCmd)pdbcmds.get(i)).token5 == "*") )//&& (lcchecktokens < 5) ) // can match any string
760        { k = 0;}
761        else
762        { k = TBaseType.mycomparetext(lcnnnnextsolidtoken.getAstext(), ((TSqlCmd)pdbcmds.get(i)).token5);}
763        if ( k != 0)
764        {
765            if (lcchecktokens > 4)  break;
766            else
767              continue;
768        }
769        else
770        {
771            if (lcchecktokens < 5)
772              lcchecktokens = 5;
773        }
774
775        // fiveth cmd tokentext is same, then check sixth
776        if ((((TSqlCmd)pdbcmds.get(i)).token6 == "") || (((TSqlCmd)pdbcmds.get(i)).token6 == " "))
777        {
778            ret = ((TSqlCmd)pdbcmds.get(i)).sqlstatementtype;
779            if (((TSqlCmd)pdbcmds.get(i)).token6 == "")
780              break;
781        }
782
783        TSourceToken lcnnnnnextsolidtoken = nextsolidtoken(lcnnnnextsolidtoken);
784        if (lcnnnnnextsolidtoken == null)  break;
785        if ((((TSqlCmd)pdbcmds.get(i)).token6 == "*"))// && (lcchecktokens < 6)) // can match any string
786        {k = 0;}
787        else
788        { k = TBaseType.mycomparetext(lcnnnnnextsolidtoken.getAstext(),((TSqlCmd)pdbcmds.get(i)).token6);}
789        if (k != 0)
790        {
791            if (lcchecktokens > 5) break;
792            else
793              continue;
794        }
795        else
796        {
797            if (lcchecktokens < 6)
798              lcchecktokens = 6;
799        }
800
801        // sixth cmd tokentext is same, then check seventh
802        if ((((TSqlCmd)pdbcmds.get(i)).token7 == "") || (((TSqlCmd)pdbcmds.get(i)).token7 == " "))
803        {
804            ret = ((TSqlCmd)pdbcmds.get(i)).sqlstatementtype;
805            if(((TSqlCmd)pdbcmds.get(i)).token7 == "")
806              break;
807        }
808
809        TSourceToken lcnnnnnnextsolidtoken = nextsolidtoken(lcnnnnnextsolidtoken);
810        if (lcnnnnnnextsolidtoken == null) break;
811        if ((((TSqlCmd)pdbcmds.get(i)).token7 == "*"))// && (lcchecktokens < 7)) // can match any string
812        {k = 0;}
813        else
814        { k = TBaseType.mycomparetext(lcnnnnnnextsolidtoken.getAstext(),((TSqlCmd)pdbcmds.get(i)).token7);}
815        if (k  != 0)
816        {
817            if (lcchecktokens > 6 ) break;
818            else
819              continue;
820        }
821        else
822        {
823            if (lcchecktokens < 7)
824            {lcchecktokens = 7;}
825            ret = ((TSqlCmd)pdbcmds.get(i)).sqlstatementtype;
826            break;
827        }
828
829
830    } //for
831    return ret;
832}
833
834TSourceToken nextsolidtoken(TSourceToken ptoken){
835    TSourceToken ret = null;
836    if (ptoken.container == null) {return ret;}
837    ret = ptoken.container.nextsolidtoken(ptoken,1,false);
838
839    return ret;
840}
841
842void initteradatacmds(){
843
844 addteradatacmds(ESqlStatementType.sstteradataabort, TBaseType.rrw_abort,  " "," "," "," "," "," ");
845 addteradatacmds(ESqlStatementType.sstteradataalterconstraint, TBaseType.rrw_alter,"constraint"," "," "," "," "," ");
846 addteradatacmds(ESqlStatementType.sstteradataalterfunction, TBaseType.rrw_alter,"function"," "," "," "," "," ");
847 addteradatacmds(ESqlStatementType.sstteradataalterfunction, TBaseType.rrw_alter,"specific","function"," "," "," "," ");
848 addteradatacmds(ESqlStatementType.sstteradataaltermethod, TBaseType.rrw_alter,"method"," "," "," "," "," ");
849 addteradatacmds(ESqlStatementType.sstteradataaltermethod, TBaseType.rrw_alter,"constructor","method"," "," "," "," ");
850 addteradatacmds(ESqlStatementType.sstteradataaltermethod, TBaseType.rrw_alter,"instance","method"," "," "," "," ");
851 addteradatacmds(ESqlStatementType.sstteradataaltermethod, TBaseType.rrw_alter,"specific","method"," "," "," "," ");
852 addteradatacmds(ESqlStatementType.sstteradataalterprocedure, TBaseType.rrw_alter,"procedure"," "," "," "," "," ");
853 addteradatacmds(ESqlStatementType.sstteradataalterreplicationgroup, TBaseType.rrw_alter,"replication","group"," "," "," "," ");
854 addteradatacmds(ESqlStatementType.sstteradataaltertable, TBaseType.rrw_alter,"table"," "," "," "," "," ");
855 addteradatacmds(ESqlStatementType.sstteradataaltertrigger, TBaseType.rrw_alter,"trigger"," "," "," "," "," ");
856 addteradatacmds(ESqlStatementType.sstteradataaltertype, TBaseType.rrw_alter,"type"," "," "," "," "," ");
857 addteradatacmds(ESqlStatementType.sstteradataalterzone, TBaseType.rrw_alter,"zone"," "," "," "," "," ");
858
859 addteradatacmds(ESqlStatementType.sstteradatabegindeclaresection, TBaseType.rrw_begin,"delcare","section"," "," "," "," ");
860 addteradatacmds(ESqlStatementType.sstteradatabeginlogging, TBaseType.rrw_begin,"logging"," "," "," "," "," ");
861 addteradatacmds(ESqlStatementType.sstteradatabeginquerylogging, TBaseType.rrw_begin,"query","logging"," "," "," "," ");    
862 addteradatacmds(ESqlStatementType.sstteradatabegintransaction, TBaseType.rrw_begin,"transaction"," "," "," "," "," ");
863 addteradatacmds(ESqlStatementType.sstteradatabegintransaction, TBaseType.rrw_bt," "," "," "," "," "," ");
864
865 addteradatacmds(ESqlStatementType.sstteradatacall, TBaseType.rrw_call," "," "," "," "," "," ");
866 addteradatacmds(ESqlStatementType.sstteradatacheckworkload, TBaseType.rrw_check,"workload"," "," "," "," "," ");
867 addteradatacmds(ESqlStatementType.sstteradatacheckpoint, TBaseType.rrw_checkpoint," "," "," "," "," "," ");
868 addteradatacmds(ESqlStatementType.sstteradataclose, TBaseType.rrw_close," "," "," "," "," "," ");
869
870 addteradatacmds(ESqlStatementType.sstteradatacreatemacro, TBaseType.rrw_teradata_cm," "," "," "," "," "," ");
871
872 addteradatacmds(ESqlStatementType.sstteradatacollectdemographics, TBaseType.rrw_teradata_collect,"demographics"," "," "," "," "," ");
873
874 addteradatacmds(ESqlStatementType.sstteradatacollectstatistics, TBaseType.rrw_teradata_collect,"statistics"," "," "," "," "," ");
875 addteradatacmds(ESqlStatementType.sstteradatacollectstatistics, TBaseType.rrw_teradata_collect,"stats"," "," "," "," "," ");
876 addteradatacmds(ESqlStatementType.sstteradatacollectstatistics, TBaseType.rrw_teradata_collect,"stat"," "," "," "," "," ");
877    addteradatacmds(ESqlStatementType.sstteradatacollectstatistics, TBaseType.rrw_teradata_collect,"summary","statistics"," "," "," "," ");
878    addteradatacmds(ESqlStatementType.sstteradatacollectstatistics, TBaseType.rrw_teradata_collect,"summary","stats"," "," "," "," ");
879    addteradatacmds(ESqlStatementType.sstteradatacollectstatistics, TBaseType.rrw_teradata_collect,"summary","stat"," "," "," "," ");
880
881
882 addteradatacmds(ESqlStatementType.sstteradatacomment, TBaseType.rrw_comment," "," "," "," "," "," ");
883 addteradatacmds(ESqlStatementType.sstteradatacommit, TBaseType.rrw_commit," "," "," "," "," "," ");
884 addteradatacmds(ESqlStatementType.sstteradataconnect, TBaseType.rrw_connect," "," "," "," "," "," ");
885 addteradatacmds(ESqlStatementType.sstteradatacreateauthorization, TBaseType.rrw_create,"authorization"," "," "," "," "," ");
886 addteradatacmds(ESqlStatementType.sstteradatacreatecast, TBaseType.rrw_create,"cast"," "," "," "," "," ");
887
888 addteradatacmds(ESqlStatementType.sstteradatacreatemethod, TBaseType.rrw_create,"constructor","method"," "," "," "," ");
889
890 addteradatacmds(ESqlStatementType.sstteradatacreatedatabase, TBaseType.rrw_create,"database"," "," "," "," "," ");
891 addteradatacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"error","table"," "," "," "," ");
892 addteradatacmds(ESqlStatementType.sstteradatacreaterole, TBaseType.rrw_create,"external","role"," "," "," "," ");
893
894 addteradatacmds(ESqlStatementType.sstteradatacreatefunction, TBaseType.rrw_create,"function"," "," "," "," "," ");
895
896 addteradatacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"global","temporary","multiset","table"," "," ");
897 addteradatacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"global","temporary","set","table"," "," ");
898 addteradatacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"global","temporary","table"," "," "," ");
899
900 addteradatacmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"hash","index"," "," "," "," ");
901 addteradatacmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"index"," "," "," "," "," ");
902
903 addteradatacmds(ESqlStatementType.sstteradatacreatemethod, TBaseType.rrw_create,"instance","method"," "," "," "," ");
904
905 addteradatacmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"join","index"," "," "," "," ");
906
907 addteradatacmds(ESqlStatementType.sstteradatacreatemacro, TBaseType.rrw_create,"macro"," "," "," "," "," ");
908
909 addteradatacmds(ESqlStatementType.sstteradatacreatemethod, TBaseType.rrw_create,"method"," "," "," "," "," ");
910 addteradatacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"multiset","global","temporary","table"," "," ");
911 addteradatacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"multiset","table"," "," "," "," ");
912 addteradatacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"multiset","volatile","table"," "," "," ");
913
914 addteradatacmds(ESqlStatementType.sstteradatacreateordering, TBaseType.rrw_create,"ordering"," "," "," "," "," ");
915
916 addteradatacmds(ESqlStatementType.sstcreateprocedure, TBaseType.rrw_create,"proc"," "," "," "," "," ");
917 addteradatacmds(ESqlStatementType.sstcreateprocedure, TBaseType.rrw_create,"procedure"," "," "," "," "," ");
918
919 addteradatacmds(ESqlStatementType.sstteradatacreateprofile, TBaseType.rrw_create,"profile"," "," "," "," "," ");
920
921    addteradatacmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,"recursive","view"," "," "," "," ");
922
923    addteradatacmds(ESqlStatementType.sstteradatacreatereplicationgroup, TBaseType.rrw_create,"replication","group"," "," "," "," ");
924    addteradatacmds(ESqlStatementType.sstteradatacreaterole, TBaseType.rrw_create,"role"," "," "," "," "," ");
925    addteradatacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"set","global","temporary","table"," "," ");
926    addteradatacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"set","table"," "," "," "," ");
927    addteradatacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"set","volatile","table"," "," "," ");
928    addteradatacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"table"," "," "," "," "," ");
929    addteradatacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"temporary","table"," "," "," "," ");
930
931    addteradatacmds(ESqlStatementType.sstteradatacreatetransform, TBaseType.rrw_create,"transform"," "," "," "," "," ");
932
933    addteradatacmds(ESqlStatementType.sstteradatacreatetrigger, TBaseType.rrw_create,"trigger"," "," "," "," "," ");
934
935    addteradatacmds(ESqlStatementType.sstteradatacreatetype, TBaseType.rrw_create,"type"," "," "," "," "," ");
936
937    addteradatacmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"unique","index"," "," "," "," ");
938
939    addteradatacmds(ESqlStatementType.sstteradatacreateuser, TBaseType.rrw_create,"user"," "," "," "," "," ");
940
941    addteradatacmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,"view"," "," "," "," "," ");
942
943    addteradatacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"volatile","multiset","table"," "," "," ");
944    addteradatacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"volatile","table"," "," "," "," ");
945    addteradatacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"volatile","set","table"," "," "," ");
946
947    addteradatacmds(ESqlStatementType.sstcreatezone, TBaseType.rrw_create,"zone"," "," "," "," "," ");
948
949    addteradatacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_ct," "," "," "," "," "," ");
950
951    addteradatacmds(ESqlStatementType.sstcreateview, TBaseType.rrw_teradata_cv," "," "," "," "," "," ");
952
953    addteradatacmds(ESqlStatementType.sstteradatadatabase, TBaseType.rrw_database," "," "," "," "," "," ");
954
955    addteradatacmds(ESqlStatementType.sstteradatadeclarecursor, TBaseType.rrw_declare,"cursor"," "," "," "," "," ");
956
957    addteradatacmds(ESqlStatementType.sstteradatadeclarestatement, TBaseType.rrw_declare,"statement"," "," "," "," "," ");
958
959    addteradatacmds(ESqlStatementType.sstteradatadeclaretable, TBaseType.rrw_declare,"table"," "," "," "," "," ");
960
961    addteradatacmds(ESqlStatementType.sstdelete, TBaseType.rrw_teradata_del," "," "," "," "," "," ");
962
963    addteradatacmds(ESqlStatementType.sstdelete, TBaseType.rrw_delete," "," "," "," "," "," ");
964
965    addteradatacmds(ESqlStatementType.sstteradatadeletedatabase, TBaseType.rrw_delete,"database"," "," "," "," "," ");
966
967    addteradatacmds(ESqlStatementType.sstteradatadeleteuser, TBaseType.rrw_delete,"user"," "," "," "," "," ");
968
969    addteradatacmds(ESqlStatementType.sstteradatadescribe, TBaseType.rrw_describe," "," "," "," "," "," ");
970
971    addteradatacmds(ESqlStatementType.sstteradatadiagnostic, TBaseType.rrw_teradata_diagnostic," "," "," "," "," "," ");
972
973    addteradatacmds(ESqlStatementType.sstteradatadropauthorization, TBaseType.rrw_drop,"authorization"," "," "," "," "," ");
974
975    addteradatacmds(ESqlStatementType.sstteradatadropcast, TBaseType.rrw_drop,"cast"," "," "," "," "," ");
976    addteradatacmds(ESqlStatementType.sstteradatadropconstraint, TBaseType.rrw_drop,"constraint"," "," "," "," "," ");
977    addteradatacmds(ESqlStatementType.sstteradatadropdatabase, TBaseType.rrw_drop,"database"," "," "," "," "," ");
978    addteradatacmds(ESqlStatementType.sstdroptable, TBaseType.rrw_drop,"error","table"," "," "," "," ");
979    addteradatacmds(ESqlStatementType.sstteradatadroprole, TBaseType.rrw_drop,"external","role"," "," "," "," ");
980
981    addteradatacmds(ESqlStatementType.sstteradatadropfunction, TBaseType.rrw_drop,"function"," "," "," "," "," ");
982
983    addteradatacmds(ESqlStatementType.sstdropindex, TBaseType.rrw_drop,"hash","index"," "," "," "," ");
984    addteradatacmds(ESqlStatementType.sstdropindex, TBaseType.rrw_drop,"index"," "," "," "," "," ");
985    addteradatacmds(ESqlStatementType.sstdropindex, TBaseType.rrw_drop,"join","index"," "," "," "," ");
986
987    addteradatacmds(ESqlStatementType.sstteradatadropmacro, TBaseType.rrw_drop,"macro"," "," "," "," "," ");
988
989    addteradatacmds(ESqlStatementType.sstteradatadropordering, TBaseType.rrw_drop,"ordering"," "," "," "," "," ");
990
991    addteradatacmds(ESqlStatementType.sstteradatadropprocedure, TBaseType.rrw_drop,"procedure"," "," "," "," "," ");
992
993    addteradatacmds(ESqlStatementType.sstteradatadropprofile, TBaseType.rrw_drop,"profile"," "," "," "," "," ");
994
995    addteradatacmds(ESqlStatementType.sstteradatadropreplicationgroup, TBaseType.rrw_drop,"replication","group"," "," "," "," ");
996
997    addteradatacmds(ESqlStatementType.sstteradatadroprole, TBaseType.rrw_drop,"role"," "," "," "," "," ");
998
999    addteradatacmds(ESqlStatementType.sstteradatadropfunction, TBaseType.rrw_drop,"specific","function"," "," "," "," ");
1000
1001    addteradatacmds(ESqlStatementType.sstteradatadropstatistics, TBaseType.rrw_drop,"stat"," "," "," "," "," ");
1002    addteradatacmds(ESqlStatementType.sstteradatadropstatistics, TBaseType.rrw_drop,"statistics"," "," "," "," "," ");
1003    addteradatacmds(ESqlStatementType.sstteradatadropstatistics, TBaseType.rrw_drop,"stats"," "," "," "," "," ");
1004
1005    addteradatacmds(ESqlStatementType.sstdroptable, TBaseType.rrw_drop,"table"," "," "," "," "," ");
1006    addteradatacmds(ESqlStatementType.sstdroptable, TBaseType.rrw_drop,"temporary","table"," "," "," "," ");
1007
1008    addteradatacmds(ESqlStatementType.sstteradatadroptransform, TBaseType.rrw_drop,"transform"," "," "," "," "," ");
1009
1010    addteradatacmds(ESqlStatementType.sstteradatadroptrigger, TBaseType.rrw_drop,"trigger"," "," "," "," "," ");
1011
1012    addteradatacmds(ESqlStatementType.sstteradatadroptype, TBaseType.rrw_drop,"type"," "," "," "," "," ");
1013    addteradatacmds(ESqlStatementType.sstdropindex, TBaseType.rrw_drop,"unique","index"," "," "," "," ");
1014
1015    addteradatacmds(ESqlStatementType.sstteradatadropuser, TBaseType.rrw_drop,"user"," "," "," "," "," ");
1016
1017    addteradatacmds(ESqlStatementType.sstdropview, TBaseType.rrw_drop,"view"," "," "," "," "," ");
1018
1019    addteradatacmds(ESqlStatementType.sstteradatadropzone, TBaseType.rrw_drop,"zone"," "," "," "," "," ");
1020
1021    addteradatacmds(ESqlStatementType.sstteradatadumpexplain, TBaseType.rrw_teradata_dump,"explain"," "," "," "," "," ");
1022
1023    addteradatacmds(ESqlStatementType.sstteradataecho, TBaseType.rrw_teradata_echo," "," "," "," "," "," ");
1024
1025    addteradatacmds(ESqlStatementType.sstteradataenddeclaresection, TBaseType.rrw_end,"declare","section"," "," "," "," ");
1026
1027    addteradatacmds(ESqlStatementType.sstteradataendlogging, TBaseType.rrw_end,"logging"," "," "," "," "," ");
1028
1029    addteradatacmds(ESqlStatementType.sstteradataendquerylogging, TBaseType.rrw_end,"query","logging"," "," "," "," ");
1030
1031    addteradatacmds(ESqlStatementType.sstteradataendtransaction, TBaseType.rrw_end,"transaction"," "," "," "," "," ");
1032
1033    addteradatacmds(ESqlStatementType.sstteradataendtransaction, TBaseType.rrw_et," "," "," "," "," "," ");
1034
1035    addteradatacmds(ESqlStatementType.sstteradataexecute, TBaseType.rrw_execute," "," "," "," "," "," ");
1036
1037    addteradatacmds(ESqlStatementType.sstteradataexecute, TBaseType.rrw_exec," "," "," "," "," "," ");
1038
1039    addteradatacmds(ESqlStatementType.sstteradataexecuteimmediate, TBaseType.rrw_execute,"immediate"," "," "," "," "," ");
1040
1041    addteradatacmds(ESqlStatementType.sstteradataExit, TBaseType.rrw_teradata_exit," "," "," "," "," "," ");
1042
1043    addteradatacmds(ESqlStatementType.sstExplain, TBaseType.rrw_explain, " ", " ", " ", " ", " ", " ");
1044
1045
1046    addteradatacmds(ESqlStatementType.sstteradatafetch, TBaseType.rrw_fetch," "," "," "," "," "," ");
1047
1048    addteradatacmds(ESqlStatementType.sstteradatagetcrash, TBaseType.rrw_get,"crash"," "," "," "," "," ");
1049
1050    addteradatacmds(ESqlStatementType.sstgetdiagnostics, TBaseType.rrw_get,"diagnostics"," "," "," "," "," ");
1051
1052    addteradatacmds(ESqlStatementType.sstteradatagive, TBaseType.rrw_teradata_give," "," "," "," "," "," ");
1053
1054    addteradatacmds(ESqlStatementType.sstteradatagrant, TBaseType.rrw_grant," "," "," "," "," "," ");
1055
1056    addteradatacmds(ESqlStatementType.sstteradatahelp, TBaseType.rrw_teradata_help," "," "," "," "," "," ");
1057
1058    addteradatacmds(ESqlStatementType.sstteradatainclude, TBaseType.rrw_include," "," "," "," "," "," ");
1059
1060    addteradatacmds(ESqlStatementType.sstinsert, TBaseType.rrw_teradata_ins," "," "," "," "," "," ");
1061
1062    addteradatacmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert," "," "," "," "," "," ");
1063
1064    addteradatacmds(ESqlStatementType.sstteradatainsertexplain, TBaseType.rrw_insert,"explain"," "," "," "," "," ");
1065
1066    addteradatacmds(ESqlStatementType.sstteradatalabel, TBaseType.rrw_teradata_label," "," "," "," "," "," ");
1067    addteradatacmds(ESqlStatementType.sstteradatalock, TBaseType.rrw_lock," "," "," "," "," "," ");
1068    addteradatacmds(ESqlStatementType.sstteradatalock, TBaseType.rrw_teradata_locking," "," "," "," "," "," ");
1069    addteradatacmds(ESqlStatementType.sstteradatalogon, TBaseType.rrw_teradata_logon," "," "," "," "," "," ");
1070
1071    addteradatacmds(ESqlStatementType.sstmerge, TBaseType.rrw_merge," "," "," "," "," "," ");
1072
1073    addteradatacmds(ESqlStatementType.sstteradatamodifydatabase, TBaseType.rrw_teradata_modify,"database"," "," "," "," "," ");
1074
1075    addteradatacmds(ESqlStatementType.sstteradatamodifyprofile, TBaseType.rrw_teradata_modify,"profile"," "," "," "," "," ");
1076
1077    addteradatacmds(ESqlStatementType.sstteradatamodifyuser, TBaseType.rrw_teradata_modify,"user"," "," "," "," "," ");
1078
1079    addteradatacmds(ESqlStatementType.sstteradataopen, TBaseType.rrw_open," "," "," "," "," "," ");
1080
1081    addteradatacmds(ESqlStatementType.sstteradataposition, TBaseType.rrw_teradata_position," "," "," "," "," "," ");
1082
1083    addteradatacmds(ESqlStatementType.sstteradataprepare, TBaseType.rrw_prepare," "," "," "," "," "," ");
1084
1085    addteradatacmds(ESqlStatementType.sstteradatareleaseLock, TBaseType.rrw_release,"lock"," "," "," "," "," ");
1086
1087    addteradatacmds(ESqlStatementType.sstteradatarenamefunction, TBaseType.rrw_rename,"function"," "," "," "," "," ");
1088    addteradatacmds(ESqlStatementType.sstteradatarenamemacro, TBaseType.rrw_rename,"macro"," "," "," "," "," ");
1089    addteradatacmds(ESqlStatementType.sstteradatarenameprocedure, TBaseType.rrw_rename,"procedure"," "," "," "," "," ");
1090    addteradatacmds(ESqlStatementType.sstteradatarenametable, TBaseType.rrw_rename,"table"," "," "," "," "," ");
1091    addteradatacmds(ESqlStatementType.sstteradatarenametrigger, TBaseType.rrw_rename,"trigger"," "," "," "," "," ");
1092    addteradatacmds(ESqlStatementType.sstteradatarenameview, TBaseType.rrw_rename,"view"," "," "," "," "," ");
1093
1094    addteradatacmds(ESqlStatementType.sstteradatareplacecast, TBaseType.rrw_replace,"cast"," "," "," "," "," ");
1095
1096    addteradatacmds(ESqlStatementType.sstteradatareplacemethod, TBaseType.rrw_replace,"constructor","method"," "," "," "," ");
1097
1098    addteradatacmds(ESqlStatementType.sstteradatareplacefunction, TBaseType.rrw_replace,"function"," "," "," "," "," ");
1099
1100    addteradatacmds(ESqlStatementType.sstteradatareplacemethod, TBaseType.rrw_replace,"instance","method"," "," "," "," ");
1101
1102    addteradatacmds(ESqlStatementType.sstteradatareplacemacro, TBaseType.rrw_replace,"macro"," "," "," "," "," ");
1103
1104    addteradatacmds(ESqlStatementType.sstteradatareplacemethod, TBaseType.rrw_replace,"method"," "," "," "," "," ");
1105
1106    addteradatacmds(ESqlStatementType.sstteradatareplaceordering, TBaseType.rrw_replace,"ordering"," "," "," "," "," ");
1107
1108    addteradatacmds(ESqlStatementType.sstteradatareplaceprocedure, TBaseType.rrw_replace,"procedure"," "," "," "," "," ");
1109
1110    addteradatacmds(ESqlStatementType.sstteradatareplacemethod, TBaseType.rrw_replace,"specific","method"," "," "," "," ");
1111
1112    addteradatacmds(ESqlStatementType.sstteradatareplacetransform, TBaseType.rrw_replace,"transform"," "," "," "," "," ");
1113
1114    addteradatacmds(ESqlStatementType.sstteradatacreatetrigger, TBaseType.rrw_replace,"trigger"," "," "," "," "," ");
1115
1116    addteradatacmds(ESqlStatementType.sstteradatareplaceview, TBaseType.rrw_replace,"view"," "," "," "," "," ");
1117    addteradatacmds(ESqlStatementType.sstteradatareplaceview, TBaseType.rrw_replace,"recursive","view"," "," "," "," ");
1118
1119    addteradatacmds(ESqlStatementType.sstteradatarestartindexanalysis, TBaseType.rrw_teradata_restart,"index","analysis"," "," "," "," ");
1120
1121    addteradatacmds(ESqlStatementType.sstteradatarevoke, TBaseType.rrw_revoke," "," "," "," "," "," ");
1122
1123    // addteradatacmds(ESqlStatementType.sstteradatarewind, TBaseType.rrw_rewind," "," "," "," "," "," ");
1124
1125    addteradatacmds(ESqlStatementType.sstteradatarollback, TBaseType.rrw_rollback," "," "," "," "," "," ");
1126
1127    addteradatacmds(ESqlStatementType.sstselect, TBaseType.rrw_teradata_sel," "," "," "," "," "," ");
1128    addteradatacmds(ESqlStatementType.sstselect, TBaseType.rrw_select," "," "," "," "," "," ");
1129
1130    //addteradatacmds(ESqlStatementType.sstsetbuffersize, TBaseType.rrw_set,"buffersize"," "," "," "," "," ");
1131    addteradatacmds(ESqlStatementType.sstteradatasetrole, TBaseType.rrw_set,"role"," "," "," "," "," ");
1132
1133    addteradatacmds(ESqlStatementType.sstteradatasetsession, TBaseType.rrw_set,"session"," "," "," "," "," ");
1134    addteradatacmds(ESqlStatementType.sstteradatasetsession, TBaseType.rrw_ss," "," "," "," "," "," ");
1135//    addteradatacmds(ESqlStatementType.sstteradatasetsessionaccount, TBaseType.rrw_set,"session","account"," "," "," "," ");
1136
1137    addteradatacmds(ESqlStatementType.sstteradatasettimezone, TBaseType.rrw_set,"time","zone"," "," "," "," ");
1138
1139    addteradatacmds(ESqlStatementType.sstteradatashow, TBaseType.rrw_show," "," "," "," "," "," ");
1140
1141    addteradatacmds(ESqlStatementType.sstteradatashowmethod, TBaseType.rrw_show,"constructor","method"," "," "," "," ");
1142
1143    addteradatacmds(ESqlStatementType.sstteradatashowfunction, TBaseType.rrw_show,"function"," "," "," "," "," ");
1144
1145    addteradatacmds(ESqlStatementType.sstteradatashowindex, TBaseType.rrw_show,"hash","index"," "," "," "," ");
1146
1147    addteradatacmds(ESqlStatementType.sstteradatashowmethod, TBaseType.rrw_show,"instance","method"," "," "," "," ");
1148
1149    addteradatacmds(ESqlStatementType.sstteradatashowindex, TBaseType.rrw_show,"join","index"," "," "," "," ");
1150
1151    addteradatacmds(ESqlStatementType.sstteradatashowmacro, TBaseType.rrw_show,"macro"," "," "," "," "," ");
1152
1153    addteradatacmds(ESqlStatementType.sstteradatashowmethod, TBaseType.rrw_show,"method"," "," "," "," "," ");
1154
1155    addteradatacmds(ESqlStatementType.sstteradatashowprocedure, TBaseType.rrw_show,"procedure"," "," "," "," "," ");
1156
1157    addteradatacmds(ESqlStatementType.sstteradatashowreplicationgroup, TBaseType.rrw_show,"replication","group"," "," "," "," ");
1158
1159    addteradatacmds(ESqlStatementType.sstteradatashowfunction, TBaseType.rrw_show,"specific","function"," "," "," "," ");
1160    addteradatacmds(ESqlStatementType.sstteradatashowmethod, TBaseType.rrw_show,"specific","method"," "," "," "," ");
1161
1162    addteradatacmds(ESqlStatementType.sstteradatashowtable, TBaseType.rrw_show,"table "," "," "," "," "," ");
1163    addteradatacmds(ESqlStatementType.sstteradatashowtable, TBaseType.rrw_show,"temporary","table"," "," "," "," ");
1164
1165    addteradatacmds(ESqlStatementType.sstteradatashowtrigger, TBaseType.rrw_show,"trigger"," "," "," "," "," ");
1166    addteradatacmds(ESqlStatementType.sstteradatashowtype, TBaseType.rrw_show,"type"," "," "," "," "," ");
1167    addteradatacmds(ESqlStatementType.sstteradatashowview, TBaseType.rrw_show,"view"," "," "," "," "," ");
1168
1169    //addteradatacmds(ESqlStatementType.sstteradatatest, TBaseType.rrw_test," "," "," "," "," "," ");
1170    addteradatacmds(ESqlStatementType.sstupdate, TBaseType.rrw_teradata_upd," "," "," "," "," "," ");
1171    addteradatacmds(ESqlStatementType.sstupdate, TBaseType.rrw_update," "," "," "," "," "," ");
1172
1173    addteradatacmds(ESqlStatementType.sstteradatausing, TBaseType.rrw_teradata_using," "," "," "," "," "," ");
1174
1175    addteradatacmds(ESqlStatementType.sstteradatawait, TBaseType.rrw_teradata_wait," "," "," "," "," "," ");
1176    //addteradatacmds(ESqlStatementType.sstteradatawhenever, TBaseType.rrw_whenever," "," "," "," "," "," ");
1177
1178}
1179
1180 void inithivecmds(){
1181     addhivecmds(ESqlStatementType.sstalterdatabase, TBaseType.rrw_alter,  "database"," "," "," "," "," ");
1182     addhivecmds(ESqlStatementType.sstalterindex, TBaseType.rrw_alter,  "index"," "," "," "," "," ");
1183     addhivecmds(ESqlStatementType.sstaltertable, TBaseType.rrw_alter,  "table"," "," "," "," "," ");
1184     addhivecmds(ESqlStatementType.sstalterview, TBaseType.rrw_alter,  "view"," "," "," "," "," ");
1185     addhivecmds(ESqlStatementType.sstanalyzeTable, TBaseType.rrw_analyze,  "table"," "," "," "," "," ");
1186
1187
1188     addhivecmds(ESqlStatementType.sstcreatedatabase, TBaseType.rrw_create,  "database"," "," "," "," "," ");
1189     addhivecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,  "external","table"," "," "," "," ");
1190     addhivecmds(ESqlStatementType.ssthiveCreateFunction, TBaseType.rrw_create,  "function"," "," "," "," "," ");
1191     addhivecmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,  "index"," "," "," "," "," ");
1192     addhivecmds(ESqlStatementType.sstcreatematerializedview, TBaseType.rrw_create,"materialized","view"," "," "," "," ");
1193
1194     addhivecmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,  "or","replace","view"," "," "," ");
1195     addhivecmds(ESqlStatementType.ssthiveCreateRole, TBaseType.rrw_create,  "role"," "," "," "," "," ");
1196     addhivecmds(ESqlStatementType.sstcreatedatabase, TBaseType.rrw_create,  "schema"," "," "," "," "," ");
1197     addhivecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,  "table"," "," "," "," "," ");
1198     addhivecmds(ESqlStatementType.ssthiveCreateFunction, TBaseType.rrw_create,  "temporary","function"," "," "," "," ");
1199     addhivecmds(ESqlStatementType.sstCreateMacro, TBaseType.rrw_create,  "temporary","macro"," "," "," "," ");
1200     addhivecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,  "temporary","table"," "," "," "," ");
1201     addhivecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,  "transactional","table"," "," "," "," ");
1202     addhivecmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,  "view"," "," "," "," "," ");
1203
1204     addhivecmds(ESqlStatementType.sstdelete, TBaseType.rrw_delete," "," "," "," "," "," ");
1205     addhivecmds(ESqlStatementType.ssthiveDesc, TBaseType.rrw_hive_desc,  " "," "," "," "," "," ");
1206
1207     addhivecmds(ESqlStatementType.ssthiveDesc, TBaseType.rrw_describe,  " "," "," "," "," "," ");
1208
1209     addhivecmds(ESqlStatementType.ssthiveDropDatabase, TBaseType.rrw_drop,  "database"," "," "," "," "," ");
1210     addhivecmds(ESqlStatementType.sstdropindex, TBaseType.rrw_drop,  "index"," "," "," "," "," ");
1211     addhivecmds(ESqlStatementType.ssthiveDropRole, TBaseType.rrw_drop,  "role"," "," "," "," "," ");
1212     addhivecmds(ESqlStatementType.ssthiveDropDatabase, TBaseType.rrw_drop,  "schema"," "," "," "," "," ");
1213     addhivecmds(ESqlStatementType.sstdroptable, TBaseType.rrw_drop,  "table"," "," "," "," "," ");
1214     addhivecmds(ESqlStatementType.ssthiveDropFunciton, TBaseType.rrw_drop,  "temporary","function"," "," "," "," ");
1215     addhivecmds(ESqlStatementType.sstDropMacro, TBaseType.rrw_drop,  "temporary","macro"," "," "," "," ");
1216     addhivecmds(ESqlStatementType.sstdropview, TBaseType.rrw_drop,  "view"," "," "," "," "," ");
1217
1218     addhivecmds(ESqlStatementType.ssthiveExplain, TBaseType.rrw_explain,  " "," "," "," "," "," ");
1219
1220     addhivecmds(ESqlStatementType.ssthiveExportTable, TBaseType.rrw_hive_export,  "table"," "," "," "," "," ");
1221
1222     addhivecmds(ESqlStatementType.ssthiveGrant, TBaseType.rrw_grant,  " "," "," "," "," "," ");
1223     addhivecmds(ESqlStatementType.ssthiveGrantRole, TBaseType.rrw_grant,  "role"," "," "," "," "," ");
1224
1225     addhivecmds(ESqlStatementType.ssthiveImportTable, TBaseType.rrw_hive_import,  "external","table"," "," "," "," ");
1226     addhivecmds(ESqlStatementType.ssthiveImportTable, TBaseType.rrw_hive_import,  "from"," "," "," "," "," ");
1227     addhivecmds(ESqlStatementType.ssthiveImportTable, TBaseType.rrw_hive_import,  "table"," "," "," "," "," ");
1228
1229     addhivecmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert,  " "," "," "," "," "," ");
1230
1231
1232     addhivecmds(ESqlStatementType.ssthiveLoad, TBaseType.rrw_load,  "data"," "," "," "," "," ");
1233
1234     addhivecmds(ESqlStatementType.ssthiveLockTable, TBaseType.rrw_lock,  "table"," "," "," "," "," ");
1235
1236     //merge
1237     addhivecmds(ESqlStatementType.sstmerge, TBaseType.rrw_merge," "," "," "," "," "," ");
1238
1239     addhivecmds(ESqlStatementType.sstmsck, TBaseType.rrw_hive_msck,  " "," "," "," "," "," ");
1240
1241     addhivecmds(ESqlStatementType.ssthiveRevoke, TBaseType.rrw_revoke,  " "," "," "," "," "," ");
1242     addhivecmds(ESqlStatementType.ssthiveRevokeRole, TBaseType.rrw_revoke,  "role"," "," "," "," "," ");
1243
1244     addhivecmds(ESqlStatementType.sstselect, TBaseType.rrw_select,  " "," "," "," "," "," ");
1245     addhivecmds(ESqlStatementType.ssthiveSet, TBaseType.rrw_set,  " "," "," "," "," "," ");
1246     addhivecmds(ESqlStatementType.ssthiveShow, TBaseType.rrw_show,  " "," "," "," "," "," ");
1247     addhivecmds(ESqlStatementType.ssthiveShowGrants, TBaseType.rrw_show,  "grant"," "," "," "," "," ");
1248     addhivecmds(ESqlStatementType.ssthiveShowRoleGrants, TBaseType.rrw_show,  "role","grant"," "," "," "," ");
1249
1250     addhivecmds(ESqlStatementType.sstTruncate, TBaseType.rrw_truncate,  "table"," "," "," "," "," ");
1251
1252     addhivecmds(ESqlStatementType.ssthiveUnlockTable, TBaseType.rrw_unlock,  "table"," "," "," "," "," ");
1253     addhivecmds(ESqlStatementType.sstupdate, TBaseType.rrw_update," "," "," "," "," "," ");
1254     addhivecmds(ESqlStatementType.sstupsert, TBaseType.rrw_hive_upsert, " ", " ", " ", " ", " ", " ");
1255     addhivecmds(ESqlStatementType.ssthiveSwitchDatabase, TBaseType.rrw_use,  " "," "," "," "," "," ");
1256 }
1257
1258    void initdatabrickscmds(){
1259        adddatabrickscmds(ESqlStatementType.sstaddAchieve, TBaseType.rrw_add,  "archive"," "," "," "," "," ");
1260        adddatabrickscmds(ESqlStatementType.sstaddAchieve, TBaseType.rrw_add,  "archives"," "," "," "," "," ");
1261        adddatabrickscmds(ESqlStatementType.sstaltercatalog, TBaseType.rrw_alter,  "catalog"," "," "," "," "," ");
1262        adddatabrickscmds(ESqlStatementType.sstalterdatabase, TBaseType.rrw_alter,  "database"," "," "," "," "," ");
1263        adddatabrickscmds(ESqlStatementType.sstalterlocation, TBaseType.rrw_alter,  "external","location"," "," "," "," ");
1264        adddatabrickscmds(ESqlStatementType.sstAlterGroup, TBaseType.rrw_alter,  "group"," "," "," "," "," ");
1265        adddatabrickscmds(ESqlStatementType.sstalterprovider, TBaseType.rrw_alter,  "provider"," "," "," "," "," ");
1266        adddatabrickscmds(ESqlStatementType.sstalterrecipient, TBaseType.rrw_alter,  "recipient"," "," "," "," "," ");
1267        adddatabrickscmds(ESqlStatementType.sstAlterSchema, TBaseType.rrw_alter,  "schema"," "," "," "," "," ");
1268        adddatabrickscmds(ESqlStatementType.sstAltershare, TBaseType.rrw_alter,  "share"," "," "," "," "," ");
1269        adddatabrickscmds(ESqlStatementType.sstaltercredental, TBaseType.rrw_alter,  "storage","credential"," "," "," "," ");
1270        adddatabrickscmds(ESqlStatementType.sstaltertable, TBaseType.rrw_alter,  "table"," "," "," "," "," ");
1271        adddatabrickscmds(ESqlStatementType.sstalterview, TBaseType.rrw_alter,  "view"," "," "," "," "," ");
1272        adddatabrickscmds(ESqlStatementType.sstAnalyzeTable, TBaseType.rrw_analyze,  "table"," "," "," "," "," ");
1273        adddatabrickscmds(ESqlStatementType.sstAnalyzeTable, TBaseType.rrw_analyze,  "tables"," "," "," "," "," ");
1274        adddatabrickscmds(ESqlStatementType.sstCacheSelect, TBaseType.rrw_cache,  "select"," "," "," "," "," ");
1275        adddatabrickscmds(ESqlStatementType.sstClearCache, TBaseType.rrw_clear,  "cache"," "," "," "," "," ");
1276        adddatabrickscmds(ESqlStatementType.sstCommentOn, TBaseType.rrw_comment,  "on"," "," "," "," "," ");
1277        adddatabrickscmds(ESqlStatementType.sstConvertToDelta, TBaseType.rrw_databricks_convert,  "to","delta"," "," "," "," ");
1278        adddatabrickscmds(ESqlStatementType.sstCopyInto, TBaseType.rrw_databricks_copy,  "into"," "," "," "," "," ");
1279        adddatabrickscmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,  "bloomfilter","index"," "," "," "," ");
1280        adddatabrickscmds(ESqlStatementType.sstcreatecatalog, TBaseType.rrw_create,  "catalog"," "," "," "," "," ");
1281        adddatabrickscmds(ESqlStatementType.sstcreatedatabase, TBaseType.rrw_create,  "database"," "," "," "," "," ");
1282        adddatabrickscmds(ESqlStatementType.sstCreateExternallocation, TBaseType.rrw_create,  "external","location"," "," "," "," ");
1283        adddatabrickscmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create,  "function"," "," "," "," "," ");
1284        adddatabrickscmds(ESqlStatementType.sstCreategroup, TBaseType.rrw_create,  "group"," "," "," "," "," ");
1285        adddatabrickscmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create,  "or","replace","function"," "," "," ");
1286        adddatabrickscmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,  "or","replace","table"," "," "," ");
1287        adddatabrickscmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create,  "or","replace","temp","function"," "," ");
1288        adddatabrickscmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,  "or","replace","temp","view"," "," ");
1289        adddatabrickscmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create,  "or","replace","temporary","function"," "," ");
1290        adddatabrickscmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,  "or","replace","temporary","view"," "," ");
1291        adddatabrickscmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,  "or","replace","view"," "," ", " ");
1292        adddatabrickscmds(ESqlStatementType.sstcreaterecipient, TBaseType.rrw_create,  "recipient"," "," "," "," "," ");
1293        adddatabrickscmds(ESqlStatementType.sstcreateschema, TBaseType.rrw_create,  "schema"," "," "," "," "," ");
1294        adddatabrickscmds(ESqlStatementType.sstcreateshare, TBaseType.rrw_create,  "share"," "," "," "," "," ");
1295        adddatabrickscmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create,  "temp","function"," "," "," "," ");
1296        adddatabrickscmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create,  "temporary","function"," "," "," "," ");
1297        adddatabrickscmds(ESqlStatementType.sstcreaterole, TBaseType.rrw_create,  "role"," "," "," "," "," ");
1298        adddatabrickscmds(ESqlStatementType.sstcreateschema, TBaseType.rrw_create,  "schema"," "," "," "," "," ");
1299        adddatabrickscmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,  "table"," "," "," "," "," ");
1300        adddatabrickscmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,  "view"," "," "," "," "," ");
1301        adddatabrickscmds(ESqlStatementType.sstdelete, TBaseType.rrw_delete,  "from"," "," "," "," "," ");
1302        adddatabrickscmds(ESqlStatementType.sstDeny, TBaseType.rrw_deny,  " "," "," "," "," "," ");
1303        adddatabrickscmds(ESqlStatementType.sstdescribe, TBaseType.rrw_databricks_desc,  " "," "," "," "," "," ");
1304        adddatabrickscmds(ESqlStatementType.sstdescribeCatalog, TBaseType.rrw_databricks_desc,  "catalog"," "," "," "," "," ");
1305        adddatabrickscmds(ESqlStatementType.sstdescribeFunction, TBaseType.rrw_databricks_desc,  "function"," "," "," "," "," ");
1306        adddatabrickscmds(ESqlStatementType.sstdescribeProvider, TBaseType.rrw_databricks_desc,  "provider"," "," "," "," "," ");
1307        adddatabrickscmds(ESqlStatementType.sstdescribeQuery, TBaseType.rrw_databricks_desc,  "query"," "," "," "," "," ");
1308        adddatabrickscmds(ESqlStatementType.sstdescribeRecipient, TBaseType.rrw_databricks_desc,  "recipient"," "," "," "," "," ");
1309        adddatabrickscmds(ESqlStatementType.sstdescribeSchema, TBaseType.rrw_databricks_desc,  "schema"," "," "," "," "," ");
1310        adddatabrickscmds(ESqlStatementType.sstdescribeShare, TBaseType.rrw_databricks_desc,  "share"," "," "," "," "," ");
1311        adddatabrickscmds(ESqlStatementType.sstdescribeTable, TBaseType.rrw_databricks_desc,  "table"," "," "," "," "," ");
1312        adddatabrickscmds(ESqlStatementType.sstdescribe, TBaseType.rrw_describe,  " "," "," "," "," "," ");
1313        adddatabrickscmds(ESqlStatementType.sstdescribeCatalog, TBaseType.rrw_describe,  "catalog"," "," "," "," "," ");
1314        adddatabrickscmds(ESqlStatementType.sstdescribeDatabase, TBaseType.rrw_describe,  "database"," "," "," "," "," ");
1315        adddatabrickscmds(ESqlStatementType.sstdescribeLocation, TBaseType.rrw_describe,  "external","location"," "," "," "," ");
1316        adddatabrickscmds(ESqlStatementType.sstdescribeFunction, TBaseType.rrw_describe,  "function"," "," "," "," "," ");
1317        adddatabrickscmds(ESqlStatementType.sstdescribeProvider, TBaseType.rrw_describe,  "provider"," "," "," "," "," ");
1318        adddatabrickscmds(ESqlStatementType.sstdescribeQuery, TBaseType.rrw_describe,  "query"," "," "," "," "," ");
1319        adddatabrickscmds(ESqlStatementType.sstdescribeRecipient, TBaseType.rrw_describe,  "recipient"," "," "," "," "," ");
1320        adddatabrickscmds(ESqlStatementType.sstdescribeSchema, TBaseType.rrw_describe,  "schema"," "," "," "," "," ");
1321        adddatabrickscmds(ESqlStatementType.sstdescribeShare, TBaseType.rrw_describe,  "share"," "," "," "," "," ");
1322        adddatabrickscmds(ESqlStatementType.sstdescribeCredential, TBaseType.rrw_describe,  "storage","credential"," "," "," "," ");
1323        adddatabrickscmds(ESqlStatementType.sstdescribeTable, TBaseType.rrw_describe,  "table"," "," "," "," "," ");
1324        adddatabrickscmds(ESqlStatementType.sstdropindex, TBaseType.rrw_drop,  "bloomfilter","index"," "," "," "," ");
1325        adddatabrickscmds(ESqlStatementType.sstdropcatalog, TBaseType.rrw_drop,  "catalog"," "," "," "," "," ");
1326        adddatabrickscmds(ESqlStatementType.sstdropdatabase, TBaseType.rrw_drop,  "database"," "," "," "," "," ");
1327        adddatabrickscmds(ESqlStatementType.sstdroplocation, TBaseType.rrw_drop,  "external","location"," "," "," "," ");
1328        adddatabrickscmds(ESqlStatementType.sstdropfunction, TBaseType.rrw_drop,  "function"," "," "," "," "," ");
1329        adddatabrickscmds(ESqlStatementType.sstDropGroup, TBaseType.rrw_drop,  "group"," "," "," "," "," ");
1330        adddatabrickscmds(ESqlStatementType.sstdropprovider, TBaseType.rrw_drop,  "provider"," "," "," "," "," ");
1331        adddatabrickscmds(ESqlStatementType.sstdroprecipient, TBaseType.rrw_drop,  "recipient"," "," "," "," "," ");
1332        adddatabrickscmds(ESqlStatementType.sstdropschema, TBaseType.rrw_drop,  "schema"," "," "," "," "," ");
1333        adddatabrickscmds(ESqlStatementType.sstdropshare, TBaseType.rrw_drop,  "share"," "," "," "," "," ");
1334        adddatabrickscmds(ESqlStatementType.sstdropcredential, TBaseType.rrw_drop,  "storage","credential"," "," "," "," ");
1335        adddatabrickscmds(ESqlStatementType.sstdropfunction, TBaseType.rrw_drop,  "temp","function"," "," "," "," ");
1336        adddatabrickscmds(ESqlStatementType.sstdropfunction, TBaseType.rrw_drop,  "temporary","function"," "," "," "," ");
1337        adddatabrickscmds(ESqlStatementType.sstdroptable, TBaseType.rrw_drop,  "table"," "," "," "," "," ");
1338        adddatabrickscmds(ESqlStatementType.sstdropview, TBaseType.rrw_drop,  "view"," "," "," "," "," ");
1339        adddatabrickscmds(ESqlStatementType.sstExplain, TBaseType.rrw_explain,  " "," "," "," "," "," ");
1340        adddatabrickscmds(ESqlStatementType.sstmsckrepairtable, TBaseType.rrw_databricks_fsck,  "repair"," "," "," "," "," ");
1341        adddatabrickscmds(ESqlStatementType.sstGrant, TBaseType.rrw_grant,  " "," "," "," "," "," ");
1342        adddatabrickscmds(ESqlStatementType.sstGrant, TBaseType.rrw_grant,  "select","on","share"," "," "," ");
1343        adddatabrickscmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert,  " "," "," "," "," "," ");
1344        adddatabrickscmds(ESqlStatementType.sstList, TBaseType.rrw_databricks_list,  " "," "," "," "," "," ");
1345        adddatabrickscmds(ESqlStatementType.sstLoadData, TBaseType.rrw_load,  "data"," "," "," "," "," ");
1346        adddatabrickscmds(ESqlStatementType.sstmerge, TBaseType.rrw_merge,  "into"," "," "," "," "," ");
1347        adddatabrickscmds(ESqlStatementType.sstmsckrepairtable, TBaseType.rrw_databricks_msck,  "repair"," "," "," "," "," ");
1348        adddatabrickscmds(ESqlStatementType.sstmsckrepairtable, TBaseType.rrw_databricks_msck,  "repair","table"," "," "," "," ");
1349        adddatabrickscmds(ESqlStatementType.sstOptimize, TBaseType.rrw_optimize,  " "," "," "," "," "," ");
1350        adddatabrickscmds(ESqlStatementType.sstRefresh, TBaseType.rrw_refresh,  " "," "," "," "," "," ");
1351        adddatabrickscmds(ESqlStatementType.sstRefreshFunction, TBaseType.rrw_refresh,  "function"," "," "," "," "," ");
1352        adddatabrickscmds(ESqlStatementType.sstRefreshTable, TBaseType.rrw_refresh,  "table"," "," "," "," "," ");
1353        adddatabrickscmds(ESqlStatementType.sstReorgTable, TBaseType.rrw_databricks_reorg,  "table"," "," "," "," "," ");
1354        adddatabrickscmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_replace,  "table"," "," "," "," "," ");
1355        adddatabrickscmds(ESqlStatementType.sstReset, TBaseType.rrw_reset,  " "," "," "," "," "," ");
1356        adddatabrickscmds(ESqlStatementType.sstRestoreTable, TBaseType.rrw_restore,  " "," "," "," "," "," ");
1357        adddatabrickscmds(ESqlStatementType.sstRevoke, TBaseType.rrw_revoke,  " "," "," "," "," "," ");
1358        adddatabrickscmds(ESqlStatementType.sstRevoke, TBaseType.rrw_revoke,  "select","on","share"," "," "," ");
1359        adddatabrickscmds(ESqlStatementType.sstset, TBaseType.rrw_set,  " "," "," "," "," "," ");
1360        adddatabrickscmds(ESqlStatementType.sstUseCatalog, TBaseType.rrw_set,  "catalog"," "," "," "," "," ");
1361        adddatabrickscmds(ESqlStatementType.sstset, TBaseType.rrw_set,  "time","zone"," "," "," "," ");
1362        adddatabrickscmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "all","functions"," "," "," "," ");
1363        adddatabrickscmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "all","in","share"," "," "," ");
1364        adddatabrickscmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "catalogs"," "," "," "," "," ");
1365        adddatabrickscmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "columns"," "," "," "," "," ");
1366        adddatabrickscmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "create","table"," "," "," "," ");
1367        adddatabrickscmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "external","locations"," "," "," "," ");
1368        adddatabrickscmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "functions"," "," "," "," "," ");
1369        adddatabrickscmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "grants"," "," "," "," "," ");
1370        adddatabrickscmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "grants","on","share"," "," "," ");
1371        adddatabrickscmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "grants","to","recipient"," "," "," ");
1372        adddatabrickscmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "groups"," "," "," "," "," ");
1373        adddatabrickscmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "partitions"," "," "," "," "," ");
1374        adddatabrickscmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "providers"," "," "," "," "," ");
1375        adddatabrickscmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "recipients"," "," "," "," "," ");
1376        adddatabrickscmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "schemas"," "," "," "," "," ");
1377        adddatabrickscmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "shares"," "," "," "," "," ");
1378        adddatabrickscmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "storage","credentials"," "," "," "," ");
1379        adddatabrickscmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "system","functions"," "," "," "," ");
1380        adddatabrickscmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "table","extended"," "," "," "," ");
1381        adddatabrickscmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "tables"," "," "," "," "," ");
1382        adddatabrickscmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "tblproperties"," "," "," "," "," ");
1383        adddatabrickscmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "user","functions"," "," "," "," ");
1384        adddatabrickscmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "users"," "," "," "," "," ");
1385        adddatabrickscmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "views"," "," "," "," "," ");
1386        adddatabrickscmds(ESqlStatementType.sstsync, TBaseType.rrw_databricks_sync,  "schema"," "," "," "," "," ");
1387        adddatabrickscmds(ESqlStatementType.sstsync, TBaseType.rrw_databricks_sync,  "table"," "," "," "," "," ");
1388        adddatabrickscmds(ESqlStatementType.ssttruncatetable, TBaseType.rrw_truncate,  "table"," "," "," "," "," ");
1389        adddatabrickscmds(ESqlStatementType.sstUnCacheTable, TBaseType.rrw_databricks_uncache,  "table"," "," "," "," "," ");
1390        adddatabrickscmds(ESqlStatementType.sstupdate, TBaseType.rrw_update,  " "," "," "," "," "," ");
1391        adddatabrickscmds(ESqlStatementType.sstUseSchema, TBaseType.rrw_use,  " "," "," "," "," "," ");
1392        adddatabrickscmds(ESqlStatementType.sstUseCatalog, TBaseType.rrw_use,  "catalog"," "," "," "," "," ");
1393        adddatabrickscmds(ESqlStatementType.sstUseSchema, TBaseType.rrw_use,  "database"," "," "," "," "," ");
1394        adddatabrickscmds(ESqlStatementType.sstUseSchema, TBaseType.rrw_use,  "schema"," "," "," "," "," ");
1395        adddatabrickscmds(ESqlStatementType.sstVacuum, TBaseType.rrw_databricks_vacuum,  " "," "," "," "," "," ");
1396
1397        adddatabrickscmds(ESqlStatementType.sstValues, TBaseType.rrw_values,  " "," "," "," "," "," ");
1398
1399        adddatabrickscmds(ESqlStatementType.sstGrant, TBaseType.rrw_grant,  " "," "," "," "," "," ");
1400        adddatabrickscmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert,  " "," "," "," "," "," ");
1401        adddatabrickscmds(ESqlStatementType.sstprepare, TBaseType.rrw_prepare,  " "," "," "," "," "," ");
1402        adddatabrickscmds(ESqlStatementType.sstcreaterole, TBaseType.rrw_replace,  "table"," "," "," "," "," ");
1403        adddatabrickscmds(ESqlStatementType.sstResetSession, TBaseType.rrw_reset,  "session"," "," "," "," "," ");
1404        adddatabrickscmds(ESqlStatementType.sstRevoke, TBaseType.rrw_revoke,  " "," "," "," "," "," ");
1405        adddatabrickscmds(ESqlStatementType.sstrollback, TBaseType.rrw_rollback,  " "," "," "," "," "," ");
1406        adddatabrickscmds(ESqlStatementType.sstselect, TBaseType.rrw_select,  " "," "," "," "," "," ");
1407        adddatabrickscmds(ESqlStatementType.sstset, TBaseType.rrw_set,  "role"," "," "," "," "," ");
1408        adddatabrickscmds(ESqlStatementType.sstset, TBaseType.rrw_set,  "session"," "," "," "," "," ");
1409
1410        adddatabrickscmds(ESqlStatementType.sstStartTransaction, TBaseType.rrw_start,  "transaction"," "," "," "," "," ");
1411
1412    }
1413    void initprestocmds(){
1414        addprestocmds(ESqlStatementType.sstalterfunction, TBaseType.rrw_alter,  "function"," "," "," "," "," ");
1415        addprestocmds(ESqlStatementType.sstAlterSchema, TBaseType.rrw_alter,  "schema"," "," "," "," "," ");
1416        addprestocmds(ESqlStatementType.sstaltertable, TBaseType.rrw_alter,  "table"," "," "," "," "," ");
1417        addprestocmds(ESqlStatementType.sstAnalyzeTable, TBaseType.rrw_analyze,  " "," "," "," "," "," ");
1418        addprestocmds(ESqlStatementType.sstcall, TBaseType.rrw_call,  " "," "," "," "," "," ");
1419        addprestocmds(ESqlStatementType.sstcommit, TBaseType.rrw_commit,  " "," "," "," "," "," ");
1420        addprestocmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create,  "function"," "," "," "," "," ");
1421        addprestocmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create,  "or","replace","function"," "," "," ");
1422        addprestocmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create,  "temporary","function"," "," "," "," ");
1423        addprestocmds(ESqlStatementType.sstcreaterole, TBaseType.rrw_create,  "role"," "," "," "," "," ");
1424        addprestocmds(ESqlStatementType.sstcreateschema, TBaseType.rrw_create,  "schema"," "," "," "," "," ");
1425        addprestocmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,  "table"," "," "," "," "," ");
1426        addprestocmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,  "view"," "," "," "," "," ");
1427        addprestocmds(ESqlStatementType.sstpostgresqlDeallocate, TBaseType.rrw_deallocate,  "prepare"," "," "," "," "," ");
1428        addprestocmds(ESqlStatementType.sstdelete, TBaseType.rrw_delete,  " "," "," "," "," "," ");
1429        addprestocmds(ESqlStatementType.sstdescribe, TBaseType.rrw_describe,  " "," "," "," "," "," ");
1430        addprestocmds(ESqlStatementType.sstdropfunction, TBaseType.rrw_drop,  "function"," "," "," "," "," ");
1431        addprestocmds(ESqlStatementType.sstdroprole, TBaseType.rrw_drop,  "role"," "," "," "," "," ");
1432        addprestocmds(ESqlStatementType.sstdropschema, TBaseType.rrw_drop,  "schema"," "," "," "," "," ");
1433        addprestocmds(ESqlStatementType.sstdroptable, TBaseType.rrw_drop,  "table"," "," "," "," "," ");
1434        addprestocmds(ESqlStatementType.sstdropview, TBaseType.rrw_drop,  "view"," "," "," "," "," ");
1435        addprestocmds(ESqlStatementType.sstExecute, TBaseType.rrw_execute,  " "," "," "," "," "," ");
1436        addprestocmds(ESqlStatementType.sstExplain, TBaseType.rrw_explain,  " "," "," "," "," "," ");
1437        addprestocmds(ESqlStatementType.sstGrant, TBaseType.rrw_grant,  " "," "," "," "," "," ");
1438        addprestocmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert,  " "," "," "," "," "," ");
1439        addprestocmds(ESqlStatementType.sstprepare, TBaseType.rrw_prepare,  " "," "," "," "," "," ");
1440        addprestocmds(ESqlStatementType.sstResetSession, TBaseType.rrw_reset,  "session"," "," "," "," "," ");
1441        addprestocmds(ESqlStatementType.sstRevoke, TBaseType.rrw_revoke,  " "," "," "," "," "," ");
1442        addprestocmds(ESqlStatementType.sstrollback, TBaseType.rrw_rollback,  " "," "," "," "," "," ");
1443        addprestocmds(ESqlStatementType.sstselect, TBaseType.rrw_select,  " "," "," "," "," "," ");
1444        addprestocmds(ESqlStatementType.sstset, TBaseType.rrw_set,  "role"," "," "," "," "," ");
1445        addprestocmds(ESqlStatementType.sstset, TBaseType.rrw_set,  "session"," "," "," "," "," ");
1446        addprestocmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "catalogs"," "," "," "," "," ");
1447        addprestocmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "columns"," "," "," "," "," ");
1448        addprestocmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "create","function"," "," "," "," ");
1449        addprestocmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "create","table"," "," "," "," ");
1450        addprestocmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "create","view"," "," "," "," ");
1451        addprestocmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "current","roles"," "," "," "," ");
1452        addprestocmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "functions"," "," "," "," "," ");
1453        addprestocmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "grants"," "," "," "," "," ");
1454        addprestocmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "role","grants"," "," "," "," ");
1455        addprestocmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "roles"," "," "," "," "," ");
1456        addprestocmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "schemas"," "," "," "," "," ");
1457        addprestocmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "session"," "," "," "," "," ");
1458        addprestocmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "stats"," "," "," "," "," ");
1459        addprestocmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "tables"," "," "," "," "," ");
1460        addprestocmds(ESqlStatementType.sstStartTransaction, TBaseType.rrw_start,  "transaction"," "," "," "," "," ");
1461        addprestocmds(ESqlStatementType.sstUse, TBaseType.rrw_use,  " "," "," "," "," "," ");
1462        addprestocmds(ESqlStatementType.sstValues, TBaseType.rrw_values,  " "," "," "," "," "," ");
1463    }
1464
1465    void initathenacmds(){
1466        addathenacmds(ESqlStatementType.sstalterdatabase, TBaseType.rrw_alter,  "database"," "," "," "," "," ");
1467        addathenacmds(ESqlStatementType.sstalterfunction, TBaseType.rrw_alter,  "function"," "," "," "," "," ");
1468        addathenacmds(ESqlStatementType.sstalterdatabase, TBaseType.rrw_alter,  "schema"," "," "," "," "," ");
1469        addathenacmds(ESqlStatementType.sstaltertable, TBaseType.rrw_alter,  "table"," "," "," "," "," ");
1470        addathenacmds(ESqlStatementType.sstAnalyzeTable, TBaseType.rrw_analyze,  " "," "," "," "," "," ");
1471        addathenacmds(ESqlStatementType.sstcall, TBaseType.rrw_call,  " "," "," "," "," "," ");
1472        addathenacmds(ESqlStatementType.sstcommit, TBaseType.rrw_commit,  " "," "," "," "," "," ");
1473        addathenacmds(ESqlStatementType.sstcreatedatabase, TBaseType.rrw_create,  "database"," "," "," "," "," ");
1474        addathenacmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create,  "function"," "," "," "," "," ");
1475        addathenacmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create,  "or","replace","function"," "," "," ");
1476        addathenacmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create,  "temporary","function"," "," "," "," ");
1477        addathenacmds(ESqlStatementType.sstcreaterole, TBaseType.rrw_create,  "role"," "," "," "," "," ");
1478        addathenacmds(ESqlStatementType.sstcreatedatabase, TBaseType.rrw_create,  "schema"," "," "," "," "," ");
1479        addathenacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,  "table"," "," "," "," "," ");
1480        addathenacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,  "external","table"," "," "," "," ");
1481        addathenacmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,  "view"," "," "," "," "," ");
1482        addathenacmds(ESqlStatementType.sstpostgresqlDeallocate, TBaseType.rrw_deallocate,  "prepare"," "," "," "," "," ");
1483        addathenacmds(ESqlStatementType.sstdelete, TBaseType.rrw_delete,  " "," "," "," "," "," ");
1484        addathenacmds(ESqlStatementType.sstdescribe, TBaseType.rrw_describe,  " "," "," "," "," "," ");
1485        addathenacmds(ESqlStatementType.sstdropdatabase, TBaseType.rrw_drop,  "database"," "," "," "," "," ");
1486        addathenacmds(ESqlStatementType.sstdropfunction, TBaseType.rrw_drop,  "function"," "," "," "," "," ");
1487        addathenacmds(ESqlStatementType.sstdroprole, TBaseType.rrw_drop,  "role"," "," "," "," "," ");
1488        addathenacmds(ESqlStatementType.sstdropdatabase, TBaseType.rrw_drop,  "schema"," "," "," "," "," ");
1489        addathenacmds(ESqlStatementType.sstdroptable, TBaseType.rrw_drop,  "table"," "," "," "," "," ");
1490        addathenacmds(ESqlStatementType.sstdropview, TBaseType.rrw_drop,  "view"," "," "," "," "," ");
1491        addathenacmds(ESqlStatementType.sstExecute, TBaseType.rrw_execute,  " "," "," "," "," "," ");
1492        addathenacmds(ESqlStatementType.sstExplain, TBaseType.rrw_explain,  " "," "," "," "," "," ");
1493        addathenacmds(ESqlStatementType.sstGrant, TBaseType.rrw_grant,  " "," "," "," "," "," ");
1494        addathenacmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert,  " "," "," "," "," "," ");
1495        addathenacmds(ESqlStatementType.sstmsck, TBaseType.rrw_athena_msck,  " "," "," "," "," "," ");
1496        addathenacmds(ESqlStatementType.sstprepare, TBaseType.rrw_prepare,  " "," "," "," "," "," ");
1497        addathenacmds(ESqlStatementType.sstResetSession, TBaseType.rrw_reset,  "session"," "," "," "," "," ");
1498        addathenacmds(ESqlStatementType.sstRevoke, TBaseType.rrw_revoke,  " "," "," "," "," "," ");
1499        addathenacmds(ESqlStatementType.sstrollback, TBaseType.rrw_rollback,  " "," "," "," "," "," ");
1500        addathenacmds(ESqlStatementType.sstselect, TBaseType.rrw_select,  " "," "," "," "," "," ");
1501        addathenacmds(ESqlStatementType.sstset, TBaseType.rrw_set,  "role"," "," "," "," "," ");
1502        addathenacmds(ESqlStatementType.sstset, TBaseType.rrw_set,  "session"," "," "," "," "," ");
1503        addathenacmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "catalogs"," "," "," "," "," ");
1504        addathenacmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "columns"," "," "," "," "," ");
1505        addathenacmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "create","function"," "," "," "," ");
1506        addathenacmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "create","table"," "," "," "," ");
1507        addathenacmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "create","view"," "," "," "," ");
1508        addathenacmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "current","roles"," "," "," "," ");
1509        addathenacmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "databases"," "," "," "," "," ");
1510        addathenacmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "functions"," "," "," "," "," ");
1511        addathenacmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "grants"," "," "," "," "," ");
1512        addathenacmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "partitions"," "," "," "," "," ");
1513        addathenacmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "role","grants"," "," "," "," ");
1514        addathenacmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "roles"," "," "," "," "," ");
1515        addathenacmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "schemas"," "," "," "," "," ");
1516        addathenacmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "session"," "," "," "," "," ");
1517        addathenacmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "stats"," "," "," "," "," ");
1518        addathenacmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "tables"," "," "," "," "," ");
1519        addathenacmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "tblproperties"," "," "," "," "," ");
1520        addathenacmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "views"," "," "," "," "," ");
1521        addathenacmds(ESqlStatementType.sstStartTransaction, TBaseType.rrw_start,  "transaction"," "," "," "," "," ");
1522        addathenacmds(ESqlStatementType.sstunload, TBaseType.rrw_athena_unload, " ", " ", " ", " ", " ", " ");
1523        addathenacmds(ESqlStatementType.sstUse, TBaseType.rrw_use,  " "," "," "," "," "," ");
1524        addathenacmds(ESqlStatementType.sstValues, TBaseType.rrw_values,  " "," "," "," "," "," ");
1525    }
1526
1527 void initsparksqlcmds(){
1528     addsparksqlcmds(ESqlStatementType.sstAddFile, TBaseType.rrw_add,  "file"," "," "," "," "," ");
1529     addsparksqlcmds(ESqlStatementType.sstAddJar, TBaseType.rrw_add,  "jar"," "," "," "," "," ");
1530     addsparksqlcmds(ESqlStatementType.sstalterdatabase, TBaseType.rrw_alter,  "database"," "," "," "," "," ");
1531     addsparksqlcmds(ESqlStatementType.sstaltertable, TBaseType.rrw_alter,  "table"," "," "," "," "," ");
1532     addsparksqlcmds(ESqlStatementType.sstalterview, TBaseType.rrw_alter,  "view"," "," "," "," "," ");
1533     addsparksqlcmds(ESqlStatementType.sstanalyzeTable, TBaseType.rrw_analyze,  "table"," "," "," "," "," ");
1534     addsparksqlcmds(ESqlStatementType.sstCacheTable, TBaseType.rrw_cache,  "table"," "," "," "," "," ");
1535     addsparksqlcmds(ESqlStatementType.sstCacheTable, TBaseType.rrw_cache,  "lazy","table"," "," "," "," ");
1536     addsparksqlcmds(ESqlStatementType.sstClearCache, TBaseType.rrw_clear,  "cache"," "," "," "," "," ");
1537     addsparksqlcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,  "external","table"," "," "," "," ");
1538     addsparksqlcmds(ESqlStatementType.sstcreatedatabase, TBaseType.rrw_create,  "database"," "," "," "," "," ");
1539     addsparksqlcmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create,  "function"," "," "," "," "," ");
1540     addsparksqlcmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,  "global","temporary","view"," "," "," ");
1541     addsparksqlcmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create,  "or","replace","function"," "," "," ");
1542     addsparksqlcmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,  "or","replace","global","temporary","view"," ");
1543     addsparksqlcmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create,  "or","replace","temporary","function"," "," ");
1544     addsparksqlcmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,  "or","replace","temporary","view"," "," ");
1545     addsparksqlcmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,  "or","replace","view"," "," "," ");
1546     addsparksqlcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,  "table"," "," "," "," "," ");
1547     addsparksqlcmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create,  "temporary","function"," "," "," "," ");
1548     addsparksqlcmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,  "temporary","view"," "," "," "," ");
1549     addsparksqlcmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,  "view"," "," "," "," "," ");
1550     addsparksqlcmds(ESqlStatementType.sstdescribeTable, TBaseType.rrw_spark_desc,  " "," "," "," "," "," ");
1551     addsparksqlcmds(ESqlStatementType.sstdescribeTable, TBaseType.rrw_describe,  " "," "," "," "," "," ");
1552     addsparksqlcmds(ESqlStatementType.sstdescribeDatabase, TBaseType.rrw_spark_desc,  "database"," "," "," "," "," ");
1553     addsparksqlcmds(ESqlStatementType.sstdescribeFunction, TBaseType.rrw_spark_desc,  "function"," "," "," "," "," ");
1554     addsparksqlcmds(ESqlStatementType.sstdescribeQuery, TBaseType.rrw_spark_desc,  "query"," "," "," "," "," ");
1555     addsparksqlcmds(ESqlStatementType.sstdescribeTable, TBaseType.rrw_spark_desc,  "table"," "," "," "," "," ");
1556     addsparksqlcmds(ESqlStatementType.sstdescribeFunction, TBaseType.rrw_describe,  "function"," "," "," "," "," ");
1557     addsparksqlcmds(ESqlStatementType.sstdescribeDatabase, TBaseType.rrw_describe,  "database"," "," "," "," "," ");
1558     addsparksqlcmds(ESqlStatementType.sstdescribeQuery, TBaseType.rrw_describe,  "query"," "," "," "," "," ");
1559     addsparksqlcmds(ESqlStatementType.sstdescribeTable, TBaseType.rrw_describe,  "table"," "," "," "," "," ");
1560     addsparksqlcmds(ESqlStatementType.sstdropdatabase, TBaseType.rrw_drop,  "schema"," "," "," "," "," ");
1561     addsparksqlcmds(ESqlStatementType.sstdropdatabase, TBaseType.rrw_drop,  "database"," "," "," "," "," ");
1562     addsparksqlcmds(ESqlStatementType.sstdropfunction, TBaseType.rrw_drop,  "function"," "," "," "," "," ");
1563     addsparksqlcmds(ESqlStatementType.sstdropfunction, TBaseType.rrw_drop,  "temporary","function"," "," "," "," ");
1564     addsparksqlcmds(ESqlStatementType.sstdroptable, TBaseType.rrw_drop,  "table"," "," "," "," "," ");
1565     addsparksqlcmds(ESqlStatementType.sstdropview, TBaseType.rrw_drop,  "view"," "," "," "," "," ");
1566     addsparksqlcmds(ESqlStatementType.sstExplain, TBaseType.rrw_explain,  " "," "," "," "," "," ");
1567     addsparksqlcmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert,  " "," "," "," "," "," ");
1568     addsparksqlcmds(ESqlStatementType.sstListFile, TBaseType.rrw_spark_list,  "file"," "," "," "," "," ");
1569     addsparksqlcmds(ESqlStatementType.sstListJar, TBaseType.rrw_spark_list,  "jar"," "," "," "," "," ");
1570     addsparksqlcmds(ESqlStatementType.sstLoadData, TBaseType.rrw_load,  "data"," "," "," "," "," ");
1571     addsparksqlcmds(ESqlStatementType.sstmsck, TBaseType.rrw_spark_msck, "repair","table"," "," "," "," ");
1572     addsparksqlcmds(ESqlStatementType.sstRefresh, TBaseType.rrw_refresh,  " "," "," "," "," "," ");
1573     addsparksqlcmds(ESqlStatementType.sstRefreshFunction, TBaseType.rrw_refresh,  "function"," "," "," "," "," ");
1574     addsparksqlcmds(ESqlStatementType.sstRefreshTable, TBaseType.rrw_refresh,  "table"," "," "," "," "," ");
1575     addsparksqlcmds(ESqlStatementType.sstReset, TBaseType.rrw_reset,  " "," "," "," "," "," ");
1576     addsparksqlcmds(ESqlStatementType.sstselect, TBaseType.rrw_select,  " "," "," "," "," "," ");
1577     addsparksqlcmds(ESqlStatementType.sstset, TBaseType.rrw_set,  " "," "," "," "," "," ");
1578     addsparksqlcmds(ESqlStatementType.sstSetTimeZone, TBaseType.rrw_set,  "time","zone"," "," "," "," ");
1579     addsparksqlcmds(ESqlStatementType.sstShowColumns, TBaseType.rrw_show,  "columns"," "," "," "," "," ");
1580     addsparksqlcmds(ESqlStatementType.sstShowCreateTable, TBaseType.rrw_show,  "create","table"," "," "," "," ");
1581     addsparksqlcmds(ESqlStatementType.sstShowDatabases, TBaseType.rrw_show,  "databases"," "," "," "," "," ");
1582     addsparksqlcmds(ESqlStatementType.sstShowFunctions, TBaseType.rrw_show,  "functions"," "," "," "," "," ");
1583     addsparksqlcmds(ESqlStatementType.sstShowPartitions, TBaseType.rrw_show,  "partitions"," "," "," "," "," ");
1584     addsparksqlcmds(ESqlStatementType.sstShowTableExtended, TBaseType.rrw_show,  "table","extended"," "," "," "," ");
1585     addsparksqlcmds(ESqlStatementType.sstShowTables, TBaseType.rrw_show,  "tables"," "," "," "," "," ");
1586     addsparksqlcmds(ESqlStatementType.sstShowTblProperties, TBaseType.rrw_show,  "tblproperties"," "," "," "," "," ");
1587     addsparksqlcmds(ESqlStatementType.sstShowUser, TBaseType.rrw_show,  "user"," "," "," "," "," ");
1588     addsparksqlcmds(ESqlStatementType.sstShowViews, TBaseType.rrw_show,  "views"," "," "," "," "," ");
1589     addsparksqlcmds(ESqlStatementType.ssttruncatetable, TBaseType.rrw_truncate,  "table"," "," "," "," "," ");
1590     addsparksqlcmds(ESqlStatementType.sstrepairtable, TBaseType.rrw_repair,  "table"," "," "," "," "," ");
1591     addsparksqlcmds(ESqlStatementType.sstUnCacheTable, TBaseType.rrw_spark_uncache,  "table"," "," "," "," "," ");
1592     addsparksqlcmds(ESqlStatementType.sstUse, TBaseType.rrw_use,  " "," "," "," "," "," ");
1593
1594 }
1595
1596 void initmysqlcmds(){
1597// cmd must be sort alphabetically
1598    addmysqlcmds(ESqlStatementType.sstmysqlalterview, TBaseType.rrw_alter,  "algorithm"," "," "," "," "," ");
1599    addmysqlcmds(ESqlStatementType.sstmysqlalterdatabase, TBaseType.rrw_alter,  "database"," "," "," "," "," ");
1600     addmysqlcmds(ESqlStatementType.sstmysqlalterfunction, TBaseType.rrw_alter,  "function"," "," "," "," "," ");
1601     addmysqlcmds(ESqlStatementType.sstmysqlalterprocedure, TBaseType.rrw_alter,  "procedure"," "," "," "," "," ");
1602     addmysqlcmds(ESqlStatementType.sstmysqlalterview, TBaseType.rrw_alter,  "sql","security","definer","view"," "," ");
1603     addmysqlcmds(ESqlStatementType.sstmysqlalterview, TBaseType.rrw_alter,  "sql","security","invoker","view"," "," ");
1604     addmysqlcmds(ESqlStatementType.sstaltertable, TBaseType.rrw_alter,  "table"," "," "," "," "," ");
1605     addmysqlcmds(ESqlStatementType.sstmysqlalterview, TBaseType.rrw_alter,  "view"," "," "," "," "," ");
1606     addmysqlcmds(ESqlStatementType.sstmysqlanalyzetable, TBaseType.rrw_analyze,  "table"," "," "," "," "," ");
1607     addmysqlcmds(ESqlStatementType.sstmysqlbackuptable, TBaseType.rrw_backup, "table"," "," "," "," "," ");
1608     addmysqlcmds(ESqlStatementType.sstmysqlstarttransaction, TBaseType.rrw_begin, " "," "," "," "," "," ");
1609     addmysqlcmds(ESqlStatementType.sstmysqlcacheindex, TBaseType.rrw_cache,  "index"," "," "," "," "," ");
1610     addmysqlcmds(ESqlStatementType.sstmysqlcall, TBaseType.rrw_call," "," "," "," "," "," ");
1611     addmysqlcmds(ESqlStatementType.sstmysqlcase, TBaseType.rrw_case," "," "," "," "," "," ");
1612     addmysqlcmds(ESqlStatementType.sstmysqlchangemasterto, TBaseType.rrw_change,"master", "to"," "," "," "," ");
1613     addmysqlcmds(ESqlStatementType.sstmysqlchecktable, TBaseType.rrw_check,"table"," "," "," "," "," ");
1614     addmysqlcmds(ESqlStatementType.sstmysqlchecktable, TBaseType.rrw_check,"tables"," "," "," "," "," ");
1615     addmysqlcmds(ESqlStatementType.sstmysqlchecksumtable, TBaseType.rrw_checksum,"table"," "," "," "," "," ");
1616     addmysqlcmds(ESqlStatementType.sstmysqlclose, TBaseType.rrw_close," "," "," "," "," "," ");
1617     addmysqlcmds(ESqlStatementType.sstmysqlcommit, TBaseType.rrw_commit," "," "," "," "," "," ");
1618     addmysqlcmds(ESqlStatementType.sstmysqlcreatefunction, TBaseType.rrw_create,"aggregate","function"," "," "," "," ");
1619     addmysqlcmds(ESqlStatementType.sstmysqlcreatedatabase, TBaseType.rrw_create,"database"," "," "," "," "," ");
1620     addmysqlcmds(ESqlStatementType.sstmysqlcreatefunction, TBaseType.rrw_create,"definer", "=", "current_user", "function"," "," ");
1621     addmysqlcmds(ESqlStatementType.sstmysqlcreateprocedure, TBaseType.rrw_create,"definer", "=", "current_user", "procedure"," "," ");
1622     addmysqlcmds(ESqlStatementType.sstcreatetrigger, TBaseType.rrw_create,"definer", "=", "current_user", "trigger"," "," ");
1623     addmysqlcmds(ESqlStatementType.sstmysqlcreateprocedure, TBaseType.rrw_create,"definer", "=","*","procedure"," "," ");
1624     addmysqlcmds(ESqlStatementType.sstmysqlcreatefunction, TBaseType.rrw_create,"definer", "=","*","function"," "," ");
1625     addmysqlcmds(ESqlStatementType.sstcreatetrigger, TBaseType.rrw_create,"definer", "=","*","trigger"," "," ");
1626     addmysqlcmds(ESqlStatementType.sstmysqlcreatefunction, TBaseType.rrw_create,"definer", "=","*","*","*","function");
1627     addmysqlcmds(ESqlStatementType.sstmysqlcreateprocedure, TBaseType.rrw_create,"definer", "=","*","*","*","procedure");
1628     addmysqlcmds(ESqlStatementType.sstcreatetrigger, TBaseType.rrw_create,"definer", "=","*","*","*","trigger");
1629     addmysqlcmds(ESqlStatementType.sstmysqlcreateindex, TBaseType.rrw_create,"fulltext","index"," "," "," "," ");
1630     addmysqlcmds(ESqlStatementType.sstmysqlcreatefunction, TBaseType.rrw_create,"function"," "," "," "," "," ");
1631     addmysqlcmds(ESqlStatementType.sstmysqlcreateindex, TBaseType.rrw_create,"index"," "," "," "," "," ");
1632     addmysqlcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"or","replace","table"," "," "," ");
1633     addmysqlcmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,"or","replace","view"," "," "," ");
1634     addmysqlcmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,"or","replace","*","*","*","view");
1635     addmysqlcmds(ESqlStatementType.sstmysqlcreateprocedure, TBaseType.rrw_create,"procedure"," "," "," "," "," ");
1636     addmysqlcmds(ESqlStatementType.sstmysqlcreateindex, TBaseType.rrw_create,"spatial","index"," "," "," "," ");
1637     addmysqlcmds(ESqlStatementType.sstmysqlcreatedatabase, TBaseType.rrw_create,"schema"," "," "," "," "," ");
1638     addmysqlcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"table"," "," "," "," "," ");
1639     addmysqlcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"temp","table"," "," "," "," ");
1640     addmysqlcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"temporary","table"," "," "," "," ");
1641     addmysqlcmds(ESqlStatementType.sstcreatetrigger, TBaseType.rrw_create,"trigger"," "," "," "," "," ");
1642     addmysqlcmds(ESqlStatementType.sstmysqlcreateindex, TBaseType.rrw_create,"unique","index"," "," "," "," ");
1643     addmysqlcmds(ESqlStatementType.sstmysqlcreateuser, TBaseType.rrw_create,"user"," "," "," "," "," ");
1644     addmysqlcmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,"view"," "," "," "," "," ");
1645     addmysqlcmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,"*","*","*","*","*","view");
1646     addmysqlcmds(ESqlStatementType.sstmysqldeallocateprepare, TBaseType.rrw_deallocate,"prepare"," "," "," "," "," ");
1647     addmysqlcmds(ESqlStatementType.sstmysqldeclare, TBaseType.rrw_declare," "," "," "," "," "," ");
1648     addmysqlcmds(ESqlStatementType.sstdelete, TBaseType.rrw_delete," "," "," "," "," "," ");
1649     addmysqlcmds(ESqlStatementType.sstmysqldelimiter, TBaseType.rrw_mysql_delimiter," "," "," "," "," "," ");
1650     addmysqlcmds(ESqlStatementType.sstdescribe, TBaseType.rrw_mysql_desc," "," "," "," "," "," ");
1651     addmysqlcmds(ESqlStatementType.sstdescribe, TBaseType.rrw_describe," "," "," "," "," "," ");
1652     addmysqlcmds(ESqlStatementType.sstmysqldo, TBaseType.rrw_do," "," "," "," "," "," ");
1653     addmysqlcmds(ESqlStatementType.sstmysqldropdatabase, TBaseType.rrw_drop,"database"," "," "," "," "," ");
1654     addmysqlcmds(ESqlStatementType.sstmysqldropfunction, TBaseType.rrw_drop,"function"," "," "," "," "," ");
1655     addmysqlcmds(ESqlStatementType.sstmysqldropindex, TBaseType.rrw_drop,"index"," "," "," "," "," ");
1656     addmysqlcmds(ESqlStatementType.sstmysqldropprepare, TBaseType.rrw_drop,"prepare"," "," "," "," "," ");
1657     addmysqlcmds(ESqlStatementType.sstmysqldropprocedure, TBaseType.rrw_drop,"procedure"," "," "," "," "," ");
1658     addmysqlcmds(ESqlStatementType.sstmysqldropdatabase, TBaseType.rrw_drop,"schema"," "," "," "," "," ");
1659     addmysqlcmds(ESqlStatementType.sstmysqldroptable, TBaseType.rrw_drop,"table"," "," "," "," "," ");
1660     addmysqlcmds(ESqlStatementType.sstmysqldroptable, TBaseType.rrw_drop,"tables"," "," "," "," "," ");
1661     addmysqlcmds(ESqlStatementType.sstmysqldroptable, TBaseType.rrw_drop,"temporary","table"," "," "," "," ");
1662     addmysqlcmds(ESqlStatementType.sstmysqldroptrigger, TBaseType.rrw_drop,"trigger"," "," "," "," "," ");
1663     addmysqlcmds(ESqlStatementType.sstmysqldropuser, TBaseType.rrw_drop,"user"," "," "," "," "," ");
1664     addmysqlcmds(ESqlStatementType.sstdropview, TBaseType.rrw_drop,"view"," "," "," "," "," ");
1665     addmysqlcmds(ESqlStatementType.sstmysqlexecute, TBaseType.rrw_execute," "," "," "," "," "," ");
1666     addmysqlcmds(ESqlStatementType.sstExplain, TBaseType.rrw_explain," "," "," "," "," "," ");
1667     addmysqlcmds(ESqlStatementType.sstmysqlfetch, TBaseType.rrw_fetch," "," "," "," "," "," ");
1668     addmysqlcmds(ESqlStatementType.sstmysqlflush, TBaseType.rrw_flush," "," "," "," "," "," ");
1669     addmysqlcmds(ESqlStatementType.sstmysqlgrant, TBaseType.rrw_grant," "," "," "," "," "," ");
1670     addmysqlcmds(ESqlStatementType.sstmysqlhandler, TBaseType.rrw_handler," "," "," "," "," "," ");
1671     addmysqlcmds(ESqlStatementType.sstmysqlifstmt, TBaseType.rrw_if," "," "," "," "," "," ");
1672     addmysqlcmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert," "," "," "," "," "," ");
1673     addmysqlcmds(ESqlStatementType.sstmysqliterate, TBaseType.rrw_iterate," "," "," "," "," "," ");
1674     addmysqlcmds(ESqlStatementType.sstmysqlkill, TBaseType.rrw_kill," "," "," "," "," "," ");
1675     addmysqlcmds(ESqlStatementType.sstmysqlleave, TBaseType.rrw_leave," "," "," "," "," "," ");
1676     addmysqlcmds(ESqlStatementType.sstmysqlloaddatafrommaster, TBaseType.rrw_load,"data", "from", "master"," "," "," ");
1677     addmysqlcmds(ESqlStatementType.sstmysqlloaddatainfile, TBaseType.rrw_load,"data", "infile"," "," "," "," ");
1678     addmysqlcmds(ESqlStatementType.sstmysqlloaddatainfile, TBaseType.rrw_load,"data", "local","infile"," "," "," ");
1679     addmysqlcmds(ESqlStatementType.sstmysqlloadindexintocache, TBaseType.rrw_load,"index", "into", "cache"," "," "," ");
1680     addmysqlcmds(ESqlStatementType.sstmysqlloadtable, TBaseType.rrw_load,"table"," "," "," "," "," ");
1681     addmysqlcmds(ESqlStatementType.sstmysqllocktable, TBaseType.rrw_lock,"table"," "," "," "," "," ");
1682     addmysqlcmds(ESqlStatementType.sstmysqllocktable, TBaseType.rrw_lock,"tables"," "," "," "," "," ");
1683     addmysqlcmds(ESqlStatementType.sstmysqlloop, TBaseType.rrw_loop," "," "," "," "," "," ");
1684     addmysqlcmds(ESqlStatementType.sstmysqlopen, TBaseType.rrw_open," "," "," "," "," "," ");
1685     addmysqlcmds(ESqlStatementType.sstmysqloptimizetable, TBaseType.rrw_optimize,"local","table"," "," "," "," ");
1686     addmysqlcmds(ESqlStatementType.sstmysqloptimizetable, TBaseType.rrw_optimize,"no_write_to_binlog","table"," "," "," "," ");
1687     addmysqlcmds(ESqlStatementType.sstmysqloptimizetable, TBaseType.rrw_optimize,"table"," "," "," "," "," ");
1688     addmysqlcmds(ESqlStatementType.sstmysqlprepare, TBaseType.rrw_prepare," "," "," "," "," "," ");
1689     addmysqlcmds(ESqlStatementType.sstmysqlpurgelogs, TBaseType.rrw_purge,"binary","logs"," "," "," "," ");
1690     addmysqlcmds(ESqlStatementType.sstmysqlpurgelogs, TBaseType.rrw_purge,"logs"," "," "," "," "," ");
1691     addmysqlcmds(ESqlStatementType.sstmysqlpurgelogs, TBaseType.rrw_purge,"master","logs"," "," "," "," ");
1692     addmysqlcmds(ESqlStatementType.sstmysqlreleasesavepoint,TBaseType. rrw_release,"savepoint"," "," "," "," "," ");
1693     addmysqlcmds(ESqlStatementType.sstmysqlrenametable, TBaseType.rrw_rename,"table"," "," "," "," "," ");
1694     addmysqlcmds(ESqlStatementType.sstmysqlrenameuser, TBaseType.rrw_rename,"user"," "," "," "," "," ");
1695     addmysqlcmds(ESqlStatementType.sstmysqlrepairtable,TBaseType.rrw_repair,"local","table"," "," "," "," ");
1696     addmysqlcmds(ESqlStatementType.sstmysqlrepairtable, TBaseType.rrw_repair,"no_write_to_binlog","table"," "," "," "," ");
1697     addmysqlcmds(ESqlStatementType.sstmysqlrepairtable, TBaseType.rrw_repair,"table"," "," "," "," "," ");
1698     addmysqlcmds(ESqlStatementType.sstmysqlrepeat, TBaseType.rrw_repeat," "," "," "," "," "," ");
1699     addmysqlcmds(ESqlStatementType.sstmysqlreplace, TBaseType.rrw_replace," "," "," "," "," "," ");
1700     addmysqlcmds(ESqlStatementType.sstmysqlreset, TBaseType.rrw_reset," "," "," "," "," "," ");
1701     addmysqlcmds(ESqlStatementType.sstmysqlresetmaster, TBaseType.rrw_reset,"master"," "," "," "," "," ");
1702     addmysqlcmds(ESqlStatementType.sstmysqlresetslave, TBaseType.rrw_reset,"slave"," "," "," "," "," ");
1703     addmysqlcmds(ESqlStatementType.sstmysqlrestoretable, TBaseType.rrw_restore,"table"," "," "," "," "," ");
1704     addmysqlcmds(ESqlStatementType.sstmysqlrevoke, TBaseType.rrw_revoke," "," "," "," "," "," ");
1705     addmysqlcmds(ESqlStatementType.sstmysqlrollback, TBaseType.rrw_rollback," "," "," "," "," "," ");
1706     addmysqlcmds(ESqlStatementType.sstmysqlsavepoint, TBaseType.rrw_savepoint," "," "," "," "," "," ");
1707     addmysqlcmds(ESqlStatementType.sstselect, TBaseType.rrw_select," "," "," "," "," "," ");
1708     addmysqlcmds(ESqlStatementType.sstmysqlset, TBaseType.rrw_set," "," "," "," "," "," ");
1709     addmysqlcmds(ESqlStatementType.sstmysqlsetautocommit, TBaseType.rrw_set,"autocommit"," "," "," "," "," ");
1710     addmysqlcmds(ESqlStatementType.sstmysqldelimiter, TBaseType.rrw_set,"delimiter"," "," "," "," "," ");
1711     addmysqlcmds(ESqlStatementType.sstmysqlsetglobalsql_slave_skip_counter, TBaseType.rrw_set,"global", "sql_slave_skip_counter"," "," "," "," ");
1712     addmysqlcmds(ESqlStatementType.sstmysqlsettransaction, TBaseType.rrw_set,"global","transaction"," "," "," "," ");
1713     addmysqlcmds(ESqlStatementType.sstmysqlset, TBaseType.rrw_set,"PASSWORD"," "," "," "," "," ");
1714     addmysqlcmds(ESqlStatementType.sstmysqlsettransaction, TBaseType.rrw_set,"session","transaction"," "," "," "," ");
1715     addmysqlcmds(ESqlStatementType.sstmysqlsetsql_log_bin, TBaseType.rrw_set,"sql_log_bin"," "," "," "," "," ");
1716     addmysqlcmds(ESqlStatementType.sstmysqlsettransaction, TBaseType.rrw_set,"transaction"," "," "," "," "," ");
1717     addmysqlcmds(ESqlStatementType.sstmysqlshowlogs, TBaseType.rrw_show,"bdb","logs"," "," "," "," ");
1718     addmysqlcmds(ESqlStatementType.sstmysqlshowbinlogevents, TBaseType.rrw_show,"binlog", "events"," "," "," "," ");
1719     addmysqlcmds(ESqlStatementType.sstmysqlshowcharacterset, TBaseType.rrw_show,"character", "set"," "," "," "," ");
1720     addmysqlcmds(ESqlStatementType.sstmysqlshowcharacterset, TBaseType.rrw_show,"charset", " "," "," "," "," ");
1721     addmysqlcmds(ESqlStatementType.sstmysqlshowcollation, TBaseType.rrw_show,"collation"," "," "," "," "," ");
1722     addmysqlcmds(ESqlStatementType.sstmysqlshowcolumns, TBaseType.rrw_show,"columns"," "," "," "," "," ");
1723     addmysqlcmds(ESqlStatementType.sstmysqlshowwarnings, TBaseType.rrw_show,"count"," "," "," "," "," ");
1724     addmysqlcmds(ESqlStatementType.sstmysqlshowcreateschema, TBaseType.rrw_show,"create", "schema"," "," "," "," ");
1725     addmysqlcmds(ESqlStatementType.sstmysqlshowcreatedatabase, TBaseType.rrw_show,"create", "database"," "," "," "," ");
1726     addmysqlcmds(ESqlStatementType.sstmysqlshowcreatefunction, TBaseType.rrw_show,"create","function"," "," "," "," ");
1727     addmysqlcmds(ESqlStatementType.sstmysqlshowcreateprocedure, TBaseType.rrw_show,"create","procedure"," "," "," "," ");
1728     addmysqlcmds(ESqlStatementType.sstmysqlshowcreatetable, TBaseType.rrw_show,"create","table"," "," "," "," ");
1729     addmysqlcmds(ESqlStatementType.sstmysqlshowcreateview, TBaseType.rrw_show,"create","view"," "," "," "," ");
1730     addmysqlcmds(ESqlStatementType.sstmysqlshowdatabases, TBaseType.rrw_show,"databases"," "," "," "," "," ");
1731     addmysqlcmds(ESqlStatementType.sstmysqlshowengine, TBaseType.rrw_show,"engine"," "," "," "," "," ");
1732     addmysqlcmds(ESqlStatementType.sstmysqlshowengines, TBaseType.rrw_show,"engines"," "," "," "," "," ");
1733     addmysqlcmds(ESqlStatementType.sstmysqlshowerrors, TBaseType.rrw_show,"errors"," "," "," "," "," ");
1734     addmysqlcmds(ESqlStatementType.sstmysqlshowindex, TBaseType.rrw_show,"extend","index"," "," "," "," ");
1735     addmysqlcmds(ESqlStatementType.sstmysqlshowindex, TBaseType.rrw_show,"extend","indexes"," "," "," "," ");
1736     addmysqlcmds(ESqlStatementType.sstmysqlshowindex, TBaseType.rrw_show,"extend","keys"," "," "," "," ");
1737     addmysqlcmds(ESqlStatementType.sstmysqlshowfields, TBaseType.rrw_show,"fields"," "," "," "," "," ");
1738     addmysqlcmds(ESqlStatementType.sstmysqlshowcolumns, TBaseType.rrw_show,"full","columns"," "," "," "," ");
1739     addmysqlcmds(ESqlStatementType.sstmysqlshowfields, TBaseType.rrw_show,"full","fields"," "," "," "," ");
1740     addmysqlcmds(ESqlStatementType.sstmysqlshowprocesslist, TBaseType.rrw_show,"full","processlist"," "," "," "," ");
1741     addmysqlcmds(ESqlStatementType.sstmysqlshowtables, TBaseType.rrw_show,"full","tables"," "," "," "," ");
1742     addmysqlcmds(ESqlStatementType.sstmysqlshowfunctionstatus, TBaseType.rrw_show,"function", "status"," "," "," "," ");
1743     addmysqlcmds(ESqlStatementType.sstmysqlshowstatus, TBaseType.rrw_show,"global","status"," "," "," "," ");
1744     addmysqlcmds(ESqlStatementType.sstmysqlshowvariables, TBaseType.rrw_show,"global","variables"," "," "," "," ");
1745     addmysqlcmds(ESqlStatementType.sstmysqlshowgrants, TBaseType.rrw_show,"grants"," "," "," "," "," ");
1746     addmysqlcmds(ESqlStatementType.sstmysqlshowindex, TBaseType.rrw_show,"index"," "," "," "," "," ");
1747     addmysqlcmds(ESqlStatementType.sstmysqlshowindex, TBaseType.rrw_show,"indexes"," "," "," "," "," ");
1748     addmysqlcmds(ESqlStatementType.sstmysqlshowinnodbstatus, TBaseType.rrw_show,"innodb", "status"," "," "," "," ");
1749     addmysqlcmds(ESqlStatementType.sstmysqlshowindex, TBaseType.rrw_show,"keys"," "," "," "," "," ");
1750     addmysqlcmds(ESqlStatementType.sstmysqlshowlogs, TBaseType.rrw_show,"logs"," "," "," "," "," ");
1751     addmysqlcmds(ESqlStatementType.sstmysqlshowmasterlogs, TBaseType.rrw_show,"master", "logs"," "," "," "," ");
1752     addmysqlcmds(ESqlStatementType.sstmysqlshowmasterstatus, TBaseType.rrw_show,"master", "status"," "," "," "," ");
1753     addmysqlcmds(ESqlStatementType.sstmysqlshowtables, TBaseType.rrw_show,"open","tables"," "," "," "," ");
1754     addmysqlcmds(ESqlStatementType.sstmysqlshowplugins, TBaseType.rrw_show,"plugins"," "," "," "," "," ");
1755     addmysqlcmds(ESqlStatementType.sstmysqlshowprivileges, TBaseType.rrw_show,"privileges"," "," "," "," "," ");
1756     addmysqlcmds(ESqlStatementType.sstmysqlshowfunctionstatus, TBaseType.rrw_show,"procedure", "status"," "," "," "," ");
1757     addmysqlcmds(ESqlStatementType.sstmysqlshowprocesslist, TBaseType.rrw_show,"processlist"," "," "," "," "," ");
1758     addmysqlcmds(ESqlStatementType.sstmysqlshowprofile, TBaseType.rrw_show,"profile"," "," "," "," "," ");
1759     addmysqlcmds(ESqlStatementType.sstmysqlshowprofiles, TBaseType.rrw_show,"profiles"," "," "," "," "," ");
1760     addmysqlcmds(ESqlStatementType.sstmysqlshowreplicaStatus, TBaseType.rrw_show,"replica","status"," "," "," "," ");
1761     addmysqlcmds(ESqlStatementType.sstmysqlshowstatus, TBaseType.rrw_show,"session","status"," "," "," "," ");
1762     addmysqlcmds(ESqlStatementType.sstmysqlshowvariables, TBaseType.rrw_show,"session","variables"," "," "," "," ");
1763     addmysqlcmds(ESqlStatementType.sstmysqlshowslavehosts, TBaseType.rrw_show,"slave", "hosts"," "," "," "," ");
1764     addmysqlcmds(ESqlStatementType.sstmysqlshowslavestatus, TBaseType.rrw_show,"slave", "status"," "," "," "," ");
1765     addmysqlcmds(ESqlStatementType.sstmysqlshowstatus, TBaseType.rrw_show,"status"," "," "," "," "," ");
1766     addmysqlcmds(ESqlStatementType.sstmysqlshowengines, TBaseType.rrw_show,"storage","engines"," "," "," "," ");
1767     addmysqlcmds(ESqlStatementType.sstmysqlshowtablestatus, TBaseType.rrw_show,"table", "status"," "," "," "," ");
1768     addmysqlcmds(ESqlStatementType.sstmysqlshowtables, TBaseType.rrw_show,"tables"," "," "," "," "," ");
1769     addmysqlcmds(ESqlStatementType.sstmysqlshowtriggers, TBaseType.rrw_show,"triggers"," "," "," "," "," ");
1770     addmysqlcmds(ESqlStatementType.sstmysqlshowvariables, TBaseType.rrw_show,"variables"," "," "," "," "," ");
1771     addmysqlcmds(ESqlStatementType.sstmysqlshowwarnings, TBaseType.rrw_show,"warnings"," "," "," "," "," ");
1772     addmysqlcmds(ESqlStatementType.sstmysqlsignal, TBaseType.rrw_signal," "," "," "," "," "," ");
1773     addmysqlcmds(ESqlStatementType.sstmysqlstartslave, TBaseType.rrw_start,"slave"," "," "," "," "," ");
1774     addmysqlcmds(ESqlStatementType.sstmysqlstarttransaction, TBaseType.rrw_start,"transaction"," "," "," "," "," ");
1775     addmysqlcmds(ESqlStatementType.sstmysqlstopslave, TBaseType.rrw_stop,"slave"," "," "," "," "," ");
1776     addmysqlcmds(ESqlStatementType.sstmysqltruncate, TBaseType.rrw_truncate," "," "," "," "," "," ");
1777     addmysqlcmds(ESqlStatementType.sstmysqlunlocktable, TBaseType.rrw_unlock,"tables"," "," "," "," "," ");
1778     addmysqlcmds(ESqlStatementType.sstupdate, TBaseType.rrw_update," "," "," "," "," "," ");
1779     addmysqlcmds(ESqlStatementType.sstmysqluse, TBaseType.rrw_use," "," "," "," "," "," ");
1780     addmysqlcmds(ESqlStatementType.sstmysqlwhile, TBaseType.rrw_while," "," "," "," "," "," ");
1781
1782}
1783
1784void initmdxcmds(){
1785// cmd must be sort alphabetically
1786    addmdxcmds(ESqlStatementType.sstmdxaltercube, TBaseType.rrw_alter,"cube"," "," "," "," "," ");
1787    addmdxcmds(ESqlStatementType.sstmdxalterdimension, TBaseType.rrw_alter,"dimension"," "," "," "," "," ");
1788    addmdxcmds(ESqlStatementType.sstmdxcalculate, TBaseType.rrw_calculate," "," "," "," "," "," ");
1789    addmdxcmds(ESqlStatementType.sstmdxcall, TBaseType.rrw_call," "," "," "," "," "," ");
1790    addmdxcmds(ESqlStatementType.sstmdxcase, TBaseType.rrw_case," "," "," "," "," "," ");
1791    addmdxcmds(ESqlStatementType.sstmdxclearcalculations, TBaseType.rrw_clear,"calculations"," "," "," "," "," ");
1792    addmdxcmds(ESqlStatementType.sstmdxcreateaction, TBaseType.rrw_create,"action"," "," "," "," "," ");
1793    addmdxcmds(ESqlStatementType.sstmdxcreatemember, TBaseType.rrw_create,"calculated","member"," "," "," "," ");
1794    addmdxcmds(ESqlStatementType.sstmdxcreatecellcalculation, TBaseType.rrw_create,"cell","calculation"," "," "," "," ");
1795    addmdxcmds(ESqlStatementType.sstmdxcreatedimensionmember, TBaseType.rrw_create,"dimension","member"," "," "," "," ");
1796    addmdxcmds(ESqlStatementType.sstmdxcreateglobalcube, TBaseType.rrw_create,"global","cube"," "," "," "," ");
1797    addmdxcmds(ESqlStatementType.sstmdxcreateset, TBaseType.rrw_create,"hidden","set"," "," "," "," ");
1798    addmdxcmds(ESqlStatementType.sstmdxcreatemeasure, TBaseType.rrw_create,"measure"," "," "," "," "," ");
1799    addmdxcmds(ESqlStatementType.sstmdxcreatemember, TBaseType.rrw_create,"member"," "," "," "," "," ");
1800    addmdxcmds(ESqlStatementType.sstmdxcreatemember, TBaseType.rrw_create,"session","calculated","memeber"," "," "," ");
1801    addmdxcmds(ESqlStatementType.sstmdxcreatesessioncube, TBaseType.rrw_create,"session","cube"," "," "," "," ");
1802    addmdxcmds(ESqlStatementType.sstmdxcreatedimensionmember, TBaseType.rrw_create,"session","dimension","member"," "," "," ");
1803    addmdxcmds(ESqlStatementType.sstmdxcreateset, TBaseType.rrw_create,"session","hidden","set"," "," "," ");
1804    addmdxcmds(ESqlStatementType.sstmdxcreatemember, TBaseType.rrw_create,"session","memeber"," "," "," "," ");
1805    addmdxcmds(ESqlStatementType.sstmdxcreateset, TBaseType.rrw_create,"session","set"," "," "," "," ");
1806    addmdxcmds(ESqlStatementType.sstmdxcreateset, TBaseType.rrw_create,"set"," "," "," "," "," ");
1807    addmdxcmds(ESqlStatementType.sstmdxcreatesubcube, TBaseType.rrw_create,"subcube"," "," "," "," "," ");
1808    addmdxcmds(ESqlStatementType.sstmdxdrillthrough, TBaseType.rrw_drillthrough," "," "," "," "," "," ");
1809    addmdxcmds(ESqlStatementType.sstmdxdropaction, TBaseType.rrw_drop,"action"," "," "," "," "," ");
1810    addmdxcmds(ESqlStatementType.sstmdxdropmember, TBaseType.rrw_drop,"calculated","member"," "," "," "," ");
1811    addmdxcmds(ESqlStatementType.sstmdxdropcellcalculation, TBaseType.rrw_drop,"cell","calcution"," "," "," "," ");
1812    addmdxcmds(ESqlStatementType.sstmdxdropdimensionmember, TBaseType.rrw_drop,"dimension","member"," "," "," "," ");
1813    addmdxcmds(ESqlStatementType.sstmdxdropmember, TBaseType.rrw_drop,"member"," "," "," "," "," ");
1814    addmdxcmds(ESqlStatementType.sstmdxdropmember, TBaseType.rrw_drop,"session","member"," "," "," "," ");
1815    addmdxcmds(ESqlStatementType.sstmdxdropmember, TBaseType.rrw_drop,"session","calculated","member"," "," "," ");
1816    addmdxcmds(ESqlStatementType.sstmdxdropcellcalculation, TBaseType.rrw_drop,"session","cell","calcution"," "," "," ");
1817    addmdxcmds(ESqlStatementType.sstmdxdropset, TBaseType.rrw_drop,"set"," "," "," "," "," ");
1818    addmdxcmds(ESqlStatementType.sstmdxdropsubcube, TBaseType.rrw_drop,"subcube"," "," "," "," "," ");
1819    addmdxcmds(ESqlStatementType.sstmdxexisting, TBaseType.rrw_existing," "," "," "," "," "," ");
1820    addmdxcmds(ESqlStatementType.sstmdxfreeze, TBaseType.rrw_freeze," "," "," "," "," "," ");
1821    addmdxcmds(ESqlStatementType.sstmdxif, TBaseType.rrw_if," "," "," "," "," "," ");
1822    addmdxcmds(ESqlStatementType.sstmdxrefreshcube, TBaseType.rrw_refresh,"cube"," "," "," "," "," ");
1823    addmdxcmds(ESqlStatementType.sstmdxscope, TBaseType.rrw_scope," "," "," "," "," "," ");
1824    addmdxcmds(ESqlStatementType.sstmdxselect, TBaseType.rrw_select," "," "," "," "," "," ");
1825    addmdxcmds(ESqlStatementType.sstmdxupdate, TBaseType.rrw_update," "," "," "," "," "," ");
1826
1827}
1828
1829void initsybasecmds(){
1830// cmd must be sort alphabetically
1831    addsybasecmds(ESqlStatementType.sstmssqladdsignature, TBaseType.rrw_add,"counter","signature"," "," "," "," ");
1832    addsybasecmds(ESqlStatementType.sstmssqladdsignature, TBaseType.rrw_add,"signature"," "," "," "," "," ");
1833//alter
1834    addsybasecmds(ESqlStatementType.sstmssqlalterapplicationrole, TBaseType.rrw_alter,"application","role"," "," "," "," ");
1835    addsybasecmds(ESqlStatementType.sstmssqlalterassembly, TBaseType.rrw_alter,"assembly"," "," "," "," "," ");
1836    addsybasecmds(ESqlStatementType.sstmssqlalterasymmetrickey, TBaseType.rrw_alter,"asymmetric","key"," "," "," "," ");
1837    addsybasecmds(ESqlStatementType.sstmssqlalterauthorization, TBaseType.rrw_alter,"authorization"," "," "," "," "," ");
1838    addsybasecmds(ESqlStatementType.sstmssqlaltercertificate, TBaseType.rrw_alter,"certificate"," "," "," "," "," ");
1839    addsybasecmds(ESqlStatementType.sstmssqlaltercredential, TBaseType.rrw_alter,"credential"," "," "," "," "," ");
1840    addsybasecmds(ESqlStatementType.sstmssqlalterdatabase, TBaseType.rrw_alter,"database"," "," "," "," "," ");
1841    addsybasecmds(ESqlStatementType.sstmssqlalterendpoint, TBaseType.rrw_alter,"endpoint"," "," "," "," "," ");
1842    addsybasecmds(ESqlStatementType.sstmssqlalterfulltextcatalog, TBaseType.rrw_alter,"fulltext","catalog"," "," "," "," ");
1843    addsybasecmds(ESqlStatementType.sstmssqlalterfulltextindex, TBaseType.rrw_alter,"fulltext","index"," "," "," "," ");
1844    addsybasecmds(ESqlStatementType.sstmssqlalterfunction, TBaseType.rrw_alter,"function"," "," "," "," "," ");
1845    addsybasecmds(ESqlStatementType.sstmssqlalterindex, TBaseType.rrw_alter,"index"," "," "," "," "," ");
1846    addsybasecmds(ESqlStatementType.sstmssqlalterlogin, TBaseType.rrw_alter,"login"," "," "," "," "," ");
1847    addsybasecmds(ESqlStatementType.sstmssqlaltermasterkey, TBaseType.rrw_alter,"master","key"," "," "," "," ");
1848    addsybasecmds(ESqlStatementType.sstmssqlaltermessagetype, TBaseType.rrw_alter,"message","type"," "," "," "," ");
1849    addsybasecmds(ESqlStatementType.sstmssqlalterpartitionfunction, TBaseType.rrw_alter,"partition","function"," "," "," "," ");
1850    addsybasecmds(ESqlStatementType.sstmssqlalterpartitionscheme, TBaseType.rrw_alter,"partition","scheme"," "," "," "," ");
1851    addsybasecmds(ESqlStatementType.sstmssqlalterprocedure, TBaseType.rrw_alter,"proc"," "," "," "," "," ");
1852    addsybasecmds(ESqlStatementType.sstmssqlalterprocedure, TBaseType.rrw_alter,"procedure"," "," "," "," "," ");
1853    addsybasecmds(ESqlStatementType.sstmssqlalterqueue, TBaseType.rrw_alter,"queue"," "," "," "," "," ");
1854    addsybasecmds(ESqlStatementType.sstmssqlalterremoteservicebinding, TBaseType.rrw_alter,"remote","service","binding"," "," "," ");
1855    addsybasecmds(ESqlStatementType.sstmssqlalterrole, TBaseType.rrw_alter,"role"," "," "," "," "," ");
1856    addsybasecmds(ESqlStatementType.sstmssqlalterroute, TBaseType.rrw_alter,"route"," "," "," "," "," ");
1857    addsybasecmds(ESqlStatementType.sstmssqlalterschema, TBaseType.rrw_alter,"schema"," "," "," "," "," ");
1858    addsybasecmds(ESqlStatementType.sstmssqlalterservice, TBaseType.rrw_alter,"service"," "," "," "," "," ");
1859    addsybasecmds(ESqlStatementType.sstmssqlalterservicemasterkey, TBaseType.rrw_alter,"service","master","key"," "," "," ");
1860    addsybasecmds(ESqlStatementType.sstmssqlaltersymmetrickey, TBaseType.rrw_alter,"symmetric","key"," "," "," "," ");
1861    addsybasecmds(ESqlStatementType.sstaltertable, TBaseType.rrw_alter,"table"," "," "," "," "," ");
1862    addsybasecmds(ESqlStatementType.sstmssqlaltertrigger, TBaseType.rrw_alter,"trigger"," "," "," "," "," ");
1863    addsybasecmds(ESqlStatementType.sstmssqlalteruser, TBaseType.rrw_alter,"user"," "," "," "," "," ");
1864    addsybasecmds(ESqlStatementType.sstmssqlalterview, TBaseType.rrw_alter,"view"," "," "," "," "," ");
1865    addsybasecmds(ESqlStatementType.sstmssqlalterxmlschemacollection, TBaseType.rrw_alter,"xml","schema","collection"," "," "," ");
1866//backup
1867    addsybasecmds(ESqlStatementType.sstmssqlbackupdatabase, TBaseType.rrw_backup,"database"," "," "," "," "," ");
1868    addsybasecmds(ESqlStatementType.sstmssqlbackupcertificate, TBaseType.rrw_backup,"certificate"," "," "," "," "," ");
1869    addsybasecmds(ESqlStatementType.sstmssqlbackuplog, TBaseType.rrw_backup,"log"," "," "," "," "," ");
1870    addsybasecmds(ESqlStatementType.sstmssqlbackupmasterkey, TBaseType.rrw_backup,"master","key"," "," "," "," ");
1871    addsybasecmds(ESqlStatementType.sstmssqlbackupservicemasterkey, TBaseType.rrw_backup,"service","master","key"," "," "," ");
1872//begin
1873    addsybasecmds(ESqlStatementType.sstmssqlbegincatch, TBaseType.rrw_begin,"catch"," "," "," "," "," ");
1874    addsybasecmds(ESqlStatementType.sstmssqlbeginconversationtimer, TBaseType.rrw_begin,"conversation","timer"," "," "," "," ");
1875    addsybasecmds(ESqlStatementType.sstmssqlbegindialog, TBaseType.rrw_begin,"dialog"," "," "," "," "," ");
1876    addsybasecmds(ESqlStatementType.sstmssqlbegindistributed, TBaseType.rrw_begin,"distributed"," "," "," "," "," ");
1877    addsybasecmds(ESqlStatementType.sstmssqlbegintran, TBaseType.rrw_begin,"tran"," "," "," "," "," ");
1878    addsybasecmds(ESqlStatementType.sstmssqlbegintran, TBaseType.rrw_begin,"transaction"," "," "," "," "," ");
1879    addsybasecmds(ESqlStatementType.sstmssqlbegintry, TBaseType.rrw_begin,"try"," "," "," "," "," ");
1880//break
1881    addsybasecmds(ESqlStatementType.sstbreak, TBaseType.rrw_break," "," "," "," "," "," ");
1882//bulk insert
1883    addsybasecmds(ESqlStatementType.sstmssqlbulkinsert, TBaseType.rrw_bulk,"insert"," "," "," "," "," ");
1884
1885    addsybasecmds(ESqlStatementType.sstcall, TBaseType.rrw_call," "," "," "," "," "," ");
1886
1887//checkpoint
1888    addsybasecmds(ESqlStatementType.sstmssqlcheckpoint, TBaseType.rrw_checkpoint," "," "," "," "," "," ");
1889//close
1890    addsybasecmds(ESqlStatementType.sstmssqlclose, TBaseType.rrw_close," "," "," "," "," "," ");
1891    addsybasecmds(ESqlStatementType.sstmssqlclosesymmetrickey, TBaseType.rrw_close,"all", "symmetric", "keys"," "," "," ");
1892    addsybasecmds(ESqlStatementType.sstmssqlclosemasterkey, TBaseType.rrw_close,"master", "key"," "," "," "," ");
1893    addsybasecmds(ESqlStatementType.sstmssqlclosesymmetrickey, TBaseType.rrw_close,"symmetric", "key"," "," "," "," ");
1894//commit
1895    addsybasecmds(ESqlStatementType.sstmssqlcommit, TBaseType.rrw_commit," "," "," "," "," "," ");
1896    addsybasecmds(ESqlStatementType.sstmssqlcommit, TBaseType.rrw_commit,"work"," "," "," "," "," ");
1897    addsybasecmds(ESqlStatementType.sstmssqlcommit, TBaseType.rrw_commit,"tran"," "," "," "," "," ");
1898    addsybasecmds(ESqlStatementType.sstmssqlcommit, TBaseType.rrw_commit,"transaction"," "," "," "," "," ");
1899//continue
1900    addsybasecmds(ESqlStatementType.sstmssqlcontinue, TBaseType.rrw_continue," "," "," "," "," "," ");
1901//create
1902    addsybasecmds(ESqlStatementType.sstmssqlcreateaggregate, TBaseType.rrw_create,"aggregate"," "," "," "," "," ");
1903    addsybasecmds(ESqlStatementType.sstmssqlcreateapplicationrole, TBaseType.rrw_create,"application", "role"," "," "," "," ");
1904    addsybasecmds(ESqlStatementType.sstmssqlcreateassembly, TBaseType.rrw_create,"assembly"," "," "," "," "," ");
1905    addsybasecmds(ESqlStatementType.sstmssqlcreateasymmetrickey, TBaseType.rrw_create,"asymmetric", "key"," "," "," "," ");
1906    addsybasecmds(ESqlStatementType.sstmssqlcreatecertificate, TBaseType.rrw_create,"certificate"," "," "," "," "," ");
1907    addsybasecmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"clustered","index"," "," "," "," ");
1908    addsybasecmds(ESqlStatementType.sstmssqlcreatecontract, TBaseType.rrw_create,"contract"," "," "," "," "," ");
1909    addsybasecmds(ESqlStatementType.sstmssqlcreatecredential, TBaseType.rrw_create,"credential"," "," "," "," "," ");
1910    addsybasecmds(ESqlStatementType.sstcreatedatabase, TBaseType.rrw_create,"database"," "," "," "," "," ");
1911    addsybasecmds(ESqlStatementType.sstmssqlcreatedefault, TBaseType.rrw_create,"default"," "," "," "," "," ");
1912    addsybasecmds(ESqlStatementType.sstmssqlcreateendpoint, TBaseType.rrw_create,"endpoint"," "," "," "," "," ");
1913    addsybasecmds(ESqlStatementType.sstmssqlcreateeventnotification, TBaseType.rrw_create,"event", "notification"," "," "," "," ");
1914    addsybasecmds(ESqlStatementType.sstmssqlcreatefulltextcatalog, TBaseType.rrw_create,"fulltext", "catalog"," "," "," "," ");
1915    addsybasecmds(ESqlStatementType.sstmssqlcreatefulltextindex, TBaseType.rrw_create,"fulltext", "index"," "," "," "," ");
1916    addsybasecmds(ESqlStatementType.sstmssqlcreatefunction, TBaseType.rrw_create,"function"," "," "," "," "," ");
1917    addsybasecmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"index"," "," "," "," "," ");
1918    addsybasecmds(ESqlStatementType.sstmssqlcreatelogin, TBaseType.rrw_create,"login"," "," "," "," "," ");
1919    addsybasecmds(ESqlStatementType.sstmssqlcreatemasterkey, TBaseType.rrw_create,"master","key"," "," "," "," ");
1920    addsybasecmds(ESqlStatementType.sstmssqlcreatemessagetype, TBaseType.rrw_create,"message","type"," "," "," "," ");
1921    addsybasecmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"nonclustered","index"," "," "," "," ");
1922    addsybasecmds(ESqlStatementType.sstmssqlcreatefunction, TBaseType.rrw_create,"or","replace","function"," "," "," ");
1923    addsybasecmds(ESqlStatementType.sstmssqlcreateprocedure, TBaseType.rrw_create,"or","replace","proc"," "," "," ");
1924    addsybasecmds(ESqlStatementType.sstmssqlcreateprocedure, TBaseType.rrw_create,"or","replace","procedure"," "," "," ");
1925    addsybasecmds(ESqlStatementType.sstmssqlcreatepartitionfunction, TBaseType.rrw_create,"partition","function"," "," "," "," ");
1926    addsybasecmds(ESqlStatementType.sstmssqlcreatepartitionscheme, TBaseType.rrw_create,"partition","scheme"," "," "," "," ");
1927    addsybasecmds(ESqlStatementType.sstmssqlcreateprocedure, TBaseType.rrw_create,"proc"," "," "," "," "," ");
1928    addsybasecmds(ESqlStatementType.sstmssqlcreateprocedure, TBaseType.rrw_create,"procedure"," "," "," "," "," ");
1929    addsybasecmds(ESqlStatementType.sstmssqlcreatequeue, TBaseType.rrw_create,"queue"," "," "," "," "," ");
1930    addsybasecmds(ESqlStatementType.sstmssqlcreateremoteservicebinding, TBaseType.rrw_create,"remote", "service", "binding"," "," "," ");
1931    addsybasecmds(ESqlStatementType.sstmssqlcreaterole, TBaseType.rrw_create,"role"," "," "," "," "," ");
1932    addsybasecmds(ESqlStatementType.sstmssqlcreateroute, TBaseType.rrw_create,"route"," "," "," "," "," ");
1933    addsybasecmds(ESqlStatementType.sstmssqlcreaterule, TBaseType.rrw_create,"rule"," "," "," "," "," ");
1934    addsybasecmds(ESqlStatementType.sstmssqlcreateschema, TBaseType.rrw_create,"schema"," "," "," "," "," ");
1935    addsybasecmds(ESqlStatementType.sstmssqlcreateservice, TBaseType.rrw_create,"service"," "," "," "," "," ");
1936    addsybasecmds(ESqlStatementType.sstmssqlcreatestatistics, TBaseType.rrw_create,"statistics"," "," "," "," "," ");
1937    addsybasecmds(ESqlStatementType.sstmssqlcreatesymmetrickey, TBaseType.rrw_create,"symmetric", "key"," "," "," "," ");
1938    addsybasecmds(ESqlStatementType.sstmssqlcreatesynonym, TBaseType.rrw_create,"synonym"," "," "," "," "," ");
1939    addsybasecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"table"," "," "," "," "," ");
1940    addsybasecmds(ESqlStatementType.sstcreatetrigger, TBaseType.rrw_create,"trigger"," "," "," "," "," ");
1941    addsybasecmds(ESqlStatementType.sstmssqlcreatetype, TBaseType.rrw_create,"type"," "," "," "," "," ");
1942    addsybasecmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"unique","clustered","index"," "," "," ");
1943    addsybasecmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"unique","index"," "," "," "," ");
1944    addsybasecmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"unique","nonclustered","index"," "," "," ");
1945    addsybasecmds(ESqlStatementType.sstmssqlcreateuser, TBaseType.rrw_create,"user"," "," "," "," "," ");
1946    addsybasecmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,"view"," "," "," "," "," ");
1947    addsybasecmds(ESqlStatementType.sstmssqlcreatexmlschemacollection, TBaseType.rrw_create,"xml", "schema", "collection"," "," "," ");
1948// DBCC
1949    addsybasecmds(ESqlStatementType.sstmssqldbcc, TBaseType.rrw_dbcc," "," "," "," "," "," ");
1950//DEALLOCATE
1951    addsybasecmds(ESqlStatementType.sstmssqldeallocate, TBaseType.rrw_deallocate," "," "," "," "," "," ");
1952//DECLARE
1953    addsybasecmds(ESqlStatementType.sstmssqldeclare, TBaseType.rrw_declare," "," "," "," "," "," ");
1954//DELETE
1955    addsybasecmds(ESqlStatementType.sstdelete, TBaseType.rrw_delete," "," "," "," "," "," ");
1956
1957//DELETE statistics
1958    addsybasecmds(ESqlStatementType.sstsybaseDeleteStatistics, TBaseType.rrw_delete,"shared","statistics"," "," "," "," ");
1959    addsybasecmds(ESqlStatementType.sstsybaseDeleteStatistics, TBaseType.rrw_delete,"statistics"," "," "," "," "," ");
1960
1961//DENY
1962    addsybasecmds(ESqlStatementType.sstmssqldeny, TBaseType.rrw_deny," "," "," "," "," "," ");
1963//DISABLE TRIGGER
1964    addsybasecmds(ESqlStatementType.sstmssqldisabletrigger, TBaseType.rrw_disable,"trigger"," "," "," "," "," ");
1965//drop
1966    addsybasecmds(ESqlStatementType.sstmssqldropaggregate, TBaseType.rrw_drop,"aggregate"," "," "," "," "," ");
1967    addsybasecmds(ESqlStatementType.sstmssqldropapplicationrole, TBaseType.rrw_drop,"application", "role"," "," "," "," ");
1968    addsybasecmds(ESqlStatementType.sstmssqldropassembly, TBaseType.rrw_drop,"assembly"," "," "," "," "," ");
1969    addsybasecmds(ESqlStatementType.sstmssqldropasymmetrickey, TBaseType.rrw_drop,"asymmetric", "key"," "," "," "," ");
1970    addsybasecmds(ESqlStatementType.sstmssqldropcertificate, TBaseType.rrw_drop,"certificate"," "," "," "," "," ");
1971    addsybasecmds(ESqlStatementType.sstmssqldropcontract, TBaseType.rrw_drop,"contract"," "," "," "," "," ");
1972    addsybasecmds(ESqlStatementType.sstmssqldropsignature, TBaseType.rrw_drop,"counter", "signature"," "," "," "," ");
1973    addsybasecmds(ESqlStatementType.sstmssqldropcredential, TBaseType.rrw_drop,"credential"," "," "," "," "," ");
1974    addsybasecmds(ESqlStatementType.sstmssqldropdatabase, TBaseType.rrw_drop,"database"," "," "," "," "," ");
1975    addsybasecmds(ESqlStatementType.sstmssqldropdefault, TBaseType.rrw_drop,"default"," "," "," "," "," ");
1976    addsybasecmds(ESqlStatementType.sstmssqldropendpoint, TBaseType.rrw_drop,"endpoint"," "," "," "," "," ");
1977    addsybasecmds(ESqlStatementType.sstmssqldropeventnotification, TBaseType.rrw_drop,"event", "notification"," "," "," "," ");
1978    addsybasecmds(ESqlStatementType.sstmssqldropfulltextcatalog, TBaseType.rrw_drop,"fulltext", "catalog"," "," "," "," ");
1979    addsybasecmds(ESqlStatementType.sstmssqldropfulltextindex, TBaseType.rrw_drop,"fulltext", "index"," "," "," "," ");
1980    addsybasecmds(ESqlStatementType.sstmssqldropfunction, TBaseType.rrw_drop,"function"," "," "," "," "," ");
1981    addsybasecmds(ESqlStatementType.sstmssqldropindex, TBaseType.rrw_drop,"index"," "," "," "," "," ");
1982    addsybasecmds(ESqlStatementType.sstmssqldroplogin, TBaseType.rrw_drop,"login"," "," "," "," "," ");
1983    addsybasecmds(ESqlStatementType.sstmssqldropmasterkey, TBaseType.rrw_drop,"master", "key"," "," "," "," ");
1984    addsybasecmds(ESqlStatementType.sstmssqldropmessagetype, TBaseType.rrw_drop,"message", "type"," "," "," "," ");
1985    addsybasecmds(ESqlStatementType.sstmssqldroppartitionfunction, TBaseType.rrw_drop,"partition", "function"," "," "," "," ");
1986    addsybasecmds(ESqlStatementType.sstmssqldroppartitionscheme, TBaseType.rrw_drop,"partition", "scheme"," "," "," "," ");
1987    addsybasecmds(ESqlStatementType.sstmssqldropprocedure, TBaseType.rrw_drop,"proc"," "," "," "," "," ");
1988    addsybasecmds(ESqlStatementType.sstmssqldropprocedure, TBaseType.rrw_drop,"procedure"," "," "," "," "," ");
1989    addsybasecmds(ESqlStatementType.sstmssqldropqueue, TBaseType.rrw_drop,"queue"," "," "," "," "," ");
1990    addsybasecmds(ESqlStatementType.sstmssqldropremoteservicebinding, TBaseType.rrw_drop,"remote", "service", "binding"," "," "," ");
1991    addsybasecmds(ESqlStatementType.sstmssqldroprole, TBaseType.rrw_drop,"role"," "," "," "," "," ");
1992    addsybasecmds(ESqlStatementType.sstmssqldroproute, TBaseType.rrw_drop,"route"," "," "," "," "," ");
1993    addsybasecmds(ESqlStatementType.sstmssqldroprule, TBaseType.rrw_drop,"rule"," "," "," "," "," ");
1994    addsybasecmds(ESqlStatementType.sstmssqldropschema, TBaseType.rrw_drop,"schema"," "," "," "," "," ");
1995    addsybasecmds(ESqlStatementType.sstmssqldropservice, TBaseType.rrw_drop,"service"," "," "," "," "," ");
1996    addsybasecmds(ESqlStatementType.sstmssqldropsignature, TBaseType.rrw_drop,"signature"," "," "," "," "," ");
1997    addsybasecmds(ESqlStatementType.sstmssqldropstatistics, TBaseType.rrw_drop,"statistics"," "," "," "," "," ");
1998    addsybasecmds(ESqlStatementType.sstmssqldropsymmetrickey, TBaseType.rrw_drop,"symmetric", "key"," "," "," "," ");
1999    addsybasecmds(ESqlStatementType.sstmssqldropsynonym, TBaseType.rrw_drop,"synonym"," "," "," "," "," ");
2000    addsybasecmds(ESqlStatementType.sstmssqldroptable, TBaseType.rrw_drop,"table"," "," "," "," "," ");
2001    addsybasecmds(ESqlStatementType.sstmssqldroptrigger, TBaseType.rrw_drop,"trigger"," "," "," "," "," ");
2002    addsybasecmds(ESqlStatementType.sstmssqldroptype, TBaseType.rrw_drop,"type"," "," "," "," "," ");
2003    addsybasecmds(ESqlStatementType.sstmssqldropuser, TBaseType.rrw_drop,"user"," "," "," "," "," ");
2004    addsybasecmds(ESqlStatementType.sstmssqldropview, TBaseType.rrw_drop,"view"," "," "," "," "," ");
2005    addsybasecmds(ESqlStatementType.sstmssqldropxmlschemacollection, TBaseType.rrw_drop,"xml", "schema", "collection"," "," "," ");
2006
2007    addsybasecmds(ESqlStatementType.sstsybasedumpTran, TBaseType.rrw_sybase_dump,"tran"," "," "," "," "," ");
2008    addsybasecmds(ESqlStatementType.sstsybasedumpTran, TBaseType.rrw_sybase_dump,"transaction"," "," "," "," "," ");
2009//if
2010    addsybasecmds(ESqlStatementType.sstmssqlif, TBaseType.rrw_if," "," "," "," "," "," ");
2011//enable trigger
2012    addsybasecmds(ESqlStatementType.sstmssqlenabletrigger, TBaseType.rrw_enable,"trigger"," "," "," "," "," ");
2013//END CONVERSATION
2014// addsybasecmds(ESqlStatementType.sstMssqlEndCatch,TBaseType.rrw_end,'catch');
2015    addsybasecmds(ESqlStatementType.sstmssqlendconversation, TBaseType.rrw_end,"conversation"," "," "," "," "," ");
2016// addsybasecmds(ESqlStatementType.sstMssqlEndTry,TBaseType.rrw_end,'try');
2017//exec
2018//exec as
2019    addsybasecmds(ESqlStatementType.sstmssqlexec, TBaseType.rrw_exec," "," "," "," "," "," ");
2020    addsybasecmds(ESqlStatementType.sstmssqlexecuteas, TBaseType.rrw_exec,"as","caller"," "," "," "," ");
2021    addsybasecmds(ESqlStatementType.sstmssqlexecuteas, TBaseType.rrw_exec,"as","login"," "," "," "," ");
2022    addsybasecmds(ESqlStatementType.sstmssqlexecuteas, TBaseType.rrw_exec,"as","user"," "," "," "," ");
2023    addsybasecmds(ESqlStatementType.sstmssqlexec, TBaseType.rrw_execute, " "," "," "," "," "," ");
2024    addsybasecmds(ESqlStatementType.sstmssqlexecuteas, TBaseType.rrw_execute,"as","caller"," "," "," "," ");
2025    addsybasecmds(ESqlStatementType.sstmssqlexecuteas, TBaseType.rrw_execute,"as","login"," "," "," "," ");
2026    addsybasecmds(ESqlStatementType.sstmssqlexecuteas, TBaseType.rrw_execute,"as","user"," "," "," "," ");
2027//fetch
2028    addsybasecmds(ESqlStatementType.sstmssqlfetch, TBaseType.rrw_fetch," "," "," "," "," "," ");
2029//go
2030    addsybasecmds(ESqlStatementType.sstmssqlgo, TBaseType.rrw_go," "," "," "," "," "," ");
2031//goto
2032    addsybasecmds(ESqlStatementType.sstmssqlgoto, TBaseType.rrw_goto," "," "," "," "," "," ");
2033//GRANT
2034    addsybasecmds(ESqlStatementType.sstmssqlgrant, TBaseType.rrw_grant," "," "," "," "," "," ");
2035//GRANT
2036    addsybasecmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert," "," "," "," "," "," ");
2037
2038    addsybasecmds(ESqlStatementType.sstsybaseInsertBulk, TBaseType.rrw_insert,"bulk"," "," "," "," "," ");
2039//KILL
2040    addsybasecmds(ESqlStatementType.sstmssqlkill, TBaseType.rrw_kill," "," "," "," "," "," ");
2041//KILL
2042    addsybasecmds(ESqlStatementType.sstmssqlkill, TBaseType.rrw_kill," "," "," "," "," "," ");
2043    addsybasecmds(ESqlStatementType.sstmssqlkillquerynotificationsubscription, TBaseType.rrw_kill,"kill", "query", "notification", "subscription"," "," ");
2044    addsybasecmds(ESqlStatementType.sstmssqlkillstats, TBaseType.rrw_kill,"stats"," "," "," "," "," ");
2045
2046    addsybasecmds(ESqlStatementType.sstload,TBaseType.rrw_load,"table"," "," "," "," "," ");
2047//
2048 addsybasecmds(ESqlStatementType.sstsybaselocktable,TBaseType.rw_locktable,"table"," "," "," "," "," ");
2049//MOVE CONVERSATION
2050    addsybasecmds(ESqlStatementType.sstmssqlmoveconversation, TBaseType.rrw_move,"conversation"," "," "," "," "," ");
2051//merge
2052    addsybasecmds(ESqlStatementType.sstmerge, TBaseType.rrw_merge," "," "," "," "," "," ");
2053//open
2054    addsybasecmds(ESqlStatementType.sstmssqlopen, TBaseType.rrw_open," "," "," "," "," "," ");
2055    addsybasecmds(ESqlStatementType.sstmssqlopenmasterkey, TBaseType.rrw_open,"master", "key"," "," "," "," ");
2056    addsybasecmds(ESqlStatementType.sstmssqlopensymmetrickey, TBaseType.rrw_open,"symmetric", "key"," "," "," "," ");
2057//PRINT
2058    addsybasecmds(ESqlStatementType.sstmssqlprint, TBaseType.rrw_print," "," "," "," "," "," ");
2059//RAISERROR
2060    addsybasecmds(ESqlStatementType.sstmssqlraiserror, TBaseType.rrw_raiserror," "," "," "," "," "," ");
2061//READTEXT
2062    addsybasecmds(ESqlStatementType.sstmssqlreadtext, TBaseType.rrw_readtext," "," "," "," "," "," ");
2063//RECEIVE
2064    addsybasecmds(ESqlStatementType.sstmssqlreceive, TBaseType.rrw_receive," "," "," "," "," "," ");
2065//RECONFIGURE
2066    addsybasecmds(ESqlStatementType.sstmssqlreconfigure, TBaseType.rrw_reconfigure," "," "," "," "," "," ");
2067//RESTORE
2068    addsybasecmds(ESqlStatementType.sstmssqlrestoredatabase, TBaseType.rrw_restore,"database"," "," "," "," "," ");
2069    addsybasecmds(ESqlStatementType.sstmssqlrestorefilelistonly, TBaseType.rrw_restore,"filelistonly"," "," "," "," "," ");
2070    addsybasecmds(ESqlStatementType.sstmssqlrestoreheaderonly, TBaseType.rrw_restore,"headeronly"," "," "," "," "," ");
2071    addsybasecmds(ESqlStatementType.sstmssqlrestorelabelonly, TBaseType.rrw_restore,"labelonly"," "," "," "," "," ");
2072    addsybasecmds(ESqlStatementType.sstmssqlrestorelog, TBaseType.rrw_restore,"log"," "," "," "," "," ");
2073    addsybasecmds(ESqlStatementType.sstmssqlrestoremasterkey, TBaseType.rrw_restore,"master","key"," "," "," "," ");
2074    addsybasecmds(ESqlStatementType.sstmssqlrestorerewindonly, TBaseType.rrw_restore,"rewindonly"," "," "," "," "," ");
2075    addsybasecmds(ESqlStatementType.sstmssqlrestoreservicemasterkey, TBaseType.rrw_restore,"service","master","key"," "," "," ");
2076    addsybasecmds(ESqlStatementType.sstmssqlrestoreverifyonly, TBaseType.rrw_restore,"verifyonly"," "," "," "," "," ");
2077//RETURN
2078    addsybasecmds(ESqlStatementType.sstmssqlreturn, TBaseType.rrw_return," "," "," "," "," "," ");
2079//REVERT
2080    addsybasecmds(ESqlStatementType.sstmssqlrevert, TBaseType.rrw_revert," "," "," "," "," "," ");
2081//REVOKE
2082    addsybasecmds(ESqlStatementType.sstmssqlrevoke, TBaseType.rrw_revoke," "," "," "," "," "," ");
2083//ROLLBACK
2084    addsybasecmds(ESqlStatementType.sstmssqlrollback, TBaseType.rrw_rollback," "," "," "," "," "," ");
2085    addsybasecmds(ESqlStatementType.sstmssqlrollback, TBaseType.rrw_rollback,"tran"," "," "," "," "," ");
2086    addsybasecmds(ESqlStatementType.sstmssqlrollback, TBaseType.rrw_rollback,"transaction"," "," "," "," "," ");
2087    addsybasecmds(ESqlStatementType.sstmssqlrollback, TBaseType.rrw_rollback,"work"," "," "," "," "," ");
2088//SAVE
2089    addsybasecmds(ESqlStatementType.sstmssqlsavetran, TBaseType.rrw_save," "," "," "," "," "," ");
2090    addsybasecmds(ESqlStatementType.sstmssqlsavetran, TBaseType.rrw_save,"tran"," "," "," "," "," ");
2091    addsybasecmds(ESqlStatementType.sstmssqlsavetran, TBaseType.rrw_save,"transaction"," "," "," "," "," ");
2092//SELECT
2093    addsybasecmds(ESqlStatementType.sstselect, TBaseType.rrw_select," "," "," "," "," "," ");
2094//SEND ON CONVERSATION
2095    addsybasecmds(ESqlStatementType.sstmssqlsendonconversation, TBaseType.rrw_send,"on","conversation"," "," "," "," ");
2096//SET
2097    addsybasecmds(ESqlStatementType.sstmssqlset, TBaseType.rrw_set," "," "," "," "," "," ");
2098//SET
2099    addsybasecmds(ESqlStatementType.sstmssqlsetuser,TBaseType.rrw_setuser," "," "," "," "," "," ");
2100//SHUTDOWN
2101    addsybasecmds(ESqlStatementType.sstmssqlshutdown, TBaseType.rrw_shutdown," "," "," "," "," "," ");
2102//SIGN
2103//    addsybasecmds(ESqlStatementType.sstmssqlsign, rrw_sign," "," "," "," "," "," ");
2104//TRUNCATE TABLE
2105    addsybasecmds(ESqlStatementType.sstmssqltruncatetable, TBaseType.rrw_truncate,"table"," "," "," "," "," ");
2106//UPDATE
2107    addsybasecmds(ESqlStatementType.sstupdate, TBaseType.rrw_update," "," "," "," "," "," ");
2108//UPDATE all STATISTICS
2109    addsybasecmds(ESqlStatementType.sstmssqlupdatestatistics, TBaseType.rrw_update,"all","statistics"," "," "," "," ");
2110//UPDATE index STATISTICS
2111    addsybasecmds(ESqlStatementType.sstsybaseupdateindexstatistics, TBaseType.rrw_update,"index","statistics"," "," "," "," ");
2112//UPDATE STATISTICS
2113    addsybasecmds(ESqlStatementType.sstmssqlupdatestatistics, TBaseType.rrw_update,"statistics"," "," "," "," "," ");
2114//UPDATETEXT
2115    addsybasecmds(ESqlStatementType.sstmssqlupdatetext, TBaseType.rrw_updatetext," "," "," "," "," "," ");
2116//USE
2117    addsybasecmds(ESqlStatementType.sstmssqluse, TBaseType.rrw_use," "," "," "," "," "," ");
2118//WAITFOR
2119    addsybasecmds(ESqlStatementType.sstmssqlwaitfor, TBaseType.rrw_waitfor," "," "," "," "," "," ");
2120//WHILE
2121    addsybasecmds(ESqlStatementType.sstmssqlwhile, TBaseType.rrw_while," "," "," "," "," "," ");
2122//WITH, don't recongize here, let isMssqlSql do it
2123// addsybasecmds(ESqlStatementType.sstMssqlCTE,rrw_WITH,' ');
2124//WITH XMLNAMESPACES
2125    addsybasecmds(ESqlStatementType.sstmssqlwithxmlnamespaces, TBaseType.rrw_with,"xmlnamespaces"," "," "," "," "," ");
2126//WRITETEXT
2127    addsybasecmds(ESqlStatementType.sstsybaseWritetext, TBaseType.rrw_writetext," "," "," "," "," "," ");
2128
2129}
2130
2131void initmssqlcmds(){
2132// cmd must be sort alphabetically
2133    addmssqlcmds(ESqlStatementType.sstmssqladdsignature, TBaseType.rrw_add,"counter","signature"," "," "," "," ");
2134    addmssqlcmds(ESqlStatementType.sstmssqladdsignature, TBaseType.rrw_add,"signature"," "," "," "," "," ");
2135//alter
2136    addmssqlcmds(ESqlStatementType.sstmssqlalterapplicationrole, TBaseType.rrw_alter,"application","role"," "," "," "," ");
2137    addmssqlcmds(ESqlStatementType.sstmssqlalterassembly, TBaseType.rrw_alter,"assembly"," "," "," "," "," ");
2138    addmssqlcmds(ESqlStatementType.sstmssqlalterasymmetrickey, TBaseType.rrw_alter,"asymmetric","key"," "," "," "," ");
2139    addmssqlcmds(ESqlStatementType.sstmssqlalterauthorization, TBaseType.rrw_alter,"authorization"," "," "," "," "," ");
2140    addmssqlcmds(ESqlStatementType.sstmssqlaltercertificate, TBaseType.rrw_alter,"certificate"," "," "," "," "," ");
2141    addmssqlcmds(ESqlStatementType.sstmssqlaltercredential, TBaseType.rrw_alter,"credential"," "," "," "," "," ");
2142    addmssqlcmds(ESqlStatementType.sstmssqlalterdatabase, TBaseType.rrw_alter,"database"," "," "," "," "," ");
2143    addmssqlcmds(ESqlStatementType.sstmssqlalterendpoint, TBaseType.rrw_alter,"endpoint"," "," "," "," "," ");
2144    addmssqlcmds(ESqlStatementType.sstmssqlalterfulltextcatalog, TBaseType.rrw_alter,"fulltext","catalog"," "," "," "," ");
2145    addmssqlcmds(ESqlStatementType.sstmssqlalterfulltextindex, TBaseType.rrw_alter,"fulltext","index"," "," "," "," ");
2146    addmssqlcmds(ESqlStatementType.sstmssqlalterfunction, TBaseType.rrw_alter,"function"," "," "," "," "," ");
2147    addmssqlcmds(ESqlStatementType.sstmssqlalterindex, TBaseType.rrw_alter,"index"," "," "," "," "," ");
2148    addmssqlcmds(ESqlStatementType.sstmssqlalterlogin, TBaseType.rrw_alter,"login"," "," "," "," "," ");
2149    addmssqlcmds(ESqlStatementType.sstmssqlaltermasterkey, TBaseType.rrw_alter,"master","key"," "," "," "," ");
2150    addmssqlcmds(ESqlStatementType.sstmssqlaltermessagetype, TBaseType.rrw_alter,"message","type"," "," "," "," ");
2151    addmssqlcmds(ESqlStatementType.sstmssqlalterpartitionfunction, TBaseType.rrw_alter,"partition","function"," "," "," "," ");
2152    addmssqlcmds(ESqlStatementType.sstmssqlalterpartitionscheme, TBaseType.rrw_alter,"partition","scheme"," "," "," "," ");
2153    addmssqlcmds(ESqlStatementType.sstmssqlalterprocedure, TBaseType.rrw_alter,"proc"," "," "," "," "," ");
2154    addmssqlcmds(ESqlStatementType.sstmssqlalterprocedure, TBaseType.rrw_alter,"procedure"," "," "," "," "," ");
2155    addmssqlcmds(ESqlStatementType.sstmssqlalterqueue, TBaseType.rrw_alter,"queue"," "," "," "," "," ");
2156    addmssqlcmds(ESqlStatementType.sstmssqlalterremoteservicebinding, TBaseType.rrw_alter,"remote","service","binding"," "," "," ");
2157    addmssqlcmds(ESqlStatementType.sstmssqlalterrole, TBaseType.rrw_alter,"role"," "," "," "," "," ");
2158    addmssqlcmds(ESqlStatementType.sstmssqlalterroute, TBaseType.rrw_alter,"route"," "," "," "," "," ");
2159    addmssqlcmds(ESqlStatementType.sstmssqlalterschema, TBaseType.rrw_alter,"schema"," "," "," "," "," ");
2160    addmssqlcmds(ESqlStatementType.sstmssqlAlterSecurityPolicy, TBaseType.rrw_alter, "security", "policy", " ", " ", " ", " ");
2161    addmssqlcmds(ESqlStatementType.sstaltersequence, TBaseType.rrw_alter, "sequence", " ", " ", " ", " ", " ");
2162    addmssqlcmds(ESqlStatementType.sstmssqlalterservice, TBaseType.rrw_alter,"service"," "," "," "," "," ");
2163    addmssqlcmds(ESqlStatementType.sstmssqlalterservicemasterkey, TBaseType.rrw_alter,"service","master","key"," "," "," ");
2164    addmssqlcmds(ESqlStatementType.sstmssqlaltersymmetrickey, TBaseType.rrw_alter,"symmetric","key"," "," "," "," ");
2165    addmssqlcmds(ESqlStatementType.sstaltertable, TBaseType.rrw_alter,"table"," "," "," "," "," ");
2166    addmssqlcmds(ESqlStatementType.sstmssqlaltertrigger, TBaseType.rrw_alter,"trigger"," "," "," "," "," ");
2167    addmssqlcmds(ESqlStatementType.sstmssqlalteruser, TBaseType.rrw_alter,"user"," "," "," "," "," ");
2168    addmssqlcmds(ESqlStatementType.sstmssqlalterview, TBaseType.rrw_alter,"view"," "," "," "," "," ");
2169    addmssqlcmds(ESqlStatementType.sstmssqlalterxmlschemacollection, TBaseType.rrw_alter,"xml","schema","collection"," "," "," ");
2170//backup
2171    addmssqlcmds(ESqlStatementType.sstmssqlbackupcertificate, TBaseType.rrw_backup,"certificate"," "," "," "," "," ");
2172    addmssqlcmds(ESqlStatementType.sstmssqlbackupdatabase, TBaseType.rrw_backup,"database"," "," "," "," "," ");
2173    addmssqlcmds(ESqlStatementType.sstmssqlbackuplog, TBaseType.rrw_backup,"log"," "," "," "," "," ");
2174    addmssqlcmds(ESqlStatementType.sstmssqlbackupmasterkey, TBaseType.rrw_backup,"master","key"," "," "," "," ");
2175    addmssqlcmds(ESqlStatementType.sstmssqlbackupservicemasterkey, TBaseType.rrw_backup,"service","master","key"," "," "," ");
2176//begin
2177    addmssqlcmds(ESqlStatementType.sstmssqlbegincatch, TBaseType.rrw_begin,"catch"," "," "," "," "," ");
2178    addmssqlcmds(ESqlStatementType.sstmssqlbeginconversationtimer, TBaseType.rrw_begin,"conversation","timer"," "," "," "," ");
2179    addmssqlcmds(ESqlStatementType.sstmssqlbegindialog, TBaseType.rrw_begin,"dialog"," "," "," "," "," ");
2180    addmssqlcmds(ESqlStatementType.sstmssqlbegindistributed, TBaseType.rrw_begin,"distributed"," "," "," "," "," ");
2181    addmssqlcmds(ESqlStatementType.sstmssqlbegintran, TBaseType.rrw_begin,"tran"," "," "," "," "," ");
2182    addmssqlcmds(ESqlStatementType.sstmssqlbegintran, TBaseType.rrw_begin,"transaction"," "," "," "," "," ");
2183    addmssqlcmds(ESqlStatementType.sstmssqlbegintry, TBaseType.rrw_begin,"try"," "," "," "," "," ");
2184//break
2185    addmssqlcmds(ESqlStatementType.sstbreak, TBaseType.rrw_break," "," "," "," "," "," ");
2186//bulk insert
2187    addmssqlcmds(ESqlStatementType.sstmssqlbulkinsert, TBaseType.rrw_bulk,"insert"," "," "," "," "," ");
2188//checkpoint
2189    addmssqlcmds(ESqlStatementType.sstmssqlcheckpoint, TBaseType.rrw_checkpoint," "," "," "," "," "," ");
2190//close
2191    addmssqlcmds(ESqlStatementType.sstmssqlclose, TBaseType.rrw_close," "," "," "," "," "," ");
2192    addmssqlcmds(ESqlStatementType.sstmssqlclosesymmetrickey, TBaseType.rrw_close,"all", "symmetric", "keys"," "," "," ");
2193    addmssqlcmds(ESqlStatementType.sstmssqlclosemasterkey, TBaseType.rrw_close,"master", "key"," "," "," "," ");
2194    addmssqlcmds(ESqlStatementType.sstmssqlclosesymmetrickey, TBaseType.rrw_close,"symmetric", "key"," "," "," "," ");
2195//commit
2196    addmssqlcmds(ESqlStatementType.sstmssqlcommit, TBaseType.rrw_commit," "," "," "," "," "," ");
2197    addmssqlcmds(ESqlStatementType.sstmssqlcommit, TBaseType.rrw_commit,"work"," "," "," "," "," ");
2198    addmssqlcmds(ESqlStatementType.sstmssqlcommit, TBaseType.rrw_commit,"tran"," "," "," "," "," ");
2199    addmssqlcmds(ESqlStatementType.sstmssqlcommit, TBaseType.rrw_commit,"transaction"," "," "," "," "," ");
2200//continue
2201    addmssqlcmds(ESqlStatementType.sstmssqlcontinue, TBaseType.rrw_continue," "," "," "," "," "," ");
2202// copy into
2203    addmssqlcmds(ESqlStatementType.sstCopyInto, TBaseType.rrw_sqlserver_copyinto,"into"," "," "," "," "," ");
2204//create
2205    addmssqlcmds(ESqlStatementType.sstmssqlcreateaggregate, TBaseType.rrw_create,"aggregate"," "," "," "," "," ");
2206    addmssqlcmds(ESqlStatementType.sstmssqlcreateapplicationrole, TBaseType.rrw_create,"application", "role"," "," "," "," ");
2207    addmssqlcmds(ESqlStatementType.sstmssqlcreateassembly, TBaseType.rrw_create,"assembly"," "," "," "," "," ");
2208    addmssqlcmds(ESqlStatementType.sstmssqlcreateasymmetrickey, TBaseType.rrw_create,"asymmetric", "key"," "," "," "," ");
2209    addmssqlcmds(ESqlStatementType.sstmssqlcreatecertificate, TBaseType.rrw_create,"certificate"," "," "," "," "," ");
2210    addmssqlcmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"clustered","columnstore","index"," "," "," ");
2211    addmssqlcmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"clustered","index"," "," "," "," ");
2212    addmssqlcmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"columnstore","index"," "," "," "," ");
2213    addmssqlcmds(ESqlStatementType.sstmssqlcreatecontract, TBaseType.rrw_create,"contract"," "," "," "," "," ");
2214    addmssqlcmds(ESqlStatementType.sstcreatecredential, TBaseType.rrw_create,"credential"," "," "," "," "," ");
2215    addmssqlcmds(ESqlStatementType.sstcreatedatabase, TBaseType.rrw_create,"database"," "," "," "," "," ");
2216    addmssqlcmds(ESqlStatementType.sstcreatecredential, TBaseType.rrw_create,"database","scoped","credential"," "," "," ");
2217    addmssqlcmds(ESqlStatementType.sstmssqlcreatedefault, TBaseType.rrw_create,"default"," "," "," "," "," ");
2218    addmssqlcmds(ESqlStatementType.sstmssqlcreateendpoint, TBaseType.rrw_create,"endpoint"," "," "," "," "," ");
2219    addmssqlcmds(ESqlStatementType.sstmssqlcreateeventnotification, TBaseType.rrw_create,"event", "notification"," "," "," "," ");
2220    addmssqlcmds(ESqlStatementType.sstmssqlcreateeventsession, TBaseType.rrw_create,"event", "session"," "," "," "," ");
2221    addmssqlcmds(ESqlStatementType.sstmssqlcreateevexternalDataSource, TBaseType.rrw_create,"external", "data","source"," "," "," ");
2222    addmssqlcmds(ESqlStatementType.sstCreateFileFormat, TBaseType.rrw_create,"external","file","format"," "," "," ");
2223    addmssqlcmds(ESqlStatementType.sstmssqlcreateevexternalLanguage, TBaseType.rrw_create,"external", "language"," "," "," "," ");
2224    addmssqlcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"external","table"," "," "," "," ");
2225    addmssqlcmds(ESqlStatementType.sstmssqlcreatefulltextcatalog, TBaseType.rrw_create,"fulltext", "catalog"," "," "," "," ");
2226    addmssqlcmds(ESqlStatementType.sstmssqlcreatefulltextindex, TBaseType.rrw_create,"fulltext", "index"," "," "," "," ");
2227    addmssqlcmds(ESqlStatementType.sstmssqlcreatefunction, TBaseType.rrw_create,"function"," "," "," "," "," ");
2228    addmssqlcmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"index"," "," "," "," "," ");
2229    addmssqlcmds(ESqlStatementType.sstmssqlcreatelogin, TBaseType.rrw_create,"login"," "," "," "," "," ");
2230    addmssqlcmds(ESqlStatementType.sstmssqlcreatemasterkey, TBaseType.rrw_create,"master","key"," "," "," "," ");
2231    addmssqlcmds(ESqlStatementType.sstcreatematerializedview, TBaseType.rrw_create,"materialized","view"," "," "," "," ");
2232
2233    addmssqlcmds(ESqlStatementType.sstmssqlcreatemessagetype, TBaseType.rrw_create,"message","type"," "," "," "," ");
2234    addmssqlcmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"nonclustered","columnstore","index"," "," "," ");
2235    addmssqlcmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"nonclustered","index"," "," "," "," ");
2236
2237    addmssqlcmds(ESqlStatementType.sstmssqlcreatefunction, TBaseType.rrw_create,"or","alter","function"," "," "," ");
2238
2239    addmssqlcmds(ESqlStatementType.sstmssqlcreateprocedure, TBaseType.rrw_create,"or","alter","proc"," "," "," ");
2240    addmssqlcmds(ESqlStatementType.sstmssqlcreateprocedure, TBaseType.rrw_create,"or","alter","procedure"," "," "," ");
2241
2242    addmssqlcmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,"or","alter","view"," "," "," ");
2243    addmssqlcmds(ESqlStatementType.sstmssqlcreatepartitionfunction, TBaseType.rrw_create,"partition","function"," "," "," "," ");
2244    addmssqlcmds(ESqlStatementType.sstmssqlcreatepartitionscheme, TBaseType.rrw_create,"partition","scheme"," "," "," "," ");
2245    addmssqlcmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"primary","xml","index"," "," "," ");
2246    addmssqlcmds(ESqlStatementType.sstmssqlcreateprocedure, TBaseType.rrw_create,"proc"," "," "," "," "," ");
2247    addmssqlcmds(ESqlStatementType.sstmssqlcreateprocedure, TBaseType.rrw_create,"procedure"," "," "," "," "," ");
2248    addmssqlcmds(ESqlStatementType.sstmssqlcreatequeue, TBaseType.rrw_create,"queue"," "," "," "," "," ");
2249    addmssqlcmds(ESqlStatementType.sstmssqlcreateremoteservicebinding, TBaseType.rrw_create,"remote", "service", "binding"," "," "," ");
2250    addmssqlcmds(ESqlStatementType.sstmssqlcreaterole, TBaseType.rrw_create,"role"," "," "," "," "," ");
2251    addmssqlcmds(ESqlStatementType.sstmssqlcreateroute, TBaseType.rrw_create,"route"," "," "," "," "," ");
2252    addmssqlcmds(ESqlStatementType.sstmssqlcreaterule, TBaseType.rrw_create,"rule"," "," "," "," "," ");
2253    addmssqlcmds(ESqlStatementType.sstmssqlcreateschema, TBaseType.rrw_create,"schema"," "," "," "," "," ");
2254    addmssqlcmds(ESqlStatementType.sstmssqlCreateSecurityPolicy, TBaseType.rrw_create, "security", "policy", " ", " ", " ", " ");
2255    addmssqlcmds(ESqlStatementType.sstcreatesequence, TBaseType.rrw_create, "sequence", " ", " ", " ", " ", " ");
2256    addmssqlcmds(ESqlStatementType.sstmssqlcreateservice, TBaseType.rrw_create,"service"," "," "," "," "," ");
2257    addmssqlcmds(ESqlStatementType.sstmssqlcreatestatistics, TBaseType.rrw_create,"statistics"," "," "," "," "," ");
2258    addmssqlcmds(ESqlStatementType.sstmssqlcreatesymmetrickey, TBaseType.rrw_create,"symmetric", "key"," "," "," "," ");
2259    addmssqlcmds(ESqlStatementType.sstmssqlcreatesynonym, TBaseType.rrw_create,"synonym"," "," "," "," "," ");
2260    addmssqlcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"table"," "," "," "," "," ");
2261    addmssqlcmds(ESqlStatementType.sstcreatetrigger, TBaseType.rrw_create,"trigger"," "," "," "," "," ");
2262    addmssqlcmds(ESqlStatementType.sstmssqlcreatetype, TBaseType.rrw_create,"type"," "," "," "," "," ");
2263    addmssqlcmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"unique","clustered","index"," "," "," ");
2264    addmssqlcmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"unique","index"," "," "," "," ");
2265    addmssqlcmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"unique","nonclustered","index"," "," "," ");
2266    addmssqlcmds(ESqlStatementType.sstmssqlcreateuser, TBaseType.rrw_create,"user"," "," "," "," "," ");
2267    addmssqlcmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,"view"," "," "," "," "," ");
2268    addmssqlcmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"xml","index"," "," "," "," ");
2269    addmssqlcmds(ESqlStatementType.sstmssqlcreatexmlschemacollection, TBaseType.rrw_create,"xml", "schema", "collection"," "," "," ");
2270// DBCC
2271    addmssqlcmds(ESqlStatementType.sstmssqldbcc, TBaseType.rrw_dbcc," "," "," "," "," "," ");
2272//DEALLOCATE
2273    addmssqlcmds(ESqlStatementType.sstmssqldeallocate, TBaseType.rrw_deallocate," "," "," "," "," "," ");
2274//DECLARE
2275    addmssqlcmds(ESqlStatementType.sstmssqldeclare, TBaseType.rrw_declare," "," "," "," "," "," ");
2276//DELETE
2277    addmssqlcmds(ESqlStatementType.sstdelete, TBaseType.rrw_delete," "," "," "," "," "," ");
2278//DENY
2279    addmssqlcmds(ESqlStatementType.sstmssqldeny, TBaseType.rrw_deny," "," "," "," "," "," ");
2280//DISABLE TRIGGER
2281    addmssqlcmds(ESqlStatementType.sstmssqldisabletrigger, TBaseType.rrw_disable,"trigger"," "," "," "," "," ");
2282//drop
2283    addmssqlcmds(ESqlStatementType.sstmssqldropaggregate, TBaseType.rrw_drop,"aggregate"," "," "," "," "," ");
2284    addmssqlcmds(ESqlStatementType.sstmssqldropapplicationrole, TBaseType.rrw_drop,"application", "role"," "," "," "," ");
2285    addmssqlcmds(ESqlStatementType.sstmssqldropassembly, TBaseType.rrw_drop,"assembly"," "," "," "," "," ");
2286    addmssqlcmds(ESqlStatementType.sstmssqldropasymmetrickey, TBaseType.rrw_drop,"asymmetric", "key"," "," "," "," ");
2287    addmssqlcmds(ESqlStatementType.sstmssqldropcertificate, TBaseType.rrw_drop,"certificate"," "," "," "," "," ");
2288    addmssqlcmds(ESqlStatementType.sstmssqldropcontract, TBaseType.rrw_drop,"contract"," "," "," "," "," ");
2289    addmssqlcmds(ESqlStatementType.sstmssqldropsignature, TBaseType.rrw_drop,"counter", "signature"," "," "," "," ");
2290    addmssqlcmds(ESqlStatementType.sstmssqldropcredential, TBaseType.rrw_drop,"credential"," "," "," "," "," ");
2291    addmssqlcmds(ESqlStatementType.sstmssqldropdatabase, TBaseType.rrw_drop,"database"," "," "," "," "," ");
2292    addmssqlcmds(ESqlStatementType.sstmssqldropdefault, TBaseType.rrw_drop,"default"," "," "," "," "," ");
2293    addmssqlcmds(ESqlStatementType.sstmssqldropendpoint, TBaseType.rrw_drop,"endpoint"," "," "," "," "," ");
2294    addmssqlcmds(ESqlStatementType.sstmssqldropeventnotification, TBaseType.rrw_drop,"event", "notification"," "," "," "," ");
2295    addmssqlcmds(ESqlStatementType.sstmssqldropeventsession, TBaseType.rrw_drop,"event", "session"," "," "," "," ");
2296    addmssqlcmds(ESqlStatementType.sstmssqldropfulltextcatalog, TBaseType.rrw_drop,"fulltext", "catalog"," "," "," "," ");
2297    addmssqlcmds(ESqlStatementType.sstmssqldropfulltextindex, TBaseType.rrw_drop,"fulltext", "index"," "," "," "," ");
2298    addmssqlcmds(ESqlStatementType.sstmssqldropfunction, TBaseType.rrw_drop,"function"," "," "," "," "," ");
2299    addmssqlcmds(ESqlStatementType.sstmssqldropindex, TBaseType.rrw_drop,"index"," "," "," "," "," ");
2300    addmssqlcmds(ESqlStatementType.sstmssqldroplogin, TBaseType.rrw_drop,"login"," "," "," "," "," ");
2301    addmssqlcmds(ESqlStatementType.sstmssqldropmasterkey, TBaseType.rrw_drop,"master", "key"," "," "," "," ");
2302    addmssqlcmds(ESqlStatementType.sstmssqldropmessagetype, TBaseType.rrw_drop,"message", "type"," "," "," "," ");
2303    addmssqlcmds(ESqlStatementType.sstmssqldroppartitionfunction, TBaseType.rrw_drop,"partition", "function"," "," "," "," ");
2304    addmssqlcmds(ESqlStatementType.sstmssqldroppartitionscheme, TBaseType.rrw_drop,"partition", "scheme"," "," "," "," ");
2305    addmssqlcmds(ESqlStatementType.sstmssqldropprocedure, TBaseType.rrw_drop,"proc"," "," "," "," "," ");
2306    addmssqlcmds(ESqlStatementType.sstmssqldropprocedure, TBaseType.rrw_drop,"procedure"," "," "," "," "," ");
2307    addmssqlcmds(ESqlStatementType.sstmssqldropqueue, TBaseType.rrw_drop,"queue"," "," "," "," "," ");
2308    addmssqlcmds(ESqlStatementType.sstmssqldropremoteservicebinding, TBaseType.rrw_drop,"remote", "service", "binding"," "," "," ");
2309    addmssqlcmds(ESqlStatementType.sstmssqldroprole, TBaseType.rrw_drop,"role"," "," "," "," "," ");
2310    addmssqlcmds(ESqlStatementType.sstmssqldroproute, TBaseType.rrw_drop,"route"," "," "," "," "," ");
2311    addmssqlcmds(ESqlStatementType.sstmssqldroprule, TBaseType.rrw_drop,"rule"," "," "," "," "," ");
2312    addmssqlcmds(ESqlStatementType.sstmssqldropschema, TBaseType.rrw_drop,"schema"," "," "," "," "," ");
2313    addmssqlcmds(ESqlStatementType.sstmssqlDropSecurityPolicy, TBaseType.rrw_drop, "security", "policy", " ", " ", " ", " ");
2314    addmssqlcmds(ESqlStatementType.sstdropsequence, TBaseType.rrw_drop,"sequence"," "," "," "," "," ");
2315    addmssqlcmds(ESqlStatementType.sstmssqldropservice, TBaseType.rrw_drop,"service"," "," "," "," "," ");
2316    addmssqlcmds(ESqlStatementType.sstmssqldropsignature, TBaseType.rrw_drop,"signature"," "," "," "," "," ");
2317    addmssqlcmds(ESqlStatementType.sstmssqldropstatistics, TBaseType.rrw_drop,"statistics"," "," "," "," "," ");
2318    addmssqlcmds(ESqlStatementType.sstmssqldropsymmetrickey, TBaseType.rrw_drop,"symmetric", "key"," "," "," "," ");
2319    addmssqlcmds(ESqlStatementType.sstmssqldropsynonym, TBaseType.rrw_drop,"synonym"," "," "," "," "," ");
2320    addmssqlcmds(ESqlStatementType.sstmssqldroptable, TBaseType.rrw_drop,"table"," "," "," "," "," ");
2321    addmssqlcmds(ESqlStatementType.sstmssqldroptrigger, TBaseType.rrw_drop,"trigger"," "," "," "," "," ");
2322    addmssqlcmds(ESqlStatementType.sstmssqldroptype, TBaseType.rrw_drop,"type"," "," "," "," "," ");
2323    addmssqlcmds(ESqlStatementType.sstmssqldropuser, TBaseType.rrw_drop,"user"," "," "," "," "," ");
2324    addmssqlcmds(ESqlStatementType.sstmssqldropview, TBaseType.rrw_drop,"view"," "," "," "," "," ");
2325    addmssqlcmds(ESqlStatementType.sstmssqldropxmlschemacollection, TBaseType.rrw_drop,"xml", "schema", "collection"," "," "," ");
2326//enable trigger
2327    addmssqlcmds(ESqlStatementType.sstmssqlenabletrigger, TBaseType.rrw_enable,"trigger"," "," "," "," "," ");
2328//END CONVERSATION
2329// AddMssqlCmds(ESqlStatementType.sstMssqlEndCatch,TBaseType.rrw_end,'catch');
2330    addmssqlcmds(ESqlStatementType.sstmssqlendconversation, TBaseType.rrw_end,"conversation"," "," "," "," "," ");
2331// AddMssqlCmds(ESqlStatementType.sstMssqlEndTry,TBaseType.rrw_end,'try');
2332//exec
2333//exec as
2334    addmssqlcmds(ESqlStatementType.sstmssqlexec, TBaseType.rrw_exec," "," "," "," "," "," ");
2335    addmssqlcmds(ESqlStatementType.sstmssqlexecuteas, TBaseType.rrw_exec,"as","caller"," "," "," "," ");
2336    addmssqlcmds(ESqlStatementType.sstmssqlexecuteas, TBaseType.rrw_exec,"as","login"," "," "," "," ");
2337    addmssqlcmds(ESqlStatementType.sstmssqlexecuteas, TBaseType.rrw_exec,"as","user"," "," "," "," ");
2338    addmssqlcmds(ESqlStatementType.sstmssqlexec, TBaseType.rrw_execute, " "," "," "," "," "," ");
2339    addmssqlcmds(ESqlStatementType.sstmssqlexecuteas, TBaseType.rrw_execute,"as","caller"," "," "," "," ");
2340    addmssqlcmds(ESqlStatementType.sstmssqlexecuteas, TBaseType.rrw_execute,"as","login"," "," "," "," ");
2341    addmssqlcmds(ESqlStatementType.sstmssqlexecuteas, TBaseType.rrw_execute,"as","user"," "," "," "," ");
2342//fetch
2343    addmssqlcmds(ESqlStatementType.sstmssqlfetch, TBaseType.rrw_fetch," "," "," "," "," "," ");
2344//go
2345    addmssqlcmds(ESqlStatementType.sstmssqlgo, TBaseType.rrw_go," "," "," "," "," "," ");
2346//goto
2347    addmssqlcmds(ESqlStatementType.sstmssqlgoto, TBaseType.rrw_goto," "," "," "," "," "," ");
2348//GRANT
2349    addmssqlcmds(ESqlStatementType.sstmssqlgrant, TBaseType.rrw_grant," "," "," "," "," "," ");
2350
2351//if
2352    addmssqlcmds(ESqlStatementType.sstmssqlif, TBaseType.rrw_if," "," "," "," "," "," ");
2353
2354//GRANT
2355    addmssqlcmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert," "," "," "," "," "," ");
2356    addmssqlcmds(ESqlStatementType.sstmssqlinsertbulk, TBaseType.rrw_insert,"bulk"," "," "," "," "," ");
2357//KILL
2358    addmssqlcmds(ESqlStatementType.sstmssqlkill, TBaseType.rrw_kill," "," "," "," "," "," ");
2359//KILL
2360    addmssqlcmds(ESqlStatementType.sstmssqlkill, TBaseType.rrw_kill," "," "," "," "," "," ");
2361    addmssqlcmds(ESqlStatementType.sstmssqlkillquerynotificationsubscription, TBaseType.rrw_kill,"kill", "query", "notification", "subscription"," "," ");
2362    addmssqlcmds(ESqlStatementType.sstmssqlkillstats, TBaseType.rrw_kill,"stats"," "," "," "," "," ");
2363
2364//
2365 addmssqlcmds(ESqlStatementType.sstsybaselocktable,TBaseType.rw_locktable,"table"," "," "," "," "," ");
2366//MOVE CONVERSATION
2367    addmssqlcmds(ESqlStatementType.sstmssqlmoveconversation, TBaseType.rrw_move,"conversation"," "," "," "," "," ");
2368//merge
2369    addmssqlcmds(ESqlStatementType.sstmerge, TBaseType.rrw_merge," "," "," "," "," "," ");
2370//open
2371    addmssqlcmds(ESqlStatementType.sstmssqlopen, TBaseType.rrw_open," "," "," "," "," "," ");
2372    addmssqlcmds(ESqlStatementType.sstmssqlopenmasterkey, TBaseType.rrw_open,"master", "key"," "," "," "," ");
2373    addmssqlcmds(ESqlStatementType.sstmssqlopensymmetrickey, TBaseType.rrw_open,"symmetric", "key"," "," "," "," ");
2374//PRINT
2375    addmssqlcmds(ESqlStatementType.sstmssqlprint, TBaseType.rrw_print," "," "," "," "," "," ");
2376//RAISERROR
2377    addmssqlcmds(ESqlStatementType.sstmssqlraiserror, TBaseType.rrw_raiserror," "," "," "," "," "," ");
2378//READTEXT
2379    addmssqlcmds(ESqlStatementType.sstmssqlreadtext, TBaseType.rrw_readtext," "," "," "," "," "," ");
2380//RECEIVE
2381    addmssqlcmds(ESqlStatementType.sstmssqlreceive, TBaseType.rrw_receive," "," "," "," "," "," ");
2382//RECONFIGURE
2383    addmssqlcmds(ESqlStatementType.sstmssqlreconfigure, TBaseType.rrw_reconfigure," "," "," "," "," "," ");
2384//RESTORE
2385    addmssqlcmds(ESqlStatementType.sstmssqlrestoredatabase, TBaseType.rrw_restore,"database"," "," "," "," "," ");
2386    addmssqlcmds(ESqlStatementType.sstmssqlrestorefilelistonly, TBaseType.rrw_restore,"filelistonly"," "," "," "," "," ");
2387    addmssqlcmds(ESqlStatementType.sstmssqlrestoreheaderonly, TBaseType.rrw_restore,"headeronly"," "," "," "," "," ");
2388    addmssqlcmds(ESqlStatementType.sstmssqlrestorelabelonly, TBaseType.rrw_restore,"labelonly"," "," "," "," "," ");
2389    addmssqlcmds(ESqlStatementType.sstmssqlrestorelog, TBaseType.rrw_restore,"log"," "," "," "," "," ");
2390    addmssqlcmds(ESqlStatementType.sstmssqlrestoremasterkey, TBaseType.rrw_restore,"master","key"," "," "," "," ");
2391    addmssqlcmds(ESqlStatementType.sstmssqlrestorerewindonly, TBaseType.rrw_restore,"rewindonly"," "," "," "," "," ");
2392    addmssqlcmds(ESqlStatementType.sstmssqlrestoreservicemasterkey, TBaseType.rrw_restore,"service","master","key"," "," "," ");
2393    addmssqlcmds(ESqlStatementType.sstmssqlrestoreverifyonly, TBaseType.rrw_restore,"verifyonly"," "," "," "," "," ");
2394//RETURN
2395    addmssqlcmds(ESqlStatementType.sstmssqlreturn, TBaseType.rrw_return," "," "," "," "," "," ");
2396//REVERT
2397    addmssqlcmds(ESqlStatementType.sstmssqlrevert, TBaseType.rrw_revert," "," "," "," "," "," ");
2398//REVOKE
2399    addmssqlcmds(ESqlStatementType.sstmssqlrevoke, TBaseType.rrw_revoke," "," "," "," "," "," ");
2400//ROLLBACK
2401    addmssqlcmds(ESqlStatementType.sstmssqlrollback, TBaseType.rrw_rollback," "," "," "," "," "," ");
2402    addmssqlcmds(ESqlStatementType.sstmssqlrollback, TBaseType.rrw_rollback,"tran"," "," "," "," "," ");
2403    addmssqlcmds(ESqlStatementType.sstmssqlrollback, TBaseType.rrw_rollback,"transaction"," "," "," "," "," ");
2404    addmssqlcmds(ESqlStatementType.sstmssqlrollback, TBaseType.rrw_rollback,"work"," "," "," "," "," ");
2405//SAVE
2406    addmssqlcmds(ESqlStatementType.sstmssqlsavetran, TBaseType.rrw_save," "," "," "," "," "," ");
2407    addmssqlcmds(ESqlStatementType.sstmssqlsavetran, TBaseType.rrw_save,"tran"," "," "," "," "," ");
2408    addmssqlcmds(ESqlStatementType.sstmssqlsavetran, TBaseType.rrw_save,"transaction"," "," "," "," "," ");
2409//SELECT
2410    addmssqlcmds(ESqlStatementType.sstselect, TBaseType.rrw_select," "," "," "," "," "," ");
2411//SEND ON CONVERSATION
2412    addmssqlcmds(ESqlStatementType.sstmssqlsendonconversation, TBaseType.rrw_send,"on","conversation"," "," "," "," ");
2413//SET
2414    addmssqlcmds(ESqlStatementType.sstmssqlset, TBaseType.rrw_set," "," "," "," "," "," ");
2415//SET rowcount
2416    addmssqlcmds(ESqlStatementType.sstmssqlsetrowcount, TBaseType.rrw_set,"rowcount"," "," "," "," "," ");
2417//SET
2418    addmssqlcmds(ESqlStatementType.sstmssqlsetuser,TBaseType.rrw_setuser," "," "," "," "," "," ");
2419//SHUTDOWN
2420    addmssqlcmds(ESqlStatementType.sstmssqlshutdown, TBaseType.rrw_shutdown," "," "," "," "," "," ");
2421//SIGN
2422//    addmssqlcmds(ESqlStatementType.sstmssqlsign, rrw_sign," "," "," "," "," "," ");
2423
2424//throw
2425    addmssqlcmds(ESqlStatementType.sstmssqlthrow, TBaseType.rrw_sqlserver_throw," "," "," "," "," "," ");
2426
2427//TRUNCATE TABLE
2428    addmssqlcmds(ESqlStatementType.sstmssqltruncatetable, TBaseType.rrw_truncate,"table"," "," "," "," "," ");
2429//UPDATE
2430    addmssqlcmds(ESqlStatementType.sstupdate, TBaseType.rrw_update," "," "," "," "," "," ");
2431//UPDATE STATISTICS
2432    addmssqlcmds(ESqlStatementType.sstmssqlupdatestatistics, TBaseType.rrw_update,"statistics"," "," "," "," "," ");
2433//UPDATETEXT
2434    addmssqlcmds(ESqlStatementType.sstmssqlupdatetext, TBaseType.rrw_updatetext," "," "," "," "," "," ");
2435//USE
2436    addmssqlcmds(ESqlStatementType.sstmssqluse, TBaseType.rrw_use," "," "," "," "," "," ");
2437//WAITFOR
2438    addmssqlcmds(ESqlStatementType.sstmssqlwaitfor, TBaseType.rrw_waitfor," "," "," "," "," "," ");
2439//WHILE
2440    addmssqlcmds(ESqlStatementType.sstmssqlwhile, TBaseType.rrw_while," "," "," "," "," "," ");
2441//WITH, don't recongize here, let isMssqlSql do it
2442// AddMssqlCmds(ESqlStatementType.sstMssqlCTE,rrw_WITH,' ');
2443//WITH XMLNAMESPACES
2444  //  addmssqlcmds(ESqlStatementType.sstmssqlwithxmlnamespaces, TBaseType.rrw_with,"xmlnamespaces"," "," "," "," "," ");
2445//WRITETEXT
2446    addmssqlcmds(ESqlStatementType.sstmssqlwritetext, TBaseType.rrw_writetext," "," "," "," "," "," ");
2447
2448}
2449
2450void initdb2cmds(){
2451// cmd must be sort alphabetically
2452    adddb2cmds(ESqlStatementType.sstdb2allocatecursor, TBaseType.rrw_allocate,"cursor"," "," "," "," "," ");
2453    adddb2cmds(ESqlStatementType.sstdb2alterbufferpool, TBaseType.rrw_alter,"bufferpool"," "," "," "," "," ");
2454    adddb2cmds(ESqlStatementType.sstdb2alterdatabasepartitiongroup, TBaseType.rrw_alter,"database", "partition", "group"," "," "," ");
2455    adddb2cmds(ESqlStatementType.sstdb2alterfunction, TBaseType.rrw_alter,"function"," "," "," "," "," ");
2456    adddb2cmds(ESqlStatementType.sstdb2altermethod, TBaseType.rrw_alter,"method"," "," "," "," "," ");
2457    adddb2cmds(ESqlStatementType.sstdb2alternickname, TBaseType.rrw_alter,"nickname"," "," "," "," "," ");
2458    adddb2cmds(ESqlStatementType.sstdb2alterprocedure, TBaseType.rrw_alter,"procedure"," "," "," "," "," ");
2459    adddb2cmds(ESqlStatementType.sstdb2altersequence, TBaseType.rrw_alter,"sequence"," "," "," "," "," ");
2460    adddb2cmds(ESqlStatementType.sstdb2alterserver, TBaseType.rrw_alter,"server"," "," "," "," "," ");
2461    adddb2cmds(ESqlStatementType.sstaltertable, TBaseType.rrw_alter,"table"," "," "," "," "," ");
2462    adddb2cmds(ESqlStatementType.sstdb2altertablespace, TBaseType.rrw_alter,"tablespace"," "," "," "," "," ");
2463    adddb2cmds(ESqlStatementType.sstdb2altertype, TBaseType.rrw_alter,"type"," "," "," "," "," ");
2464    adddb2cmds(ESqlStatementType.sstdb2alterusermapping, TBaseType.rrw_alter,"user","mapping"," "," "," "," ");
2465    adddb2cmds(ESqlStatementType.sstdb2alterview, TBaseType.rrw_alter,"view"," "," "," "," "," ");
2466    adddb2cmds(ESqlStatementType.sstdb2alterwrapper, TBaseType.rrw_alter,"wrapper"," "," "," "," "," ");
2467    adddb2cmds(ESqlStatementType.sstdb2associatelocators, TBaseType.rrw_associate,"locators"," "," "," "," "," ");
2468    adddb2cmds(ESqlStatementType.sstdb2begindeclaresection, TBaseType.rrw_begin,"declare", "section"," "," "," "," ");
2469    adddb2cmds(ESqlStatementType.sstdb2call, TBaseType.rrw_call," "," "," "," "," "," ");
2470    adddb2cmds(ESqlStatementType.sstdb2case, TBaseType.rrw_case," "," "," "," "," "," ");
2471    adddb2cmds(ESqlStatementType.sstdb2close, TBaseType.rrw_close," "," "," "," "," "," ");
2472    adddb2cmds(ESqlStatementType.sstdb2comment, TBaseType.rrw_comment," "," "," "," "," "," ");
2473    adddb2cmds(ESqlStatementType.sstdb2commit, TBaseType.rrw_commit," "," "," "," "," "," ");
2474    adddb2cmds(ESqlStatementType.sstdb2connect, TBaseType.rrw_connect," "," "," "," "," "," ");
2475    adddb2cmds(ESqlStatementType.sstdb2createalias, TBaseType.rrw_create,"alias"," "," "," "," "," ");
2476    adddb2cmds(ESqlStatementType.sstcreateauditpolicy, TBaseType.rrw_create,"audit","policy"," "," "," "," ");
2477    adddb2cmds(ESqlStatementType.sstdb2createbufferpool, TBaseType.rrw_create,"bufferpool"," "," "," "," "," ");
2478    adddb2cmds(ESqlStatementType.sstcreatedatabase, TBaseType.rrw_create,"database", " ", " "," "," "," ");
2479    adddb2cmds(ESqlStatementType.sstdb2createdatabasepartitiongroup, TBaseType.rrw_create,"database", "partition", "group"," "," "," ");
2480    adddb2cmds(ESqlStatementType.sstdb2createdistincttype, TBaseType.rrw_create,"distinct", "type"," "," "," "," ");
2481    adddb2cmds(ESqlStatementType.sstdb2createeventmonitor, TBaseType.rrw_create,"eventmonitor"," "," "," "," "," ");
2482    adddb2cmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create,"function"," "," "," "," "," ");
2483    adddb2cmds(ESqlStatementType.sstdb2createfunctionmapping, TBaseType.rrw_create,"function", "mapping"," "," "," "," ");
2484    adddb2cmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"global","temporary","table"," "," "," ");
2485    adddb2cmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"index"," "," "," "," "," ");
2486    adddb2cmds(ESqlStatementType.sstdb2createindexextension, TBaseType.rrw_create,"index", "extension"," "," "," "," ");
2487    adddb2cmds(ESqlStatementType.sstcreateTablespace, TBaseType.rrw_create,"large","tablespace"," "," "," "," ");
2488    adddb2cmds(ESqlStatementType.sstdb2createmethod, TBaseType.rrw_create,"method"," "," "," "," "," ");
2489    adddb2cmds(ESqlStatementType.sstdb2createnickname, TBaseType.rrw_create,"nickname"," "," "," "," "," ");
2490    adddb2cmds(ESqlStatementType.sstdb2createalias, TBaseType.rrw_create,"or","replace","alias"," "," "," ");
2491    adddb2cmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create,"or","replace","function"," "," "," ");
2492    adddb2cmds(ESqlStatementType.sstcreateprocedure, TBaseType.rrw_create,"or","replace","procedure"," "," "," ");
2493    adddb2cmds(ESqlStatementType.sstdb2createalias, TBaseType.rrw_create,"or","replace","public","alias"," "," ");
2494    adddb2cmds(ESqlStatementType.sstdb2createtrigger, TBaseType.rrw_create,"or","replace","trigger"," "," "," ");
2495    adddb2cmds(ESqlStatementType.sstdb2createvariable, TBaseType.rrw_create,"or","replace","variable"," "," "," ");
2496    adddb2cmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,"or","replace","view"," "," "," ");
2497    adddb2cmds(ESqlStatementType.sstcreateprocedure, TBaseType.rrw_create,"procedure"," "," "," "," "," ");
2498    adddb2cmds(ESqlStatementType.sstdb2createalias, TBaseType.rrw_create,"public","alias"," "," "," "," ");
2499    adddb2cmds(ESqlStatementType.sstcreatesynonym, TBaseType.rrw_create,"public","synonym"," "," "," "," ");
2500    adddb2cmds(ESqlStatementType.sstcreaterole, TBaseType.rrw_create,"role"," "," "," "," "," ");
2501    adddb2cmds(ESqlStatementType.sstdb2createschema, TBaseType.rrw_create,"schema"," "," "," "," "," ");
2502    adddb2cmds(ESqlStatementType.sstdb2createsequence, TBaseType.rrw_create,"sequence"," "," "," "," "," ");
2503    adddb2cmds(ESqlStatementType.sstdb2createserver, TBaseType.rrw_create,"server"," "," "," "," "," ");
2504    adddb2cmds(ESqlStatementType.sstdb2createstogroup, TBaseType.rrw_create,"stogroup"," "," "," "," "," ");
2505    adddb2cmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"summary","table"," "," "," "," ");
2506    adddb2cmds(ESqlStatementType.sstcreatesynonym, TBaseType.rrw_create,"synonym"," "," "," "," "," ");
2507    adddb2cmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"table"," "," "," "," "," ");
2508    adddb2cmds(ESqlStatementType.sstcreateTablespace, TBaseType.rrw_create,"tablespace"," "," "," "," "," ");
2509    adddb2cmds(ESqlStatementType.sstdb2createtransform, TBaseType.rrw_create,"transform"," "," "," "," "," ");
2510    adddb2cmds(ESqlStatementType.sstdb2createtrigger, TBaseType.rrw_create,"trigger"," "," "," "," "," ");
2511    adddb2cmds(ESqlStatementType.sstdb2createtype, TBaseType.rrw_create,"type"," "," "," "," "," ");
2512    adddb2cmds(ESqlStatementType.sstdb2createtypemapping, TBaseType.rrw_create,"type", "mapping"," "," "," "," ");
2513    adddb2cmds(ESqlStatementType.sstdb2createusermapping, TBaseType.rrw_create,"user", "mapping"," "," "," "," ");
2514    adddb2cmds(ESqlStatementType.sstdb2createvariable, TBaseType.rrw_create,"variable"," "," "," "," "," ");
2515    adddb2cmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,"view"," "," "," "," "," ");
2516    adddb2cmds(ESqlStatementType.sstdb2createwrapper, TBaseType.rrw_create,"wrapper"," "," "," "," "," ");
2517    adddb2cmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"*","index"," "," "," "," ");
2518    adddb2cmds(ESqlStatementType.sstdb2declareglobaltemporarytable, TBaseType.rrw_declare, "global", "temporary", "table"," "," "," ");
2519    adddb2cmds(ESqlStatementType.sstdb2declarecursor, TBaseType.rrw_declare,"*","cursor"," "," "," "," ");
2520    adddb2cmds(ESqlStatementType.sstdelete, TBaseType.rrw_delete," "," "," "," "," "," ");
2521    adddb2cmds(ESqlStatementType.sstdb2describe, TBaseType.rrw_describe," "," "," "," "," "," ");
2522    adddb2cmds(ESqlStatementType.sstdb2disconnect, TBaseType.rrw_disconnect," "," "," "," "," "," ");
2523    adddb2cmds(ESqlStatementType.sstdb2drop, TBaseType.rrw_drop," "," "," "," "," "," ");
2524    adddb2cmds(ESqlStatementType.sstdropindex, TBaseType.rrw_drop,"index"," "," "," "," "," ");
2525    adddb2cmds(ESqlStatementType.sstdroptable, TBaseType.rrw_drop,"table"," "," "," "," "," ");
2526    adddb2cmds(ESqlStatementType.sstdropview, TBaseType.rrw_drop,"view"," "," "," "," "," ");
2527    adddb2cmds(ESqlStatementType.sstdb2enddeclaresection, TBaseType.rrw_end,"declare","section"," "," "," "," ");
2528    adddb2cmds(ESqlStatementType.sstdb2execute, TBaseType.rrw_execute," "," "," "," "," "," ");
2529    adddb2cmds(ESqlStatementType.sstdb2executeimmediate, TBaseType.rrw_execute,"immediate"," "," "," "," "," ");
2530    adddb2cmds(ESqlStatementType.sstdb2explain, TBaseType.rrw_explain," "," "," "," "," "," ");
2531    adddb2cmds(ESqlStatementType.sstdb2fetch, TBaseType.rrw_fetch," "," "," "," "," "," ");
2532    adddb2cmds(ESqlStatementType.sstdb2flusheventmonitor, TBaseType.rrw_flush, "event", "monitor"," "," "," "," ");
2533    adddb2cmds(ESqlStatementType.sstdb2flushpackagecache, TBaseType.rrw_flush,"package", "cache"," "," "," "," ");
2534    adddb2cmds(ESqlStatementType.sstdb2for, TBaseType.rrw_for," "," "," "," "," "," ");
2535    adddb2cmds(ESqlStatementType.sstdb2freelocator, TBaseType.rrw_free,"locator"," "," "," "," "," ");
2536    adddb2cmds(ESqlStatementType.sstgetdiagnostics, TBaseType.rrw_get,"diagnostics"," "," "," "," "," ");
2537    adddb2cmds(ESqlStatementType.sstdb2goto, TBaseType.rrw_goto," "," "," "," "," "," ");
2538    adddb2cmds(ESqlStatementType.sstdb2grant, TBaseType.rrw_grant," "," "," "," "," "," ");
2539    adddb2cmds(ESqlStatementType.sstdb2if, TBaseType.rrw_if," "," "," "," "," "," ");
2540    adddb2cmds(ESqlStatementType.sstdb2include, TBaseType.rrw_include," "," "," "," "," "," ");
2541    adddb2cmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert," "," "," "," "," "," ");
2542    adddb2cmds(ESqlStatementType.sstdb2iterate, TBaseType.rrw_iterate," "," "," "," "," "," ");
2543    adddb2cmds(ESqlStatementType.sstdb2labelOn, TBaseType.rrw_db2_label,"on"," "," "," "," "," ");
2544    adddb2cmds(ESqlStatementType.sstdb2leave, TBaseType.rrw_leave," "," "," "," "," "," ");
2545    adddb2cmds(ESqlStatementType.sstdb2locktable, TBaseType.rrw_lock,"table"," "," "," "," "," ");
2546    adddb2cmds(ESqlStatementType.sstdb2loop, TBaseType.rrw_loop," "," "," "," "," "," ");
2547    adddb2cmds(ESqlStatementType.sstmerge, TBaseType.rrw_merge," "," "," "," "," "," ");
2548    adddb2cmds(ESqlStatementType.sstdb2open, TBaseType.rrw_open," "," "," "," "," "," ");
2549    adddb2cmds(ESqlStatementType.sstdb2prepare, TBaseType.rrw_prepare," "," "," "," "," "," ");
2550    adddb2cmds(ESqlStatementType.sstdb2refreshtable, TBaseType.rrw_refresh,"table"," "," "," "," "," ");
2551    adddb2cmds(ESqlStatementType.sstdb2release, TBaseType.rrw_release," "," "," "," "," "," ");
2552    adddb2cmds(ESqlStatementType.sstdb2releasesavepoint, TBaseType.rrw_release,"savepoint"," "," "," "," "," ");
2553    adddb2cmds(ESqlStatementType.sstdb2rename, TBaseType.rrw_rename," "," "," "," "," "," ");
2554    adddb2cmds(ESqlStatementType.sstdb2renametablespace, TBaseType.rrw_rename,"tablespace"," "," "," "," "," ");
2555    adddb2cmds(ESqlStatementType.sstdb2repeat, TBaseType.rrw_repeat," "," "," "," "," "," ");
2556    adddb2cmds(ESqlStatementType.sstdb2resignal, TBaseType.rrw_resignal," "," "," "," "," "," ");
2557    adddb2cmds(ESqlStatementType.sstdb2return, TBaseType.rrw_return," "," "," "," "," "," ");
2558    adddb2cmds(ESqlStatementType.sstdb2revoke, TBaseType.rrw_revoke," "," "," "," "," "," ");
2559    adddb2cmds(ESqlStatementType.sstdb2rollback, TBaseType.rrw_rollback," "," "," "," "," "," ");
2560    adddb2cmds(ESqlStatementType.sstRunStats, TBaseType.rrw_db2_runstats," "," "," "," "," "," ");
2561    adddb2cmds(ESqlStatementType.sstdb2savepoint, TBaseType.rrw_savepoint," "," "," "," "," "," ");
2562    adddb2cmds(ESqlStatementType.sstselect, TBaseType.rrw_select," "," "," "," "," "," ");
2563    adddb2cmds(ESqlStatementType.sstdb2setconnection, TBaseType.rrw_set,"connection"," "," "," "," "," ");
2564    adddb2cmds(ESqlStatementType.sstdb2set, TBaseType.rrw_set," "," "," "," "," "," ");
2565    adddb2cmds(ESqlStatementType.sstdb2setconnection, TBaseType.rrw_set,"connection"," "," "," "," "," ");
2566    adddb2cmds(ESqlStatementType.sstdb2setcurrentdefaulttransformgroup, TBaseType.rrw_set,"current default transform group"," "," "," "," "," ");
2567    adddb2cmds(ESqlStatementType.sstdb2setcurrentdegree, TBaseType.rrw_set,"current", "degree"," "," "," "," ");
2568    adddb2cmds(ESqlStatementType.sstdb2setcurrentexplainmode, TBaseType.rrw_set,"current", "explain", "mode"," "," "," ");
2569    adddb2cmds(ESqlStatementType.sstdb2setcurrentexplainsnapshot, TBaseType.rrw_set,"current", "explain", "snapshot"," "," "," ");
2570    adddb2cmds(ESqlStatementType.sstdb2setcurrentisolation, TBaseType.rrw_set,"current", "isolation"," "," "," "," ");
2571    adddb2cmds(ESqlStatementType.sstdb2setcurrentlocktimeout, TBaseType.rrw_set,"current", "lock", "timeout"," "," "," ");
2572    adddb2cmds(ESqlStatementType.sstdb2setcurrentmaintainedtabletypesforoptimization, TBaseType.rrw_set,"current", "maintained", "table", "types"," "," ");
2573    adddb2cmds(ESqlStatementType.sstdb2setcurrentpackagepath, TBaseType.rrw_set,"current", "package", "path"," "," "," ");
2574    adddb2cmds(ESqlStatementType.sstdb2setcurrentpackageset, TBaseType.rrw_set,"current", "packageset"," "," "," "," ");
2575    adddb2cmds(ESqlStatementType.sstdb2setcurrentqueryoptimization, TBaseType.rrw_set,"current", "query", "optimization"," "," "," ");
2576    adddb2cmds(ESqlStatementType.sstdb2setcurrentrefreshage, TBaseType.rrw_set,"current", "refresh", "age"," "," "," ");
2577    adddb2cmds(ESqlStatementType.sstdb2setschema, TBaseType.rrw_set,"current","schema"," "," "," "," ");
2578    adddb2cmds(ESqlStatementType.sstdb2setencryptionpassword, TBaseType.rrw_set,"encryption", "password"," "," "," "," ");
2579    adddb2cmds(ESqlStatementType.sstdb2seteventmonitorstate, TBaseType.rrw_set,"event", "monitor", "state"," "," "," ");
2580    adddb2cmds(ESqlStatementType.sstdb2setintegrity, TBaseType.rrw_set,"integrity"," "," "," "," "," ");
2581    adddb2cmds(ESqlStatementType.sstdb2setpassthru, TBaseType.rrw_set,"passthru"," "," "," "," "," ");
2582    adddb2cmds(ESqlStatementType.sstdb2setpath, TBaseType.rrw_set,"path"," "," "," "," "," ");
2583    adddb2cmds(ESqlStatementType.sstdb2setschema, TBaseType.rrw_set,"schema"," "," "," "," "," ");
2584    adddb2cmds(ESqlStatementType.sstdb2setserveroption, TBaseType.rrw_set,"server", "option"," "," "," "," ");
2585    adddb2cmds(ESqlStatementType.sstdb2setsessionauthorization, TBaseType.rrw_set,"session", "authorization"," "," "," "," ");
2586    adddb2cmds(ESqlStatementType.sstdb2signal, TBaseType.rrw_signal," "," "," "," "," "," ");
2587    adddb2cmds(ESqlStatementType.sstdb2terminate, TBaseType.rrw_terminate," "," "," "," "," "," ");
2588//TRUNCATE TABLE
2589    adddb2cmds(ESqlStatementType.ssttruncatetable, TBaseType.rrw_truncate," "," "," "," "," "," ");
2590
2591    adddb2cmds(ESqlStatementType.sstupdate, TBaseType.rrw_update," "," "," "," "," "," ");
2592    adddb2cmds(ESqlStatementType.sstdb2updateCommand, TBaseType.rrw_update,"command"," "," "," "," "," ");
2593// AddDB2Cmds(sstDB2VALUES,rrw_VALUES);
2594// AddDB2Cmds(sstDB2WHENEVER,rrw_WHENEVER);
2595    adddb2cmds(ESqlStatementType.sstdb2while, TBaseType.rrw_while," "," "," "," "," "," ");
2596
2597}
2598
2599void initnetezzacmds(){
2600    addnetezzacmds(ESqlStatementType.sstAlterSchema, TBaseType.rrw_alter, "schema", " ", " ", " ", " ", " ");
2601    addnetezzacmds(ESqlStatementType.sstnetezzaAlterDatabase, TBaseType.rrw_alter, "database", " ", " ", " ", " ", " ");
2602    addnetezzacmds(ESqlStatementType.sstnetezzaAlterGroup, TBaseType.rrw_alter, "group", " ", " ", " ", " ", " ");
2603    addnetezzacmds(ESqlStatementType.sstnetezzaAlterHistoryConfiguration, TBaseType.rrw_alter, "history", " ", " ", " ", " ", " ");
2604    addnetezzacmds(ESqlStatementType.sstnetezzaAlterSequence, TBaseType.rrw_alter, "sequence", " ", " ", " ", " ", " ");
2605    addnetezzacmds(ESqlStatementType.sstaltersession, TBaseType.rrw_alter, "session", " ", " ", " ", " ", " ");
2606    addnetezzacmds(ESqlStatementType.sstAlterSynonym, TBaseType.rrw_alter, "synonym", " ", " ", " ", " ", " ");
2607    addnetezzacmds(ESqlStatementType.sstnetezzaAlterTable, TBaseType.rrw_alter, "table", " ", " ", " ", " ", " ");
2608    addnetezzacmds(ESqlStatementType.sstnetezzaAlterUser, TBaseType.rrw_alter, "user", " ", " ", " ", " ", " ");
2609    addnetezzacmds(ESqlStatementType.sstnetezzaAlterView, TBaseType.rrw_alter, "view", " ", " ", " ", " ", " ");
2610    addnetezzacmds(ESqlStatementType.sstnetezzaAlterView, TBaseType.rrw_alter, "views", " ", " ", " ", " ", " ");
2611    addnetezzacmds(ESqlStatementType.sstnetezzaBegin, TBaseType.rrw_begin, " ", " ", " ", " ", " ", " ");
2612    addnetezzacmds(ESqlStatementType.sstcall, TBaseType.rrw_call, " ", " ", " ", " ", " ", " ");
2613    addnetezzacmds(ESqlStatementType.sstnetezzaComment, TBaseType.rrw_comment, " ", " ", " ", " ", " ", " ");
2614    addnetezzacmds(ESqlStatementType.sstnetezzaCommit, TBaseType.rrw_commit, " ", " ", " ", " ", " ", " ");
2615    addnetezzacmds(ESqlStatementType.sstnetezzaCopy, TBaseType.rrw_netezza_copy, " ", " ", " ", " ", " ", " ");
2616    addnetezzacmds(ESqlStatementType.sstcreatedatabase, TBaseType.rrw_create, "database", " ", " ", " ", " ", " ");
2617    addnetezzacmds(ESqlStatementType.sstnetezzaCreateExternalTable, TBaseType.rrw_create, "external", "table", " ", " ", " ", " ");
2618    addnetezzacmds(ESqlStatementType.sstnetezzaCreateGruop, TBaseType.rrw_create, "group", " ", " ", " ", " ", " ");
2619    addnetezzacmds(ESqlStatementType.sstnetezzaCreateHistoryConfiguration, TBaseType.rrw_create, "history", "configuration", " ", " ", " ", " ");
2620    addnetezzacmds(ESqlStatementType.sstcreatematerializedview, TBaseType.rrw_create, "materialized", "view", " ", " ", " ", " ");
2621    addnetezzacmds(ESqlStatementType.sstcreatematerializedview, TBaseType.rrw_create, "or", "replace", "materialized", "view", " ", " ");
2622    addnetezzacmds(ESqlStatementType.sstcreateprocedure, TBaseType.rrw_create, "or", "replace", "procedure", " ", " ", " ");
2623    addnetezzacmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create, "or", "replace", "view", " ", " ", " ");
2624    addnetezzacmds(ESqlStatementType.sstcreateprocedure, TBaseType.rrw_create, "procedure", " ", " ", " ", " ", " ");
2625    addnetezzacmds(ESqlStatementType.sstcreatesequence, TBaseType.rrw_create, "sequence", " ", " ", " ", " ", " ");
2626    addnetezzacmds(ESqlStatementType.sstcreatesynonym, TBaseType.rrw_create, "synonym", " ", " ", " ", " ", " ");
2627    addnetezzacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "table", " ", " ", " ", " ", " ");
2628    addnetezzacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "temp", "table", " ", " ", " ", " ");
2629    addnetezzacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "temporary", "table", " ", " ", " ", " ");
2630    addnetezzacmds(ESqlStatementType.sstnetezzaCreateUser, TBaseType.rrw_create, "user", " ", " ", " ", " ", " ");
2631    addnetezzacmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create, "view", " ", " ", " ", " ", " ");
2632//    addnetezzacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "volatile", "table", " ", " ", " ", " ");
2633    addnetezzacmds(ESqlStatementType.sstdelete, TBaseType.rrw_delete , " ", " ", " ", " ", " ", " ");
2634    addnetezzacmds(ESqlStatementType.sstnetezzaDropConnection, TBaseType.rrw_drop, "connection", " ", " ", " ", " ", " ");
2635    addnetezzacmds(ESqlStatementType.sstdropdatabase, TBaseType.rrw_drop, "database", " ", " ", " ", " ", " ");
2636    addnetezzacmds(ESqlStatementType.sstnetezzaDropGroup, TBaseType.rrw_drop, "group", " ", " ", " ", " ", " ");
2637    addnetezzacmds(ESqlStatementType.sstnetezzaDropHistoryConfiguration, TBaseType.rrw_drop, "history", "configuration", " ", " ", " ", " ");
2638    addnetezzacmds(ESqlStatementType.sstdropprocedure, TBaseType.rrw_drop, "procedure", " ", " ", " ", " ", " ");
2639    addnetezzacmds(ESqlStatementType.sstnetezzaDropSchema, TBaseType.rrw_drop, "schema", " ", " ", " ", " ", " ");
2640    addnetezzacmds(ESqlStatementType.sstnetezzaDropSequence, TBaseType.rrw_drop, "sequence", " ", " ", " ", " ", " ");
2641    addnetezzacmds(ESqlStatementType.sstnetezzaDropSession, TBaseType.rrw_drop, "session", " ", " ", " ", " ", " ");
2642    addnetezzacmds(ESqlStatementType.sstdropsynonym, TBaseType.rrw_drop, "synonym", " ", " ", " ", " ", " ");
2643    addnetezzacmds(ESqlStatementType.sstnetezzaDropTable, TBaseType.rrw_drop, "table", " ", " ", " ", " ", " ");
2644    addnetezzacmds(ESqlStatementType.sstnetezzaDropUser, TBaseType.rrw_drop, "user", " ", " ", " ", " ", " ");
2645    addnetezzacmds(ESqlStatementType.sstnetezzaDropView, TBaseType.rrw_drop, "view", " ", " ", " ", " ", " ");
2646    addnetezzacmds(ESqlStatementType.sstexecutestmt, TBaseType.rrw_exec, " ", " ", " ", " ", " ", " ");
2647    addnetezzacmds(ESqlStatementType.sstexecutestmt, TBaseType.rrw_execute, " ", " ", " ", " ", " ", " ");
2648    addnetezzacmds(ESqlStatementType.sstExplain, TBaseType.rrw_explain, " ", " ", " ", " ", " ", " ");
2649    addnetezzacmds(ESqlStatementType.sstnetezzaGenerateStatistics, TBaseType.rrw_netezza_generate, "express", "statistics", " ", " ", " ", " ");
2650    addnetezzacmds(ESqlStatementType.sstnetezzaGenerateStatistics, TBaseType.rrw_netezza_generate, "statistics", " ", " ", " ", " ", " ");
2651    addnetezzacmds(ESqlStatementType.sstnetezzaGrant, TBaseType.rrw_grant, " ", " ", " ", " ", " ", " ");
2652    addnetezzacmds(ESqlStatementType.sstnetezzaGroomTable, TBaseType.rrw_netezza_groom, "table", " ", " ", " ", " ", " ");
2653    addnetezzacmds(ESqlStatementType.sstlocktable, TBaseType.rrw_lock, "table", " ", " ", " ", " ", " ");
2654    addnetezzacmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert, " ", " ", " ", " ", " ", " ");
2655    addnetezzacmds(ESqlStatementType.sstmerge, TBaseType.rrw_merge, " ", " ", " ", " ", " ", " ");
2656    addnetezzacmds(ESqlStatementType.sstnetezzaReset, TBaseType.rrw_reset, " ", " ", " ", " ", " ", " ");
2657    addnetezzacmds(ESqlStatementType.sstnetezzaRevoke, TBaseType.rrw_revoke, " ", " ", " ", " ", " ", " ");
2658    addnetezzacmds(ESqlStatementType.sstnetezzaRollback, TBaseType.rrw_rollback, " ", " ", " ", " ", " ", " ");
2659    addnetezzacmds(ESqlStatementType.sstselect, TBaseType.rrw_select, " ", " ", " ", " ", " ", " ");
2660    addnetezzacmds(ESqlStatementType.sstnetezzaSet, TBaseType.rrw_set, " ", " ", " ", " ", " ", " ");
2661    addnetezzacmds(ESqlStatementType.sstSetCatalog, TBaseType.rrw_set, "catalog", " ", " ", " ", " ", " ");
2662    addnetezzacmds(ESqlStatementType.sstSetSchema, TBaseType.rrw_set, "schema", " ", " ", " ", " ", " ");
2663    addnetezzacmds(ESqlStatementType.sstnetezzaShow, TBaseType.rrw_show, " ", " ", " ", " ", " ", " ");
2664    addnetezzacmds(ESqlStatementType.sstTruncate, TBaseType.rrw_truncate, " ", " ", " ", " ", " ", " ");
2665    addnetezzacmds(ESqlStatementType.sstupdate, TBaseType.rrw_update, " ", " ", " ", " ", " ", " ");
2666}
2667    void initgaussdbcmds(){
2668// cmd must be sorted alphabetically
2669        addgaussdbcmds(ESqlStatementType.sstpostgresqlabort, TBaseType.rrw_abort, " ", " ", " ", " ", " ", " ");
2670        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterAggregate, TBaseType.rrw_alter, "aggregate", " ", " ", " ", " ", " ");
2671        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterCollation, TBaseType.rrw_alter, "collation", " ", " ", " ", " ", " ");
2672        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterConversion, TBaseType.rrw_alter, "conversion", " ", " ", " ", " ", " ");
2673        addgaussdbcmds(ESqlStatementType.sstpostgresqlalterdatabase, TBaseType.rrw_alter, "database", " ", " ", " ", " ", " ");
2674        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterDefaultPrivileges, TBaseType.rrw_alter, "default", "privileges", " ", " ", " ", " ");
2675        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterDomain, TBaseType.rrw_alter, "domain", " ", " ", " ", " ", " ");
2676        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterEventTrigger, TBaseType.rrw_alter, "event", "trigger", " ", " ", " ", " ");
2677        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterExtension, TBaseType.rrw_alter, "extension", " ", " ", " ", " ", " ");
2678        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterForeignDataWrapper, TBaseType.rrw_alter, "foreign", "data", "wrapper", " ", " ", " ");
2679        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterForeignTable, TBaseType.rrw_alter, "foreign", "Table", " ", " ", " ", " ");
2680
2681        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterfunction, TBaseType.rrw_alter, "function", " ", " ", " ", " ", " ");
2682        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterGroup, TBaseType.rrw_alter, "group", " ", " ", " ", " ", " ");
2683        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterIndex, TBaseType.rrw_alter, "index", " ", " ", " ", " ", " ");
2684        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterLanguage, TBaseType.rrw_alter, "language", " ", " ", " ", " ", " ");
2685        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterLargeObject, TBaseType.rrw_alter, "large", "object", " ", " ", " ", " ");
2686        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterMaterializedView, TBaseType.rrw_alter, "materialized", "view", " ", " ", " ", " ");
2687        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterOperator, TBaseType.rrw_alter, "operator", " ", " ", " ", " ", " ");
2688        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterOperatorClass, TBaseType.rrw_alter, "operator", "class", " ", " ", " ", " ");
2689        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterOperatorFamily, TBaseType.rrw_alter, "operator", "family", " ", " ", " ", " ");
2690        addgaussdbcmds(ESqlStatementType.sstAlterPackage, TBaseType.rrw_alter, "package", " ", " ", " ", " ", " ");
2691        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterPolicy, TBaseType.rrw_alter, "policy", " ", " ", " ", " ", " ");
2692        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterLanguage, TBaseType.rrw_alter, "procedural", "language", " ", " ", " ", " ");
2693        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterProcedure, TBaseType.rrw_alter, "procedure", " ", " ", " ", " ", " ");
2694        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterPublication, TBaseType.rrw_alter, "publication", " ", " ", " ", " ", " ");
2695        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterRole, TBaseType.rrw_alter, "role", " ", " ", " ", " ", " ");
2696        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterRoutine, TBaseType.rrw_alter, "routine", " ", " ", " ", " ", " ");
2697        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterRule, TBaseType.rrw_alter, "rule", " ", " ", " ", " ", " ");
2698        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterSchema, TBaseType.rrw_alter, "schema", " ", " ", " ", " ", " ");
2699        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterSequence, TBaseType.rrw_alter, "sequence", " ", " ", " ", " ", " ");
2700        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterServer, TBaseType.rrw_alter, "server", " ", " ", " ", " ", " ");
2701        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterStatistics, TBaseType.rrw_alter, "statistics", " ", " ", " ", " ", " ");
2702        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterSubscription, TBaseType.rrw_alter, "subscription", " ", " ", " ", " ", " ");
2703        addgaussdbcmds(ESqlStatementType.sstAlterSynonym, TBaseType.rrw_alter, "synonym", " ", " ", " ", " ", " ");
2704        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterSystem, TBaseType.rrw_alter, "system", " ", " ", " ", " ", " ");
2705
2706        addgaussdbcmds(ESqlStatementType.sstaltertable, TBaseType.rrw_alter, "table", " ", " ", " ", " ", " ");
2707        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterTablespace, TBaseType.rrw_alter, "tablespace", " ", " ", " ", " ", " ");
2708
2709        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterTextSearchConfiguration, TBaseType.rrw_alter, "text", "search", "configuration", " ", " ", " ");
2710        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterTextSearchDictionary, TBaseType.rrw_alter, "text", "search", "dictionary", " ", " ", " ");
2711        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterTextSearchParser, TBaseType.rrw_alter, "text", "search", "parser", " ", " ", " ");
2712        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterTextSearchTemplate, TBaseType.rrw_alter, "text", "search", "template", " ", " ", " ");
2713        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterTrigger, TBaseType.rrw_alter, "trigger", " ", " ", " ", " ", " ");
2714        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterType, TBaseType.rrw_alter, "type", " ", " ", " ", " ", " ");
2715        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterUser, TBaseType.rrw_alter, "user", " ", " ", " ", " ", " ");
2716        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterUserMapping, TBaseType.rrw_alter, "user", "mapping", " ", " ", " ", " ");
2717        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterView, TBaseType.rrw_alter, "view", " ", " ", " ", " ", " ");
2718        addgaussdbcmds(ESqlStatementType.sstpostgresqlAnalyze, TBaseType.rrw_analyze, " ", " ", " ", " ", " ", " ");
2719
2720        // begin is recognized in isgaussdb() method.
2721      //  addgaussdbcmds(ESqlStatementType.sstpostgresqlBegin, TBaseType.rrw_begin, " ", " ", " ", " ", " ", " ");
2722
2723        addgaussdbcmds(ESqlStatementType.sstcall, TBaseType.rrw_call, " ", " ", " ", " ", " ", " ");
2724
2725        addgaussdbcmds(ESqlStatementType.sstpostgresqlCheckpoint, TBaseType.rrw_checkpoint, " ", " ", " ", " ", " ", " ");
2726        addgaussdbcmds(ESqlStatementType.sstpostgresqlClose, TBaseType.rrw_close, " ", " ", " ", " ", " ", " ");
2727
2728        addgaussdbcmds(ESqlStatementType.sstpostgresqlCluster, TBaseType.rrw_postgresql_cluster, " ", " ", " ", " ", " ", " ");
2729
2730        addgaussdbcmds(ESqlStatementType.sstpostgresqlComment, TBaseType.rrw_comment, " ", " ", " ", " ", " ", " ");
2731
2732        addgaussdbcmds(ESqlStatementType.sstpostgresqlCommit, TBaseType.rrw_commit, " ", " ", " ", " ", " ", " ");
2733        addgaussdbcmds(ESqlStatementType.sstpostgresqlCommitPrepared, TBaseType.rrw_commit, "prepared", " ", " ", " ", " ", " ");
2734        addgaussdbcmds(ESqlStatementType.sstpostgresqlCopy, TBaseType.rrw_postgresql_copy, " ", " ", " ", " ", " ", " ");
2735
2736        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateAccessMethod, TBaseType.rrw_create, "access", "method", " ", " ", " ", " ");
2737        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateAggregate, TBaseType.rrw_create, "aggregate", " ", " ", " ", " ", " ");
2738        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateAssertion, TBaseType.rrw_create, "assertion", " ", " ", " ", " ", " ");
2739        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateCast, TBaseType.rrw_create, "cast", " ", " ", " ", " ", " ");
2740        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateCollation, TBaseType.rrw_create, "collation", " ", " ", " ", " ", " ");
2741
2742        addgaussdbcmds(ESqlStatementType.sstcreatetrigger, TBaseType.rrw_create, "constraint", "trigger", " ", " ", " ", " ");
2743
2744        addgaussdbcmds(ESqlStatementType.sstpostgresqlConversion, TBaseType.rrw_create, "conversion", " ", " ", " ", " ", " ");
2745        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateDatabase, TBaseType.rrw_create, "database", " ", " ", " ", " ", " ");
2746        addgaussdbcmds(ESqlStatementType.sstpostgresqlConversion, TBaseType.rrw_create, "default", "conversion", " ", " ", " ", " ");
2747        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateDomain, TBaseType.rrw_create, "domain", " ", " ", " ", " ", " ");
2748        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateEventTrigger, TBaseType.rrw_create, "event", "trigger", " ", " ", " ", " ");
2749        addgaussdbcmds(ESqlStatementType.sstcreateExtension, TBaseType.rrw_create, "extension", " ", " ", " ", " ", " ");
2750
2751        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateForeignDataWrapper, TBaseType.rrw_create, "foreign", "data", "wrapper", " ", " ", " ");
2752        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateForeignTable, TBaseType.rrw_create, "foreign", "table", " ", " ", " ", " ");
2753        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateFunction, TBaseType.rrw_create, "function", " ", " ", " ", " ", " ");
2754
2755        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateIndex, TBaseType.rrw_create, "global", "index", " ", " ", " ", " ");
2756
2757        addgaussdbcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "global", "temp", "table", " ", " ", " ");
2758        addgaussdbcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "global", "temporary", "table", " ", " ", " ");
2759        addgaussdbcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "global", "unlocked", "table", " ", " ", " ");
2760        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateIndex, TBaseType.rrw_create, "global", "unique", "index", " ", " ", " ");
2761
2762        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateGroup, TBaseType.rrw_create, "group", " ", " ", " ", " ", " ");
2763
2764        addgaussdbcmds(ESqlStatementType.sstcreatematerializedview, TBaseType.rrw_create, "incremental", "materialized", "view", " ", " ", " ");
2765
2766        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateIndex, TBaseType.rrw_create, "index", " ", " ", " ", " ", " ");
2767        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateLanguage, TBaseType.rrw_create, "language", " ", " ", " ", " ", " ");
2768
2769        addgaussdbcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "local", "temp", "table", " ", " ", " ");
2770        addgaussdbcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "local", "temporary", "table", " ", " ", " ");
2771        addgaussdbcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "local", "unlocked", "table", " ", " ", " ");
2772
2773        addgaussdbcmds(ESqlStatementType.sstcreatematerializedview, TBaseType.rrw_create, "materialized", "view", " ", " ", " ", " ");
2774
2775        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateOperator, TBaseType.rrw_create, "operator", " ", " ", " ", " ", " ");
2776        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateOperatorClass, TBaseType.rrw_create, "operator", "class", " ", " ", " ", " ");
2777        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateOperatorFimaly, TBaseType.rrw_create, "operator", "family", " ", " ", " ", " ");
2778
2779        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateFunction, TBaseType.rrw_create, "or", "replace", "function", " ", " ", " ");
2780        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateLanguage, TBaseType.rrw_create, "or", "replace", "language", " ", " ", " ");
2781
2782        addgaussdbcmds(ESqlStatementType.sstplsql_createpackage, TBaseType.rrw_create,"or","replace","package"," "," "," ");
2783        addgaussdbcmds(ESqlStatementType.sstoraclecreatepackagebody, TBaseType.rrw_create,"or","replace","package","body"," "," ");
2784
2785
2786        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateLanguage, TBaseType.rrw_create, "or", "replace", "procedural", "language", " ", " ");
2787        addgaussdbcmds(ESqlStatementType.sstcreateprocedure, TBaseType.rrw_create, "or", "replace", "procedure", " ", " ", " ");
2788        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateRole, TBaseType.rrw_create, "or", "replace", "role ", " ", " ", " ");
2789        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateRule, TBaseType.rrw_create, "or", "replace", "rule ", " ", " ", " ");
2790        addgaussdbcmds(ESqlStatementType.sstcreatesynonym, TBaseType.rrw_create,"or","replace","synonym"," "," "," ");
2791
2792        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateView, TBaseType.rrw_create, "or", "replace", "temp", "view", " ", " ");
2793        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateView, TBaseType.rrw_create, "or", "replace", "temporary", "view", " ", " ");
2794        addgaussdbcmds(ESqlStatementType.sstcreatetrigger, TBaseType.rrw_create, "or", "replace", "trigger", " ", " ", " ");
2795        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateLanguage, TBaseType.rrw_create, "or", "replace", "trusted", "language", " ", " ");
2796        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateLanguage, TBaseType.rrw_create, "or", "replace", "trusted", "procedural", "language", " ");
2797        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateView, TBaseType.rrw_create, "or", "replace", "view", " ", " ", " ");
2798
2799        addgaussdbcmds(ESqlStatementType.sstplsql_createpackage, TBaseType.rrw_create,"package"," "," "," "," "," ");
2800        addgaussdbcmds(ESqlStatementType.sstoraclecreatepackagebody, TBaseType.rrw_create,"package","body"," "," "," "," ");
2801
2802        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreatePolicy, TBaseType.rrw_create, "policy", " ", " ", " ", " ", " ");
2803        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateLanguage, TBaseType.rrw_create, "procedural", "language", " ", " ", " ", " ");
2804        addgaussdbcmds(ESqlStatementType.sstcreateprocedure, TBaseType.rrw_create, "procedure", " ", " ", " ", " ", " ");
2805        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreatePublication, TBaseType.rrw_create, "publication", " ", " ", " ", " ", " ");
2806
2807        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateRole, TBaseType.rrw_create, "role", " ", " ", " ", " ", " ");
2808        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateRule, TBaseType.rrw_create, "rule", " ", " ", " ", " ", " ");
2809
2810
2811        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateSchema, TBaseType.rrw_create, "schema", " ", " ", " ", " ", " ");
2812
2813        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateSequence, TBaseType.rrw_create, "sequence", " ", " ", " ", " ", " ");
2814
2815
2816        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateServer, TBaseType.rrw_create, "server", " ", " ", " ", " ", " ");
2817        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateStatistics, TBaseType.rrw_create, "statistics", " ", " ", " ", " ", " ");
2818        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateSubscription, TBaseType.rrw_create, "subscription", " ", " ", " ", " ", " ");
2819        addgaussdbcmds(ESqlStatementType.sstcreatesynonym, TBaseType.rrw_create,"synonym"," "," "," "," "," ");
2820
2821        addgaussdbcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "table", " ", " ", " ", " ", " ");
2822
2823        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateTablespace, TBaseType.rrw_create, "tablespace", " ", " ", " ", " ", " ");
2824
2825        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateSequence, TBaseType.rrw_create, "temp", "sequence", " ", " ", " ", " ");
2826        addgaussdbcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "temp", "table", " ", " ", " ", " ");
2827        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateView, TBaseType.rrw_create, "temp", "view", " ", " ", " ", " ");
2828        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateSequence, TBaseType.rrw_create, "temporary", "sequence", " ", " ", " ", " ");
2829        addgaussdbcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "temporary", "table", " ", " ", " ", " ");
2830        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateView, TBaseType.rrw_create, "temporary", "view", " ", " ", " ", " ");
2831
2832        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateTextSearchConfiguration, TBaseType.rrw_create, "text", "search", "configuration", " ", " ", " ");
2833        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateTextSearchDictionary, TBaseType.rrw_create, "text", "search", "dictionary", " ", " ", " ");
2834        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateTextSearchParser, TBaseType.rrw_create, "text", "search", "parser", " ", " ", " ");
2835        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateTextSearchTemplate, TBaseType.rrw_create, "text", "search", "template", " ", " ", " ");
2836
2837        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateTransform, TBaseType.rrw_create, "transform", " ", " ", " ", " ", " ");
2838        addgaussdbcmds(ESqlStatementType.sstcreatetrigger, TBaseType.rrw_create, "trigger", " ", " ", " ", " ", " ");
2839
2840        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateLanguage, TBaseType.rrw_create, "trusted", "language", " ", " ", " ", " ");
2841        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateLanguage, TBaseType.rrw_create, "trusted", "procedural", "language", " ", " ", " ");
2842
2843        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateType, TBaseType.rrw_create, "type", " ", " ", " ", " ", " ");
2844
2845        addgaussdbcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "unlocked", "table", " ", " ", " ", " ");
2846        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateSequence, TBaseType.rrw_create, "unlogged", "sequence", " ", " ", " ", " ");
2847        addgaussdbcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "unlogged", "table", " ", " ", " ", " ");
2848
2849        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateUser, TBaseType.rrw_create, "user", " ", " ", " ", " ", " ");
2850
2851        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateUserMapping, TBaseType.rrw_create, "user", "mapping", " ", " ", " ", " ");
2852
2853        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateView, TBaseType.rrw_create, "view", " ", " ", " ", " ", " ");
2854
2855        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateIndex, TBaseType.rrw_create, "unique", "index", " ", " ", " ", " ");
2856
2857
2858        addgaussdbcmds(ESqlStatementType.sstpostgresqlDeallocate, TBaseType.rrw_deallocate, " ", " ", " ", " ", " ", " ");
2859
2860        addgaussdbcmds(ESqlStatementType.sstpostgresqlDeclare, TBaseType.rrw_declare, " ", " ", " ", " ", " ", " ");
2861
2862        addgaussdbcmds(ESqlStatementType.sstdelete, TBaseType.rrw_delete, " ", " ", " ", " ", " ", " ");
2863
2864        addgaussdbcmds(ESqlStatementType.sstpostgresqlDiscard, TBaseType.rrw_postgresql_discard, " ", " ", " ", " ", " ", " ");
2865
2866        addgaussdbcmds(ESqlStatementType.sstpostgresqlDo, TBaseType.rrw_do, " ", " ", " ", " ", " ", " ");
2867
2868        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropAccessMethod, TBaseType.rrw_drop, "access", "method", " ", " ", " ", " ");
2869        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropAggregate, TBaseType.rrw_drop, "aggregate", " ", " ", " ", " ", " ");
2870        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropAssertion, TBaseType.rrw_drop, "assertion", " ", " ", " ", " ", " ");
2871
2872        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropCast, TBaseType.rrw_drop, "cast", " ", " ", " ", " ", " ");
2873
2874        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropCollation, TBaseType.rrw_drop, "collation", " ", " ", " ", " ", " ");
2875
2876        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropConversion, TBaseType.rrw_drop, "conversion", " ", " ", " ", " ", " ");
2877
2878        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropDatabase, TBaseType.rrw_drop, "database", " ", " ", " ", " ", " ");
2879
2880        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropDomain, TBaseType.rrw_drop, "domain", " ", " ", " ", " ", " ");
2881        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropEventTrigger, TBaseType.rrw_drop, "event", "trigger", " ", " ", " ", " ");
2882        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropExtension, TBaseType.rrw_drop, "extension", " ", " ", " ", " ", " ");
2883
2884        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropForeignDataWrapper, TBaseType.rrw_drop, "foreign", "data", "wrapper", " ", " ", " ");
2885
2886        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropForeignTable, TBaseType.rrw_drop, "foreign", "table", " ", " ", " ", " ");
2887
2888        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropFunction, TBaseType.rrw_drop, "function", " ", " ", " ", " ", " ");
2889
2890        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropGroup, TBaseType.rrw_drop, "group", " ", " ", " ", " ", " ");
2891
2892        addgaussdbcmds(ESqlStatementType.sstdropindex, TBaseType.rrw_drop, "index", " ", " ", " ", " ", " ");
2893
2894        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropLanguage, TBaseType.rrw_drop, "language", " ", " ", " ", " ", " ");
2895
2896        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropMaterializedView, TBaseType.rrw_drop, "materialized", "view", " ", " ", " ", " ");
2897
2898        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropOperator, TBaseType.rrw_drop, "operator", " ", " ", " ", " ", " ");
2899        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropOperatorClass, TBaseType.rrw_drop, "operator", "class", " ", " ", " ", " ");
2900        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropOperatorFamily, TBaseType.rrw_drop, "operator", "family ", " ", " ", " ", " ");
2901
2902        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropOwned, TBaseType.rrw_drop, "owned", " ", " ", " ", " ", " ");
2903        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropPolicy, TBaseType.rrw_drop, "policy", " ", " ", " ", " ", " ");
2904        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropLanguage, TBaseType.rrw_drop, "procedural", "language", " ", " ", " ", " ");
2905        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropProcedure, TBaseType.rrw_drop, "procedure", " ", " ", " ", " ", " ");
2906        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropPublication, TBaseType.rrw_drop, "publication", " ", " ", " ", " ", " ");
2907
2908        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropRole, TBaseType.rrw_drop, "role", " ", " ", " ", " ", " ");
2909        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropRoutine, TBaseType.rrw_drop, "routine", " ", " ", " ", " ", " ");
2910        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropRule, TBaseType.rrw_drop, "rule", " ", " ", " ", " ", " ");
2911        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropSchema, TBaseType.rrw_drop, "schema", " ", " ", " ", " ", " ");
2912        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropSequence, TBaseType.rrw_drop, "sequence", " ", " ", " ", " ", " ");
2913        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropServer, TBaseType.rrw_drop, "server", " ", " ", " ", " ", " ");
2914        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropStatistics, TBaseType.rrw_drop, "statistics", " ", " ", " ", " ", " ");
2915        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropSubscription, TBaseType.rrw_drop, "subscription", " ", " ", " ", " ", " ");
2916        addgaussdbcmds(ESqlStatementType.sstdropsynonym, TBaseType.rrw_drop,"synonym"," "," "," "," "," ");
2917        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropTable, TBaseType.rrw_drop, "table", " ", " ", " ", " ", " ");
2918        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropTablespace, TBaseType.rrw_drop, "tablespace", " ", " ", " ", " ", " ");
2919
2920        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropTextSearchConfiguration, TBaseType.rrw_drop, "text", "search", "configuration", " ", " ", " ");
2921        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropTextSearchDictionary, TBaseType.rrw_drop, "text", "search", "dictionary", " ", " ", " ");
2922        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropTextSearchParser, TBaseType.rrw_drop, "text", "search", "parser", " ", " ", " ");
2923        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropTextSearchTemplate, TBaseType.rrw_drop, "text", "search", "template", " ", " ", " ");
2924        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropTransform, TBaseType.rrw_drop, "transform", " ", " ", " ", " ", " ");
2925        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropTrigger, TBaseType.rrw_drop, "trigger", " ", " ", " ", " ", " ");
2926        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropType, TBaseType.rrw_drop, "type", " ", " ", " ", " ", " ");
2927        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropUser, TBaseType.rrw_drop, "user", " ", " ", " ", " ", " ");
2928        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropUserMapping, TBaseType.rrw_drop, "user", "mapping", " ", " ", " ", " ");
2929        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropView, TBaseType.rrw_drop, "view", " ", " ", " ", " ", " ");
2930
2931        addgaussdbcmds(ESqlStatementType.sstpostgresqlEnd, TBaseType.rrw_end, " ", " ", " ", " ", " ", " ");
2932
2933        addgaussdbcmds(ESqlStatementType.sstpostgresqlExecute, TBaseType.rrw_execute, " ", " ", " ", " ", " ", " ");
2934
2935        addgaussdbcmds(ESqlStatementType.sstpostgresqlExplain, TBaseType.rrw_explain, " ", " ", " ", " ", " ", " ");
2936
2937        addgaussdbcmds(ESqlStatementType.sstFetchFrom, TBaseType.rrw_fetch, " ", " ", " ", " ", " ", " ");
2938
2939        addgaussdbcmds(ESqlStatementType.sstpostgresqlGrant, TBaseType.rrw_grant, " ", " ", " ", " ", " ", " ");
2940        addgaussdbcmds(ESqlStatementType.sstPostgresqlImport, TBaseType.rrw_postgresql_import, "foreign", "schema", " ", " ", " ", " ");
2941        addgaussdbcmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert, " ", " ", " ", " ", " ", " ");
2942
2943        addgaussdbcmds(ESqlStatementType.sstpostgresqlListen, TBaseType.rrw_postgresql_listen, " ", " ", " ", " ", " ", " ");
2944
2945        addgaussdbcmds(ESqlStatementType.sstpostgresqlLoad, TBaseType.rrw_load, " ", " ", " ", " ", " ", " ");
2946
2947        addgaussdbcmds(ESqlStatementType.sstpostgresqlLock, TBaseType.rrw_lock, " ", " ", " ", " ", " ", " ");
2948        addgaussdbcmds(ESqlStatementType.sstmerge, TBaseType.rrw_merge," "," "," "," "," "," ");
2949
2950        addgaussdbcmds(ESqlStatementType.sstpostgresqlMove, TBaseType.rrw_move, " ", " ", " ", " ", " ", " ");
2951
2952        addgaussdbcmds(ESqlStatementType.sstpostgresqlNotify, TBaseType.rrw_postgresql_notify, " ", " ", " ", " ", " ", " ");
2953
2954        addgaussdbcmds(ESqlStatementType.sstPostgresqlBlock, TBaseType.rrw_plpgsql_function_delimiter, " ", " ", " ", " ", " ", " ");
2955
2956
2957        addgaussdbcmds(ESqlStatementType.sstpostgresqlPrepare, TBaseType.rrw_prepare, " ", " ", " ", " ", " ", " ");
2958
2959        addgaussdbcmds(ESqlStatementType.sstpostgresqlPrepareTransaction, TBaseType.rrw_prepare, "transaction", " ", " ", " ", " ", " ");
2960
2961        addgaussdbcmds(ESqlStatementType.sstpostgresqlReassignOwned, TBaseType.rrw_postgresql_reassign, "owned", " ", " ", " ", " ", " ");
2962
2963        addgaussdbcmds(ESqlStatementType.sstpostgresqlRefreshMaterializedView, TBaseType.rrw_refresh, "incremental","materialized", "view",  " ", " ", " ");
2964        addgaussdbcmds(ESqlStatementType.sstpostgresqlRefreshMaterializedView, TBaseType.rrw_refresh, "materialized", "view", " ", " ", " ", " ");
2965
2966        addgaussdbcmds(ESqlStatementType.sstReindex, TBaseType.rrw_postgresql_reindex, " ", " ", " ", " ", " ", " ");
2967
2968        addgaussdbcmds(ESqlStatementType.sstpostgresqlReleaseSavepoint, TBaseType.rrw_release, " ", " ", " ", " ", " ", " ");
2969        addgaussdbcmds(ESqlStatementType.sstpostgresqlReleaseSavepoint, TBaseType.rrw_release, "savepoint", " ", " ", " ", " ", " ");
2970
2971        addgaussdbcmds(ESqlStatementType.sstpostgresqlReset, TBaseType.rrw_reset, " ", " ", " ", " ", " ", " ");
2972
2973        addgaussdbcmds(ESqlStatementType.sstpostgresqlRevoke, TBaseType.rrw_revoke, " ", " ", " ", " ", " ", " ");
2974
2975        addgaussdbcmds(ESqlStatementType.sstpostgresqlRollback, TBaseType.rrw_rollback, " ", " ", " ", " ", " ", " ");
2976        addgaussdbcmds(ESqlStatementType.sstpostgresqlRollbackPrepared, TBaseType.rrw_rollback, "prepared", " ", " ", " ", " ", " ");
2977        addgaussdbcmds(ESqlStatementType.sstpostgresqlRollbackToSavepoint, TBaseType.rrw_rollback, "to", "savepoint", " ", " ", " ", " ");
2978        addgaussdbcmds(ESqlStatementType.sstsavepoint, TBaseType.rrw_savepoint, " ", " ", " ", " ", " ", " ");
2979
2980        addgaussdbcmds(ESqlStatementType.sstpostgresqlSecurityLabel, TBaseType.rrw_postgresql_security, "label", " ", " ", " ", " ", " ");
2981
2982
2983        addgaussdbcmds(ESqlStatementType.sstselect, TBaseType.rrw_select, " ", " ", " ", " ", " ", " ");
2984
2985        addgaussdbcmds(ESqlStatementType.sstpostgresqlSet, TBaseType.rrw_set, " ", " ", " ", " ", " ", " ");
2986
2987        addgaussdbcmds(ESqlStatementType.sstpostgresqlSetConstraints, TBaseType.rrw_set, "constraints", " ", " ", " ", " ", " ");
2988        addgaussdbcmds(ESqlStatementType.sstpostgresqlSetRole, TBaseType.rrw_set, "local", "role", " ", " ", " ", " ");
2989        addgaussdbcmds(ESqlStatementType.sstpostgresqlSetSessionAuthorization, TBaseType.rrw_set, "local", "session", "authorization", " ", " ", " ");
2990        addgaussdbcmds(ESqlStatementType.sstpostgresqlSetRole, TBaseType.rrw_set, "role", " ", " ", " ", " ", " ");
2991        addgaussdbcmds(ESqlStatementType.sstpostgresqlSetSearchPath, TBaseType.rrw_set, "search_path", " ", " ", " ", " ", " ");
2992        addgaussdbcmds(ESqlStatementType.sstpostgresqlSetSessionAuthorization, TBaseType.rrw_set, "session", "authorization", " ", " ", " ", " ");
2993        addgaussdbcmds(ESqlStatementType.sstpostgresqlSetTransaction, TBaseType.rrw_set, "session", "characteristics", "as", "transaction", " ", " ");
2994        addgaussdbcmds(ESqlStatementType.sstpostgresqlSetRole, TBaseType.rrw_set, "session", "role", " ", " ", " ", " ");
2995        addgaussdbcmds(ESqlStatementType.sstpostgresqlSetSessionAuthorization, TBaseType.rrw_set, "session", "session", "authorization", " ", " ", " ");
2996
2997        addgaussdbcmds(ESqlStatementType.sstpostgresqlSetTransaction, TBaseType.rrw_set, "transaction", " ", " ", " ", " ", " ");
2998        addgaussdbcmds(ESqlStatementType.sstpostgresqlShow, TBaseType.rrw_show, " ", " ", " ", " ", " ", " ");
2999        addgaussdbcmds(ESqlStatementType.sstpostgresqlShowSearchPath, TBaseType.rrw_show, "search_path", " ", " ", " ", " ", " ");
3000        // addgaussdbcmds(ESqlStatementType.sstpostgresqlStartTransaction, TBaseType.rrw_start, "transaction", " ", " ", " ", " ", " ");
3001        addgaussdbcmds(ESqlStatementType.sstPostgresqlTable, TBaseType.rrw_table, " ", " ", " ", " ", " ", " ");
3002        addgaussdbcmds(ESqlStatementType.sstStartTransaction, TBaseType.rrw_start, "transaction", " ", " ", " ", " ", " ");
3003        addgaussdbcmds(ESqlStatementType.sstpostgresqlTruncate, TBaseType.rrw_truncate, " ", " ", " ", " ", " ", " ");
3004
3005        addgaussdbcmds(ESqlStatementType.sstpostgresqlUnlisten, TBaseType.rrw_postgresql_unlisten, " ", " ", " ", " ", " ", " ");
3006
3007        addgaussdbcmds(ESqlStatementType.sstupdate, TBaseType.rrw_update, " ", " ", " ", " ", " ", " ");
3008        addgaussdbcmds(ESqlStatementType.sstVacuum, TBaseType.rrw_postgresql_vacuum, " ", " ", " ", " ", " ", " ");
3009        addgaussdbcmds(ESqlStatementType.sstValues, TBaseType.rrw_values, " ", " ", " ", " ", " ", " ");
3010
3011    }
3012
3013    void initpostgresqlcmds(){
3014// cmd must be sorted alphabetically
3015        addpostgresqlcmds(ESqlStatementType.sstpostgresqlabort, TBaseType.rrw_abort, " ", " ", " ", " ", " ", " ");
3016        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterAggregate, TBaseType.rrw_alter, "aggregate", " ", " ", " ", " ", " ");
3017        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterCollation, TBaseType.rrw_alter, "collation", " ", " ", " ", " ", " ");
3018        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterConversion, TBaseType.rrw_alter, "conversion", " ", " ", " ", " ", " ");
3019        addpostgresqlcmds(ESqlStatementType.sstpostgresqlalterdatabase, TBaseType.rrw_alter, "database", " ", " ", " ", " ", " ");
3020        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterDefaultPrivileges, TBaseType.rrw_alter, "default", "privileges", " ", " ", " ", " ");
3021        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterDomain, TBaseType.rrw_alter, "domain", " ", " ", " ", " ", " ");
3022        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterEventTrigger, TBaseType.rrw_alter, "event", "trigger", " ", " ", " ", " ");
3023        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterExtension, TBaseType.rrw_alter, "extension", " ", " ", " ", " ", " ");
3024        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterForeignDataWrapper, TBaseType.rrw_alter, "foreign", "data", "wrapper", " ", " ", " ");
3025        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterForeignTable, TBaseType.rrw_alter, "foreign", "Table", " ", " ", " ", " ");
3026
3027        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterfunction, TBaseType.rrw_alter, "function", " ", " ", " ", " ", " ");
3028        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterGroup, TBaseType.rrw_alter, "group", " ", " ", " ", " ", " ");
3029        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterIndex, TBaseType.rrw_alter, "index", " ", " ", " ", " ", " ");
3030        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterLanguage, TBaseType.rrw_alter, "language", " ", " ", " ", " ", " ");
3031        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterLargeObject, TBaseType.rrw_alter, "large", "object", " ", " ", " ", " ");
3032        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterMaterializedView, TBaseType.rrw_alter, "materialized", "view", " ", " ", " ", " ");
3033        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterOperator, TBaseType.rrw_alter, "operator", " ", " ", " ", " ", " ");
3034        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterOperatorClass, TBaseType.rrw_alter, "operator", "class", " ", " ", " ", " ");
3035        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterOperatorFamily, TBaseType.rrw_alter, "operator", "family", " ", " ", " ", " ");
3036        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterPolicy, TBaseType.rrw_alter, "policy", " ", " ", " ", " ", " ");
3037        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterLanguage, TBaseType.rrw_alter, "procedural", "language", " ", " ", " ", " ");
3038        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterProcedure, TBaseType.rrw_alter, "procedure", " ", " ", " ", " ", " ");
3039        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterPublication, TBaseType.rrw_alter, "publication", " ", " ", " ", " ", " ");
3040        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterRole, TBaseType.rrw_alter, "role", " ", " ", " ", " ", " ");
3041        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterRoutine, TBaseType.rrw_alter, "routine", " ", " ", " ", " ", " ");
3042        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterRule, TBaseType.rrw_alter, "rule", " ", " ", " ", " ", " ");
3043        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterSchema, TBaseType.rrw_alter, "schema", " ", " ", " ", " ", " ");
3044        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterSequence, TBaseType.rrw_alter, "sequence", " ", " ", " ", " ", " ");
3045        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterServer, TBaseType.rrw_alter, "server", " ", " ", " ", " ", " ");
3046        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterStatistics, TBaseType.rrw_alter, "statistics", " ", " ", " ", " ", " ");
3047        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterSubscription, TBaseType.rrw_alter, "subscription", " ", " ", " ", " ", " ");
3048        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterSystem, TBaseType.rrw_alter, "system", " ", " ", " ", " ", " ");
3049
3050        addpostgresqlcmds(ESqlStatementType.sstaltertable, TBaseType.rrw_alter, "table", " ", " ", " ", " ", " ");
3051        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterTablespace, TBaseType.rrw_alter, "tablespace", " ", " ", " ", " ", " ");
3052
3053        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterTextSearchConfiguration, TBaseType.rrw_alter, "text", "search", "configuration", " ", " ", " ");
3054        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterTextSearchDictionary, TBaseType.rrw_alter, "text", "search", "dictionary", " ", " ", " ");
3055        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterTextSearchParser, TBaseType.rrw_alter, "text", "search", "parser", " ", " ", " ");
3056        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterTextSearchTemplate, TBaseType.rrw_alter, "text", "search", "template", " ", " ", " ");
3057        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterTrigger, TBaseType.rrw_alter, "trigger", " ", " ", " ", " ", " ");
3058        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterType, TBaseType.rrw_alter, "type", " ", " ", " ", " ", " ");
3059        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterUser, TBaseType.rrw_alter, "user", " ", " ", " ", " ", " ");
3060        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterUserMapping, TBaseType.rrw_alter, "user", "mapping", " ", " ", " ", " ");
3061        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterView, TBaseType.rrw_alter, "view", " ", " ", " ", " ", " ");
3062        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAnalyze, TBaseType.rrw_analyze, " ", " ", " ", " ", " ", " ");
3063
3064        addpostgresqlcmds(ESqlStatementType.sstpostgresqlBegin, TBaseType.rrw_begin, " ", " ", " ", " ", " ", " ");
3065
3066        addpostgresqlcmds(ESqlStatementType.sstcall, TBaseType.rrw_call, " ", " ", " ", " ", " ", " ");
3067
3068        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCheckpoint, TBaseType.rrw_checkpoint, " ", " ", " ", " ", " ", " ");
3069        addpostgresqlcmds(ESqlStatementType.sstpostgresqlClose, TBaseType.rrw_close, " ", " ", " ", " ", " ", " ");
3070
3071        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCluster, TBaseType.rrw_postgresql_cluster, " ", " ", " ", " ", " ", " ");
3072
3073        addpostgresqlcmds(ESqlStatementType.sstpostgresqlComment, TBaseType.rrw_comment, " ", " ", " ", " ", " ", " ");
3074
3075        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCommit, TBaseType.rrw_commit, " ", " ", " ", " ", " ", " ");
3076        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCommitPrepared, TBaseType.rrw_commit, "prepared", " ", " ", " ", " ", " ");
3077        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCopy, TBaseType.rrw_postgresql_copy, " ", " ", " ", " ", " ", " ");
3078
3079        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateAccessMethod, TBaseType.rrw_create, "access", "method", " ", " ", " ", " ");
3080        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateAggregate, TBaseType.rrw_create, "aggregate", " ", " ", " ", " ", " ");
3081        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateAssertion, TBaseType.rrw_create, "assertion", " ", " ", " ", " ", " ");
3082        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateCast, TBaseType.rrw_create, "cast", " ", " ", " ", " ", " ");
3083        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateCollation, TBaseType.rrw_create, "collation", " ", " ", " ", " ", " ");
3084
3085        addpostgresqlcmds(ESqlStatementType.sstcreatetrigger, TBaseType.rrw_create, "constraint", "trigger", " ", " ", " ", " ");
3086
3087        addpostgresqlcmds(ESqlStatementType.sstpostgresqlConversion, TBaseType.rrw_create, "conversion", " ", " ", " ", " ", " ");
3088        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateDatabase, TBaseType.rrw_create, "database", " ", " ", " ", " ", " ");
3089        addpostgresqlcmds(ESqlStatementType.sstpostgresqlConversion, TBaseType.rrw_create, "default", "conversion", " ", " ", " ", " ");
3090        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateDomain, TBaseType.rrw_create, "domain", " ", " ", " ", " ", " ");
3091        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateEventTrigger, TBaseType.rrw_create, "event", "trigger", " ", " ", " ", " ");
3092        addpostgresqlcmds(ESqlStatementType.sstcreateExtension, TBaseType.rrw_create, "extension", " ", " ", " ", " ", " ");
3093
3094        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateForeignDataWrapper, TBaseType.rrw_create, "foreign", "data", "wrapper", " ", " ", " ");
3095        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateForeignTable, TBaseType.rrw_create, "foreign", "table", " ", " ", " ", " ");
3096        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateFunction, TBaseType.rrw_create, "function", " ", " ", " ", " ", " ");
3097
3098        addpostgresqlcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "global", "temp", "table", " ", " ", " ");
3099        addpostgresqlcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "global", "temporary", "table", " ", " ", " ");
3100        addpostgresqlcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "global", "unlocked", "table", " ", " ", " ");
3101
3102        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateGroup, TBaseType.rrw_create, "group", " ", " ", " ", " ", " ");
3103
3104
3105        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateIndex, TBaseType.rrw_create, "index", " ", " ", " ", " ", " ");
3106        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateLanguage, TBaseType.rrw_create, "language", " ", " ", " ", " ", " ");
3107
3108        addpostgresqlcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "local", "temp", "table", " ", " ", " ");
3109        addpostgresqlcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "local", "temporary", "table", " ", " ", " ");
3110        addpostgresqlcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "local", "unlocked", "table", " ", " ", " ");
3111
3112        addpostgresqlcmds(ESqlStatementType.sstcreatematerializedview, TBaseType.rrw_create, "materialized", "view", " ", " ", " ", " ");
3113
3114        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateOperator, TBaseType.rrw_create, "operator", " ", " ", " ", " ", " ");
3115        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateOperatorClass, TBaseType.rrw_create, "operator", "class", " ", " ", " ", " ");
3116        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateOperatorFimaly, TBaseType.rrw_create, "operator", "family", " ", " ", " ", " ");
3117
3118        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateFunction, TBaseType.rrw_create, "or", "replace", "function", " ", " ", " ");
3119        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateLanguage, TBaseType.rrw_create, "or", "replace", "language", " ", " ", " ");
3120        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateLanguage, TBaseType.rrw_create, "or", "replace", "procedural", "language", " ", " ");
3121        addpostgresqlcmds(ESqlStatementType.sstcreateprocedure, TBaseType.rrw_create, "or", "replace", "procedure", " ", " ", " ");
3122        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateRole, TBaseType.rrw_create, "or", "replace", "role ", " ", " ", " ");
3123        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateRule, TBaseType.rrw_create, "or", "replace", "rule ", " ", " ", " ");
3124        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateView, TBaseType.rrw_create, "or", "replace", "temp", "view", " ", " ");
3125        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateView, TBaseType.rrw_create, "or", "replace", "temporary", "view", " ", " ");
3126        addpostgresqlcmds(ESqlStatementType.sstcreatetrigger, TBaseType.rrw_create, "or", "replace", "trigger", " ", " ", " ");
3127        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateLanguage, TBaseType.rrw_create, "or", "replace", "trusted", "language", " ", " ");
3128        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateLanguage, TBaseType.rrw_create, "or", "replace", "trusted", "procedural", "language", " ");
3129        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateView, TBaseType.rrw_create, "or", "replace", "view", " ", " ", " ");
3130        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreatePolicy, TBaseType.rrw_create, "policy", " ", " ", " ", " ", " ");
3131        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateLanguage, TBaseType.rrw_create, "procedural", "language", " ", " ", " ", " ");
3132        addpostgresqlcmds(ESqlStatementType.sstcreateprocedure, TBaseType.rrw_create, "procedure", " ", " ", " ", " ", " ");
3133        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreatePublication, TBaseType.rrw_create, "publication", " ", " ", " ", " ", " ");
3134
3135        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateView, TBaseType.rrw_create, "recursive", "view", " ", " ", " ", " ");
3136
3137        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateRole, TBaseType.rrw_create, "role", " ", " ", " ", " ", " ");
3138        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateRule, TBaseType.rrw_create, "rule", " ", " ", " ", " ", " ");
3139
3140
3141        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateSchema, TBaseType.rrw_create, "schema", " ", " ", " ", " ", " ");
3142
3143        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateSequence, TBaseType.rrw_create, "sequence", " ", " ", " ", " ", " ");
3144
3145
3146        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateServer, TBaseType.rrw_create, "server", " ", " ", " ", " ", " ");
3147        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateStatistics, TBaseType.rrw_create, "statistics", " ", " ", " ", " ", " ");
3148        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateSubscription, TBaseType.rrw_create, "subscription", " ", " ", " ", " ", " ");
3149
3150        addpostgresqlcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "table", " ", " ", " ", " ", " ");
3151
3152        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateTablespace, TBaseType.rrw_create, "tablespace", " ", " ", " ", " ", " ");
3153
3154        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateSequence, TBaseType.rrw_create, "temp", "sequence", " ", " ", " ", " ");
3155        addpostgresqlcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "temp", "table", " ", " ", " ", " ");
3156        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateView, TBaseType.rrw_create, "temp", "view", " ", " ", " ", " ");
3157        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateSequence, TBaseType.rrw_create, "temporary", "sequence", " ", " ", " ", " ");
3158        addpostgresqlcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "temporary", "table", " ", " ", " ", " ");
3159        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateView, TBaseType.rrw_create, "temporary", "view", " ", " ", " ", " ");
3160
3161        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateTextSearchConfiguration, TBaseType.rrw_create, "text", "search", "configuration", " ", " ", " ");
3162        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateTextSearchDictionary, TBaseType.rrw_create, "text", "search", "dictionary", " ", " ", " ");
3163        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateTextSearchParser, TBaseType.rrw_create, "text", "search", "parser", " ", " ", " ");
3164        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateTextSearchTemplate, TBaseType.rrw_create, "text", "search", "template", " ", " ", " ");
3165
3166        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateTransform, TBaseType.rrw_create, "transform", " ", " ", " ", " ", " ");
3167        addpostgresqlcmds(ESqlStatementType.sstcreatetrigger, TBaseType.rrw_create, "trigger", " ", " ", " ", " ", " ");
3168
3169        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateLanguage, TBaseType.rrw_create, "trusted", "language", " ", " ", " ", " ");
3170        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateLanguage, TBaseType.rrw_create, "trusted", "procedural", "language", " ", " ", " ");
3171
3172        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateType, TBaseType.rrw_create, "type", " ", " ", " ", " ", " ");
3173
3174        addpostgresqlcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "unlocked", "table", " ", " ", " ", " ");
3175        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateSequence, TBaseType.rrw_create, "unlogged", "sequence", " ", " ", " ", " ");
3176        addpostgresqlcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "unlogged", "table", " ", " ", " ", " ");
3177
3178        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateUser, TBaseType.rrw_create, "user", " ", " ", " ", " ", " ");
3179
3180        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateUserMapping, TBaseType.rrw_create, "user", "mapping", " ", " ", " ", " ");
3181
3182        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateView, TBaseType.rrw_create, "view", " ", " ", " ", " ", " ");
3183
3184        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateIndex, TBaseType.rrw_create, "unique", "index", " ", " ", " ", " ");
3185
3186
3187        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDeallocate, TBaseType.rrw_deallocate, " ", " ", " ", " ", " ", " ");
3188
3189        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDeclare, TBaseType.rrw_declare, " ", " ", " ", " ", " ", " ");
3190
3191        addpostgresqlcmds(ESqlStatementType.sstdelete, TBaseType.rrw_delete, " ", " ", " ", " ", " ", " ");
3192
3193        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDiscard, TBaseType.rrw_postgresql_discard, " ", " ", " ", " ", " ", " ");
3194
3195        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDo, TBaseType.rrw_do, " ", " ", " ", " ", " ", " ");
3196
3197        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropAccessMethod, TBaseType.rrw_drop, "access", "method", " ", " ", " ", " ");
3198        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropAggregate, TBaseType.rrw_drop, "aggregate", " ", " ", " ", " ", " ");
3199        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropAssertion, TBaseType.rrw_drop, "assertion", " ", " ", " ", " ", " ");
3200
3201        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropCast, TBaseType.rrw_drop, "cast", " ", " ", " ", " ", " ");
3202
3203        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropCollation, TBaseType.rrw_drop, "collation", " ", " ", " ", " ", " ");
3204
3205        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropConversion, TBaseType.rrw_drop, "conversion", " ", " ", " ", " ", " ");
3206
3207        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropDatabase, TBaseType.rrw_drop, "database", " ", " ", " ", " ", " ");
3208
3209        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropDomain, TBaseType.rrw_drop, "domain", " ", " ", " ", " ", " ");
3210        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropEventTrigger, TBaseType.rrw_drop, "event", "trigger", " ", " ", " ", " ");
3211        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropExtension, TBaseType.rrw_drop, "extension", " ", " ", " ", " ", " ");
3212
3213        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropTable, TBaseType.rrw_drop, "external", "table", " ", " ", " ", " ");
3214
3215        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropForeignDataWrapper, TBaseType.rrw_drop, "foreign", "data", "wrapper", " ", " ", " ");
3216
3217        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropForeignTable, TBaseType.rrw_drop, "foreign", "table", " ", " ", " ", " ");
3218
3219        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropFunction, TBaseType.rrw_drop, "function", " ", " ", " ", " ", " ");
3220
3221        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropGroup, TBaseType.rrw_drop, "group", " ", " ", " ", " ", " ");
3222
3223        addpostgresqlcmds(ESqlStatementType.sstdropindex, TBaseType.rrw_drop, "index", " ", " ", " ", " ", " ");
3224
3225        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropLanguage, TBaseType.rrw_drop, "language", " ", " ", " ", " ", " ");
3226
3227        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropMaterializedView, TBaseType.rrw_drop, "materialized", "view", " ", " ", " ", " ");
3228
3229        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropOperator, TBaseType.rrw_drop, "operator", " ", " ", " ", " ", " ");
3230        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropOperatorClass, TBaseType.rrw_drop, "operator", "class", " ", " ", " ", " ");
3231        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropOperatorFamily, TBaseType.rrw_drop, "operator", "family ", " ", " ", " ", " ");
3232
3233        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropOwned, TBaseType.rrw_drop, "owned", " ", " ", " ", " ", " ");
3234        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropPolicy, TBaseType.rrw_drop, "policy", " ", " ", " ", " ", " ");
3235        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropLanguage, TBaseType.rrw_drop, "procedural", "language", " ", " ", " ", " ");
3236        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropProcedure, TBaseType.rrw_drop, "procedure", " ", " ", " ", " ", " ");
3237        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropPublication, TBaseType.rrw_drop, "publication", " ", " ", " ", " ", " ");
3238
3239        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropRole, TBaseType.rrw_drop, "role", " ", " ", " ", " ", " ");
3240        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropRoutine, TBaseType.rrw_drop, "routine", " ", " ", " ", " ", " ");
3241        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropRule, TBaseType.rrw_drop, "rule", " ", " ", " ", " ", " ");
3242        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropSchema, TBaseType.rrw_drop, "schema", " ", " ", " ", " ", " ");
3243        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropSequence, TBaseType.rrw_drop, "sequence", " ", " ", " ", " ", " ");
3244        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropServer, TBaseType.rrw_drop, "server", " ", " ", " ", " ", " ");
3245        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropStatistics, TBaseType.rrw_drop, "statistics", " ", " ", " ", " ", " ");
3246        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropSubscription, TBaseType.rrw_drop, "subscription", " ", " ", " ", " ", " ");
3247        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropTable, TBaseType.rrw_drop, "table", " ", " ", " ", " ", " ");
3248        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropTablespace, TBaseType.rrw_drop, "tablespace", " ", " ", " ", " ", " ");
3249
3250        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropTextSearchConfiguration, TBaseType.rrw_drop, "text", "search", "configuration", " ", " ", " ");
3251        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropTextSearchDictionary, TBaseType.rrw_drop, "text", "search", "dictionary", " ", " ", " ");
3252        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropTextSearchParser, TBaseType.rrw_drop, "text", "search", "parser", " ", " ", " ");
3253        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropTextSearchTemplate, TBaseType.rrw_drop, "text", "search", "template", " ", " ", " ");
3254        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropTransform, TBaseType.rrw_drop, "transform", " ", " ", " ", " ", " ");
3255        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropTrigger, TBaseType.rrw_drop, "trigger", " ", " ", " ", " ", " ");
3256        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropType, TBaseType.rrw_drop, "type", " ", " ", " ", " ", " ");
3257        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropUser, TBaseType.rrw_drop, "user", " ", " ", " ", " ", " ");
3258        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropUserMapping, TBaseType.rrw_drop, "user", "mapping", " ", " ", " ", " ");
3259        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropView, TBaseType.rrw_drop, "view", " ", " ", " ", " ", " ");
3260
3261        addpostgresqlcmds(ESqlStatementType.sstpostgresqlEnd, TBaseType.rrw_end, " ", " ", " ", " ", " ", " ");
3262
3263        addpostgresqlcmds(ESqlStatementType.sstpostgresqlExecute, TBaseType.rrw_execute, " ", " ", " ", " ", " ", " ");
3264
3265        addpostgresqlcmds(ESqlStatementType.sstpostgresqlExplain, TBaseType.rrw_explain, " ", " ", " ", " ", " ", " ");
3266
3267        addpostgresqlcmds(ESqlStatementType.sstFetchFrom, TBaseType.rrw_fetch, " ", " ", " ", " ", " ", " ");
3268
3269        addpostgresqlcmds(ESqlStatementType.sstpostgresqlGrant, TBaseType.rrw_grant, " ", " ", " ", " ", " ", " ");
3270        addpostgresqlcmds(ESqlStatementType.sstPostgresqlImport, TBaseType.rrw_postgresql_import, "foreign", "schema", " ", " ", " ", " ");
3271        addpostgresqlcmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert, " ", " ", " ", " ", " ", " ");
3272
3273        addpostgresqlcmds(ESqlStatementType.sstpostgresqlListen, TBaseType.rrw_postgresql_listen, " ", " ", " ", " ", " ", " ");
3274
3275        addpostgresqlcmds(ESqlStatementType.sstpostgresqlLoad, TBaseType.rrw_load, " ", " ", " ", " ", " ", " ");
3276
3277        addpostgresqlcmds(ESqlStatementType.sstpostgresqlLock, TBaseType.rrw_lock, " ", " ", " ", " ", " ", " ");
3278
3279        addpostgresqlcmds(ESqlStatementType.sstmerge, TBaseType.rrw_merge," "," "," "," "," "," ");
3280
3281        addpostgresqlcmds(ESqlStatementType.sstpostgresqlMove, TBaseType.rrw_move, " ", " ", " ", " ", " ", " ");
3282
3283        addpostgresqlcmds(ESqlStatementType.sstpostgresqlNotify, TBaseType.rrw_postgresql_notify, " ", " ", " ", " ", " ", " ");
3284
3285        addpostgresqlcmds(ESqlStatementType.sstPostgresqlBlock, TBaseType.rrw_plpgsql_function_delimiter, " ", " ", " ", " ", " ", " ");
3286
3287
3288        addpostgresqlcmds(ESqlStatementType.sstpostgresqlPrepare, TBaseType.rrw_prepare, " ", " ", " ", " ", " ", " ");
3289
3290        addpostgresqlcmds(ESqlStatementType.sstpostgresqlPrepareTransaction, TBaseType.rrw_prepare, "transaction", " ", " ", " ", " ", " ");
3291
3292        addpostgresqlcmds(ESqlStatementType.sstpostgresqlReassignOwned, TBaseType.rrw_postgresql_reassign, "owned", " ", " ", " ", " ", " ");
3293
3294        addpostgresqlcmds(ESqlStatementType.sstpostgresqlRefreshMaterializedView, TBaseType.rrw_refresh, "materialized", "view", " ", " ", " ", " ");
3295
3296        addpostgresqlcmds(ESqlStatementType.sstReindex, TBaseType.rrw_postgresql_reindex, " ", " ", " ", " ", " ", " ");
3297
3298        addpostgresqlcmds(ESqlStatementType.sstpostgresqlReleaseSavepoint, TBaseType.rrw_release, " ", " ", " ", " ", " ", " ");
3299        addpostgresqlcmds(ESqlStatementType.sstpostgresqlReleaseSavepoint, TBaseType.rrw_release, "savepoint", " ", " ", " ", " ", " ");
3300
3301        addpostgresqlcmds(ESqlStatementType.sstpostgresqlReset, TBaseType.rrw_reset, " ", " ", " ", " ", " ", " ");
3302
3303        addpostgresqlcmds(ESqlStatementType.sstpostgresqlRevoke, TBaseType.rrw_revoke, " ", " ", " ", " ", " ", " ");
3304
3305        addpostgresqlcmds(ESqlStatementType.sstpostgresqlRollback, TBaseType.rrw_rollback, " ", " ", " ", " ", " ", " ");
3306        addpostgresqlcmds(ESqlStatementType.sstpostgresqlRollbackPrepared, TBaseType.rrw_rollback, "prepared", " ", " ", " ", " ", " ");
3307        addpostgresqlcmds(ESqlStatementType.sstpostgresqlRollbackToSavepoint, TBaseType.rrw_rollback, "to", "savepoint", " ", " ", " ", " ");
3308        addpostgresqlcmds(ESqlStatementType.sstpostgresqlSavepoint, TBaseType.rrw_savepoint, " ", " ", " ", " ", " ", " ");
3309
3310        addpostgresqlcmds(ESqlStatementType.sstpostgresqlSecurityLabel, TBaseType.rrw_postgresql_security, "label", " ", " ", " ", " ", " ");
3311
3312
3313        addpostgresqlcmds(ESqlStatementType.sstselect, TBaseType.rrw_select, " ", " ", " ", " ", " ", " ");
3314
3315        addpostgresqlcmds(ESqlStatementType.sstpostgresqlSet, TBaseType.rrw_set, " ", " ", " ", " ", " ", " ");
3316
3317        addpostgresqlcmds(ESqlStatementType.sstpostgresqlSetConstraints, TBaseType.rrw_set, "constraints", " ", " ", " ", " ", " ");
3318        addpostgresqlcmds(ESqlStatementType.sstpostgresqlSetRole, TBaseType.rrw_set, "local", "role", " ", " ", " ", " ");
3319        addpostgresqlcmds(ESqlStatementType.sstpostgresqlSetSessionAuthorization, TBaseType.rrw_set, "local", "session", "authorization", " ", " ", " ");
3320        addpostgresqlcmds(ESqlStatementType.sstpostgresqlSetRole, TBaseType.rrw_set, "role", " ", " ", " ", " ", " ");
3321        addpostgresqlcmds(ESqlStatementType.sstpostgresqlSetSearchPath, TBaseType.rrw_set, "search_path", " ", " ", " ", " ", " ");
3322        addpostgresqlcmds(ESqlStatementType.sstpostgresqlSetSessionAuthorization, TBaseType.rrw_set, "session", "authorization", " ", " ", " ", " ");
3323        addpostgresqlcmds(ESqlStatementType.sstpostgresqlSetTransaction, TBaseType.rrw_set, "session", "characteristics", "as", "transaction", " ", " ");
3324        addpostgresqlcmds(ESqlStatementType.sstpostgresqlSetRole, TBaseType.rrw_set, "session", "role", " ", " ", " ", " ");
3325        addpostgresqlcmds(ESqlStatementType.sstpostgresqlSetSessionAuthorization, TBaseType.rrw_set, "session", "session", "authorization", " ", " ", " ");
3326
3327        addpostgresqlcmds(ESqlStatementType.sstpostgresqlSetTransaction, TBaseType.rrw_set, "transaction", " ", " ", " ", " ", " ");
3328        addpostgresqlcmds(ESqlStatementType.sstpostgresqlShow, TBaseType.rrw_show, " ", " ", " ", " ", " ", " ");
3329        addpostgresqlcmds(ESqlStatementType.sstpostgresqlShowSearchPath, TBaseType.rrw_show, "search_path", " ", " ", " ", " ", " ");
3330       // addpostgresqlcmds(ESqlStatementType.sstpostgresqlStartTransaction, TBaseType.rrw_start, "transaction", " ", " ", " ", " ", " ");
3331        addpostgresqlcmds(ESqlStatementType.sstPostgresqlTable, TBaseType.rrw_table, " ", " ", " ", " ", " ", " ");
3332        addpostgresqlcmds(ESqlStatementType.sstStartTransaction, TBaseType.rrw_start, "transaction", " ", " ", " ", " ", " ");
3333        addpostgresqlcmds(ESqlStatementType.sstpostgresqlTruncate, TBaseType.rrw_truncate, " ", " ", " ", " ", " ", " ");
3334
3335        addpostgresqlcmds(ESqlStatementType.sstpostgresqlUnlisten, TBaseType.rrw_postgresql_unlisten, " ", " ", " ", " ", " ", " ");
3336
3337        addpostgresqlcmds(ESqlStatementType.sstupdate, TBaseType.rrw_update, " ", " ", " ", " ", " ", " ");
3338        addpostgresqlcmds(ESqlStatementType.sstVacuum, TBaseType.rrw_postgresql_vacuum, " ", " ", " ", " ", " ", " ");
3339        addpostgresqlcmds(ESqlStatementType.sstValues, TBaseType.rrw_values, " ", " ", " ", " ", " ", " ");
3340
3341    }
3342
3343    void initbigquerycmds() {
3344// cmd must be sorted alphabetically
3345        addbigquerycmds(ESqlStatementType.sstalterview, TBaseType.rrw_alter, "view", " ", " ", " ", " ", " ");
3346        addbigquerycmds(ESqlStatementType.sstaltertable, TBaseType.rrw_alter, "table", " ", " ", " ", " ", " ");
3347
3348        addbigquerycmds(ESqlStatementType.sstBegin, TBaseType.rrw_begin, " ", " ", " ", " ", " ", " ");
3349        addbigquerycmds(ESqlStatementType.sstbegintran, TBaseType.rrw_begin, "transaction", " ", " ", " ", " ", " ");
3350
3351        addbigquerycmds(ESqlStatementType.sstcall, TBaseType.rrw_call, " ", " ", " ", " ", " ", " ");
3352        addbigquerycmds(ESqlStatementType.sst_casestmt, TBaseType.rrw_case, " ", " ", " ", " ", " ", " ");
3353        addbigquerycmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "external", "table", " ", " ", " ", " ");
3354        addbigquerycmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create, "function", " ", " ", " ", " ", " ");
3355        addbigquerycmds(ESqlStatementType.sstcreatematerializedview, TBaseType.rrw_create, "materialized", "view", " ", " ", " ", " ");
3356        addbigquerycmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "or", "replace", "external", "table", " ", " ");
3357        addbigquerycmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "or", "replace", "temporary", "table", " ", " ");
3358        addbigquerycmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create, "or", "replace", "function", " ", " ", " ");
3359        addbigquerycmds(ESqlStatementType.sstcreatematerializedview, TBaseType.rrw_create, "or", "replace", "materialized", "view", " ", " ");
3360        addbigquerycmds(ESqlStatementType.sstcreateprocedure, TBaseType.rrw_create, "or", "replace", "procedure", " ", " ", " ");
3361        addbigquerycmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "or", "replace", "table", " ", " ", " ");
3362        addbigquerycmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create, "or", "replace", "table", "function", " ", " ");
3363        addbigquerycmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create, "or", "replace", "temp", "function", " ", " ");
3364        addbigquerycmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "or", "replace", "temp", "table", " ", " ");
3365        addbigquerycmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create, "or", "replace", "temporary", "function", " ", " ");
3366        addbigquerycmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create, "or", "replace", "view", " ", " ", " ");
3367        addbigquerycmds(ESqlStatementType.sstcreateprocedure, TBaseType.rrw_create, "procedure", " ", " ", " ", " ", " ");
3368        addbigquerycmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "table", " ", " ", " ", " ", " ");
3369        addbigquerycmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create, "table", "function", " ", " ", " ", " ");
3370        addbigquerycmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create, "temp", "function", " ", " ", " ", " ");
3371        addbigquerycmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "temp", "table", " ", " ", " ", " ");
3372        addbigquerycmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create, "temporary", "function", " ", " ", " ", " ");
3373        addbigquerycmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "temporary", "table", " ", " ", " ", " ");
3374        addbigquerycmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "snapshot", "table", " ", " ", " ", " ");
3375        addbigquerycmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create, "view", " ", " ", " ", " ", " ");
3376        addbigquerycmds(ESqlStatementType.sstBigQueryDeclare, TBaseType.rrw_declare," "," "," "," "," "," ");
3377        addbigquerycmds(ESqlStatementType.sstdelete, TBaseType.rrw_delete, " ", " ", " ", " ", " ", " ");
3378        addbigquerycmds(ESqlStatementType.sstDropRowAccessPolicy, TBaseType.rrw_drop, "all","row", "access", "policies", " ", " ");
3379        addbigquerycmds(ESqlStatementType.sstDropAssignment, TBaseType.rrw_drop, "assignment", " ", " ", " ", " ", " ");
3380        addbigquerycmds(ESqlStatementType.sstdroptable, TBaseType.rrw_drop, "external", "table", " ", " ", " ", " ");
3381        addbigquerycmds(ESqlStatementType.sstdropfunction, TBaseType.rrw_drop, "function", " ", " ", " ", " ", " ");
3382        addbigquerycmds(ESqlStatementType.sstDropMaterializedView, TBaseType.rrw_drop, "materialized", "view", " ", " ", " ", " ");
3383        addbigquerycmds(ESqlStatementType.sstdropprocedure, TBaseType.rrw_drop, "procedure", " ", " ", " ", " ", " ");
3384        addbigquerycmds(ESqlStatementType.sstDropReservation, TBaseType.rrw_drop, "reservation", " ", " ", " ", " ", " ");
3385        addbigquerycmds(ESqlStatementType.sstDropRowAccessPolicy, TBaseType.rrw_drop, "row", "access", "policy", " ", " ", " ");
3386        addbigquerycmds(ESqlStatementType.sstdroptable, TBaseType.rrw_drop, "table", " ", " ", " ", " ", " ");
3387        addbigquerycmds(ESqlStatementType.sstDropTableFunction, TBaseType.rrw_drop, "table", "function", " ", " ", " ", " ");
3388        addbigquerycmds(ESqlStatementType.sstdropschema, TBaseType.rrw_drop, "schema", " ", " ", " ", " ", " ");
3389        addbigquerycmds(ESqlStatementType.sstDropSnapshotTable, TBaseType.rrw_drop, "snapshot", "table", " ", " ", " ", " ");
3390        addbigquerycmds(ESqlStatementType.sstdropview, TBaseType.rrw_drop, "view", " ", " ", " ", " ", " ");
3391
3392        addbigquerycmds(ESqlStatementType.sstExecute, TBaseType.rrw_execute,  "immediate"," "," "," "," "," ");
3393
3394        addbigquerycmds(ESqlStatementType.sstBigQueryExportData, TBaseType.rrw_bigquery_export, "data", " ", " ", " ", " ", " ");
3395        addbigquerycmds(ESqlStatementType.sstForStmt, TBaseType.rrw_for, " ", " ", " ", " ", " ", " ");
3396        addbigquerycmds(ESqlStatementType.sst_ifstmt, TBaseType.rrw_if, " ", " ", " ", " ", " ", " ");
3397        addbigquerycmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert, " ", " ", " ", " ", " ", " ");
3398        addbigquerycmds(ESqlStatementType.sst_loopstmt, TBaseType.rrw_loop, " ", " ", " ", " ", " ", " ");
3399        addbigquerycmds(ESqlStatementType.sstmerge, TBaseType.rrw_merge, " ", " ", " ", " ", " ", " ");
3400        addbigquerycmds(ESqlStatementType.sstRepeat, TBaseType.rrw_repeat, " ", " ", " ", " ", " ", " ");
3401        addbigquerycmds(ESqlStatementType.sstselect, TBaseType.rrw_select, " ", " ", " ", " ", " ", " ");
3402        addbigquerycmds(ESqlStatementType.sstset, TBaseType.rrw_set, " ", " ", " ", " ", " ", " ");
3403        addbigquerycmds(ESqlStatementType.sstTruncate, TBaseType.rrw_truncate, " ", " ", " ", " ", " ", " ");
3404        addbigquerycmds(ESqlStatementType.sstupdate, TBaseType.rrw_update, " ", " ", " ", " ", " ", " ");
3405        addbigquerycmds(ESqlStatementType.sstWhilestmt, TBaseType.rrw_while, " ", " ", " ", " ", " ", " ");
3406    }
3407
3408void initsnowflakecmds(){
3409// cmd must be sorted alphabetically
3410    addsnowflakecmds(ESqlStatementType.sstAlterAccount, TBaseType.rrw_alter, "account", " ", " ", " ", " ", " ");
3411    addsnowflakecmds(ESqlStatementType.sstalterdatabase, TBaseType.rrw_alter, "database", " ", " ", " ", " ", " ");
3412    addsnowflakecmds(ESqlStatementType.sstaltertable, TBaseType.rrw_alter, "external", "table", " ", " ", " ", " ");
3413    addsnowflakecmds(ESqlStatementType.sstAlterFileFormat, TBaseType.rrw_alter, "file", "format", " ", " ", " ", " ");
3414    addsnowflakecmds(ESqlStatementType.sstalterfunction, TBaseType.rrw_alter, "function", " ", " ", " ", " ", " ");
3415    addsnowflakecmds(ESqlStatementType.sstAlterMaterializedView, TBaseType.rrw_alter,"materialized","view"," "," "," "," ");
3416    addsnowflakecmds(ESqlStatementType.sstAlterNetworkPolicy, TBaseType.rrw_alter, "network", "policy", " ", " ", " ", " ");
3417    addsnowflakecmds(ESqlStatementType.sstAlterPipe, TBaseType.rrw_alter, "pipe", " ", " ", " ", " ", " ");
3418    addsnowflakecmds(ESqlStatementType.sstAlterResourceMonitor, TBaseType.rrw_alter, "resource", "monitor", " ", " ", " ", " ");
3419    addsnowflakecmds(ESqlStatementType.sstAlterRole, TBaseType.rrw_alter, "role", " ", " ", " ", " ", " ");
3420    addsnowflakecmds(ESqlStatementType.sstAlterTask, TBaseType.rrw_alter, "task", " ", " ", " ", " ", " ");
3421    addsnowflakecmds(ESqlStatementType.sstAlterSchema, TBaseType.rrw_alter, "schema", " ", " ", " ", " ", " ");
3422    addsnowflakecmds(ESqlStatementType.sstaltersession, TBaseType.rrw_alter, "session", " ", " ", " ", " ", " ");
3423    addsnowflakecmds(ESqlStatementType.sstaltersequence, TBaseType.rrw_alter, "sequence", " ", " ", " ", " ", " ");
3424    addsnowflakecmds(ESqlStatementType.sstAlterShare, TBaseType.rrw_alter, "share", " ", " ", " ", " ", " ");
3425    addsnowflakecmds(ESqlStatementType.sstAlterStage, TBaseType.rrw_alter, "stage", " ", " ", " ", " ", " ");
3426    addsnowflakecmds(ESqlStatementType.sstaltertable, TBaseType.rrw_alter, "table", " ", " ", " ", " ", " ");
3427    addsnowflakecmds(ESqlStatementType.sstalteruser, TBaseType.rrw_alter, "user", " ", " ", " ", " ", " ");
3428    addsnowflakecmds(ESqlStatementType.sstalterview, TBaseType.rrw_alter, "view", " ", " ", " ", " ", " ");
3429    addsnowflakecmds(ESqlStatementType.sstAlterWarehouse, TBaseType.rrw_alter, "warehouse", " ", " ", " ", " ", " ");
3430
3431    addsnowflakecmds(ESqlStatementType.sstBegin, TBaseType.rrw_begin, " ", " ", " ", " ", " ", " ");
3432    addsnowflakecmds(ESqlStatementType.sstbegintran, TBaseType.rrw_snowflake_begin_transaction, " ", " ", " ", " ", " ", " ");
3433
3434    addsnowflakecmds(ESqlStatementType.sstbegintran, TBaseType.rrw_begin, "work", " ", " ", " ", " ", " ");
3435    addsnowflakecmds(ESqlStatementType.sstbegintran, TBaseType.rrw_begin, "transaction", " ", " ", " ", " ", " ");
3436
3437    addsnowflakecmds(ESqlStatementType.sstcall, TBaseType.rrw_call, " ", " ", " ", " ", " ", " ");
3438    addsnowflakecmds(ESqlStatementType.sstcomment, TBaseType.rrw_comment, " ", " ", " ", " ", " ", " ");
3439
3440    addsnowflakecmds(ESqlStatementType.sstcommit, TBaseType.rrw_commit, " ", " ", " ", " ", " ", " ");
3441    addsnowflakecmds(ESqlStatementType.sstCopyInto, TBaseType.rrw_snowflake_copy, "into", " ", " ", " ", " ", " ");
3442
3443    addsnowflakecmds(ESqlStatementType.sstcreatedatabase, TBaseType.rrw_create, "database", " ", " ", " ", " ", " ");
3444    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "dynamic", "table", " ", " ", " ", " ");
3445    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "external", "table", " ", " ", " ", " ");
3446    addsnowflakecmds(ESqlStatementType.sstCreateFileFormat, TBaseType.rrw_create, "file", "format", " ", " ", " ", " ");
3447    addsnowflakecmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create, "function", " ", " ", " ", " ", " ");
3448    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "global", "table", " ", " ", " ", " ");
3449    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "global", "temp", "table", " ", " ", " ");
3450    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "global", "temporary", "table", " ", " ", " ");
3451    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "hybrid", "table", " ", " ", " ", " ");
3452    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "local", "table", " ", " ", " ", " ");
3453    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "local", "temp", "table", " ", " ", " ");
3454    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "local", "temporary", "table", " ", " ", " ");
3455    addsnowflakecmds(ESqlStatementType.sstcreatematerializedview, TBaseType.rrw_create,"materialized","view"," "," "," "," ");
3456    addsnowflakecmds(ESqlStatementType.sstCreateNetworkPolicy, TBaseType.rrw_create, "network", "policy", " ", " ", " ", " ");
3457    addsnowflakecmds(ESqlStatementType.sstCreatePipe, TBaseType.rrw_create, "or", "replace", "pipe", " ", " ", " ");
3458    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "or", "replace", "external", "table", " ", " ");
3459    addsnowflakecmds(ESqlStatementType.sstcreatedatabase, TBaseType.rrw_create, "or", "replace", "database", " ", " ", " ");
3460    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "or", "replace", "dynamic", "table", " ", " ");
3461    addsnowflakecmds(ESqlStatementType.sstCreateFileFormat, TBaseType.rrw_create, "or", "replace", "file", "format", " ", " ");
3462    addsnowflakecmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create, "or", "replace", "function", " ", " ", " ");
3463    addsnowflakecmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create, "or", "replace", "force", "view", " ", " ");
3464    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "or", "replace", "global","temporary", "table",  " ");
3465    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "or", "replace", "hybrid", "table", " ", " ");
3466    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "or", "replace", "local","temporary", "table",  " ");
3467    addsnowflakecmds(ESqlStatementType.sstcreatematerializedview, TBaseType.rrw_create,"or", "replace","materialized","view"," "," ");
3468    addsnowflakecmds(ESqlStatementType.sstCreateNetworkPolicy, TBaseType.rrw_create, "or", "replace", "network", "policy", " ", " ");
3469    addsnowflakecmds(ESqlStatementType.sstcreateprocedure, TBaseType.rrw_create,"or", "replace", "procedure", " ", " ", " ");
3470    addsnowflakecmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create, "or", "replace", "recursive", "view", " ", " ");
3471
3472    addsnowflakecmds(ESqlStatementType.sstCreateResourceMonitor, TBaseType.rrw_create, "or", "replace","resource", "monitor",  " ", " ");
3473    addsnowflakecmds(ESqlStatementType.sstcreaterole,             TBaseType.rrw_create, "or", "replace","role",  " ", " ", " ");
3474    addsnowflakecmds(ESqlStatementType.sstcreateschema, TBaseType.rrw_create, "or", "replace","schema", " ", " ", " ");
3475    addsnowflakecmds(ESqlStatementType.sstcreatematerializedview, TBaseType.rrw_create,"or", "replace","secure","materialized","view"," ");
3476    addsnowflakecmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create, "or", "replace", "secure", "view", " ", " ");
3477    addsnowflakecmds(ESqlStatementType.sstcreatesequence, TBaseType.rrw_create, "or", "replace","sequence", " ", " ", " ");
3478    addsnowflakecmds(ESqlStatementType.sstCreateShare, TBaseType.rrw_create, "or", "replace","share", " ", " ", " ");
3479    addsnowflakecmds(ESqlStatementType.sstCreateStage, TBaseType.rrw_create, "or", "replace","stage", " ", " ", " ");
3480    addsnowflakecmds(ESqlStatementType.sstCreateStream, TBaseType.rrw_create, "or", "replace","stream", " ", " ", " ");
3481    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "or", "replace", "table", " ", " ", " ");
3482    addsnowflakecmds(ESqlStatementType.sstCreateTask, TBaseType.rrw_create, "or", "replace", "task", " ", " ", " ");
3483    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "or", "replace", "temp", "table", " ", " ");
3484    addsnowflakecmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create, "or", "replace", "temp", "view", " ", " ");
3485    addsnowflakecmds(ESqlStatementType.sstCreateStage, TBaseType.rrw_create, "or", "replace","temporary", "stage", " ", " ");
3486    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "or", "replace", "temporary", "table", " ", " ");
3487    addsnowflakecmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create, "or", "replace", "temporary", "view", " ", " ");
3488    addsnowflakecmds(ESqlStatementType.sstcreatedatabase, TBaseType.rrw_create, "or", "replace", "transient", "database", " ", " ");
3489    addsnowflakecmds(ESqlStatementType.sstcreateschema, TBaseType.rrw_create, "or", "replace", "transient", "schema", " ", " ");
3490    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "or", "replace", "transient", "table", " ", " ");
3491    addsnowflakecmds(ESqlStatementType.sstcreateuser, TBaseType.rrw_create, "or", "replace","user", " ", " ", " ");
3492    addsnowflakecmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create, "or", "replace", "view", " ", " ", " ");
3493    addsnowflakecmds(ESqlStatementType.sstCreateWarehouse, TBaseType.rrw_create, "or", "replace", "warehouse", " ", " ", " ");
3494    addsnowflakecmds(ESqlStatementType.sstCreatePipe, TBaseType.rrw_create, "pipe", " ", " ", " ", " ", " ");
3495    addsnowflakecmds(ESqlStatementType.sstcreateprocedure, TBaseType.rrw_create, "procedure", " ", " ", " ", " ", " ");
3496    addsnowflakecmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create, "recursive", "view", " ", " ", " ", " ");
3497    addsnowflakecmds(ESqlStatementType.sstCreateResourceMonitor, TBaseType.rrw_create, "resource", "monitor", " ", " ", " ", " ");
3498    addsnowflakecmds(ESqlStatementType.sstcreaterole, TBaseType.rrw_create, "role", " ", " ", " ", " ", " ");
3499    addsnowflakecmds(ESqlStatementType.sstcreateschema, TBaseType.rrw_create, "schema", " ", " ", " ", " ", " ");
3500    addsnowflakecmds(ESqlStatementType.sstcreatematerializedview, TBaseType.rrw_create,"secure","materialized","view"," "," "," ");
3501    addsnowflakecmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create, "secure", "view", " ", " ", " ", " ");
3502    addsnowflakecmds(ESqlStatementType.sstcreatesequence, TBaseType.rrw_create, "sequence", " ", " ", " ", " ", " ");
3503    addsnowflakecmds(ESqlStatementType.sstCreateShare, TBaseType.rrw_create, "share", " ", " ", " ", " ", " ");
3504    addsnowflakecmds(ESqlStatementType.sstCreateStage, TBaseType.rrw_create, "stage", " ", " ", " ", " ", " ");
3505    addsnowflakecmds(ESqlStatementType.sstCreateStream, TBaseType.rrw_create, "stream", " ", " ", " ", " ", " ");
3506    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "table", " ", " ", " ", " ", " ");
3507    addsnowflakecmds(ESqlStatementType.sstCreateTask, TBaseType.rrw_create, "task", " ", " ", " ", " ", " ");
3508    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "temp", "table", " ", " ", " ", " ");
3509    addsnowflakecmds(ESqlStatementType.sstCreateStage, TBaseType.rrw_create,"temporary", "stage", " ", " ", " ", " ");
3510    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "temporary", "table", " ", " ", " ", " ");
3511    addsnowflakecmds(ESqlStatementType.sstcreatedatabase, TBaseType.rrw_create, "transient", "database", " ", " ", " ", " ");
3512    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "transient", "dynamic", "table", " ", " ", " ");
3513    addsnowflakecmds(ESqlStatementType.sstcreateschema, TBaseType.rrw_create, "transient","schema", " ", " ", " ", " ");
3514    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "transient", "table", " ", " "," "," ");
3515    addsnowflakecmds(ESqlStatementType.sstcreateuser, TBaseType.rrw_create, "user", " ", " ", " ", " ", " ");
3516    addsnowflakecmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create, "view", " ", " ", " ", " ", " ");
3517    addsnowflakecmds(ESqlStatementType.sstCreateWarehouse, TBaseType.rrw_create, "warehouse", " ", " ", " ", " ", " ");
3518
3519    addsnowflakecmds(ESqlStatementType.sstdelete, TBaseType.rrw_delete, " ", " ", " ", " ", " ", " ");
3520
3521    addsnowflakecmds(ESqlStatementType.sstDescFileFormat, TBaseType.rrw_snowflake_desc, "file", "format", " ", " ", " ", " ");
3522    addsnowflakecmds(ESqlStatementType.sstDescFunction, TBaseType.rrw_snowflake_desc, "function", " ", " ", " ", " ", " ");
3523    addsnowflakecmds(ESqlStatementType.sstDescNetworkPolicy, TBaseType.rrw_snowflake_desc, "network", "policy", " ", " ", " ", " ");
3524    addsnowflakecmds(ESqlStatementType.sstDescPipe, TBaseType.rrw_snowflake_desc, "pipe", " ", " ", " ", " ", " ");
3525    addsnowflakecmds(ESqlStatementType.sstDescResult, TBaseType.rrw_snowflake_desc, "result", " ", " ", " ", " ", " ");
3526    addsnowflakecmds(ESqlStatementType.sstDescShare, TBaseType.rrw_snowflake_desc, "share", " ", " ", " ", " ", " ");
3527    addsnowflakecmds(ESqlStatementType.sstDescStage, TBaseType.rrw_snowflake_desc, "stage", " ", " ", " ", " ", " ");
3528    addsnowflakecmds(ESqlStatementType.sstDescStorage, TBaseType.rrw_snowflake_desc, "storage", " ", " ", " ", " ", " ");
3529    addsnowflakecmds(ESqlStatementType.sstDescTable, TBaseType.rrw_snowflake_desc, "table", " ", " ", " ", " ", " ");
3530    addsnowflakecmds(ESqlStatementType.sstDescUser, TBaseType.rrw_snowflake_desc, "user", " ", " ", " ", " ", " ");
3531    addsnowflakecmds(ESqlStatementType.sstDescView, TBaseType.rrw_snowflake_desc, "view", " ", " ", " ", " ", " ");
3532
3533    addsnowflakecmds(ESqlStatementType.sstDescFileFormat, TBaseType.rrw_describe, "file", "format", " ", " ", " ", " ");
3534    addsnowflakecmds(ESqlStatementType.sstDescFunction, TBaseType.rrw_describe, "function", " ", " ", " ", " ", " ");
3535    addsnowflakecmds(ESqlStatementType.sstDescNetworkPolicy, TBaseType.rrw_describe, "network", "policy", " ", " ", " ", " ");
3536    addsnowflakecmds(ESqlStatementType.sstDescPipe, TBaseType.rrw_describe, "pipe", " ", " ", " ", " ", " ");
3537    addsnowflakecmds(ESqlStatementType.sstDescResult, TBaseType.rrw_describe, "result", " ", " ", " ", " ", " ");
3538    addsnowflakecmds(ESqlStatementType.sstDescShare, TBaseType.rrw_describe, "share", " ", " ", " ", " ", " ");
3539    addsnowflakecmds(ESqlStatementType.sstDescStage, TBaseType.rrw_describe, "stage", " ", " ", " ", " ", " ");
3540    addsnowflakecmds(ESqlStatementType.sstDescStorage, TBaseType.rrw_describe, "storage", " ", " ", " ", " ", " ");
3541    addsnowflakecmds(ESqlStatementType.sstDescTable, TBaseType.rrw_describe, "table", " ", " ", " ", " ", " ");
3542    addsnowflakecmds(ESqlStatementType.sstDescUser, TBaseType.rrw_describe, "user", " ", " ", " ", " ", " ");
3543    addsnowflakecmds(ESqlStatementType.sstDescView, TBaseType.rrw_describe, "view", " ", " ", " ", " ", " ");
3544
3545    addsnowflakecmds(ESqlStatementType.sstdropdatabase, TBaseType.rrw_drop, "database", " ", " ", " ", " ", " ");
3546    addsnowflakecmds(ESqlStatementType.sstDropFileFormat, TBaseType.rrw_drop, "file", "format", " ", " ", " ", " ");
3547    addsnowflakecmds(ESqlStatementType.sstdropfunction, TBaseType.rrw_drop, "function", " ", " ", " ", " ", " ");
3548    addsnowflakecmds(ESqlStatementType.sstDropMaterializedView, TBaseType.rrw_drop, "materialized", "view", " ", " ", " ", " ");
3549    addsnowflakecmds(ESqlStatementType.sstDropNetworkPolicy, TBaseType.rrw_drop, "network", "policy", " ", " ", " ", " ");
3550    addsnowflakecmds(ESqlStatementType.sstDropPipe, TBaseType.rrw_drop, "pipe", " ", " ", " ", " ", " ");
3551    addsnowflakecmds(ESqlStatementType.sstdropprocedure, TBaseType.rrw_drop, "procedure", " ", " ", " ", " ", " ");
3552    addsnowflakecmds(ESqlStatementType.sstDropResourceMonitor, TBaseType.rrw_drop, "resource", "monitor", " ", " ", " ", " ");
3553    addsnowflakecmds(ESqlStatementType.sstdroprole, TBaseType.rrw_drop, "role", " ", " ", " ", " ", " ");
3554    addsnowflakecmds(ESqlStatementType.sstdropschema, TBaseType.rrw_drop, "schema", " ", " ", " ", " ", " ");
3555    addsnowflakecmds(ESqlStatementType.sstDropShare, TBaseType.rrw_drop, "share", " ", " ", " ", " ", " ");
3556    addsnowflakecmds(ESqlStatementType.sstDropStage, TBaseType.rrw_drop, "stage", " ", " ", " ", " ", " ");
3557    addsnowflakecmds(ESqlStatementType.sstDropStream, TBaseType.rrw_drop, "stream", " ", " ", " ", " ", " ");
3558    addsnowflakecmds(ESqlStatementType.sstDropStreamlit, TBaseType.rrw_drop, "streamlit", " ", " ", " ", " ", " ");
3559    addsnowflakecmds(ESqlStatementType.sstdroptable, TBaseType.rrw_drop, "table", " ", " ", " ", " ", " ");
3560
3561    addsnowflakecmds(ESqlStatementType.sstdropuser, TBaseType.rrw_drop, "user", " ", " ", " ", " ", " ");
3562    addsnowflakecmds(ESqlStatementType.sstdropview, TBaseType.rrw_drop, "view", " ", " ", " ", " ", " ");
3563    addsnowflakecmds(ESqlStatementType.sstDropWarehouse, TBaseType.rrw_drop, "warehouse", " ", " ", " ", " ", " ");
3564
3565    addsnowflakecmds(ESqlStatementType.sstExecute, TBaseType.rrw_execute,  "immediate"," "," "," "," "," ");
3566
3567    addsnowflakecmds(ESqlStatementType.sstGet, TBaseType.rrw_get, " ", " ", " ", " ", " ", " ");
3568
3569    addsnowflakecmds(ESqlStatementType.sstGrant, TBaseType.rrw_grant, " ", " ", " ", " ", " ", " ");
3570
3571    addsnowflakecmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert, " ", " ", " ", " ", " ", " ");
3572
3573    addsnowflakecmds(ESqlStatementType.sstList, TBaseType.rrw_snowflake_list, " ", " ", " ", " ", " ", " ");
3574    addsnowflakecmds(ESqlStatementType.sstList, TBaseType.rrw_snowflake_ls, " ", " ", " ", " ", " ", " ");
3575
3576    addsnowflakecmds(ESqlStatementType.sstmerge, TBaseType.rrw_merge, " ", " ", " ", " ", " ", " ");
3577
3578    addsnowflakecmds(ESqlStatementType.sstSnowflakePseudoExprStmt, TBaseType.rrw_snowflake_pseudo_stmt_sign, " ", " ", " ", " ", " ", " ");
3579    addsnowflakecmds(ESqlStatementType.sstPut, TBaseType.rrw_snowflake_put, " ", " ", " ", " ", " ", " ");
3580
3581    addsnowflakecmds(ESqlStatementType.sstRemove, TBaseType.rrw_snowflake_remove, " ", " ", " ", " ", " ", " ");
3582
3583    addsnowflakecmds(ESqlStatementType.sstRevoke, TBaseType.rrw_revoke, " ", " ", " ", " ", " ", " ");
3584    addsnowflakecmds(ESqlStatementType.sstRemove, TBaseType.rrw_snowflake_rm, " ", " ", " ", " ", " ", " ");
3585    addsnowflakecmds(ESqlStatementType.sstrollback, TBaseType.rrw_rollback, " ", " ", " ", " ", " ", " ");
3586
3587
3588    addsnowflakecmds(ESqlStatementType.sstselect, TBaseType.rrw_select, " ", " ", " ", " ", " ", " ");
3589
3590    addsnowflakecmds(ESqlStatementType.sstset, TBaseType.rrw_set, " ", " ", " ", " ", " ", " ");
3591
3592    addsnowflakecmds(ESqlStatementType.sstShowColumns, TBaseType.rrw_show, "columns", " ", " ", " ", " ", " ");
3593    addsnowflakecmds(ESqlStatementType.sstShowDatabases, TBaseType.rrw_show, "databases", " ", " ", " ", " ", " ");
3594    addsnowflakecmds(ESqlStatementType.sstShowFileFormats, TBaseType.rrw_show, "file", "formats", " ", " ", " ", " ");
3595    addsnowflakecmds(ESqlStatementType.sstShowFunctions, TBaseType.rrw_show, "functions", " ", " ", " ", " ", " ");
3596    addsnowflakecmds(ESqlStatementType.sstShowGrants, TBaseType.rrw_show, "grants", " ", " ", " ", " ", " ");
3597    addsnowflakecmds(ESqlStatementType.sstShowLocks, TBaseType.rrw_show, "locks", " ", " ", " ", " ", " ");
3598    addsnowflakecmds(ESqlStatementType.sstShowNetworkPolicies, TBaseType.rrw_show, "network", "policies", " ", " ", " ", " ");
3599    addsnowflakecmds(ESqlStatementType.sstShowObjects, TBaseType.rrw_show, "objects", " ", " ", " ", " ", " ");
3600    addsnowflakecmds(ESqlStatementType.sstShowParameters, TBaseType.rrw_show, "parameters", " ", " ", " ", " ", " ");
3601    addsnowflakecmds(ESqlStatementType.sstShowPipes, TBaseType.rrw_show, "pipes", " ", " ", " ", " ", " ");
3602    addsnowflakecmds(ESqlStatementType.sstShowProcedures, TBaseType.rrw_show, "procedures", " ", " ", " ", " ", " ");
3603    addsnowflakecmds(ESqlStatementType.sstShowResourceMonitors, TBaseType.rrw_show, "resource", "monitors", " ", " ", " ", " ");
3604    addsnowflakecmds(ESqlStatementType.sstShowRoles, TBaseType.rrw_show, "roles", " ", " ", " ", " ", " ");
3605    addsnowflakecmds(ESqlStatementType.sstShowSchemas, TBaseType.rrw_show, "schemas", " ", " ", " ", " ", " ");
3606    addsnowflakecmds(ESqlStatementType.sstShowSequences, TBaseType.rrw_show, "sequences", " ", " ", " ", " ", " ");
3607    addsnowflakecmds(ESqlStatementType.sstShowShares, TBaseType.rrw_show, "shares", " ", " ", " ", " ", " ");
3608    addsnowflakecmds(ESqlStatementType.sstShowStages, TBaseType.rrw_show, "stages", " ", " ", " ", " ", " ");
3609    addsnowflakecmds(ESqlStatementType.sstShowStreams, TBaseType.rrw_show, "streams", " ", " ", " ", " ", " ");
3610    addsnowflakecmds(ESqlStatementType.sstShowTables, TBaseType.rrw_show, "tables", " ", " ", " ", " ", " ");
3611    addsnowflakecmds(ESqlStatementType.sstShowTasks, TBaseType.rrw_show, "tasks", " ", " ", " ", " ", " ");
3612    addsnowflakecmds(ESqlStatementType.sstShowDatabases, TBaseType.rrw_show, "terse", "databases", " ", " ", " ", " ");
3613    addsnowflakecmds(ESqlStatementType.sstShowStreams, TBaseType.rrw_show, "terse", "streams", " ", " ", " ", " ");
3614    addsnowflakecmds(ESqlStatementType.sstShowTasks, TBaseType.rrw_show, "terse", "tasks", " ", " ", " ", " ");
3615    addsnowflakecmds(ESqlStatementType.sstShowTransactions, TBaseType.rrw_show, "transactions", " ", " ", " ", " ", " ");
3616    addsnowflakecmds(ESqlStatementType.sstShowUserFunctions, TBaseType.rrw_show, "user", "functions", " ", " ", " ", " ");
3617    addsnowflakecmds(ESqlStatementType.sstShowUsers, TBaseType.rrw_show, "users", " ", " ", " ", " ", " ");
3618    addsnowflakecmds(ESqlStatementType.sstShowVariables, TBaseType.rrw_show, "variables", " ", " ", " ", " ", " ");
3619    addsnowflakecmds(ESqlStatementType.sstShowViews, TBaseType.rrw_show, "views", " ", " ", " ", " ", " ");
3620    addsnowflakecmds(ESqlStatementType.sstShowWarehouses, TBaseType.rrw_show, "warehouses", " ", " ", " ", " ", " ");
3621    addsnowflakecmds(ESqlStatementType.sstbegintran, TBaseType.rrw_start, "transaction", " ", " ", " ", " ", " ");
3622    addsnowflakecmds(ESqlStatementType.sstpostgresqlTruncate, TBaseType.rrw_truncate, " ", " ", " ", " ", " ", " ");
3623
3624    addsnowflakecmds(ESqlStatementType.sstUndropDatabase, TBaseType.rrw_snowflake_undrop, "database", " ", " ", " ", " ", " ");
3625    addsnowflakecmds(ESqlStatementType.sstUndropSchema, TBaseType.rrw_snowflake_undrop, "schema", " ", " ", " ", " ", " ");
3626    addsnowflakecmds(ESqlStatementType.sstUndropTable, TBaseType.rrw_snowflake_undrop, "table", " ", " ", " ", " ", " ");
3627
3628    addsnowflakecmds(ESqlStatementType.sstunset, TBaseType.rrw_snowflake_unset, " ", " ", " ", " ", " ", " ");
3629    addsnowflakecmds(ESqlStatementType.sstupdate, TBaseType.rrw_update, " ", " ", " ", " ", " ", " ");
3630    addsnowflakecmds(ESqlStatementType.sstUse, TBaseType.rrw_use, " ", " ", " ", " ", " ", " ");
3631    addsnowflakecmds(ESqlStatementType.sstUseSecondaryRoles, TBaseType.rrw_use, "secondary", "roles", " ", " ", " ", " ");
3632}
3633
3634void initredshiftcmds() {
3635// cmd must be sorted alphabetically
3636    addredshiftcmds(ESqlStatementType.sstredshiftAbort, TBaseType.rrw_abort, " ", " ", " ", " ", " ", " ");
3637    addredshiftcmds(ESqlStatementType.sstredshiftAbort, TBaseType.rrw_abort, "transaction", " ", " ", " ", " ", " ");
3638    addredshiftcmds(ESqlStatementType.sstredshiftAbort, TBaseType.rrw_abort, "work", " ", " ", " ", " ", " ");
3639    addredshiftcmds(ESqlStatementType.sstalterdatabase, TBaseType.rrw_alter, "database", " ", " ", " ", " ", " ");
3640    addredshiftcmds(ESqlStatementType.sstredshiftAlterGroup, TBaseType.rrw_alter, "group", " ", " ", " ", " ", " ");
3641    addredshiftcmds(ESqlStatementType.sstredshiftAlterSchema, TBaseType.rrw_alter, "schema", " ", " ", " ", " ", " ");
3642    addredshiftcmds(ESqlStatementType.sstaltertable, TBaseType.rrw_alter, "table", " ", " ", " ", " ", " ");
3643    addredshiftcmds(ESqlStatementType.sstredshiftAlterUser, TBaseType.rrw_alter, "user", " ", " ", " ", " ", " ");
3644    addredshiftcmds(ESqlStatementType.sstredshiftAnalyze, TBaseType.rrw_analyze, " ", " ", " ", " ", " ", " ");
3645    addredshiftcmds(ESqlStatementType.sstredshiftAnalyzeCompression, TBaseType.rrw_analyze, "Compression", " ", " ", " ", " ", " ");
3646    addredshiftcmds(ESqlStatementType.sstredshiftBegin, TBaseType.rrw_begin, " ", " ", " ", " ", " ", " ");
3647    addredshiftcmds(ESqlStatementType.sstredshiftCancel, TBaseType.rrw_redshift_cancel, " ", " ", " ", " ", " ", " ");
3648    addredshiftcmds(ESqlStatementType.sstcall, TBaseType.rrw_call, " ", " ", " ", " ", " ", " ");
3649
3650    addredshiftcmds(ESqlStatementType.sstredshiftClose, TBaseType.rrw_close, " ", " ", " ", " ", " ", " ");
3651    addredshiftcmds(ESqlStatementType.sstredshiftComment, TBaseType.rrw_comment, "on", " ", " ", " ", " ", " ");
3652    addredshiftcmds(ESqlStatementType.sstredshiftCommit, TBaseType.rrw_commit, " ", " ", " ", " ", " ", " ");
3653    addredshiftcmds(ESqlStatementType.sstredshiftCopy, TBaseType.rrw_redshift_copy, " ", " ", " ", " ", " ", " ");
3654    addredshiftcmds(ESqlStatementType.sstredshiftCreateSchema, TBaseType.rrw_create, "external", "schema", " ", " ", " ", " ");
3655    addredshiftcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "external", "table", " ", " ", " ", " ");
3656    addredshiftcmds(ESqlStatementType.sstcreatedatabase, TBaseType.rrw_create, "database", " ", " ", " ", " ", " ");
3657    addredshiftcmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create, "function", " ", " ", " ", " ", " ");
3658    addredshiftcmds(ESqlStatementType.sstredshiftCreateGroup, TBaseType.rrw_create, "group", " ", " ", " ", " ", " ");
3659    addredshiftcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "local", "table", " ", " ", " ", " ");
3660    addredshiftcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "local","temp", "table", " ", " ", " ");
3661    addredshiftcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "local","temporary", "table", " ", " ", " ");
3662    addredshiftcmds(ESqlStatementType.sstcreatematerializedview, TBaseType.rrw_create,"materialized","view"," "," "," "," ");
3663    addredshiftcmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create, "or", "replace","function", " ", " ", " ");
3664    addredshiftcmds(ESqlStatementType.sstcreatematerializedview, TBaseType.rrw_create,"or", "replace","materialized","view"," "," ");
3665    addredshiftcmds(ESqlStatementType.sstcreateprocedure, TBaseType.rrw_create, "or", "replace","procedure", " ", " ", " ");
3666    addredshiftcmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create, "or", "replace", "view", " ", " ", " ");
3667    addredshiftcmds(ESqlStatementType.sstcreateprocedure, TBaseType.rrw_create, "procedure", " ", " ", " ", " ", " ");
3668    addredshiftcmds(ESqlStatementType.sstredshiftCreateSchema, TBaseType.rrw_create, "schema", " ", " ", " ", " ", " ");
3669    addredshiftcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "table", " ", " ", " ", " ", " ");
3670    addredshiftcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "temp", "table", " ", " ", " ", " ");
3671    addredshiftcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "temporary", "table", " ", " ", " ", " ");
3672    addredshiftcmds(ESqlStatementType.sstredshiftCreateUser, TBaseType.rrw_create, "user", " ", " ", " ", " ", " ");
3673    addredshiftcmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create, "view", " ", " ", " ", " ", " ");
3674    addredshiftcmds(ESqlStatementType.sstredshiftDeallocate, TBaseType.rrw_deallocate, " ", " ", " ", " ", " ", " ");
3675    addredshiftcmds(ESqlStatementType.sstredshiftDeclare, TBaseType.rrw_declare, " ", " ", " ", " ", " ", " ");
3676    addredshiftcmds(ESqlStatementType.sstdelete, TBaseType.rrw_delete, " ", " ", " ", " ", " ", " ");
3677    addredshiftcmds(ESqlStatementType.sstredshiftDropDatabase, TBaseType.rrw_drop, "database", " ", " ", " ", " ", " ");
3678    addredshiftcmds(ESqlStatementType.sstredshiftDropGroup, TBaseType.rrw_drop, "group", " ", " ", " ", " ", " ");
3679    addredshiftcmds(ESqlStatementType.sstredshiftDropSchema, TBaseType.rrw_drop, "schema", " ", " ", " ", " ", " ");
3680    addredshiftcmds(ESqlStatementType.sstdroptable, TBaseType.rrw_drop, "table", " ", " ", " ", " ", " ");
3681    addredshiftcmds(ESqlStatementType.sstredshiftDropUser, TBaseType.rrw_drop, "user", " ", " ", " ", " ", " ");
3682    addredshiftcmds(ESqlStatementType.sstdropview, TBaseType.rrw_drop, "view", " ", " ", " ", " ", " ");
3683    addredshiftcmds(ESqlStatementType.sstredshiftEnd, TBaseType.rrw_end, " ", " ", " ", " ", " ", " ");
3684    addredshiftcmds(ESqlStatementType.sstExecutePreparedStmt, TBaseType.rrw_execute, " ", " ", " ", " ", " ", " ");
3685    addredshiftcmds(ESqlStatementType.sstExplain, TBaseType.rrw_explain, " ", " ", " ", " ", " ", " ");
3686    addredshiftcmds(ESqlStatementType.sstFetchFrom, TBaseType.rrw_fetch, " ", " ", " ", " ", " ", " ");
3687    addredshiftcmds(ESqlStatementType.sstGrant, TBaseType.rrw_grant, " ", " ", " ", " ", " ", " ");
3688    addredshiftcmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert, "into", " ", " ", " ", " ", " ");
3689    addredshiftcmds(ESqlStatementType.sstredshiftLock, TBaseType.rrw_lock, " ", " ", " ", " ", " ", " ");
3690    addredshiftcmds(ESqlStatementType.sstmerge, TBaseType.rrw_merge," "," "," "," "," "," ");
3691
3692    addredshiftcmds(ESqlStatementType.sstredshiftPrepare, TBaseType.rrw_prepare, " ", " ", " ", " ", " ", " ");
3693    addredshiftcmds(ESqlStatementType.sstredshiftReset, TBaseType.rrw_reset, " ", " ", " ", " ", " ", " ");
3694    addredshiftcmds(ESqlStatementType.sstRevoke, TBaseType.rrw_revoke, " ", " ", " ", " ", " ", " ");
3695    addredshiftcmds(ESqlStatementType.sstredshiftRollback, TBaseType.rrw_rollback, " ", " ", " ", " ", " ", " ");
3696    addredshiftcmds(ESqlStatementType.sstselect, TBaseType.rrw_select, " ", " ", " ", " ", " ", " ");
3697    addredshiftcmds(ESqlStatementType.sstredshiftSet, TBaseType.rrw_set, " ", " ", " ", " ", " ", " ");
3698    addredshiftcmds(ESqlStatementType.sstredshiftSetSessionAuthorization, TBaseType.rrw_set, "Authorization", " ", " ", " ", " ", " ");
3699    addredshiftcmds(ESqlStatementType.sstredshiftSetSessionCharacteristics, TBaseType.rrw_set, "Characteristics", " ", " ", " ", " ", " ");
3700    addredshiftcmds(ESqlStatementType.sstredshiftSetSessionAuthorization, TBaseType.rrw_set, "local", "Authorization", " ", " ", " ", " ");
3701    addredshiftcmds(ESqlStatementType.sstredshiftShow, TBaseType.rrw_show, " ", " ", " ", " ", " ", " ");
3702    addredshiftcmds(ESqlStatementType.sstStartTransaction, TBaseType.rrw_start, "Transaction", " ", " ", " ", " ", " ");
3703    addredshiftcmds(ESqlStatementType.sstTruncate, TBaseType.rrw_truncate, " ", " ", " ", " ", " ", " ");
3704    addredshiftcmds(ESqlStatementType.sstredshiftUnload, TBaseType.rrw_redshift_unload, " ", " ", " ", " ", " ", " ");
3705    addredshiftcmds(ESqlStatementType.sstupdate, TBaseType.rrw_update, " ", " ", " ", " ", " ", " ");
3706    addredshiftcmds(ESqlStatementType.sstredshiftVacuum, TBaseType.rrw_redshift_vacuum, " ", " ", " ", " ", " ", " ");
3707}
3708
3709void initgreenplumcmds(){
3710// cmd must be sorted alphabetically
3711    addgreenplumcmds(ESqlStatementType.sstpostgresqlabort, TBaseType.rrw_abort, " ", " ", " ", " ", " ", " ");
3712    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterAggregate, TBaseType.rrw_alter, "aggregate", " ", " ", " ", " ", " ");
3713    //addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterCollation, TBaseType.rrw_alter, "collation", " ", " ", " ", " ", " ");
3714    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterConversion, TBaseType.rrw_alter, "conversion", " ", " ", " ", " ", " ");
3715    addgreenplumcmds(ESqlStatementType.sstpostgresqlalterdatabase, TBaseType.rrw_alter, "database", " ", " ", " ", " ", " ");
3716    //addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterDefaultPrivileges, TBaseType.rrw_alter, "default", "privileges", " ", " ", " ", " ");
3717    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterDomain, TBaseType.rrw_alter, "domain", " ", " ", " ", " ", " ");
3718
3719    addgreenplumcmds(ESqlStatementType.sstgreenplumAlterExternalTable, TBaseType.rrw_alter, "external", "table", " ", " ", " ", " ");
3720    addgreenplumcmds(ESqlStatementType.sstgreenplumAlterFilespace, TBaseType.rrw_alter, "filespace", " ", " ", " ", " ", " ");
3721
3722//    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterEventTrigger, TBaseType.rrw_alter, "event", "trigger", " ", " ", " ", " ");
3723//    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterExtension, TBaseType.rrw_alter, "extension", " ", " ", " ", " ", " ");
3724//    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterForeignDataWrapper, TBaseType.rrw_alter, "foreign", "data", "wrapper", " ", " ", " ");
3725//    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterForeignTable, TBaseType.rrw_alter, "foreign", "Table", " ", " ", " ", " ");
3726
3727    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterfunction, TBaseType.rrw_alter, "function", " ", " ", " ", " ", " ");
3728    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterGroup, TBaseType.rrw_alter, "group", " ", " ", " ", " ", " ");
3729    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterIndex, TBaseType.rrw_alter, "index", " ", " ", " ", " ", " ");
3730    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterLanguage, TBaseType.rrw_alter, "language", " ", " ", " ", " ", " ");
3731//    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterLargeObject, TBaseType.rrw_alter, "large", "object", " ", " ", " ", " ");
3732    //addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterMaterializedView, TBaseType.rrw_alter, "materialized", "view", " ", " ", " ", " ");
3733    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterOperator, TBaseType.rrw_alter, "operator", " ", " ", " ", " ", " ");
3734    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterOperatorClass, TBaseType.rrw_alter, "operator", "class", " ", " ", " ", " ");
3735    //addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterOperatorFamily, TBaseType.rrw_alter, "operator", "family", " ", " ", " ", " ");
3736    //addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterLanguage, TBaseType.rrw_alter, "procedural", "language", " ", " ", " ", " ");
3737    addgreenplumcmds(ESqlStatementType.sstgreenplumAlterProtocol, TBaseType.rrw_alter, "protocol", " ", " ", " ", " ", " ");
3738    addgreenplumcmds(ESqlStatementType.sstgreenplumAlterResourceQueue, TBaseType.rrw_alter, "resource", "queue", " ", " ", " ", " ");
3739    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterRole, TBaseType.rrw_alter, "role", " ", " ", " ", " ", " ");
3740    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterSchema, TBaseType.rrw_alter, "schema", " ", " ", " ", " ", " ");
3741    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterSequence, TBaseType.rrw_alter, "sequence", " ", " ", " ", " ", " ");
3742    //addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterServer, TBaseType.rrw_alter, "server", " ", " ", " ", " ", " ");
3743    addgreenplumcmds(ESqlStatementType.sstaltertable, TBaseType.rrw_alter, "table", " ", " ", " ", " ", " ");
3744    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterTablespace, TBaseType.rrw_alter, "tablespace", " ", " ", " ", " ", " ");
3745
3746//    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterTextSearchConfiguration, TBaseType.rrw_alter, "text", "search", "configuration", " ", " ", " ");
3747//    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterTextSearchDictionary, TBaseType.rrw_alter, "text", "search", "dictionary", " ", " ", " ");
3748//    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterTextSearchParser, TBaseType.rrw_alter, "text", "search", "parser", " ", " ", " ");
3749//    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterTextSearchTemplate, TBaseType.rrw_alter, "text", "search", "template", " ", " ", " ");
3750    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterTrigger, TBaseType.rrw_alter, "trigger", " ", " ", " ", " ", " ");
3751
3752    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterType, TBaseType.rrw_alter, "type", " ", " ", " ", " ", " ");
3753    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterUser, TBaseType.rrw_alter, "user", " ", " ", " ", " ", " ");
3754//    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterUserMapping, TBaseType.rrw_alter, "user", "mapping", " ", " ", " ", " ");
3755//    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterView, TBaseType.rrw_alter, "view", " ", " ", " ", " ", " ");
3756    addgreenplumcmds(ESqlStatementType.sstpostgresqlAnalyze, TBaseType.rrw_greenplum_analyse, " ", " ", " ", " ", " ", " ");
3757    addgreenplumcmds(ESqlStatementType.sstpostgresqlAnalyze, TBaseType.rrw_analyze, " ", " ", " ", " ", " ", " ");
3758
3759    addgreenplumcmds(ESqlStatementType.sstpostgresqlBegin, TBaseType.rrw_begin, " ", " ", " ", " ", " ", " ");
3760    addgreenplumcmds(ESqlStatementType.sstcall, TBaseType.rrw_call, " ", " ", " ", " ", " ", " ");
3761
3762    addgreenplumcmds(ESqlStatementType.sstpostgresqlCheckpoint, TBaseType.rrw_checkpoint, " ", " ", " ", " ", " ", " ");
3763    addgreenplumcmds(ESqlStatementType.sstpostgresqlClose, TBaseType.rrw_close, " ", " ", " ", " ", " ", " ");
3764
3765    addgreenplumcmds(ESqlStatementType.sstpostgresqlCluster, TBaseType.rrw_greenplum_cluster, " ", " ", " ", " ", " ", " ");
3766
3767    addgreenplumcmds(ESqlStatementType.sstpostgresqlComment, TBaseType.rrw_comment, "on", " ", " ", " ", " ", " ");
3768
3769    addgreenplumcmds(ESqlStatementType.sstpostgresqlCommit, TBaseType.rrw_commit, " ", " ", " ", " ", " ", " ");
3770    //addgreenplumcmds(ESqlStatementType.sstpostgresqlCommitPrepared, TBaseType.rrw_commit, "prepared", " ", " ", " ", " ", " ");
3771    addgreenplumcmds(ESqlStatementType.sstpostgresqlCopy, TBaseType.rrw_greenplum_copy, " ", " ", " ", " ", " ", " ");
3772
3773    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateAggregate, TBaseType.rrw_create, "aggregate", " ", " ", " ", " ", " ");
3774    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateCast, TBaseType.rrw_create, "cast", " ", " ", " ", " ", " ");
3775
3776    //addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateCollation, TBaseType.rrw_create, "collation", " ", " ", " ", " ", " ");
3777
3778    addgreenplumcmds(ESqlStatementType.sstcreatetrigger, TBaseType.rrw_create, "constraint", "trigger", " ", " ", " ", " ");
3779
3780    addgreenplumcmds(ESqlStatementType.sstpostgresqlConversion, TBaseType.rrw_create, "conversion", " ", " ", " ", " ", " ");
3781    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateDatabase, TBaseType.rrw_create, "database", " ", " ", " ", " ", " ");
3782    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateDomain, TBaseType.rrw_create, "domain", " ", " ", " ", " ", " ");
3783    //addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateEventTrigger, TBaseType.rrw_create, "event", "trigger", " ", " ", " ", " ");
3784    addgreenplumcmds(ESqlStatementType.sstcreateExtension, TBaseType.rrw_create, "extension", " ", " ", " ", " ", " ");
3785
3786//    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateForeignDataWrapper, TBaseType.rrw_create, "foreign", "data", "wrapper", " ", " ", " ");
3787//    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateForeignTable, TBaseType.rrw_create, "foreign", "table", " ", " ", " ", " ");
3788    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateExternalTable, TBaseType.rrw_create, "external", "table", " ", " ", " ", " ");
3789    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateExternalTable, TBaseType.rrw_create, "external", "temp", "table", " ", " ", " ");
3790    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateExternalTable, TBaseType.rrw_create, "external", "temporary", "table", " ", " ", " ");
3791    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateExternalTable, TBaseType.rrw_create, "external", "web", "table", " ", " ", " ");
3792    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateExternalTable, TBaseType.rrw_create, "external", "web", "temp", "table", " ", " ");
3793    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateExternalTable, TBaseType.rrw_create, "external", "web", "temporary", "table", " ", " ");
3794    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateFilespace, TBaseType.rrw_create, "filespace", " ", " ", " ", " ", " ");
3795
3796    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateFunction, TBaseType.rrw_create, "function", " ", " ", " ", " ", " ");
3797
3798    addgreenplumcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "global", "temp", "table", " ", " ", " ");
3799    addgreenplumcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "global", "temporary", "table", " ", " ", " ");
3800    addgreenplumcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "global", "unlocked", "table", " ", " ", " ");
3801
3802    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateGroup, TBaseType.rrw_create, "group", " ", " ", " ", " ", " ");
3803
3804
3805    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateIndex, TBaseType.rrw_create, "index", " ", " ", " ", " ", " ");
3806    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateLanguage, TBaseType.rrw_create, "language", " ", " ", " ", " ", " ");
3807
3808    addgreenplumcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "local", "temp", "table", " ", " ", " ");
3809    addgreenplumcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "local", "temporary", "table", " ", " ", " ");
3810    addgreenplumcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "local", "unlocked", "table", " ", " ", " ");
3811
3812    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateMaterializedView, TBaseType.rrw_create, "materialized", "view", " ", " ", " ", " ");
3813
3814    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateOperator, TBaseType.rrw_create, "operator", " ", " ", " ", " ", " ");
3815//    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateOperatorClass, TBaseType.rrw_create, "operator", "class", " ", " ", " ", " ");
3816//    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateOperatorFimaly, TBaseType.rrw_create, "operator", "family", " ", " ", " ", " ");
3817
3818    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateExternalTable, TBaseType.rrw_create, "readable", "external", "table", " ", " ", " ");
3819    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateExternalTable, TBaseType.rrw_create, "readable", "external", "temp", "table", " ", " ");
3820    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateExternalTable, TBaseType.rrw_create, "readable", "external", "temporary", "table", " ", " ");
3821    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateExternalTable, TBaseType.rrw_create, "readable","external", "web", "table", " ", " ");
3822    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateExternalTable, TBaseType.rrw_create, "readable","external", "web", "temp", "table", " ");
3823    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateExternalTable, TBaseType.rrw_create, "readable","external", "web", "temporary", "table", " ");
3824    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateExternalTable, TBaseType.rrw_create, "writable", "external", "table", " ", " ", " ");
3825    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateExternalTable, TBaseType.rrw_create, "writable", "external", "temp", "table", " ", " ");
3826    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateExternalTable, TBaseType.rrw_create, "writable", "external", "temporary", "table", " ", " ");
3827    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateExternalTable, TBaseType.rrw_create, "writable","external", "web", "table", " ", " ");
3828    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateExternalTable, TBaseType.rrw_create, "writable","external", "web", "temp", "table", " ");
3829    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateExternalTable, TBaseType.rrw_create, "writable","external", "web", "temporary", "table", " ");
3830
3831    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateResourceQueue, TBaseType.rrw_create, "resource", "queue", " ", " ", " ", " ");
3832
3833    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateFunction, TBaseType.rrw_create, "or", "replace", "function", " ", " ", " ");
3834    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateLanguage, TBaseType.rrw_create, "or", "replace", "language", " ", " ", " ");
3835    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateRole, TBaseType.rrw_create, "or", "replace", "role ", " ", " ", " ");
3836    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateView, TBaseType.rrw_create, "or", "replace", "temp", "view", " ", " ");
3837    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateView, TBaseType.rrw_create, "or", "replace", "temporary", "view", " ", " ");
3838    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateLanguage, TBaseType.rrw_create, "or", "replace", "trusted", "language", " ", " ");
3839    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateView, TBaseType.rrw_create, "or", "replace", "view", " ", " ", " ");
3840
3841    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateRole, TBaseType.rrw_create, "role", " ", " ", " ", " ", " ");
3842    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateRule, TBaseType.rrw_create, "rule", " ", " ", " ", " ", " ");
3843
3844
3845    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateSchema, TBaseType.rrw_create, "schema", " ", " ", " ", " ", " ");
3846
3847    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateSequence, TBaseType.rrw_create, "sequence", " ", " ", " ", " ", " ");
3848
3849
3850    //addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateServer, TBaseType.rrw_create, "server", " ", " ", " ", " ", " ");
3851
3852    addgreenplumcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "table", " ", " ", " ", " ", " ");
3853
3854    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateTablespace, TBaseType.rrw_create, "tablespace", " ", " ", " ", " ", " ");
3855
3856    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateSequence, TBaseType.rrw_create, "temp", "sequence", " ", " ", " ", " ");
3857    addgreenplumcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "temp", "table", " ", " ", " ", " ");
3858    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateView, TBaseType.rrw_create, "temp", "view", " ", " ", " ", " ");
3859    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateSequence, TBaseType.rrw_create, "temporary", "sequence", " ", " ", " ", " ");
3860    addgreenplumcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "temporary", "table", " ", " ", " ", " ");
3861    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateView, TBaseType.rrw_create, "temporary", "view", " ", " ", " ", " ");
3862
3863//    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateTextSearchConfiguration, TBaseType.rrw_create, "text", "search", "configuration", " ", " ", " ");
3864//    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateTextSearchDictionary, TBaseType.rrw_create, "text", "search", "dictionary", " ", " ", " ");
3865//    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateTextSearchParser, TBaseType.rrw_create, "text", "search", "parser", " ", " ", " ");
3866//    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateTextSearchTemplate, TBaseType.rrw_create, "text", "search", "template", " ", " ", " ");
3867
3868    addgreenplumcmds(ESqlStatementType.sstcreatetrigger, TBaseType.rrw_create, "trigger", " ", " ", " ", " ", " ");
3869
3870    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateLanguage, TBaseType.rrw_create, "trusted", "language", " ", " ", " ", " ");
3871
3872    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateType, TBaseType.rrw_create, "type", " ", " ", " ", " ", " ");
3873
3874    addgreenplumcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "unlocked", "table", " ", " ", " ", " ");
3875
3876    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateUser, TBaseType.rrw_create, "user", " ", " ", " ", " ", " ");
3877
3878//    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateUserMapping, TBaseType.rrw_create, "user", "mapping", " ", " ", " ", " ");
3879
3880    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateView, TBaseType.rrw_create, "view", " ", " ", " ", " ", " ");
3881
3882    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateIndex, TBaseType.rrw_create, "unique", "index", " ", " ", " ", " ");
3883
3884    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateExternalTable, TBaseType.rrw_create, "writable", "external", "table", " ", " ", " ");
3885    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateExternalTable, TBaseType.rrw_create, "writable", "external", "web", "table", " ", " ");
3886
3887    addgreenplumcmds(ESqlStatementType.sstpostgresqlDeallocate, TBaseType.rrw_deallocate, " ", " ", " ", " ", " ", " ");
3888
3889    addgreenplumcmds(ESqlStatementType.sstpostgresqlDeclare, TBaseType.rrw_declare, " ", " ", " ", " ", " ", " ");
3890
3891    addgreenplumcmds(ESqlStatementType.sstdelete, TBaseType.rrw_delete, " ", " ", " ", " ", " ", " ");
3892
3893//    addgreenplumcmds(ESqlStatementType.sstpostgresqlDiscard, TBaseType.rrw_discard, " ", " ", " ", " ", " ", " ");
3894    addgreenplumcmds(ESqlStatementType.sstpostgresqlDo, TBaseType.rrw_do, " ", " ", " ", " ", " ", " ");
3895
3896    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropAggregate, TBaseType.rrw_drop, "aggregate", " ", " ", " ", " ", " ");
3897
3898    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropCast, TBaseType.rrw_drop, "cast", " ", " ", " ", " ", " ");
3899
3900//    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropCollation, TBaseType.rrw_drop, "collation", " ", " ", " ", " ", " ");
3901
3902    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropConversion, TBaseType.rrw_drop, "conversion", " ", " ", " ", " ", " ");
3903
3904    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropDatabase, TBaseType.rrw_drop, "database", " ", " ", " ", " ", " ");
3905
3906    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropDomain, TBaseType.rrw_drop, "domain", " ", " ", " ", " ", " ");
3907
3908    addgreenplumcmds(ESqlStatementType.sstgreenplumDropExternalTable, TBaseType.rrw_drop, "external", "table", " ", " ", " ", " ");
3909
3910    addgreenplumcmds(ESqlStatementType.sstgreenplumDropExternalTable, TBaseType.rrw_drop, "external", "web", "table", " ", " ", " ");
3911
3912    addgreenplumcmds(ESqlStatementType.sstgreenplumDropFilespace, TBaseType.rrw_drop, "filespace", " ", " ", " ", " ", " ");
3913
3914//    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropExtension, TBaseType.rrw_drop, "extension", " ", " ", " ", " ", " ");
3915//    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropForeignDataWrapper, TBaseType.rrw_drop, "foreign", "data", "wrapper", " ", " ", " ");
3916//    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropForeignTable, TBaseType.rrw_drop, "foreign", "table", " ", " ", " ", " ");
3917
3918    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropFunction, TBaseType.rrw_drop, "function", " ", " ", " ", " ", " ");
3919
3920    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropGroup, TBaseType.rrw_drop, "group", " ", " ", " ", " ", " ");
3921
3922    addgreenplumcmds(ESqlStatementType.sstdropindex, TBaseType.rrw_drop, "index", " ", " ", " ", " ", " ");
3923
3924    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropLanguage, TBaseType.rrw_drop, "language", " ", " ", " ", " ", " ");
3925
3926    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropMaterializedView, TBaseType.rrw_drop, "materialized", "view", " ", " ", " ", " ");
3927
3928    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropOperator, TBaseType.rrw_drop, "operator", " ", " ", " ", " ", " ");
3929//    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropOperatorClass, TBaseType.rrw_drop, "operator", "class", " ", " ", " ", " ");
3930//    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropOperatorFamily, TBaseType.rrw_drop, "operator", "family ", " ", " ", " ", " ");
3931
3932    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropOwned, TBaseType.rrw_drop, "owned", " ", " ", " ", " ", " ");
3933
3934
3935    addgreenplumcmds(ESqlStatementType.sstgreenplumDropResourceQueue, TBaseType.rrw_drop, "resource", "queue", " ", " ", " ", " ");
3936    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropLanguage, TBaseType.rrw_drop, "procedural", "language", " ", " ", " ", " ");
3937
3938    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropRole, TBaseType.rrw_drop, "role", " ", " ", " ", " ", " ");
3939    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropRule, TBaseType.rrw_drop, "rule", " ", " ", " ", " ", " ");
3940    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropSchema, TBaseType.rrw_drop, "schema", " ", " ", " ", " ", " ");
3941    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropSequence, TBaseType.rrw_drop, "sequence", " ", " ", " ", " ", " ");
3942    //addgreenplumcmds(ESqlStatementType.sstpostgresqlDropServer, TBaseType.rrw_drop, "server", " ", " ", " ", " ", " ");
3943    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropTable, TBaseType.rrw_drop, "table", " ", " ", " ", " ", " ");
3944    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropTablespace, TBaseType.rrw_drop, "tablespace", " ", " ", " ", " ", " ");
3945
3946//    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropTextSearchConfiguration, TBaseType.rrw_drop, "text", "search", "configuration", " ", " ", " ");
3947//    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropTextSearchDictionary, TBaseType.rrw_drop, "text", "search", "dictionary", " ", " ", " ");
3948//    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropTextSearchParser, TBaseType.rrw_drop, "text", "search", "parser", " ", " ", " ");
3949//    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropTextSearchTemplate, TBaseType.rrw_drop, "text", "search", "template", " ", " ", " ");
3950
3951    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropTrigger, TBaseType.rrw_drop, "trigger", " ", " ", " ", " ", " ");
3952    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropType, TBaseType.rrw_drop, "type", " ", " ", " ", " ", " ");
3953    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropUser, TBaseType.rrw_drop, "user", " ", " ", " ", " ", " ");
3954    //addgreenplumcmds(ESqlStatementType.sstpostgresqlDropUserMapping, TBaseType.rrw_drop, "user", "mapping", " ", " ", " ", " ");
3955    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropView, TBaseType.rrw_drop, "view", " ", " ", " ", " ", " ");
3956
3957    addgreenplumcmds(ESqlStatementType.sstpostgresqlEnd, TBaseType.rrw_end, " ", " ", " ", " ", " ", " ");
3958
3959    addgreenplumcmds(ESqlStatementType.sstpostgresqlExecute, TBaseType.rrw_execute, " ", " ", " ", " ", " ", " ");
3960
3961    addgreenplumcmds(ESqlStatementType.sstpostgresqlExplain, TBaseType.rrw_explain, " ", " ", " ", " ", " ", " ");
3962
3963    addgreenplumcmds(ESqlStatementType.sstFetchFrom, TBaseType.rrw_fetch, " ", " ", " ", " ", " ", " ");
3964
3965    addgreenplumcmds(ESqlStatementType.sstpostgresqlGrant, TBaseType.rrw_grant, " ", " ", " ", " ", " ", " ");
3966
3967    addgreenplumcmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert, " ", " ", " ", " ", " ", " ");
3968
3969//    addgreenplumcmds(ESqlStatementType.sstpostgresqlListen, TBaseType.rrw_listen, " ", " ", " ", " ", " ", " ");
3970
3971    addgreenplumcmds(ESqlStatementType.sstpostgresqlLoad, TBaseType.rrw_load, " ", " ", " ", " ", " ", " ");
3972
3973    addgreenplumcmds(ESqlStatementType.sstpostgresqlLock, TBaseType.rrw_lock, " ", " ", " ", " ", " ", " ");
3974
3975    addgreenplumcmds(ESqlStatementType.sstpostgresqlMove, TBaseType.rrw_move, " ", " ", " ", " ", " ", " ");
3976
3977    //addgreenplumcmds(ESqlStatementType.sstpostgresqlNotify, TBaseType.rrw_notify, " ", " ", " ", " ", " ", " ");
3978
3979    addgreenplumcmds(ESqlStatementType.sstpostgresqlPrepare, TBaseType.rrw_prepare, " ", " ", " ", " ", " ", " ");
3980
3981//    addgreenplumcmds(ESqlStatementType.sstpostgresqlPrepareTransaction, TBaseType.rrw_prepare, "transaction", " ", " ", " ", " ", " ");
3982
3983    addgreenplumcmds(ESqlStatementType.sstpostgresqlReassignOwned, TBaseType.rrw_greenplum_reassign, "owned", " ", " ", " ", " ", " ");
3984
3985    addgreenplumcmds(ESqlStatementType.sstpostgresqlRefreshMaterializedView, TBaseType.rrw_refresh, "materialized", "view", " ", " ", " ", " ");
3986
3987    addgreenplumcmds(ESqlStatementType.sstpostgresqlReindex, TBaseType.rrw_greenplum_reindex, " ", " ", " ", " ", " ", " ");
3988
3989    addgreenplumcmds(ESqlStatementType.sstpostgresqlReleaseSavepoint, TBaseType.rrw_release, " ", " ", " ", " ", " ", " ");
3990    addgreenplumcmds(ESqlStatementType.sstpostgresqlReleaseSavepoint, TBaseType.rrw_release, "savepoint", " ", " ", " ", " ", " ");
3991
3992    addgreenplumcmds(ESqlStatementType.sstpostgresqlReset, TBaseType.rrw_reset, " ", " ", " ", " ", " ", " ");
3993
3994    addgreenplumcmds(ESqlStatementType.sstpostgresqlRevoke, TBaseType.rrw_revoke, " ", " ", " ", " ", " ", " ");
3995
3996    addgreenplumcmds(ESqlStatementType.sstpostgresqlRollback, TBaseType.rrw_rollback, " ", " ", " ", " ", " ", " ");
3997//    addgreenplumcmds(ESqlStatementType.sstpostgresqlRollbackPrepared, TBaseType.rrw_rollback, "prepared", " ", " ", " ", " ", " ");
3998
3999    addgreenplumcmds(ESqlStatementType.sstpostgresqlSavepoint, TBaseType.rrw_savepoint, " ", " ", " ", " ", " ", " ");
4000
4001//    addgreenplumcmds(ESqlStatementType.sstpostgresqlSecurityLabel, TBaseType.rrw_security, "label", " ", " ", " ", " ", " ");
4002
4003    addgreenplumcmds(ESqlStatementType.sstselect, TBaseType.rrw_select, " ", " ", " ", " ", " ", " ");
4004
4005    addgreenplumcmds(ESqlStatementType.sstpostgresqlSet, TBaseType.rrw_set, " ", " ", " ", " ", " ", " ");
4006
4007//    addgreenplumcmds(ESqlStatementType.sstpostgresqlSetConstraints, TBaseType.rrw_set, "constraints", " ", " ", " ", " ", " ");
4008    addgreenplumcmds(ESqlStatementType.sstpostgresqlSetRole, TBaseType.rrw_set, "local", "role", " ", " ", " ", " ");
4009    addgreenplumcmds(ESqlStatementType.sstpostgresqlSetSessionAuthorization, TBaseType.rrw_set, "local", "session", "authorization", " ", " ", " ");
4010    addgreenplumcmds(ESqlStatementType.sstpostgresqlSetRole, TBaseType.rrw_set, "role", " ", " ", " ", " ", " ");
4011
4012    addgreenplumcmds(ESqlStatementType.sstpostgresqlSetSessionAuthorization, TBaseType.rrw_set, "session", "authorization", " ", " ", " ", " ");
4013    addgreenplumcmds(ESqlStatementType.sstpostgresqlSetTransaction, TBaseType.rrw_set, "session", "characteristics", "as", "transaction", " ", " ");
4014    addgreenplumcmds(ESqlStatementType.sstpostgresqlSetRole, TBaseType.rrw_set, "session", "role", " ", " ", " ", " ");
4015    addgreenplumcmds(ESqlStatementType.sstpostgresqlSetSessionAuthorization, TBaseType.rrw_set, "session", "session", "authorization", " ", " ", " ");
4016
4017    addgreenplumcmds(ESqlStatementType.sstpostgresqlSetTransaction, TBaseType.rrw_set, "transaction", " ", " ", " ", " ", " ");
4018
4019    addgreenplumcmds(ESqlStatementType.sstgreenplumShow, TBaseType.rrw_show, " ", " ", " ", " ", " ", " ");
4020
4021    addgreenplumcmds(ESqlStatementType.sstgreenplumStartTransaction, TBaseType.rrw_start, "transaction", " ", " ", " ", " ", " ");
4022
4023    addgreenplumcmds(ESqlStatementType.sstpostgresqlTruncate, TBaseType.rrw_truncate, " ", " ", " ", " ", " ", " ");
4024
4025    //addgreenplumcmds(ESqlStatementType.sstpostgresqlUnlisten, TBaseType.rrw_unlisten, " ", " ", " ", " ", " ", " ");
4026
4027    addgreenplumcmds(ESqlStatementType.sstupdate, TBaseType.rrw_update, " ", " ", " ", " ", " ", " ");
4028
4029    addgreenplumcmds(ESqlStatementType.sstgreenplumVacuum, TBaseType.rrw_greenplum_vacuum, " ", " ", " ", " ", " ", " ");
4030    addgreenplumcmds(ESqlStatementType.sstValues, TBaseType.rrw_values, " ", " ", " ", " ", " ", " ");
4031
4032}
4033
4034
4035void initoraclecmds(){
4036// cmd must be sort alphabetically
4037    addoraclecmds(ESqlStatementType.sstoraclealtercluster, TBaseType.rrw_alter,"cluster"," "," "," "," "," ");
4038    addoraclecmds(ESqlStatementType.sstoraclealterdatabase, TBaseType.rrw_alter,"database"," "," "," "," "," ");
4039    addoraclecmds(ESqlStatementType.sstoraclealterdimension, TBaseType.rrw_alter,"dimension"," "," "," "," "," ");
4040    addoraclecmds(ESqlStatementType.sstoraclealterdiskgroup, TBaseType.rrw_alter,"diskgroup"," "," "," "," "," ");
4041    addoraclecmds(ESqlStatementType.sstoraclealterfunction, TBaseType.rrw_alter,"function"," "," "," "," "," ");
4042    addoraclecmds(ESqlStatementType.sstoraclealterindex, TBaseType.rrw_alter,"index"," "," "," "," "," ");
4043    addoraclecmds(ESqlStatementType.sstoraclealterindextype, TBaseType.rrw_alter,"indextype"," "," "," "," "," ");
4044    addoraclecmds(ESqlStatementType.sstoraclealterjava, TBaseType.rrw_alter,"java"," "," "," "," "," ");
4045    addoraclecmds(ESqlStatementType.sstAlterMaterializedView, TBaseType.rrw_alter,"materialized","view"," "," "," "," ");
4046    addoraclecmds(ESqlStatementType.sstoraclealtermaterializedviewlog, TBaseType.rrw_alter,"materialized","view","log"," "," "," ");
4047    addoraclecmds(ESqlStatementType.sstoraclealteroperator, TBaseType.rrw_alter,"operator"," "," "," "," "," ");
4048    addoraclecmds(ESqlStatementType.sstoraclealteroutline, TBaseType.rrw_alter,"outline"," "," "," "," "," ");
4049    addoraclecmds(ESqlStatementType.sstoraclealterpackage, TBaseType.rrw_alter,"package"," "," "," "," "," ");
4050    addoraclecmds(ESqlStatementType.sstoraclealterprocedure, TBaseType.rrw_alter,"procedure"," "," "," "," "," ");
4051    addoraclecmds(ESqlStatementType.sstoraclealterprofile, TBaseType.rrw_alter,"profile"," "," "," "," "," ");
4052    addoraclecmds(ESqlStatementType.sstoraclealterresourcecost, TBaseType.rrw_alter,"resource","cost"," "," "," "," ");
4053    addoraclecmds(ESqlStatementType.sstoraclealterrole, TBaseType.rrw_alter,"role"," "," "," "," "," ");
4054    addoraclecmds(ESqlStatementType.sstoraclealterrollbacksegment, TBaseType.rrw_alter,"rollback","segment"," "," "," "," ");
4055    addoraclecmds(ESqlStatementType.sstoraclealtersequence, TBaseType.rrw_alter,"sequence"," "," "," "," "," ");
4056    addoraclecmds(ESqlStatementType.sstoraclealtersession, TBaseType.rrw_alter,"session"," "," "," "," "," ");
4057    addoraclecmds(ESqlStatementType.sstoraclealtersystem, TBaseType.rrw_alter,"system"," "," "," "," "," ");
4058    addoraclecmds(ESqlStatementType.sstaltertable, TBaseType.rrw_alter,"table"," "," "," "," "," ");
4059    addoraclecmds(ESqlStatementType.sstoraclealtertablespace, TBaseType.rrw_alter,"tablespace"," "," "," "," "," ");
4060    addoraclecmds(ESqlStatementType.sstaltertrigger, TBaseType.rrw_alter,"trigger"," "," "," "," "," ");
4061    addoraclecmds(ESqlStatementType.sstoraclealtertype, TBaseType.rrw_alter,"type"," "," "," "," "," ");
4062    addoraclecmds(ESqlStatementType.sstoraclealteruser, TBaseType.rrw_alter,"user"," "," "," "," "," ");
4063    addoraclecmds(ESqlStatementType.sstoraclealterview, TBaseType.rrw_alter,"view"," "," "," "," "," ");
4064    addoraclecmds(ESqlStatementType.sstoracleanalyze, TBaseType.rrw_analyze," "," "," "," "," "," ");
4065    addoraclecmds(ESqlStatementType.sstoracleassociatestatistics, TBaseType.rrw_associate,"statistics"," "," "," "," "," ");
4066    addoraclecmds(ESqlStatementType.sstoracleaudit, TBaseType.rrw_audit," "," "," "," "," "," ");
4067    addoraclecmds(ESqlStatementType.sstoraclecall, TBaseType.rrw_call," "," "," "," "," "," ");
4068    addoraclecmds(ESqlStatementType.sstCommentOn, TBaseType.rrw_comment," "," "," "," "," "," ");
4069    addoraclecmds(ESqlStatementType.sstoraclecommit, TBaseType.rrw_commit," "," "," "," "," "," ");
4070    addoraclecmds(ESqlStatementType.sstoraclecreatetablespace, TBaseType.rrw_create,"bigfile","tablespace"," "," "," "," ");
4071    addoraclecmds(ESqlStatementType.sstoraclecreateindex, TBaseType.rrw_create,"bitmap","index"," "," "," "," ");
4072    addoraclecmds(ESqlStatementType.sstoraclecreatecluster, TBaseType.rrw_create,"cluster"," "," "," "," "," ");
4073    addoraclecmds(ESqlStatementType.sstoraclecreatecontext, TBaseType.rrw_create,"context"," "," "," "," "," ");
4074    addoraclecmds(ESqlStatementType.sstoraclecreatecontrolfile, TBaseType.rrw_create,"controlfile"," "," "," "," "," ");
4075    addoraclecmds(ESqlStatementType.sstplsql_createfunction, TBaseType.rrw_create,"editionable","function"," "," "," "," ");
4076    addoraclecmds(ESqlStatementType.sstplsql_createpackage, TBaseType.rrw_create,"editionable","package"," "," "," "," ");
4077    addoraclecmds(ESqlStatementType.sstoraclecreatepackagebody, TBaseType.rrw_create,"editionable","package","body"," "," "," ");
4078    addoraclecmds(ESqlStatementType.sstplsql_createprocedure, TBaseType.rrw_create,"editionable","procedure"," "," "," "," ");
4079    addoraclecmds(ESqlStatementType.sstoraclecreateview, TBaseType.rrw_create,"editioning","view"," "," "," "," ");
4080    addoraclecmds(ESqlStatementType.sstoraclecreatedatabase, TBaseType.rrw_create,"database"," "," "," "," "," ");
4081    addoraclecmds(ESqlStatementType.sstoraclecreatedatabaselink, TBaseType.rrw_create,"database","link"," "," "," "," ");
4082    addoraclecmds(ESqlStatementType.sstoraclecreatedimension, TBaseType.rrw_create,"dimension"," "," "," "," "," ");
4083    addoraclecmds(ESqlStatementType.sstoraclecreatedirectory, TBaseType.rrw_create,"directory"," "," "," "," "," ");
4084    addoraclecmds(ESqlStatementType.sstoraclecreatediskgroup, TBaseType.rrw_create,"diskgroup"," "," "," "," "," ");
4085    addoraclecmds(ESqlStatementType.sstoraclecreateview, TBaseType.rrw_create,"force","view"," "," "," "," ");
4086    addoraclecmds(ESqlStatementType.sstplsql_createfunction, TBaseType.rrw_create,"function"," "," "," "," "," ");
4087    addoraclecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"global","temp","table"," "," "," ");
4088    addoraclecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"global","temporary","table"," "," "," ");
4089    addoraclecmds(ESqlStatementType.sstoraclecreateindex, TBaseType.rrw_create,"index"," "," "," "," "," ");
4090    addoraclecmds(ESqlStatementType.sstoraclecreateindextype, TBaseType.rrw_create,"indextype"," "," "," "," "," ");
4091    addoraclecmds(ESqlStatementType.sstoraclecreatejava, TBaseType.rrw_create,"java"," "," "," "," "," ");
4092    addoraclecmds(ESqlStatementType.sstoraclecreatelibrary, TBaseType.rrw_create,"library"," "," "," "," "," ");
4093    addoraclecmds(ESqlStatementType.sstcreatematerializedview, TBaseType.rrw_create,"materialized","view"," "," "," "," ");
4094    addoraclecmds(ESqlStatementType.sstoraclecreatematerializedviewlog, TBaseType.rrw_create, "materialized","view","log"," "," "," ");
4095    addoraclecmds(ESqlStatementType.sstoraclecreateview, TBaseType.rrw_create,"noforce","view"," "," "," "," ");
4096    addoraclecmds(ESqlStatementType.sstplsql_createfunction, TBaseType.rrw_create,"noneditionable","function"," "," "," "," ");
4097    addoraclecmds(ESqlStatementType.sstplsql_createpackage, TBaseType.rrw_create,"noneditionable","package"," "," "," "," ");
4098    addoraclecmds(ESqlStatementType.sstoraclecreatepackagebody, TBaseType.rrw_create,"noneditionable","package","body"," "," "," ");
4099    addoraclecmds(ESqlStatementType.sstplsql_createprocedure, TBaseType.rrw_create,"noneditionable","procedure"," "," "," "," ");
4100    addoraclecmds(ESqlStatementType.sstoraclecreateoperator, TBaseType.rrw_create,"operator"," "," "," "," "," ");
4101    addoraclecmds(ESqlStatementType.sstoraclecreatecontext, TBaseType.rrw_create,"or","replace","context"," "," "," ");
4102    addoraclecmds(ESqlStatementType.sstoraclecreateview, TBaseType.rrw_create,"or","replace","editionable","editioning","view"," ");
4103    addoraclecmds(ESqlStatementType.sstplsql_createfunction, TBaseType.rrw_create,"or","replace","editionable","function"," "," ");
4104    addoraclecmds(ESqlStatementType.sstplsql_createpackage, TBaseType.rrw_create,"or","replace","editionable","package"," "," ");
4105    addoraclecmds(ESqlStatementType.sstoraclecreatepackagebody, TBaseType.rrw_create,"or","replace","editionable","package","body"," ");
4106    addoraclecmds(ESqlStatementType.sstplsql_createprocedure, TBaseType.rrw_create,"or","replace","editionable","procedure"," "," ");
4107    addoraclecmds(ESqlStatementType.sstplsql_createtrigger, TBaseType.rrw_create,"or","replace","editionable","trigger"," "," ");
4108    addoraclecmds(ESqlStatementType.sstoraclecreateview, TBaseType.rrw_create,"or","replace","editionable","view"," "," ");
4109    addoraclecmds(ESqlStatementType.sstoraclecreateview, TBaseType.rrw_create,"or","replace","editioning","view"," "," ");
4110    addoraclecmds(ESqlStatementType.sstoraclecreatedirectory, TBaseType.rrw_create,"or","replace","directory"," "," "," ");
4111    addoraclecmds(ESqlStatementType.sstoraclecreateview, TBaseType.rrw_create,"or","replace","force","view"," "," ");
4112    addoraclecmds(ESqlStatementType.sstoraclecreateview, TBaseType.rrw_create,"or","replace","force","editionable","view"," ");
4113    addoraclecmds(ESqlStatementType.sstoraclecreateview, TBaseType.rrw_create,"or","replace","force","editionable","editioning","view");
4114    addoraclecmds(ESqlStatementType.sstoraclecreateview, TBaseType.rrw_create,"or","replace","force","editioning","view"," ");
4115    addoraclecmds(ESqlStatementType.sstoraclecreateview, TBaseType.rrw_create,"or","replace","force","noneditionable","view"," ");
4116    addoraclecmds(ESqlStatementType.sstplsql_createfunction, TBaseType.rrw_create,"or","replace","function"," "," "," ");
4117    addoraclecmds(ESqlStatementType.sstoraclecreatelibrary, TBaseType.rrw_create,"or","replace","library"," "," "," ");
4118    addoraclecmds(ESqlStatementType.sstoraclecreateview, TBaseType.rrw_create,"or","replace","noforce","view"," "," ");
4119    addoraclecmds(ESqlStatementType.sstplsql_createfunction, TBaseType.rrw_create,"or","replace","noneditionable","function"," "," ");
4120    addoraclecmds(ESqlStatementType.sstplsql_createpackage, TBaseType.rrw_create,"or","replace","noneditionable","package"," "," ");
4121    addoraclecmds(ESqlStatementType.sstoraclecreatepackagebody, TBaseType.rrw_create,"or","replace","noneditionable","package","body"," ");
4122    addoraclecmds(ESqlStatementType.sstplsql_createprocedure, TBaseType.rrw_create,"or","replace","noneditionable","procedure"," "," ");
4123    addoraclecmds(ESqlStatementType.sstoraclecreatesynonym, TBaseType.rrw_create,"or","replace","noneditionable","public","synonym"," ");
4124    addoraclecmds(ESqlStatementType.sstplsql_createtrigger, TBaseType.rrw_create,"or","replace","noneditionable","trigger"," "," ");
4125    addoraclecmds(ESqlStatementType.sstoraclecreateview, TBaseType.rrw_create,"or","replace","noneditionable","view"," "," ");
4126    addoraclecmds(ESqlStatementType.sstplsql_createpackage, TBaseType.rrw_create,"or","replace","package"," "," "," ");
4127    addoraclecmds(ESqlStatementType.sstoraclecreatepackagebody, TBaseType.rrw_create,"or","replace","package","body"," "," ");
4128    addoraclecmds(ESqlStatementType.sstplsql_createprocedure, TBaseType.rrw_create,"or","replace","procedure"," "," "," ");
4129    addoraclecmds(ESqlStatementType.sstoraclecreatesynonym, TBaseType.rrw_create,"or","replace","public","synonym"," "," ");
4130    addoraclecmds(ESqlStatementType.sstoraclecreatesynonym, TBaseType.rrw_create,"or","replace","synonym"," "," "," ");
4131    addoraclecmds(ESqlStatementType.sstplsql_createtrigger, TBaseType.rrw_create,"or","replace","trigger"," "," "," ");
4132    addoraclecmds(ESqlStatementType.sstplsql_createtype_placeholder, TBaseType.rrw_create,"or","replace","type"," "," "," ");
4133    addoraclecmds(ESqlStatementType.sstplsql_createtypebody, TBaseType.rrw_create,"or","replace","type","body"," "," ");
4134    addoraclecmds(ESqlStatementType.sstoraclecreateview, TBaseType.rrw_create,"or","replace","view"," "," "," ");
4135    addoraclecmds(ESqlStatementType.sstoraclecreateoutline, TBaseType.rrw_create,"outline"," "," "," "," "," ");
4136    addoraclecmds(ESqlStatementType.sstplsql_createpackage, TBaseType.rrw_create,"package"," "," "," "," "," ");
4137    addoraclecmds(ESqlStatementType.sstoraclecreatepackagebody, TBaseType.rrw_create,"package","body"," "," "," "," ");
4138    addoraclecmds(ESqlStatementType.sstoraclecreatepfile, TBaseType.rrw_create,"pfile"," "," "," "," "," ");
4139    addoraclecmds(ESqlStatementType.sstplsql_createprocedure, TBaseType.rrw_create,"procedure"," "," "," "," "," ");
4140    addoraclecmds(ESqlStatementType.sstoraclecreateprofile, TBaseType.rrw_create,"profile"," "," "," "," "," ");
4141    addoraclecmds(ESqlStatementType.sstoraclecreatedatabaselink, TBaseType.rrw_create,"public","database","link"," "," "," ");
4142    addoraclecmds(ESqlStatementType.sstoraclecreatesynonym, TBaseType.rrw_create,"public","synonym"," "," "," "," ");
4143    addoraclecmds(ESqlStatementType.sstoraclecreaterestorepoint, TBaseType.rrw_create,"resotre","point"," "," "," "," ");
4144    addoraclecmds(ESqlStatementType.sstoraclecreaterole, TBaseType.rrw_create,"role"," "," "," "," "," ");
4145    addoraclecmds(ESqlStatementType.sstoraclecreaterollbacksegment, TBaseType.rrw_create,"rollback","segment"," "," "," "," ");
4146    addoraclecmds(ESqlStatementType.sstoraclecreatedatabaselink, TBaseType.rrw_create,"shared","database","link"," "," "," ");
4147    addoraclecmds(ESqlStatementType.sstoraclecreatedatabaselink, TBaseType.rrw_create,"shared","public","database","link"," "," ");
4148    addoraclecmds(ESqlStatementType.sstoraclecreateschema, TBaseType.rrw_create,"schema"," "," "," "," "," ");
4149    addoraclecmds(ESqlStatementType.sstoraclecreatesequence, TBaseType.rrw_create,"sequence"," "," "," "," "," ");
4150    addoraclecmds(ESqlStatementType.sstoraclecreatetablespace, TBaseType.rrw_create,"smallfile","tablespace"," "," "," "," ");
4151    addoraclecmds(ESqlStatementType.sstoraclecreatespfile, TBaseType.rrw_create,"spfile"," "," "," "," "," ");
4152    addoraclecmds(ESqlStatementType.sstoraclecreatesynonym, TBaseType.rrw_create,"synonym"," "," "," "," "," ");
4153    addoraclecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"table"," "," "," "," "," ");
4154    addoraclecmds(ESqlStatementType.sstoraclecreatetablespace, TBaseType.rrw_create,"tablespace"," "," "," "," "," ");
4155    addoraclecmds(ESqlStatementType.sstoraclecreatetablespace, TBaseType.rrw_create,"temporary","tablespace"," "," "," "," ");
4156    addoraclecmds(ESqlStatementType.sstplsql_createtrigger, TBaseType.rrw_create,"trigger"," "," "," "," "," ");
4157    addoraclecmds(ESqlStatementType.sstplsql_createtype_placeholder, TBaseType.rrw_create,"type"," "," "," "," "," ");
4158    addoraclecmds(ESqlStatementType.sstplsql_createtypebody, TBaseType.rrw_create,"type","body"," "," "," "," ");
4159    addoraclecmds(ESqlStatementType.sstoraclecreatetablespace, TBaseType.rrw_create,"undo","tablespace"," "," "," "," ");
4160    addoraclecmds(ESqlStatementType.sstoraclecreateindex, TBaseType.rrw_create,"unique","index"," "," "," "," ");
4161    addoraclecmds(ESqlStatementType.sstoraclecreateuser, TBaseType.rrw_create,"user"," "," "," "," "," ");
4162    addoraclecmds(ESqlStatementType.sstoraclecreateview, TBaseType.rrw_create,"view"," "," "," "," "," ");
4163    addoraclecmds(ESqlStatementType.sstplsql_createpackage, TBaseType.rrw_custom,"package"," "," "," "," "," ");
4164    addoraclecmds(ESqlStatementType.sstoraclecreatepackagebody, TBaseType.rrw_custom,"package","body"," "," "," "," ");
4165    addoraclecmds(ESqlStatementType.sstdelete, TBaseType.rrw_delete," "," "," "," "," "," ");
4166    addoraclecmds(ESqlStatementType.sstoracledisassociatestatistics, TBaseType.rrw_disassociate, "statistics"," "," "," "," "," ");
4167    addoraclecmds(ESqlStatementType.sstoracledropcluster, TBaseType.rrw_drop,"cluster"," "," "," "," "," ");
4168    addoraclecmds(ESqlStatementType.sstoracledropcontext, TBaseType.rrw_drop,"context"," "," "," "," "," ");
4169    addoraclecmds(ESqlStatementType.sstoracledropdatabase, TBaseType.rrw_drop,"database"," "," "," "," "," ");
4170    addoraclecmds(ESqlStatementType.sstoracledropdatabaselink, TBaseType.rrw_drop,"database","link"," "," "," "," ");
4171    addoraclecmds(ESqlStatementType.sstoracledropdimension, TBaseType.rrw_drop,"dimension"," "," "," "," "," ");
4172    addoraclecmds(ESqlStatementType.sstoracledropdirectory, TBaseType.rrw_drop,"directory"," "," "," "," "," ");
4173    addoraclecmds(ESqlStatementType.sstoracledropdiskgroup, TBaseType.rrw_drop,"diskgroup"," "," "," "," "," ");
4174    addoraclecmds(ESqlStatementType.sstoracledropfunction, TBaseType.rrw_drop,"function"," "," "," "," "," ");
4175    addoraclecmds(ESqlStatementType.sstoracledropindex, TBaseType.rrw_drop,"index"," "," "," "," "," ");
4176    addoraclecmds(ESqlStatementType.sstoracledropindextype, TBaseType.rrw_drop,"indextype"," "," "," "," "," ");
4177    addoraclecmds(ESqlStatementType.sstoracledropjava, TBaseType.rrw_drop,"java"," "," "," "," "," ");
4178    addoraclecmds(ESqlStatementType.sstoracledroplibrary, TBaseType.rrw_drop,"library"," "," "," "," "," ");
4179    addoraclecmds(ESqlStatementType.sstoracledropmaterializedview, TBaseType.rrw_drop,"materialized","view"," "," "," "," ");
4180    addoraclecmds(ESqlStatementType.sstoracledropmaterializedviewlog, TBaseType.rrw_drop,"materialized","view","log"," "," "," ");
4181    addoraclecmds(ESqlStatementType.sstoracledropoperator, TBaseType.rrw_drop,"operator"," "," "," "," "," ");
4182    addoraclecmds(ESqlStatementType.sstoracledropoutline, TBaseType.rrw_drop,"outline"," "," "," "," "," ");
4183    addoraclecmds(ESqlStatementType.sstoracledroppackage, TBaseType.rrw_drop,"package"," "," "," "," "," ");
4184    addoraclecmds(ESqlStatementType.sstoracledropprocedure, TBaseType.rrw_drop,"procedure"," "," "," "," "," ");
4185    addoraclecmds(ESqlStatementType.sstoracledropprofile, TBaseType.rrw_drop,"profile"," "," "," "," "," ");
4186    addoraclecmds(ESqlStatementType.sstoracledropdatabaselink, TBaseType.rrw_drop,"public","database","link"," "," "," ");
4187    addoraclecmds(ESqlStatementType.sstoracledropsynonym, TBaseType.rrw_drop,"public","synonym"," "," "," "," ");
4188    addoraclecmds(ESqlStatementType.sstoracledroprestorepoint, TBaseType.rrw_drop,"restore","point"," "," "," "," ");
4189    addoraclecmds(ESqlStatementType.sstoracledroprole, TBaseType.rrw_drop,"role"," "," "," "," "," ");
4190    addoraclecmds(ESqlStatementType.sstoracledroprollbacksegment, TBaseType.rrw_drop,"rollback","segment"," "," "," "," ");
4191    addoraclecmds(ESqlStatementType.sstoracledropsequence, TBaseType.rrw_drop,"sequence"," "," "," "," "," ");
4192    addoraclecmds(ESqlStatementType.sstoracledropsynonym, TBaseType.rrw_drop,"synonym"," "," "," "," "," ");
4193    addoraclecmds(ESqlStatementType.sstoracledroptable, TBaseType.rrw_drop,"table"," "," "," "," "," ");
4194    addoraclecmds(ESqlStatementType.sstoracledroptablespace, TBaseType.rrw_drop,"tablespace"," "," "," "," "," ");
4195    addoraclecmds(ESqlStatementType.sstoracledroptrigger, TBaseType.rrw_drop,"trigger"," "," "," "," "," ");
4196    addoraclecmds(ESqlStatementType.sstoracledroptype, TBaseType.rrw_drop,"type"," "," "," "," "," ");
4197    addoraclecmds(ESqlStatementType.sstoracledroptypebody, TBaseType.rrw_drop,"type","body"," "," "," "," ");
4198    addoraclecmds(ESqlStatementType.sstoracledropuser, TBaseType.rrw_drop,"user"," "," "," "," "," ");
4199    addoraclecmds(ESqlStatementType.sstoracledropview, TBaseType.rrw_drop,"view"," "," "," "," "," ");
4200    addoraclecmds(ESqlStatementType.sstoracleexecuteprocedure, TBaseType.rrw_execute," "," "," "," "," "," ");
4201    addoraclecmds(ESqlStatementType.sstplsql_execimmestmt, TBaseType.rrw_execute,"immediate"," "," "," "," "," ");
4202    addoraclecmds(ESqlStatementType.sstExplain, TBaseType.rrw_explain,"plan"," "," "," "," "," ");
4203    addoraclecmds(ESqlStatementType.sstoracleflashbackdatabase, TBaseType.rrw_flashback,"database"," "," "," "," "," ");
4204    addoraclecmds(ESqlStatementType.sstoracleflashbacktable, TBaseType.rrw_flashback,"table"," "," "," "," "," ");
4205    addoraclecmds(ESqlStatementType.sstoraclegrant, TBaseType.rrw_grant," "," "," "," "," "," ");
4206    addoraclecmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert," "," "," "," "," "," ");
4207    addoraclecmds(ESqlStatementType.sstoraclelocktable, TBaseType.rrw_lock,"table"," "," "," "," "," ");
4208    addoraclecmds(ESqlStatementType.sstmerge, TBaseType.rrw_merge," "," "," "," "," "," ");
4209    addoraclecmds(ESqlStatementType.sstoraclenoaudit, TBaseType.rrw_noaudit," "," "," "," "," "," ");
4210    addoraclecmds(ESqlStatementType.sstoraclepurge, TBaseType.rrw_purge," "," "," "," "," "," ");
4211    addoraclecmds(ESqlStatementType.sstoraclerename, TBaseType.rrw_rename," "," "," "," "," "," ");
4212    addoraclecmds(ESqlStatementType.sstoraclerevoke, TBaseType.rrw_revoke," "," "," "," "," "," ");
4213    addoraclecmds(ESqlStatementType.sstoraclerollback, TBaseType.rrw_rollback," "," "," "," "," "," ");
4214    addoraclecmds(ESqlStatementType.sstoraclesavepoint, TBaseType.rrw_savepoint," "," "," "," "," "," ");
4215    addoraclecmds(ESqlStatementType.sstselect, TBaseType.rrw_select," "," "," "," "," "," ");
4216    addoraclecmds(ESqlStatementType.sstoraclesetconstraint, TBaseType.rrw_set,"constraint"," "," "," "," "," ");
4217    addoraclecmds(ESqlStatementType.sstoraclesetconstraint, TBaseType.rrw_set,"constraints"," "," "," "," "," ");
4218    addoraclecmds(ESqlStatementType.sstoraclesetrole, TBaseType.rrw_set,"role"," "," "," "," "," ");
4219    addoraclecmds(ESqlStatementType.sstoraclesettransaction, TBaseType.rrw_set,"transaction"," "," "," "," "," ");
4220    addoraclecmds(ESqlStatementType.sstTruncate, TBaseType.rrw_truncate," "," "," "," "," "," ");
4221    addoraclecmds(ESqlStatementType.sstplsql_createtype_placeholder, TBaseType.rrw_type2," "," "," "," "," "," ");
4222    addoraclecmds(ESqlStatementType.sstupdate, TBaseType.rrw_update," "," "," "," "," "," ");
4223
4224}
4225
4226void initinformixcmds(){
4227// cmd must be sort alphabetically
4228    addinformixcmds(ESqlStatementType.sstinformixAllocateCollection, TBaseType.rrw_allocate,"collection"," "," "," "," "," ");
4229    addinformixcmds(ESqlStatementType.sstinformixAllocateDescriptor, TBaseType.rrw_allocate,"descriptor"," "," "," "," "," ");
4230    addinformixcmds(ESqlStatementType.sstinformixAlterAccess_Method, TBaseType.rrw_alter,"access_method"," "," "," "," "," ");
4231    addinformixcmds(ESqlStatementType.sstinformixAlterFragment, TBaseType.rrw_alter,"fragment"," "," "," "," "," ");
4232    addinformixcmds(ESqlStatementType.sstinformixAlterFunction, TBaseType.rrw_alter,"function"," "," "," "," "," ");
4233    addinformixcmds(ESqlStatementType.sstinformixAlterIndex, TBaseType.rrw_alter,"index"," "," "," "," "," ");
4234    addinformixcmds(ESqlStatementType.sstinformixAlterProcedure, TBaseType.rrw_alter,"procedure"," "," "," "," "," ");
4235    addinformixcmds(ESqlStatementType.sstinformixAlterRoutine, TBaseType.rrw_alter,"routine"," "," "," "," "," ");
4236    addinformixcmds(ESqlStatementType.sstinformixAlterSecurityLabelComponent, TBaseType.rrw_alter,"security","label","component"," "," "," ");
4237    addinformixcmds(ESqlStatementType.sstinformixAlterSequence, TBaseType.rrw_alter,"sequence"," "," "," "," "," ");
4238    addinformixcmds(ESqlStatementType.sstinformixAlterTable, TBaseType.rrw_alter,"table"," "," "," "," "," ");
4239    addinformixcmds(ESqlStatementType.sstinformixAlterTrustedContext, TBaseType.rrw_alter,"trusted","context"," "," "," "," ");
4240    addinformixcmds(ESqlStatementType.sstinformixAlterUser, TBaseType.rrw_alter,"user"," "," "," "," "," ");
4241    addinformixcmds(ESqlStatementType.sstinformixBegin, TBaseType.rrw_begin," "," "," "," "," "," ");
4242    addinformixcmds(ESqlStatementType.sstinformixClose, TBaseType.rrw_close," "," "," "," "," "," ");
4243    addinformixcmds(ESqlStatementType.sstinformixCloseDatabase, TBaseType.rrw_close,"database"," "," "," "," "," ");
4244    addinformixcmds(ESqlStatementType.sstinformixCommit, TBaseType.rrw_commit," "," "," "," "," "," ");
4245    addinformixcmds(ESqlStatementType.sstinformixConnect, TBaseType.rrw_informix_connect_to," "," "," "," "," "," ");
4246    addinformixcmds(ESqlStatementType.sstinformixCreateAccess_Method, TBaseType.rrw_create,"access_method"," "," "," "," "," ");
4247    addinformixcmds(ESqlStatementType.sstinformixCreateAggregate, TBaseType.rrw_create,"aggregate"," "," "," "," "," ");
4248    addinformixcmds(ESqlStatementType.sstinformixCreateCast, TBaseType.rrw_create,"cast"," "," "," "," "," ");
4249    addinformixcmds(ESqlStatementType.sstinformixCreateIndex, TBaseType.rrw_create,"cluster","index"," "," "," "," ");
4250    addinformixcmds(ESqlStatementType.sstinformixCreateDatabase, TBaseType.rrw_create,"database"," "," "," "," "," ");
4251    addinformixcmds(ESqlStatementType.sstinformixCreateFunction, TBaseType.rrw_create,"dba","function"," "," "," "," ");
4252    addinformixcmds(ESqlStatementType.sstinformixCreateProcedure, TBaseType.rrw_create,"dba","procedure"," "," "," "," ");
4253    addinformixcmds(ESqlStatementType.sstinformixCreateDefaultUser, TBaseType.rrw_create,"default","user"," "," "," "," ");
4254    addinformixcmds(ESqlStatementType.sstinformixCreateIndex, TBaseType.rrw_create,"distinct","cluster","index"," "," "," ");
4255    addinformixcmds(ESqlStatementType.sstinformixCreateIndex, TBaseType.rrw_create,"distinct","index"," "," "," "," ");
4256    addinformixcmds(ESqlStatementType.sstinformixCreateDistinctType, TBaseType.rrw_create,"distinct","type"," "," "," "," ");
4257    addinformixcmds(ESqlStatementType.sstinformixCreateExternalTable, TBaseType.rrw_create,"external","table"," "," "," "," ");
4258    addinformixcmds(ESqlStatementType.sstinformixCreateFunction, TBaseType.rrw_create,"function"," "," "," "," "," ");
4259    addinformixcmds(ESqlStatementType.sstinformixCreateFunctionFrom, TBaseType.rrw_create,"function","from"," "," "," "," ");
4260    addinformixcmds(ESqlStatementType.sstinformixCreateIndex, TBaseType.rrw_create,"index"," "," "," "," "," ");
4261    addinformixcmds(ESqlStatementType.sstinformixCreateOpaqueType, TBaseType.rrw_create,"opaque","type"," "," "," "," ");
4262    addinformixcmds(ESqlStatementType.sstinformixCreateOpclass, TBaseType.rrw_create,"opclass"," "," "," "," "," ");
4263    addinformixcmds(ESqlStatementType.sstinformixCreateSynonym, TBaseType.rrw_create,"private","synonym"," "," "," "," ");
4264    addinformixcmds(ESqlStatementType.sstinformixCreateProcedure, TBaseType.rrw_create,"procedure"," "," "," "," "," ");
4265    addinformixcmds(ESqlStatementType.sstinformixCreateProcedureFrom, TBaseType.rrw_create,"procedure","from"," "," "," "," ");
4266    addinformixcmds(ESqlStatementType.sstinformixCreateSynonym, TBaseType.rrw_create,"public","synonym"," "," "," "," ");
4267    addinformixcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"raw","table"," "," "," "," ");
4268    addinformixcmds(ESqlStatementType.sstinformixCreateRole, TBaseType.rrw_create,"role"," "," "," "," "," ");
4269    addinformixcmds(ESqlStatementType.sstinformixCreateRoutineFrom, TBaseType.rrw_create,"routine","from"," "," "," "," ");
4270    addinformixcmds(ESqlStatementType.sstinformixCreateRowType, TBaseType.rrw_create,"row","type"," "," "," "," ");
4271    addinformixcmds(ESqlStatementType.sstinformixCreateSchema, TBaseType.rrw_create,"schema"," "," "," "," "," ");
4272    addinformixcmds(ESqlStatementType.sstinformixCreateSecurityLabel, TBaseType.rrw_create,"security","label"," "," "," "," ");
4273    addinformixcmds(ESqlStatementType.sstinformixCreateSecurityLabelComponent, TBaseType.rrw_create,"security","label","component"," "," "," ");
4274    addinformixcmds(ESqlStatementType.sstinformixCreateSecurityPolicy, TBaseType.rrw_create,"security","policy"," "," "," "," ");
4275    addinformixcmds(ESqlStatementType.sstinformixCreateSequence, TBaseType.rrw_create,"sequence"," "," "," "," "," ");
4276    addinformixcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"standard","table"," "," "," "," ");
4277    addinformixcmds(ESqlStatementType.sstinformixCreateSynonym, TBaseType.rrw_create,"synonym"," "," "," "," "," ");
4278    addinformixcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"table"," "," "," "," "," ");
4279    addinformixcmds(ESqlStatementType.sstinformixCreateTempTable, TBaseType.rrw_create,"temp","table"," "," "," "," ");
4280    addinformixcmds(ESqlStatementType.sstcreatetrigger, TBaseType.rrw_create,"trigger"," "," "," "," "," ");
4281    addinformixcmds(ESqlStatementType.sstinformixCreateTrustedContext, TBaseType.rrw_create,"trusted","context"," "," "," "," ");
4282    addinformixcmds(ESqlStatementType.sstinformixCreateIndex, TBaseType.rrw_create,"unique","cluster","index"," "," "," ");
4283    addinformixcmds(ESqlStatementType.sstinformixCreateIndex, TBaseType.rrw_create,"unique","index"," "," "," "," ");
4284    addinformixcmds(ESqlStatementType.sstinformixCreateUser, TBaseType.rrw_create,"user"," "," "," "," "," ");
4285    addinformixcmds(ESqlStatementType.sstinformixCreateView, TBaseType.rrw_create,"view"," "," "," "," "," ");
4286    addinformixcmds(ESqlStatementType.sstinformixCreateXaDatasource, TBaseType.rrw_create,"xadatasource"," "," "," "," "," ");
4287    addinformixcmds(ESqlStatementType.sstinformixCreateXaDatasourceType, TBaseType.rrw_create,"xadatasource","type"," "," "," "," ");
4288    //addinformixcmds(ESqlStatementType.sstinformixDatabase, TBaseType.rrw_database," "," "," "," "," "," ");
4289    addinformixcmds(ESqlStatementType.sstinformixDeallocateCollection, TBaseType.rrw_deallocate,"collection"," "," "," "," "," ");
4290    addinformixcmds(ESqlStatementType.sstinformixDeallocateDescriptor, TBaseType.rrw_deallocate, "descriptor"," "," "," "," "," ");
4291    addinformixcmds(ESqlStatementType.sstinformixDeallocateRow, TBaseType.rrw_deallocate,"row"," "," "," "," "," ");
4292    addinformixcmds(ESqlStatementType.sstinformixDeclare, TBaseType.rrw_declare," "," "," "," "," "," ");
4293    addinformixcmds(ESqlStatementType.sstdelete, TBaseType.rrw_delete," "," "," "," "," "," ");
4294    addinformixcmds(ESqlStatementType.sstinformixDescribe, TBaseType.rrw_describe," "," "," "," "," "," ");
4295    addinformixcmds(ESqlStatementType.sstinformixDescribeInput, TBaseType.rrw_describe,"input"," "," "," "," "," ");
4296    addinformixcmds(ESqlStatementType.sstinformixDisconnect, TBaseType.rrw_disconnect," "," "," "," "," "," ");
4297    addinformixcmds(ESqlStatementType.sstinformixDropAccess_Method, TBaseType.rrw_drop,"access_method"," "," "," "," "," ");
4298    addinformixcmds(ESqlStatementType.sstinformixDropAggregate, TBaseType.rrw_drop,"aggregate"," "," "," "," "," ");
4299    addinformixcmds(ESqlStatementType.sstinformixDropCast, TBaseType.rrw_drop,"cast"," "," "," "," "," ");
4300    addinformixcmds(ESqlStatementType.sstdropdatabase, TBaseType.rrw_drop,"database"," "," "," "," "," ");
4301    addinformixcmds(ESqlStatementType.sstinformixDropFunction, TBaseType.rrw_drop,"function"," "," "," "," "," ");
4302    addinformixcmds(ESqlStatementType.sstinformixDropIndex, TBaseType.rrw_drop,"index"," "," "," "," "," ");
4303    addinformixcmds(ESqlStatementType.sstinformixDropOpclass, TBaseType.rrw_drop,"opclass"," "," "," "," "," ");
4304    addinformixcmds(ESqlStatementType.sstinformixDropProcedure, TBaseType.rrw_drop,"procedure"," "," "," "," "," ");
4305    addinformixcmds(ESqlStatementType.sstinformixDropRole, TBaseType.rrw_drop,"role"," "," "," "," "," ");
4306    addinformixcmds(ESqlStatementType.sstinformixDropRoutine, TBaseType.rrw_drop,"routine"," "," "," "," "," ");
4307    addinformixcmds(ESqlStatementType.sstinformixDropRowType, TBaseType.rrw_drop,"row","type"," "," "," "," ");
4308    addinformixcmds(ESqlStatementType.sstinformixDropSecurity, TBaseType.rrw_drop,"security"," "," "," "," "," ");
4309    addinformixcmds(ESqlStatementType.sstinformixDropSequence, TBaseType.rrw_drop,"sequence"," "," "," "," "," ");
4310    addinformixcmds(ESqlStatementType.sstinformixDropSynonym, TBaseType.rrw_drop,"synonym"," "," "," "," "," ");
4311    addinformixcmds(ESqlStatementType.sstinformixDropTable, TBaseType.rrw_drop,"table"," "," "," "," "," ");
4312    addinformixcmds(ESqlStatementType.sstinformixDropTrigger, TBaseType.rrw_drop,"trigger"," "," "," "," "," ");
4313    addinformixcmds(ESqlStatementType.sstinformixDropTrustedContext, TBaseType.rrw_drop,"trusted","context"," "," "," "," ");
4314    addinformixcmds(ESqlStatementType.sstinformixDropType, TBaseType.rrw_drop,"type"," "," "," "," "," ");
4315    addinformixcmds(ESqlStatementType.sstinformixDropUser, TBaseType.rrw_drop,"user"," "," "," "," "," ");
4316    addinformixcmds(ESqlStatementType.sstinformixDropView, TBaseType.rrw_drop,"view"," "," "," "," "," ");
4317    addinformixcmds(ESqlStatementType.sstinformixDropXaDatasource, TBaseType.rrw_drop,"xadatasource"," "," "," "," "," ");
4318    addinformixcmds(ESqlStatementType.sstinformixDropXaDatasourceType, TBaseType.rrw_drop,"xadatasource","type"," "," "," "," ");
4319    addinformixcmds(ESqlStatementType.sstinformixExecute, TBaseType.rrw_exec," "," "," "," "," "," ");
4320    addinformixcmds(ESqlStatementType.sstinformixExecute, TBaseType.rrw_execute," "," "," "," "," "," ");
4321    addinformixcmds(ESqlStatementType.sstinformixExecuteFunction, TBaseType.rrw_execute,"function"," "," "," "," "," ");
4322    addinformixcmds(ESqlStatementType.sstinformixExecuteImmediate, TBaseType.rrw_execute,"immediate"," "," "," "," "," ");
4323    addinformixcmds(ESqlStatementType.sstinformixExecuteProcedure, TBaseType.rrw_execute,"procedure"," "," "," "," "," ");
4324    addinformixcmds(ESqlStatementType.sstinformixFetch, TBaseType.rrw_fetch," "," "," "," "," "," ");
4325    addinformixcmds(ESqlStatementType.sstinformixFlush, TBaseType.rrw_flush," "," "," "," "," "," ");
4326    addinformixcmds(ESqlStatementType.sstinformixFree, TBaseType.rrw_free," "," "," "," "," "," ");
4327    addinformixcmds(ESqlStatementType.sstinformixGetDescriptor, TBaseType.rrw_get,"descriptor"," "," "," "," "," ");
4328    addinformixcmds(ESqlStatementType.sstinformixGetDiagnostics, TBaseType.rrw_get,"diagnostics"," "," "," "," "," ");
4329    addinformixcmds(ESqlStatementType.sstinformixGrant, TBaseType.rrw_grant," "," "," "," "," "," ");
4330    addinformixcmds(ESqlStatementType.sstinformixGrantFragment, TBaseType.rrw_grant,"fragment"," "," "," "," "," ");
4331    addinformixcmds(ESqlStatementType.sstinformixInfo, TBaseType.rrw_informix_info," "," "," "," "," "," ");
4332    addinformixcmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert, " "," "," "," "," "," ");
4333    addinformixcmds(ESqlStatementType.sstinformixLoad, TBaseType.rrw_load," "," "," "," "," "," ");
4334    addinformixcmds(ESqlStatementType.sstinformixLockTable, TBaseType.rrw_lock,"table"," "," "," "," "," ");
4335    addinformixcmds(ESqlStatementType.sstmerge, TBaseType.rrw_merge," "," "," "," "," "," ");
4336    addinformixcmds(ESqlStatementType.sstinformixOpen, TBaseType.rrw_open," "," "," "," "," "," ");
4337    addinformixcmds(ESqlStatementType.sstinformixOutput, TBaseType.rrw_informix_output," "," "," "," "," "," ");
4338    addinformixcmds(ESqlStatementType.sstinformixPrepare, TBaseType.rrw_prepare," "," "," "," "," "," ");
4339    addinformixcmds(ESqlStatementType.sstinformixPut, TBaseType.rrw_informix_put," "," "," "," "," "," ");
4340    addinformixcmds(ESqlStatementType.sstinformixReleaseSavepoint, TBaseType.rrw_release,"savepoint"," "," "," "," "," ");
4341    addinformixcmds(ESqlStatementType.sstinformixRenameColumn, TBaseType.rrw_rename,"column"," "," "," "," "," ");
4342    addinformixcmds(ESqlStatementType.sstinformixRenameDatabase, TBaseType.rrw_rename,"database"," "," "," "," "," ");
4343    addinformixcmds(ESqlStatementType.sstinformixRenameIndex, TBaseType.rrw_rename,"index"," "," "," "," "," ");
4344    addinformixcmds(ESqlStatementType.sstinformixRenameSecurity, TBaseType.rrw_rename,"security"," "," "," "," "," ");
4345    addinformixcmds(ESqlStatementType.sstinformixRenameSequence, TBaseType.rrw_rename,"sequence"," "," "," "," "," ");
4346    addinformixcmds(ESqlStatementType.sstinformixRenameTable, TBaseType.rrw_rename,"table"," "," "," "," "," ");
4347    addinformixcmds(ESqlStatementType.sstinformixRenameTrustedContext, TBaseType.rrw_rename,"trusted","context"," "," "," "," ");
4348    addinformixcmds(ESqlStatementType.sstinformixRenameUser, TBaseType.rrw_rename,"user"," "," "," "," "," ");
4349    addinformixcmds(ESqlStatementType.sstinformixRevoke, TBaseType.rrw_revoke," "," "," "," "," "," ");
4350    addinformixcmds(ESqlStatementType.sstinformixRevokeFragment, TBaseType.rrw_revoke,"fragment"," "," "," "," "," ");
4351    addinformixcmds(ESqlStatementType.sstinformixRollbackWork, TBaseType.rrw_rollback," "," "," "," "," "," ");
4352    addinformixcmds(ESqlStatementType.sstinformixRollbackWork, TBaseType.rrw_rollback,"work"," "," "," "," "," ");
4353    addinformixcmds(ESqlStatementType.sstinformixSaveExternalDirectives, TBaseType.rrw_save,"external","directives"," "," "," "," ");
4354    addinformixcmds(ESqlStatementType.sstinformixSavepoint, TBaseType.rrw_savepoint," "," "," "," "," "," ");
4355    addinformixcmds(ESqlStatementType.sstselect, TBaseType.rrw_select," "," "," "," "," "," ");
4356    addinformixcmds(ESqlStatementType.sstinformixSetAutofree, TBaseType.rrw_set,"autofree"," "," "," "," "," ");
4357    addinformixcmds(ESqlStatementType.sstinformixSetCollation, TBaseType.rrw_set,"collation"," "," "," "," "," ");
4358    addinformixcmds(ESqlStatementType.sstinformixSetConnection, TBaseType.rrw_set,"connection"," "," "," "," "," ");
4359    addinformixcmds(ESqlStatementType.sstinformixSetConstraints, TBaseType.rrw_set,"constraints"," "," "," "," "," ");
4360    addinformixcmds(ESqlStatementType.sstinformixSetDatabaseObject, TBaseType.rrw_set,"database","object"," "," "," "," ");
4361    addinformixcmds(ESqlStatementType.sstinformixSetDataskip, TBaseType.rrw_set,"dataskip"," "," "," "," "," ");
4362    addinformixcmds(ESqlStatementType.sstinformixSetDebugFile, TBaseType.rrw_set,"debug","file"," "," "," "," ");
4363    addinformixcmds(ESqlStatementType.sstinformixSetDeferred_Prepare, TBaseType.rrw_set,"defferred_prepare"," "," "," "," "," ");
4364    addinformixcmds(ESqlStatementType.sstinformixSetDescriptor, TBaseType.rrw_set,"descriptor"," "," "," "," "," ");
4365    addinformixcmds(ESqlStatementType.sstinformixSetEncryptionPassword, TBaseType.rrw_set,"encryption","password"," "," "," "," ");
4366    addinformixcmds(ESqlStatementType.sstinformixSetEnvironment, TBaseType.rrw_set,"environment"," "," "," "," "," ");
4367    addinformixcmds(ESqlStatementType.sstinformixSetExplain, TBaseType.rrw_set,"explain"," "," "," "," "," ");
4368    addinformixcmds(ESqlStatementType.sstinformixSetIndexes, TBaseType.rrw_set,"indexes"," "," "," "," "," ");
4369    addinformixcmds(ESqlStatementType.sstinformixSetIsolation, TBaseType.rrw_set,"isolation"," "," "," "," "," ");
4370    addinformixcmds(ESqlStatementType.sstinformixSetLockMode, TBaseType.rrw_set,"lock","mode"," "," "," "," ");
4371    addinformixcmds(ESqlStatementType.sstinformixSetLog, TBaseType.rrw_set,"log"," "," "," "," "," ");
4372    addinformixcmds(ESqlStatementType.sstinformixSetOptimization, TBaseType.rrw_set,"optimization"," "," "," "," "," ");
4373    addinformixcmds(ESqlStatementType.sstinformixSetPDQPriority, TBaseType.rrw_set,"pdqpriority"," "," "," "," "," ");
4374    addinformixcmds(ESqlStatementType.sstinformixSetRole, TBaseType.rrw_set,"role"," "," "," "," "," ");
4375    addinformixcmds(ESqlStatementType.sstinformixSetSessionAuthorization, TBaseType.rrw_set,"session","authorization"," "," "," "," ");
4376    addinformixcmds(ESqlStatementType.sstinformixSetStatementCache, TBaseType.rrw_set,"statement","cache"," "," "," "," ");
4377    addinformixcmds(ESqlStatementType.sstinformixSetTransaction, TBaseType.rrw_set,"transaction"," "," "," "," "," ");
4378    addinformixcmds(ESqlStatementType.sstinformixSetTransactionMode, TBaseType.rrw_set,"transaction","mode"," "," "," "," ");
4379    addinformixcmds(ESqlStatementType.sstinformixSetTriggers, TBaseType.rrw_set,"triggers"," "," "," "," "," ");
4380    addinformixcmds(ESqlStatementType.sstinformixSetUserPassword, TBaseType.rrw_set,"user","password"," "," "," "," ");
4381    addinformixcmds(ESqlStatementType.sstinformixStartViolationsTable, TBaseType.rrw_start,"violations","table"," "," "," "," ");
4382    addinformixcmds(ESqlStatementType.sstinformixStopViolationsTable, TBaseType.rrw_stop,"violations","table"," "," "," "," ");
4383    addinformixcmds(ESqlStatementType.sstTruncate, TBaseType.rrw_truncate," "," "," "," "," "," ");
4384    addinformixcmds(ESqlStatementType.sstinformixUnload, TBaseType.rrw_informix_unload," "," "," "," "," "," ");
4385    addinformixcmds(ESqlStatementType.sstinformixUnlockTable, TBaseType.rrw_unlock,"table"," "," "," "," "," ");
4386    addinformixcmds(ESqlStatementType.sstupdate, TBaseType.rrw_update," "," "," "," "," "," ");
4387    addinformixcmds(ESqlStatementType.sstinformixUpdateStatistics, TBaseType.rrw_update,"statistics"," "," "," "," "," ");
4388    addinformixcmds(ESqlStatementType.sstinformixWhenever, TBaseType.rrw_informix_whenever," "," "," "," "," "," ");
4389}
4390    public void initcouchbasecmds() {
4391        addcouchbasecmds(ESqlStatementType.sstBuildIndex,   TBaseType.rrw_couchbase_build, "index"," ", " ", " ", " ", " ");
4392        addcouchbasecmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create, "index", " ", " ", " ", " ", " ");
4393        addcouchbasecmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create, "primary", "index", " ", " ", " ", " ");
4394        addcouchbasecmds(ESqlStatementType.sstdelete, TBaseType.rrw_delete, " ", " ", " ", " ", " ", " ");
4395        addcouchbasecmds(ESqlStatementType.sstdropindex, TBaseType.rrw_drop, "index", " ", " ", " ", " ", " ");
4396        addcouchbasecmds(ESqlStatementType.sstdropindex, TBaseType.rrw_drop, "primary", "index", " ", " ", " ", " ");
4397        addcouchbasecmds(ESqlStatementType.sstExecutePreparedStmt, TBaseType.rrw_execute, " ", " ", " ", " ", " ", " ");
4398        addcouchbasecmds(ESqlStatementType.sstExplain, TBaseType.rrw_explain, " ", " ", " ", " ", " ", " ");
4399        addcouchbasecmds(ESqlStatementType.sstinfer, TBaseType.rrw_couchbase_infer, " ", " ", " ", " ", " ", " ");
4400        addcouchbasecmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert, " ", " ", " ", " ", " ", " ");
4401        addcouchbasecmds(ESqlStatementType.sstmerge, TBaseType.rrw_merge, " ", " ", " ", " ", " ", " ");
4402        addcouchbasecmds(ESqlStatementType.sstprepare, TBaseType.rrw_prepare, " ", " ", " ", " ", " ", " ");
4403        addcouchbasecmds(ESqlStatementType.sstselect, TBaseType.rrw_select, " ", " ", " ", " ", " ", " ");
4404        addcouchbasecmds(ESqlStatementType.sstupdate, TBaseType.rrw_update, " ", " ", " ", " ", " ", " ");
4405        addcouchbasecmds(ESqlStatementType.sstupsert, TBaseType.rrw_couchbase_upsert, " ", " ", " ", " ", " ", " ");
4406    }
4407
4408    void initverticacmds(){
4409
4410        addverticacmds(ESqlStatementType.sstActivateDirectedQuery, TBaseType.rrw_vertica_activate, "directed", "query",      " ", " ", " ", " ");
4411
4412        addverticacmds(ESqlStatementType.sstAlterAccessPolicy,   TBaseType.rrw_alter, "access",          "policy", " ", " ", " ", " ");
4413        addverticacmds(ESqlStatementType.sstAlterAuthentication, TBaseType.rrw_alter, "authentication", " ",      " ", " ", " ", " ");
4414        addverticacmds(ESqlStatementType.sstalterdatabase, TBaseType.rrw_alter, "database", " ", " ", " ", " ", " ");
4415        addverticacmds(ESqlStatementType.sstAlterFaultGroup, TBaseType.rrw_alter, "fault", "group", " ", " ", " ", " ");
4416        addverticacmds(ESqlStatementType.sstalterfunction, TBaseType.rrw_alter, "function", " ", " ", " ", " ", " ");
4417        addverticacmds(ESqlStatementType.sstAlterLibrary, TBaseType.rrw_alter, "library", " ", " ", " ", " ", " ");
4418        addverticacmds(ESqlStatementType.sstAlterNode, TBaseType.rrw_alter, "node", " ", " ", " ", " ", " ");
4419        addverticacmds(ESqlStatementType.sstAlterNetworkInterface, TBaseType.rrw_alter, "network", "interface", " ", " ", " ", " ");
4420        addverticacmds(ESqlStatementType.sstAlterProjection, TBaseType.rrw_alter, "projection", " ", " ", " ", " ", " ");
4421        addverticacmds(ESqlStatementType.sstAlterProfile, TBaseType.rrw_alter, "profile", " ", " ", " ", " ", " ");
4422        addverticacmds(ESqlStatementType.sstAlterResourcePool, TBaseType.rrw_alter, "resource", "pool", " ", " ", " ", " ");
4423        addverticacmds(ESqlStatementType.sstAlterRole, TBaseType.rrw_alter, "role", " ", " ", " ", " ", " ");
4424        addverticacmds(ESqlStatementType.sstAlterSchema, TBaseType.rrw_alter, "schema", " ", " ", " ", " ", " ");
4425        addverticacmds(ESqlStatementType.sstaltersequence, TBaseType.rrw_alter, "sequence", " ", " ", " ", " ", " ");
4426        addverticacmds(ESqlStatementType.sstaltersession, TBaseType.rrw_alter, "session", " ", " ", " ", " ", " ");
4427        addverticacmds(ESqlStatementType.sstAlterSubnet, TBaseType.rrw_alter, "subnet", " ", " ", " ", " ", " ");
4428        addverticacmds(ESqlStatementType.sstaltertable, TBaseType.rrw_alter, "table", " ", " ", " ", " ", " ");
4429        addverticacmds(ESqlStatementType.sstalteruser, TBaseType.rrw_alter, "user", " ", " ", " ", " ", " ");
4430        addverticacmds(ESqlStatementType.sstalterview, TBaseType.rrw_alter, "view", " ", " ", " ", " ", " ");
4431
4432        addverticacmds(ESqlStatementType.sstBegin, TBaseType.rrw_begin, " ", " ", " ", " ", " ", " ");
4433        addverticacmds(ESqlStatementType.sstcall, TBaseType.rrw_call, " ", " ", " ", " ", " ", " ");
4434
4435        addverticacmds(ESqlStatementType.sstCommentOn, TBaseType.rrw_comment, "on", " ", " ", " ", " ", " ");
4436        addverticacmds(ESqlStatementType.sstcommit, TBaseType.rrw_commit, " ", " ", " ", " ", " ", " ");
4437        addverticacmds(ESqlStatementType.sstconnect, TBaseType.rrw_connect, "to", " ", " ", " ", " ", " ");
4438        addverticacmds(ESqlStatementType.sstCopy, TBaseType.rrw_vertica_copy, " ", " ", " ", " ", " ", " ");
4439
4440        addverticacmds(ESqlStatementType.sstCreateAccessPolicy,   TBaseType.rrw_create, "access",          "policy", " ", " ", " ", " ");
4441        addverticacmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create , "aggregate", "function", " ", " ", " ", " ");
4442        addverticacmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create , "analytic", "function", " ", " ", " ", " ");
4443        addverticacmds(ESqlStatementType.sstCreateAuthentication, TBaseType.rrw_create, "authentication", " ",      " ", " ", " ", " ");
4444        addverticacmds(ESqlStatementType.sstCreateDirectedQuery, TBaseType.rrw_create, "directed", "query",      " ", " ", " ", " ");
4445        addverticacmds(ESqlStatementType.sstCreateExternalTable, TBaseType.rrw_create, "external", "table",      " ", " ", " ", " ");
4446        addverticacmds(ESqlStatementType.sstCreateFaultGroup, TBaseType.rrw_create , "fault", "group", " ", " ", " ", " ");
4447        addverticacmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create , "filter", " ", " ", " ", " ", " ");
4448        addverticacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create , "flex", "table", " ", " ", " ", " ");
4449        addverticacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create , "flexible", "table", " ", " ", " ", " ");
4450
4451        addverticacmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create , "function", " ", " ", " ", " ", " ");
4452        addverticacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create , "global", "temp", "table", " ", " ", " ");
4453        addverticacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create , "global", "temporary", "table", " ", " ", " ");
4454        addverticacmds(ESqlStatementType.sstCreateHCatalogSchema, TBaseType.rrw_create , "hcatalog", "schema", " ", " ", " ", " ");
4455        addverticacmds(ESqlStatementType.sstCreateLibrary, TBaseType.rrw_create, "library", " ", " ", " ", " ", " ");
4456        addverticacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create , "local", "temp", "table", " ", " ", " ");
4457        addverticacmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create , "local", "temp", "view", " ", " ", " ");
4458        addverticacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create , "local", "temporary", "table", " ", " ", " ");
4459        addverticacmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create , "local", "temporary", "view", " ", " ", " ");
4460        addverticacmds(ESqlStatementType.sstCreateLocation, TBaseType.rrw_create , "location", " ", " ", " ", " ", " ");
4461        addverticacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create , "managed", "external", "table", " ", " ", " ");
4462        addverticacmds(ESqlStatementType.sstCreateNetworkInterface, TBaseType.rrw_create, "network", "interface", " ", " ", " ", " ");
4463        addverticacmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create , "or", "replace", "aggregate", "function", " ", " ");
4464        addverticacmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create , "or", "replace", "function", " ", " ", " ");
4465        addverticacmds(ESqlStatementType.sstCreateLibrary, TBaseType.rrw_create , "or", "replace", "library", " ", " ", " ");
4466        addverticacmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create , "or", "replace", "local", "temp", "view", " ");
4467        addverticacmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create , "or", "replace", "local", "temporary", "view", " ");
4468        addverticacmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create , "or", "replace", "view", " ", " ", " ");
4469        addverticacmds(ESqlStatementType.sstcreateprocedure, TBaseType.rrw_create , "or", "replace", "procedure", " ", " ", " ");
4470
4471        addverticacmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create , "parser", " ", " ", " ", " ", " ");
4472        addverticacmds(ESqlStatementType.sstcreateprocedure, TBaseType.rrw_create , "procedure", " ", " ", " ", " ", " ");
4473        addverticacmds(ESqlStatementType.sstCreateProfile, TBaseType.rrw_create , "profile", " ", " ", " ", " ", " ");
4474        addverticacmds(ESqlStatementType.sstCreateProjection, TBaseType.rrw_create , "projection", " ", " ", " ", " ", " ");
4475        addverticacmds(ESqlStatementType.sstCreateResourcePool, TBaseType.rrw_create , "resource", "pool", " ", " ", " ", " ");
4476        addverticacmds(ESqlStatementType.sstcreaterole, TBaseType.rrw_create , "role", " ", " ", " ", " ", " ");
4477        addverticacmds(ESqlStatementType.sstcreateschema, TBaseType.rrw_create , "schema", " ", " ", " ", " ", " ");
4478        addverticacmds(ESqlStatementType.sstcreatesequence, TBaseType.rrw_create , "sequence", " ", " ", " ", " ", " ");
4479        addverticacmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create , "source", " ", " ", " ", " ", " ");
4480        addverticacmds(ESqlStatementType.sstCreateSubnet, TBaseType.rrw_create , "subnet", " ", " ", " ", " ", " ");
4481
4482        addverticacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create , "table", " ", " ", " ", " ", " ");
4483        addverticacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create , "temp", "table", " ", " ", " ", " ");
4484        addverticacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create , "temporary", "table", " ", " ", " ", " ");
4485        addverticacmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create , "text", "index", " ", " ", " ", " ");
4486        addverticacmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create , "transform", "function", " ", " ", " ", " ");
4487        addverticacmds(ESqlStatementType.sstcreateuser, TBaseType.rrw_create , "user", " ", " ", " ", " ", " ");
4488        addverticacmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create , "view", " ", " ", " ", " ", " ");
4489
4490        addverticacmds(ESqlStatementType.sstDeActivateDirectedQuery, TBaseType.rrw_vertica_deactivate, "directed", "query",      " ", " ", " ", " ");
4491
4492        addverticacmds(ESqlStatementType.sstdelete, TBaseType.rrw_delete , " ", " ", " ", " ", " ", " ");
4493        addverticacmds(ESqlStatementType.sstDisconnect, TBaseType.rrw_disconnect , " ", " ", " ", " ", " ", " ");
4494
4495        addverticacmds(ESqlStatementType.sstDeActivateDirectedQuery, TBaseType.rrw_drop, "directed", "query",      " ", " ", " ", " ");
4496        addverticacmds(ESqlStatementType.sstDropAccessPolicy,   TBaseType.rrw_drop, "access","policy", " ", " ", " ", " ");
4497        addverticacmds(ESqlStatementType.sstDropAggregateFunction, TBaseType.rrw_drop, "aggregate","function", " ", " ", " ", " ");
4498        addverticacmds(ESqlStatementType.sstDropAuthentication, TBaseType.rrw_drop, "authentication"," ", " ", " ", " ", " ");
4499
4500        addverticacmds(ESqlStatementType.sstDropFaultGroup, TBaseType.rrw_drop, "fault","group", " ", " ", " ", " ");
4501
4502        addverticacmds(ESqlStatementType.sstdropfunction, TBaseType.rrw_drop, "function"," ", " ", " ", " ", " ");
4503        addverticacmds(ESqlStatementType.sstDropLibrary, TBaseType.rrw_drop, "library"," ", " ", " ", " ", " ");
4504        addverticacmds(ESqlStatementType.sstDropNetworkInterface, TBaseType.rrw_drop, "network","interface", " ", " ", " ", " ");
4505        addverticacmds(ESqlStatementType.sstdropprocedure, TBaseType.rrw_drop, "procedure"," ", " ", " ", " ", " ");
4506        addverticacmds(ESqlStatementType.sstDropProfile, TBaseType.rrw_drop, "profile"," ", " ", " ", " ", " ");
4507        addverticacmds(ESqlStatementType.sstDropProjection, TBaseType.rrw_drop, "projection"," ", " ", " ", " ", " ");
4508        addverticacmds(ESqlStatementType.sstDropResourcePool, TBaseType.rrw_drop, "resource","pool", " ", " ", " ", " ");
4509        addverticacmds(ESqlStatementType.sstdroprole, TBaseType.rrw_drop, "role"," ", " ", " ", " ", " ");
4510        addverticacmds(ESqlStatementType.sstdropschema, TBaseType.rrw_drop, "schema"," ", " ", " ", " ", " ");
4511        addverticacmds(ESqlStatementType.sstdropsequence, TBaseType.rrw_drop, "sequence"," ", " ", " ", " ", " ");
4512        addverticacmds(ESqlStatementType.sstDropSubnet, TBaseType.rrw_drop, "subnet"," ", " ", " ", " ", " ");
4513        addverticacmds(ESqlStatementType.sstdroptable, TBaseType.rrw_drop, "table"," ", " ", " ", " ", " ");
4514        addverticacmds(ESqlStatementType.sstDropTextIndex, TBaseType.rrw_drop, "text","index", " ", " ", " ", " ");
4515        addverticacmds(ESqlStatementType.sstDropTransformFunction, TBaseType.rrw_drop, "transform","function", " ", " ", " ", " ");
4516        addverticacmds(ESqlStatementType.sstdropuser, TBaseType.rrw_drop, "user"," ", " ", " ", " ", " ");
4517        addverticacmds(ESqlStatementType.sstdropview, TBaseType.rrw_drop, "view"," ", " ", " ", " ", " ");
4518
4519        addverticacmds(ESqlStatementType.sstEnd, TBaseType.rrw_end, " ", " "," ", " ", " ", " ");
4520        addverticacmds(ESqlStatementType.sstExplain, TBaseType.rrw_explain, " ", " "," ", " ", " ", " ");
4521        addverticacmds(ESqlStatementType.sstExportToVertica, TBaseType.rrw_vertica_export, "to", "vertica"," ", " ", " ", " ");
4522        addverticacmds(ESqlStatementType.sstGrant, TBaseType.rrw_grant, " ", " "," ", " ", " ", " ");
4523        addverticacmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert, " ", " "," ", " ", " ", " ");
4524        addverticacmds(ESqlStatementType.sstmerge, TBaseType.rrw_merge, " ", " "," ", " ", " ", " ");
4525        addverticacmds(ESqlStatementType.sstProfile, TBaseType.rrw_vertica_profile, " ", " "," ", " ", " ", " ");
4526        addverticacmds(ESqlStatementType.sstReleaseSavepoint, TBaseType.rrw_release, " ", " "," ", " ", " ", " ");
4527        addverticacmds(ESqlStatementType.sstRevoke, TBaseType.rrw_revoke, " ", " "," ", " ", " ", " ");
4528        addverticacmds(ESqlStatementType.sstrollback, TBaseType.rrw_rollback, " ", " "," ", " ", " ", " ");
4529        addverticacmds(ESqlStatementType.sstsavepoint, TBaseType.rrw_savepoint, " ", " "," ", " ", " ", " ");
4530        addverticacmds(ESqlStatementType.sstselect, TBaseType.rrw_select, " ", " "," ", " ", " ", " ");
4531        addverticacmds(ESqlStatementType.sstset, TBaseType.rrw_set, "datestyle", "to"," ", " ", " ", " ");
4532        addverticacmds(ESqlStatementType.sstset, TBaseType.rrw_set, "escape_string_warning", "to"," ", " ", " ", " ");
4533        addverticacmds(ESqlStatementType.sstset, TBaseType.rrw_set, "intervalstyle", "to"," ", " ", " ", " ");
4534        addverticacmds(ESqlStatementType.sstset, TBaseType.rrw_set, "locale", " "," ", " ", " ", " ");
4535        addverticacmds(ESqlStatementType.sstset, TBaseType.rrw_set, "role", " "," ", " ", " ", " ");
4536        addverticacmds(ESqlStatementType.sstset, TBaseType.rrw_set, "search_path", " "," ", " ", " ", " ");
4537        addverticacmds(ESqlStatementType.sstset, TBaseType.rrw_set, "session", " "," ", " ", " ", " ");
4538        addverticacmds(ESqlStatementType.sstset, TBaseType.rrw_set, "standard_conforming_strings", " "," ", " ", " ", " ");
4539        addverticacmds(ESqlStatementType.sstset, TBaseType.rrw_set, "time", "zone"," ", " ", " ", " ");
4540        addverticacmds(ESqlStatementType.sstShow, TBaseType.rrw_show, " ", " "," ", " ", " ", " ");
4541        addverticacmds(ESqlStatementType.sstStartTransaction, TBaseType.rrw_start, " ", " "," ", " ", " ", " ");
4542        addverticacmds(ESqlStatementType.sstTruncate, TBaseType.rrw_truncate, "table", " "," ", " ", " ", " ");
4543        addverticacmds(ESqlStatementType.sstupdate, TBaseType.rrw_update, " ", " "," ", " ", " ", " ");
4544
4545
4546       // addverticacmds(ESqlStatementType.sstGetDirectedQuery, TBaseType.rrw_get, "directed", "query",      " ", " ", " ", " ");
4547       // addverticacmds(ESqlStatementType.sstSaveQuery, TBaseType.rrw_save, "query", " "," ", " ", " ", " ");
4548
4549    }
4550
4551    void inithanacmds(){
4552//alter
4553        addhanacmds(ESqlStatementType.sstalterauditpolicy, TBaseType.rrw_alter, "audit", "policy", " ", " ", " ", " ");
4554        addhanacmds(ESqlStatementType.sstaltercredential, TBaseType.rrw_alter, "credential", " ", " ", " ", " ", " ");
4555        addhanacmds(ESqlStatementType.sstalterdatabase, TBaseType.rrw_alter, "database", " ", " ", " ", " ", " ");
4556        addhanacmds(ESqlStatementType.sstalterfulltextindex, TBaseType.rrw_alter, "fulltext", "index", " ", " ", " ", " ");
4557        addhanacmds(ESqlStatementType.sstalterfunction, TBaseType.rrw_alter, "function", " ", " ", " ", " ", " ");
4558        addhanacmds(ESqlStatementType.sstalterindex, TBaseType.rrw_alter, "index", " ", " ", " ", " ", " ");
4559        addhanacmds(ESqlStatementType.sstalterldapprovider, TBaseType.rrw_alter, "ldap", "provider", " ", " ", " ", " ");
4560        addhanacmds(ESqlStatementType.sstalterjwtprovider, TBaseType.rrw_alter, "jwt", "provider", " ", " ", " ", " ");
4561        addhanacmds(ESqlStatementType.sstalterpse, TBaseType.rrw_alter, "pse", " ", " ", " ", " ", " ");
4562        addhanacmds(ESqlStatementType.sstalterprocedure, TBaseType.rrw_alter, "procedure", " ", " ", " ", " ", " ");
4563        addhanacmds(ESqlStatementType.sstalterremotesource, TBaseType.rrw_alter, "remote", "source", " ", " ", " ", " ");
4564        addhanacmds(ESqlStatementType.sstAlterRole, TBaseType.rrw_alter, "role", " ", " ", " ", " ", " ");
4565        addhanacmds(ESqlStatementType.sstaltersamlprovider, TBaseType.rrw_alter, "saml", "provider", " ", " ", " ", " ");
4566        addhanacmds(ESqlStatementType.sstaltersequence, TBaseType.rrw_alter, "sequence", " ", " ", " ", " ", " ");
4567        addhanacmds(ESqlStatementType.sstalterstatistics, TBaseType.rrw_alter, "statistics", " ", " ", " ", " ", " ");
4568        addhanacmds(ESqlStatementType.sstalterstructuredprivilege, TBaseType.rrw_alter, "structured", "privilege", " ", " ", " ", " ");
4569        addhanacmds(ESqlStatementType.sstaltersystem, TBaseType.rrw_alter, "system", " ", " ", " ", " ", " ");
4570        addhanacmds(ESqlStatementType.sstaltertable, TBaseType.rrw_alter, "table", " ", " ", " ", " ", " ");
4571        addhanacmds(ESqlStatementType.sstalteruser, TBaseType.rrw_alter, "user", " ", " ", " ", " ", " ");
4572        addhanacmds(ESqlStatementType.sstalterusergroup, TBaseType.rrw_alter, "usergroup", " ", " ", " ", " ", " ");
4573        addhanacmds(ESqlStatementType.sstalterview, TBaseType.rrw_alter, "view", " ", " ", " ", " ", " ");
4574        addhanacmds(ESqlStatementType.sstalterviewcache, TBaseType.rrw_alter, "view", "cache", " ", " ", " ", " ");
4575        addhanacmds(ESqlStatementType.sstaltervirtualtable, TBaseType.rrw_alter, "virtual", "table", " ", " ", " ", " ");
4576        addhanacmds(ESqlStatementType.sstalterworkloadclass, TBaseType.rrw_alter, "workload", "class", " ", " ", " ", " ");
4577        addhanacmds(ESqlStatementType.sstalterworkloadmapping, TBaseType.rrw_alter, "workload", "mapping", " ", " ", " ", " ");
4578
4579//backup
4580        addhanacmds(ESqlStatementType.sstbackupcancel, TBaseType.rrw_backup,"cancel"," "," "," "," "," ");
4581        addhanacmds(ESqlStatementType.sstbackupcatalogdelete, TBaseType.rrw_backup, "catalog", "delete", " ", " ", " ", " ");
4582        addhanacmds(ESqlStatementType.sstbackupcheck, TBaseType.rrw_backup,"check"," "," "," "," "," ");
4583        addhanacmds(ESqlStatementType.sstbackupcheckaccess, TBaseType.rrw_backup, "check", "access", " ", " ", " ", " ");
4584        addhanacmds(ESqlStatementType.sstbackupdata, TBaseType.rrw_backup, "data", " ", " ", " ", " ", " ");
4585        addhanacmds(ESqlStatementType.sstbackuplistdata, TBaseType.rrw_backup, "list", "data", " ", " ", " ", " ");
4586
4587        addhanacmds(ESqlStatementType.sstcall, TBaseType.rrw_call, " ", " ", " ", " ", " ", " ");
4588
4589//commit
4590        addhanacmds(ESqlStatementType.sstcomment, TBaseType.rrw_comment, "on", " ", " ", " ", " ", " ");
4591        addhanacmds(ESqlStatementType.sstcommit, TBaseType.rrw_commit, " ", " ", " ", " ", " ", " ");
4592        addhanacmds(ESqlStatementType.sstconnect, TBaseType.rrw_connect, " ", " ", " ", " ", " ", " ");
4593
4594//create
4595        addhanacmds(ESqlStatementType.sstcreateauditpolicy, TBaseType.rrw_create, "audit", "policy", " ", " ", " ", " ");
4596        addhanacmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create, "btree", "index", " ", " ", " ", " ");
4597        addhanacmds(ESqlStatementType.sstcreatecertificate, TBaseType.rrw_create, "certificate", " ", " ", " ", " ", " ");
4598        addhanacmds(ESqlStatementType.sstcreatecollection, TBaseType.rrw_create, "collection", " ", " ", " ", " ", " ");
4599        addhanacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "column", "table", " ", " ", " ", " ");
4600        addhanacmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create, "cpbtree", "index", " ", " ", " ", " ");
4601        addhanacmds(ESqlStatementType.sstcreatecredential, TBaseType.rrw_create, "credential", " ", " ", " ", " ", " ");
4602        addhanacmds(ESqlStatementType.sstcreatedatabase, TBaseType.rrw_create, "database", " ", " ", " ", " ", " ");
4603        addhanacmds(ESqlStatementType.sstcreatefulltextindex, TBaseType.rrw_create, "fulltext", "index", " ", " ", " ", " ");
4604        addhanacmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create, "function", " ", " ", " ", " ", " ");
4605        addhanacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "global", "temporary", "column", "table", " ", " ");
4606        addhanacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"global","temporary","table"," "," "," ");
4607        addhanacmds(ESqlStatementType.sstcreategraphworkspace, TBaseType.rrw_create, "graph", "workspace", " ", " ", " ", " ");
4608        addhanacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"history","column","table"," "," "," ");
4609        addhanacmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create, "index", " ", " ", " ", " ", " ");
4610        addhanacmds(ESqlStatementType.sstcreateJWTProvider, TBaseType.rrw_create, "jwt", "provider", " ", " ", " ", " ");
4611        addhanacmds(ESqlStatementType.sstcreateLDAPProvider, TBaseType.rrw_create, "ldap", "provider", " ", " ", " ", " ");
4612        addhanacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"local","temporary","column","table"," "," ");
4613        addhanacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "local", "temporary", "table", " ", " ", " ");
4614        addhanacmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create, "or", "replace", "force", "editionable", "view", " ");
4615        addhanacmds(ESqlStatementType.sstcreatesynonym, TBaseType.rrw_create, "or", "replace", "public", "synonym", " ", " ");
4616        addhanacmds(ESqlStatementType.sstcreatesynonym, TBaseType.rrw_create, "or", "replace", "synonym", " ", " ", " ");
4617        addhanacmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create, "or", "replace", "view", " ", " ", " ");
4618        addhanacmds(ESqlStatementType.sstcreateprocedure, TBaseType.rrw_create, "procedure", " ", " ", " ", " ", " ");
4619        addhanacmds(ESqlStatementType.sstcreatepse, TBaseType.rrw_create, "pse", " ", " ", " ", " ", " ");
4620        addhanacmds(ESqlStatementType.sstcreatesynonym, TBaseType.rrw_create, "public", "synonym", " ", " ", " ", " ");
4621        addhanacmds(ESqlStatementType.sstcreateremotesource, TBaseType.rrw_create, "remote", "source", " ", " ", " ", " ");
4622        addhanacmds(ESqlStatementType.sstcreateuser, TBaseType.rrw_create, "restricted", "user", " ", " ", " ", " ");
4623        addhanacmds(ESqlStatementType.sstcreaterole, TBaseType.rrw_create, "role", " ", " ", " ", " ", " ");
4624        addhanacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "row", "table", " ", " ", " ", " ");
4625        addhanacmds(ESqlStatementType.sstcreatesamlprovider, TBaseType.rrw_create, "saml", "provider", " ", " ", " ", " ");
4626        addhanacmds(ESqlStatementType.sstcreateschema, TBaseType.rrw_create, "schema", " ", " ", " ", " ", " ");
4627        addhanacmds(ESqlStatementType.sstcreatesequence, TBaseType.rrw_create, "sequence", " ", " ", " ", " ", " ");
4628        addhanacmds(ESqlStatementType.sstcreatestatistics, TBaseType.rrw_create, "statistics", " ", " ", " ", " ", " ");
4629        addhanacmds(ESqlStatementType.sstcreatestructuredprivilege, TBaseType.rrw_create, "structured", "privilege", " ", " ", " ", " ");
4630        addhanacmds(ESqlStatementType.sstcreatesynonym, TBaseType.rrw_create, "synonym", " ", " ", " ", " ", " ");
4631        addhanacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "table", " ", " ", " ", " ", " ");
4632        addhanacmds(ESqlStatementType.sstcreatetrigger, TBaseType.rrw_create, "trigger", " ", " ", " ", " ", " ");
4633        addhanacmds(ESqlStatementType.sstcreatetype, TBaseType.rrw_create, "type", " ", " ", " ", " ", " ");
4634        addhanacmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create, "unique", "index", " ", " ", " ", " ");
4635        addhanacmds(ESqlStatementType.sstcreateuser, TBaseType.rrw_create, "user", " ", " ", " ", " ", " ");
4636        addhanacmds(ESqlStatementType.sstcreateusergroup, TBaseType.rrw_create, "usergroup", " ", " ", " ", " ", " ");
4637        addhanacmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create, "view", " ", " ", " ", " ", " ");
4638        addhanacmds(ESqlStatementType.sstcreatevirtualfunction, TBaseType.rrw_create, "virtual", "function", " ", " ", " ", " ");
4639        addhanacmds(ESqlStatementType.sstcreatevirtualtable, TBaseType.rrw_create, "virtual", "table", " ", " ", " ", " ");
4640        addhanacmds(ESqlStatementType.sstcreateworkloadclass, TBaseType.rrw_create, "workload", "class", " ", " ", " ", " ");
4641        addhanacmds(ESqlStatementType.sstcreateworkloadmapping, TBaseType.rrw_create, "workload", "mapping", " ", " ", " ", " ");
4642
4643//DELETE
4644        addhanacmds(ESqlStatementType.sstdelete, TBaseType.rrw_delete, " ", " ", " ", " ", " ", " ");
4645
4646        addhanacmds(ESqlStatementType.sstdobeginend, TBaseType.rrw_do, "begin", " ", " ", " ", " ", " ");
4647
4648//drop
4649        addhanacmds(ESqlStatementType.sstdropauditpolicy, TBaseType.rrw_drop, "audit", "policy", " ", " ", " ", " ");
4650        addhanacmds(ESqlStatementType.sstdropcertificate, TBaseType.rrw_drop, "certificate", " ", " ", " ", " ", " ");
4651        addhanacmds(ESqlStatementType.sstdropcollection, TBaseType.rrw_drop, "collection", " ", " ", " ", " ", " ");
4652        addhanacmds(ESqlStatementType.sstdropcredential, TBaseType.rrw_drop, "credential", " ", " ", " ", " ", " ");
4653        addhanacmds(ESqlStatementType.sstdropdatabase, TBaseType.rrw_drop, "database", " ", " ", " ", " ", " ");
4654        addhanacmds(ESqlStatementType.sstdropfulltextindex, TBaseType.rrw_drop, "fulltext", "index", " ", " ", " ", " ");
4655        addhanacmds(ESqlStatementType.sstdropfunction, TBaseType.rrw_drop, "function", " ", " ", " ", " ", " ");
4656        addhanacmds(ESqlStatementType.sstdropgraphworkspace, TBaseType.rrw_drop, "graph", "workspace", " ", " ", " ", " ");
4657        addhanacmds(ESqlStatementType.sstdropindex, TBaseType.rrw_drop, "index", " ", " ", " ", " ", " ");
4658        addhanacmds(ESqlStatementType.sstdropJWTProvider, TBaseType.rrw_drop, "jwt", "provider", " ", " ", " ", " ");
4659        addhanacmds(ESqlStatementType.sstdropLDAPProvider, TBaseType.rrw_drop, "ldap", "provider", " ", " ", " ", " ");
4660        addhanacmds(ESqlStatementType.sstdropprocedure, TBaseType.rrw_drop, "procedure", " ", " ", " ", " ", " ");
4661        addhanacmds(ESqlStatementType.sstdroppse, TBaseType.rrw_drop, "pse", " ", " ", " ", " ", " ");
4662        addhanacmds(ESqlStatementType.sstdropsynonym, TBaseType.rrw_drop, "public", "synonym", " ", " ", " ", " ");
4663        addhanacmds(ESqlStatementType.sstdropremotesource, TBaseType.rrw_drop, "remote", "source", " ", " ", " ", " ");
4664        addhanacmds(ESqlStatementType.sstdroprole, TBaseType.rrw_drop, "role", " ", " ", " ", " ", " ");
4665        addhanacmds(ESqlStatementType.sstdropsamlprovider, TBaseType.rrw_drop, "saml", "provider", " ", " ", " ", " ");
4666        addhanacmds(ESqlStatementType.sstdropschema, TBaseType.rrw_drop, "schema", " ", " ", " ", " ", " ");
4667        addhanacmds(ESqlStatementType.sstdropsequence, TBaseType.rrw_drop, "sequence", " ", " ", " ", " ", " ");
4668        addhanacmds(ESqlStatementType.sstdropstatistics, TBaseType.rrw_drop, "statistics", " ", " ", " ", " ", " ");
4669        addhanacmds(ESqlStatementType.sstdropstructuredprivilege, TBaseType.rrw_drop, "structured", "privilege", " ", " ", " ", " ");
4670        addhanacmds(ESqlStatementType.sstdropsynonym, TBaseType.rrw_drop, "synonym", " ", " ", " ", " ", " ");
4671        addhanacmds(ESqlStatementType.sstdroptable, TBaseType.rrw_drop, "table", " ", " ", " ", " ", " ");
4672        addhanacmds(ESqlStatementType.sstdroptrigger, TBaseType.rrw_drop, "trigger", " ", " ", " ", " ", " ");
4673        addhanacmds(ESqlStatementType.sstdroptype, TBaseType.rrw_drop, "type", " ", " ", " ", " ", " ");
4674        addhanacmds(ESqlStatementType.sstdropuser, TBaseType.rrw_drop, "user", " ", " ", " ", " ", " ");
4675        addhanacmds(ESqlStatementType.sstdropusergroup, TBaseType.rrw_drop, "usergroup", " ", " ", " ", " ", " ");
4676        addhanacmds(ESqlStatementType.sstdropview, TBaseType.rrw_drop, "view", " ", " ", " ", " ", " ");
4677        addhanacmds(ESqlStatementType.sstdropworkloadclass, TBaseType.rrw_drop, "workload", "class", " ", " ", " ", " ");
4678        addhanacmds(ESqlStatementType.sstdropworkloadmapping, TBaseType.rrw_drop, "workload", "mapping", " ", " ", " ", " ");
4679
4680        addhanacmds(ESqlStatementType.sstExplain, TBaseType.rrw_explain, "plan", " ", " ", " ", " ", " ");
4681        addhanacmds(ESqlStatementType.sstexport, TBaseType.rrw_hana_export, " ", " ", " ", " ", " ", " ");
4682
4683//GRANT
4684        addhanacmds(ESqlStatementType.sstGrant, TBaseType.rrw_grant, " ", " ", " ", " ", " ", " ");
4685
4686        addhanacmds(ESqlStatementType.sstimport, TBaseType.rrw_hana_import, " ", " ", " ", " ", " ", " ");
4687        addhanacmds(ESqlStatementType.sstimportfrom, TBaseType.rrw_hana_import, "from", " ", " ", " ", " ", " ");
4688        addhanacmds(ESqlStatementType.sstimportscan, TBaseType.rrw_hana_import, "scan", " ", " ", " ", " ", " ");
4689
4690//insert
4691        addhanacmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert, " ", " ", " ", " ", " ", " ");
4692
4693//
4694        addhanacmds(ESqlStatementType.sstload, TBaseType.rrw_load, " ", " ", " ", " ", " ", " ");
4695        addhanacmds(ESqlStatementType.sstlocktable, TBaseType.rrw_lock, "table", " ", " ", " ", " ", " ");
4696
4697        addhanacmds(ESqlStatementType.sstmerge, TBaseType.rrw_merge, "into", " ", " ", " ", " ", " ");
4698
4699        addhanacmds(ESqlStatementType.sstmergedelta, TBaseType.rrw_merge, "delta", " ", " ", " ", " ", " ");
4700        addhanacmds(ESqlStatementType.sstmergedelta, TBaseType.rrw_merge,"history","delta"," "," "," "," ");
4701
4702        addhanacmds(ESqlStatementType.sstrecoverdata, TBaseType.rrw_hana_recover,"data"," "," "," "," "," ");
4703        addhanacmds(ESqlStatementType.sstrecoverdatabase, TBaseType.rrw_hana_recover, "database", " ", " ", " ", " ", " ");
4704        addhanacmds(ESqlStatementType.sstrefreshstatistics, TBaseType.rrw_refresh, "statistics", " ", " ", " ", " ", " ");
4705        addhanacmds(ESqlStatementType.sstrenamecollection, TBaseType.rrw_rename,"collection"," "," "," "," "," ");
4706        addhanacmds(ESqlStatementType.sstrenamecolumn, TBaseType.rrw_rename,"column"," "," "," "," "," ");
4707        addhanacmds(ESqlStatementType.sstrenamedatabase, TBaseType.rrw_rename,"database"," "," "," "," "," ");
4708        addhanacmds(ESqlStatementType.sstrenameindex, TBaseType.rrw_rename,"index"," "," "," "," "," ");
4709        addhanacmds(ESqlStatementType.sstrenametable, TBaseType.rrw_rename,"table"," "," "," "," "," ");
4710        addhanacmds(ESqlStatementType.sstreplace, TBaseType.rrw_replace, " ", " ", " ", " ", " ", " ");
4711
4712        addhanacmds(ESqlStatementType.sstRevoke, TBaseType.rrw_revoke, " ", " ", " ", " ", " ", " ");
4713
4714        addhanacmds(ESqlStatementType.sstrollback, TBaseType.rrw_rollback, " ", " ", " ", " ", " ", " ");
4715
4716        addhanacmds(ESqlStatementType.sstsavepoint, TBaseType.rrw_savepoint, " ", " ", " ", " ", " ", " ");
4717//SELECT
4718        addhanacmds(ESqlStatementType.sstselect, TBaseType.rrw_select, " ", " ", " ", " ", " ", " ");
4719
4720//SET
4721        addhanacmds(ESqlStatementType.sstset, TBaseType.rrw_set, " ", " ", " ", " ", " ", " ");
4722        addhanacmds(ESqlStatementType.sssethistorysession, TBaseType.rrw_set, "history", "session", " ", " ", " ", " ");
4723        addhanacmds(ESqlStatementType.sstsetpse, TBaseType.rrw_set, "pse", " ", " ", " ", " ", " ");
4724        addhanacmds(ESqlStatementType.sstsetschema, TBaseType.rrw_set, "schema", " ", " ", " ", " ", " ");
4725        addhanacmds(ESqlStatementType.sstsetsystemlicense, TBaseType.rrw_set, "system", "license", " ", " ", " ", " ");
4726        addhanacmds(ESqlStatementType.sstsettransaction, TBaseType.rrw_set, "transaction", " ", " ", " ", " ", " ");
4727        addhanacmds(ESqlStatementType.sstsettransactionautocommit, TBaseType.rrw_set, "transaction", "autocommit", " ", " ", " ", " ");
4728
4729        addhanacmds(ESqlStatementType.sstStartTransaction, TBaseType.rrw_start, "transaction", " ", " ", " ", " ", " ");
4730
4731
4732//TRUNCATE TABLE
4733        addhanacmds(ESqlStatementType.ssttruncatecollection, TBaseType.rrw_truncate, "collection", " ", " ", " ", " ", " ");
4734        addhanacmds(ESqlStatementType.ssttruncatetable, TBaseType.rrw_truncate, "table", " ", " ", " ", " ", " ");
4735        addhanacmds(ESqlStatementType.sstunload, TBaseType.rrw_hana_unload, " ", " ", " ", " ", " ", " ");
4736        addhanacmds(ESqlStatementType.sstunset, TBaseType.rrw_hana_unset, " ", " ", " ", " ", " ", " ");
4737        addhanacmds(ESqlStatementType.sstunsetpse, TBaseType.rrw_hana_unset, "pse", " ", " ", " ", " ", " ");
4738        addhanacmds(ESqlStatementType.sstunsetsystemlicense, TBaseType.rrw_hana_unset, "system", "license", " ", " ", " ", " ");
4739
4740//UPDATE
4741        addhanacmds(ESqlStatementType.sstupdate, TBaseType.rrw_update, " ", " ", " ", " ", " ", " ");
4742
4743        addhanacmds(ESqlStatementType.sstupsert, TBaseType.rrw_hana_upsert, " ", " ", " ", " ", " ", " ");
4744        addhanacmds(ESqlStatementType.sstvalidateLDAPProvider, TBaseType.rrw_hana_validate, "ldap", "provider", " ", " ", " ", " ");
4745        addhanacmds(ESqlStatementType.sstvalidateUser, TBaseType.rrw_hana_validate, "user", " ", " ", " ", " ", " ");
4746
4747    }
4748
4749ESqlStatementType findsybasecmd(TSourceToken ptoken){
4750    if (sybasecmds.size() == 0) {initsybasecmds();}
4751    return finddbcmd(ptoken,sybasecmds);
4752}
4753
4754    ESqlStatementType findmssqlcmd(TSourceToken ptoken){
4755        if (mssqlcmds.size() == 0) {initmssqlcmds();}
4756        return finddbcmd(ptoken,mssqlcmds);
4757    }
4758
4759    ESqlStatementType findteradatacmd(TSourceToken ptoken){
4760    if (teradatacmds.size() == 0) {initteradatacmds();}
4761    return finddbcmd(ptoken,teradatacmds);
4762}
4763
4764ESqlStatementType findpostgresqlcmd(TSourceToken ptoken){
4765    if (postgresqlcmds.size() == 0) {initpostgresqlcmds();}
4766    return finddbcmd(ptoken,postgresqlcmds);
4767}
4768
4769    ESqlStatementType findredshiftcmd(TSourceToken ptoken){
4770        if (redshiftcmds.size() == 0) {initredshiftcmds();}
4771        return finddbcmd(ptoken,redshiftcmds);
4772    }
4773
4774
4775    ESqlStatementType findgreenplumcmd(TSourceToken ptoken){
4776    if (greenplumcmds.size() == 0) {initgreenplumcmds();}
4777    return finddbcmd(ptoken,greenplumcmds);
4778}
4779
4780
4781ESqlStatementType findnetezzacmd(TSourceToken ptoken){
4782    if (netezzacmds.size() == 0) {initnetezzacmds();}
4783    return finddbcmd(ptoken,netezzacmds);
4784}
4785
4786ESqlStatementType findsparksqlcmd(TSourceToken ptoken){
4787        if (sparksqlcmds.size() == 0) {initsparksqlcmds();}
4788        return finddbcmd(ptoken,sparksqlcmds);
4789    }
4790
4791ESqlStatementType finddatabrickscmd(TSourceToken ptoken){
4792    if (databrickscmds.size() == 0) {initdatabrickscmds();}
4793    return finddbcmd(ptoken,databrickscmds);
4794}
4795    ESqlStatementType findgaussdbcmd(TSourceToken ptoken){
4796        if (gaussdbcmds.size() == 0) {initgaussdbcmds();}
4797        return finddbcmd(ptoken,gaussdbcmds);
4798    }
4799ESqlStatementType findprestocmd(TSourceToken ptoken){
4800    if (prestocmds.size() == 0) {initprestocmds();}
4801    return finddbcmd(ptoken,prestocmds);
4802}
4803
4804ESqlStatementType findathenacmd(TSourceToken ptoken){
4805    if (athenacmds.size() == 0) {initathenacmds();}
4806    return finddbcmd(ptoken,athenacmds);
4807}
4808
4809ESqlStatementType findmysqlcmd(TSourceToken ptoken){
4810    if (mysqlcmds.size() == 0) {initmysqlcmds();}
4811    return finddbcmd(ptoken,mysqlcmds);
4812}
4813
4814ESqlStatementType findhivecmd(TSourceToken ptoken){
4815        if (hivecmds.size() == 0) {inithivecmds();}
4816        return finddbcmd(ptoken,hivecmds);
4817    }
4818
4819ESqlStatementType finddb2cmd(TSourceToken ptoken){
4820            if (db2cmds.size() == 0) {initdb2cmds();}
4821            return finddbcmd(ptoken,db2cmds);
4822        }
4823
4824
4825ESqlStatementType findoraclecmd(TSourceToken ptoken){
4826            if (oraclecmds.size() == 0) {initoraclecmds();}
4827            return finddbcmd(ptoken,oraclecmds);
4828        }
4829
4830ESqlStatementType findmdxcmd(TSourceToken ptoken){
4831                    if (mdxcmds.size() == 0) {initmdxcmds();}
4832                    return finddbcmd(ptoken,mdxcmds);
4833                }
4834
4835ESqlStatementType findinformixcmd(TSourceToken ptoken){
4836                    if (informixcmds.size() == 0) {initinformixcmds();}
4837                    return finddbcmd(ptoken,informixcmds);
4838                }
4839
4840ESqlStatementType findhanacmd(TSourceToken ptoken){
4841    if (hanacmds.size() == 0) {inithanacmds();}
4842    return finddbcmd(ptoken,hanacmds);
4843}
4844
4845ESqlStatementType findverticacmd(TSourceToken ptoken){
4846    if (verticacmds.size() == 0) {initverticacmds();}
4847    return finddbcmd(ptoken,verticacmds);
4848}
4849
4850ESqlStatementType findcouchbasecmd(TSourceToken ptoken){
4851    if (couchbasecmds.size() == 0) {initcouchbasecmds();}
4852    return finddbcmd(ptoken,couchbasecmds);
4853}
4854
4855ESqlStatementType findsnowflakecmd(TSourceToken ptoken){
4856    if (snowflakecmds.size() == 0) {initsnowflakecmds();}
4857    return finddbcmd(ptoken,snowflakecmds);
4858}
4859
4860ESqlStatementType findbigquerycmd(TSourceToken ptoken){
4861    if (bigquerycmds.size() == 0) {initbigquerycmds();}
4862    return finddbcmd(ptoken,bigquerycmds);
4863}
4864
4865TCustomSqlStatement isnetezza(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
4866    TCustomSqlStatement ret = null;
4867
4868    gnewsqlstatementtype = ESqlStatementType.sstinvalid;
4869
4870    if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
4871       || (pcst.tokencode  == TBaseType.cmtslashstar)
4872       || (pcst.tokencode  == TBaseType.lexspace)
4873       || (pcst.tokencode  == TBaseType.lexnewline)
4874        || (pcst.tokentype == ETokenType.ttsemicolon) )
4875    {
4876      return null;
4877    }
4878
4879    int lcpos = pcst.posinlist;
4880    TSourceTokenList lcsourcetokenlist = pcst.container;
4881    TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
4882
4883    //subquery after semicolon or at first line
4884    if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
4885      {
4886        int k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
4887        if ( k >0 )
4888          {
4889            ret = new TSelectSqlStatement(pdbvendor);
4890          }
4891
4892          k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_with,1,"("); // ( with
4893          if ( k >0 )
4894          {
4895              ret = new TSelectSqlStatement(pdbvendor);
4896          }
4897
4898        return ret;
4899      }
4900
4901    //cte
4902    if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
4903      {
4904        ret = findcte(pcst,pdbvendor);
4905        if ( (ret != null) )  return ret;
4906      }
4907
4908    gnewsqlstatementtype = findnetezzacmd(pcst);
4909
4910    TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
4911    switch (gnewsqlstatementtype) {    //
4912        case sstinvalid:
4913          {
4914            ret = null;
4915
4916            if ( pstate == EFindSqlStateType.stnormal )
4917              {
4918              }
4919              break;
4920          }
4921        case sstselect:
4922          {
4923            boolean lcisnewsql = true;
4924
4925            if ( pstate != EFindSqlStateType.stnormal )
4926              {
4927                // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
4928                if ( (lcprevsolidtoken != null) )
4929                  {
4930                    if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
4931                      lcisnewsql = false; //subqery
4932                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
4933                      lcisnewsql = false;
4934                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
4935                      lcisnewsql = false;
4936                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
4937                      lcisnewsql = false;
4938                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
4939                      lcisnewsql = false;
4940                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
4941                      lcisnewsql = false;
4942                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
4943                      {
4944                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
4945                          lcisnewsql = false;
4946                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
4947                          lcisnewsql = false;
4948                      }
4949
4950                    if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
4951                      {
4952                        TSourceToken lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
4953                        if ( (lcpprevsolidtoken != null) )
4954                          {
4955                            if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
4956                              lcisnewsql = false;
4957                          }
4958                      }
4959
4960                  }
4961
4962
4963                if ( (lccurrentsqlstatement != null) )
4964                  {
4965                    if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
4966                      lcisnewsql = false;
4967                  }
4968
4969              }
4970
4971            if ( lcisnewsql )
4972              ret = new TSelectSqlStatement(pdbvendor);
4973
4974            break;
4975          }
4976        case sstinsert:
4977          {
4978            boolean lcisnewsql = true;
4979            if ( pstate != EFindSqlStateType.stnormal )
4980              {
4981                if ( (lccurrentsqlstatement != null) )
4982                  {
4983
4984                  }
4985              }
4986
4987            if ( lcisnewsql )
4988              ret = new TInsertSqlStatement(pdbvendor);
4989
4990            break;
4991          }
4992        case sstupdate:
4993          {
4994            boolean lcisnewsql = true;
4995            if ( pstate != EFindSqlStateType.stnormal )
4996              {
4997                lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
4998                if ( (lcprevsolidtoken != null) )
4999                  { //
5000                    if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
5001                      lcisnewsql = false;
5002                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
5003                      lcisnewsql = false;
5004                  }
5005
5006                TSourceToken lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
5007                if ( (lcnextsolidtoken != null) )
5008                  {
5009                    if ( lcnextsolidtoken.tokentype == ETokenType.ttleftparenthesis)
5010                      {
5011                        int k = lcsourcetokenlist.solidtokenafterpos(lcnextsolidtoken.posinlist,TBaseType.rrw_select,1,"(");
5012                        if ( k  == 0 ) lcisnewsql = false;
5013                      }
5014                  }
5015
5016
5017                if ( (lccurrentsqlstatement != null) )
5018                  {
5019                  }
5020              }
5021
5022            if ( lcisnewsql )
5023              {
5024                ret = new TUpdateSqlStatement(pdbvendor);
5025                ret.dummytag = 1; // means set clause in update is not found yet, used to seperate set clause from set statement
5026              }
5027            break;
5028          }
5029        case sstdelete:
5030          {
5031            boolean lcisnewsql = true;
5032
5033            if ( pstate != EFindSqlStateType.stnormal )
5034              {
5035                lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
5036                if ( (lcprevsolidtoken != null) )
5037                  {
5038                    if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
5039                      lcisnewsql = false;
5040                  }
5041
5042                if ( (lccurrentsqlstatement != null) )
5043                  {
5044                  }
5045              }
5046
5047            if ( lcisnewsql )
5048              ret = new TDeleteSqlStatement(pdbvendor);
5049
5050            break;
5051          }
5052        case sstTruncate:
5053          {
5054            ret = new TTruncateStatement(pdbvendor);
5055            ret.sqlstatementtype = gnewsqlstatementtype;
5056            break;
5057          }
5058        case sstcreatetable:
5059        case sstnetezzaCreateExternalTable:
5060          {
5061            ret = new TCreateTableSqlStatement(pdbvendor);
5062            break;
5063          }
5064        case sstcreateview:
5065          {
5066            ret = new TCreateViewSqlStatement(pdbvendor);
5067              break;
5068          }
5069        case sstcreatematerializedview:{
5070            ret = new TCreateMaterializedSqlStatement(pdbvendor);
5071            break;
5072        }
5073        case sstcreatedatabase:
5074          {
5075            ret = new TCreateDatabaseSqlStatement(pdbvendor);
5076              break;
5077          }
5078        case sstdroptable:
5079          {
5080            ret = new TDropTableSqlStatement(pdbvendor);
5081              break;
5082          }
5083        case sstdropview:
5084          {
5085           ret = new TDropViewSqlStatement(pdbvendor);
5086              break;
5087          }
5088        case sstaltertable:
5089          {
5090            ret = new TAlterTableStatement(pdbvendor);
5091              break;
5092          }
5093        case sstaltersession:
5094          {
5095            ret = new TAlterSessionStatement(pdbvendor);
5096              break;
5097          }
5098        case sstnetezzaGroomTable:
5099        {
5100            ret = new TNetezzaGroomTable(pdbvendor);
5101            break;
5102        }
5103        case sstnetezzaGenerateStatistics:
5104        {
5105            ret = new TNetezzaGenerateStatistics(pdbvendor);
5106            break;
5107        }
5108        case sstnetezzaAlterTable:
5109        {
5110            ret = new TAlterTableStatement(pdbvendor);
5111            break;
5112        }
5113        case sstnetezzaDropSchema:
5114        {
5115            ret = new TDropSchemaSqlStatement(pdbvendor);
5116            break;
5117        }
5118        case sstnetezzaCreateUser:
5119        {
5120            ret = new TCreateUserStmt(pdbvendor);
5121            break;
5122        }
5123        case sstnetezzaAlterView:
5124        {
5125            ret = new TAlterViewStatement(pdbvendor);
5126            break;
5127        }
5128        case sstnetezzaAlterDatabase:
5129        {
5130            ret = new TAlterDatabaseStmt(pdbvendor);
5131            break;
5132        }
5133        case sstAlterSchema:
5134        {
5135            ret = new TAlterSchemaStmt(pdbvendor);
5136            break;
5137        }
5138        case sstAlterSynonym:
5139        {
5140            ret = new TAlterSynonymStmt(pdbvendor);
5141            break;
5142        }
5143        case sstnetezzaDropTable:
5144        {
5145            ret = new TDropTableSqlStatement(pdbvendor);
5146            break;
5147        }
5148        case sstnetezzaDropView:
5149        {
5150            ret = new TDropViewSqlStatement(pdbvendor);
5151            break;
5152        }
5153        case sstmerge:
5154        {
5155            ret = new TMergeSqlStatement(pdbvendor);
5156            break;
5157        }
5158        case sstdropprocedure:
5159        {
5160            ret = new TDropProcedureStmt(pdbvendor);
5161            break;
5162        }
5163        case sstdropsynonym:
5164            ret = new TDropSynonymStmt(pdbvendor);
5165            break;
5166        case sstdropdatabase:
5167            ret = new TDropDatabaseStmt(pdbvendor);
5168            break;
5169        case sstcall:
5170            ret = new TCallStatement(pdbvendor);
5171            break;
5172        case sstcreatesynonym:
5173            ret = new TCreateSynonymStmt(pdbvendor);
5174            break;
5175        case sstcreatesequence:
5176            ret = new TCreateSequenceStmt(pdbvendor);
5177            break;
5178        case sstnetezzaDropSequence:
5179            ret = new TDropSequenceStmt(pdbvendor);
5180            break;
5181        case sstnetezzaGrant:
5182            ret = new TGrantStmt(pdbvendor);
5183            break;
5184        case sstexecutestmt:
5185            ret = new TExecuteSqlStatement(pdbvendor);
5186            break;
5187        case sstlocktable:
5188            ret = new TLockTableStmt(pdbvendor);
5189            break;
5190        case sstnetezzaComment:
5191            ret = new TCommentOnSqlStmt(pdbvendor);
5192            break;
5193        case sstcreateprocedure:
5194            ret = new TCreateProcedureStmt(pdbvendor);
5195            break;
5196        case sstnetezzaCopy:
5197            ret = new TCopyStmt(pdbvendor);
5198            break;
5199        case sstExplain:
5200            ret = new TExplainPlan(pdbvendor);
5201            break;
5202        case sstSetCatalog:
5203            ret = new TSetCatalogStmt(pdbvendor);
5204            break;
5205        case sstSetSchema:
5206            ret = new TSetSchemaStmt(pdbvendor);
5207            break;
5208        case sstnetezzaCommit:
5209        case sstnetezzaRollback:
5210        case sstnetezzaRevoke:
5211        default:
5212          {
5213            ret = new TUnknownSqlStatement(pdbvendor);
5214            ret.sqlstatementtype = gnewsqlstatementtype;
5215            break;
5216          }
5217    }    // case
5218
5219    return ret;
5220}
5221
5222    TCustomSqlStatement isredshift(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
5223        TCustomSqlStatement ret = null;
5224
5225        gnewsqlstatementtype = ESqlStatementType.sstinvalid;
5226
5227        if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
5228                || (pcst.tokencode  == TBaseType.cmtslashstar)
5229                || (pcst.tokencode  == TBaseType.lexspace)
5230                || (pcst.tokencode  == TBaseType.lexnewline)
5231                || (pcst.tokentype == ETokenType.ttsemicolon) )
5232        {
5233            return null;
5234        }
5235
5236        int lcpos = pcst.posinlist;
5237        TSourceTokenList lcsourcetokenlist = pcst.container;
5238        TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
5239
5240        //subquery after semicolon or at first line
5241        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
5242        {
5243            int k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
5244            if ( k >0 )
5245            {
5246                ret = new TSelectSqlStatement(pdbvendor);
5247            }
5248
5249            return ret;
5250        }
5251
5252        //cte
5253        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
5254        {
5255            ret = findcte(pcst,pdbvendor);
5256            if ( (ret != null) )  return ret;
5257        }
5258
5259        gnewsqlstatementtype = findredshiftcmd(pcst);
5260
5261        TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
5262        switch (gnewsqlstatementtype) {    //
5263            case sstinvalid:
5264            {
5265                ret = null;
5266                break;
5267            }
5268            case sstselect:
5269            {
5270                boolean lcisnewsql = true;
5271
5272                if ( pstate != EFindSqlStateType.stnormal )
5273                {
5274                    // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
5275                    if ( (lcprevsolidtoken != null) )
5276                    {
5277                        if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
5278                            lcisnewsql = false; //subqery
5279                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
5280                            lcisnewsql = false;
5281                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
5282                            lcisnewsql = false;
5283                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
5284                            lcisnewsql = false;
5285                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
5286                            lcisnewsql = false;
5287                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
5288                            lcisnewsql = false;
5289                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
5290                        {
5291                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
5292                                lcisnewsql = false;
5293                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
5294                                lcisnewsql = false;
5295                        }
5296
5297                        if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
5298                        {
5299                            TSourceToken lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
5300                            if ( (lcpprevsolidtoken != null) )
5301                            {
5302                                if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
5303                                    lcisnewsql = false;
5304                            }
5305                        }
5306
5307                    }
5308
5309
5310                    if ( (lccurrentsqlstatement != null) )
5311                    {
5312                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
5313                            lcisnewsql = false;
5314                    }
5315
5316                }
5317
5318                if ( lcisnewsql )
5319                    ret = new TSelectSqlStatement(pdbvendor);
5320
5321                break;
5322            }
5323            case sstinsert:
5324            {
5325                boolean lcisnewsql = true;
5326                if ( pstate != EFindSqlStateType.stnormal )
5327                {
5328                    if ( (lccurrentsqlstatement != null) )
5329                    {
5330
5331                    }
5332                }
5333
5334                if ( lcisnewsql )
5335                    ret = new TInsertSqlStatement(pdbvendor);
5336
5337                break;
5338            }
5339            case sstupdate:
5340            {
5341                boolean lcisnewsql = true;
5342                if ( pstate != EFindSqlStateType.stnormal )
5343                {
5344                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
5345                    if ( (lcprevsolidtoken != null) )
5346                    { //
5347                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
5348                            lcisnewsql = false;
5349                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
5350                            lcisnewsql = false;
5351                    }
5352
5353                    TSourceToken lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
5354                    if ( (lcnextsolidtoken != null) )
5355                    {
5356                        if ( lcnextsolidtoken.tokentype == ETokenType.ttleftparenthesis)
5357                        {
5358                            int k = lcsourcetokenlist.solidtokenafterpos(lcnextsolidtoken.posinlist,TBaseType.rrw_select,1,"(");
5359                            if ( k  == 0 ) lcisnewsql = false;
5360                        }
5361                    }
5362
5363
5364                    if ( (lccurrentsqlstatement != null) )
5365                    {
5366                    }
5367                }
5368
5369                if ( lcisnewsql )
5370                {
5371                    ret = new TUpdateSqlStatement(pdbvendor);
5372                    ret.dummytag = 1; // means set clause in update is not found yet, used to seperate set clause from set statement
5373                }
5374                break;
5375            }
5376            case sstdelete:
5377            {
5378                boolean lcisnewsql = true;
5379
5380                if ( pstate != EFindSqlStateType.stnormal )
5381                {
5382                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
5383                    if ( (lcprevsolidtoken != null) )
5384                    {
5385                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
5386                            lcisnewsql = false;
5387                    }
5388
5389                    if ( (lccurrentsqlstatement != null) )
5390                    {
5391                    }
5392                }
5393
5394                if ( lcisnewsql )
5395                    ret = new TDeleteSqlStatement(pdbvendor);
5396
5397                break;
5398            }
5399            case sstredshiftAbort:
5400            {
5401                ret = new TRedshiftAbort(pdbvendor);
5402                ret.sqlstatementtype = gnewsqlstatementtype;
5403                break;
5404            }
5405            case sstalterdatabase:
5406            {
5407                ret = new TAlterDatabaseStmt(pdbvendor);
5408                break;
5409            }
5410            case sstredshiftAlterGroup:
5411            {
5412                ret = new TAlterGroup(pdbvendor);
5413                break;
5414            }
5415            case sstredshiftAlterSchema:
5416            {
5417                ret = new TRedshiftAlterSchema(pdbvendor);
5418                break;
5419            }
5420            case sstaltertable:
5421            {
5422                ret = new TAlterTableStatement(pdbvendor);
5423                break;
5424            }
5425            case sstredshiftAlterUser:
5426            {
5427                ret = new TRedshiftAlterUser(pdbvendor);
5428                break;
5429            }
5430            case sstredshiftAnalyze:
5431            {
5432                ret = new TRedshiftAnalyze(pdbvendor);
5433                break;
5434            }
5435            case sstredshiftAnalyzeCompression:
5436            {
5437                ret = new TRedshiftAnalyzeCompression(pdbvendor);
5438                break;
5439            }
5440            case sstredshiftBegin:
5441            {
5442                ret = new TRedshiftBegin(pdbvendor);
5443                break;
5444            }
5445            case sstredshiftCancel:
5446            {
5447                ret = new TRedshiftCancel(pdbvendor);
5448                break;
5449            }
5450            case sstredshiftClose:
5451            {
5452                ret = new TCloseStmt(pdbvendor);
5453                break;
5454            }
5455            case sstredshiftComment:
5456            {
5457                ret = new TRedshiftComment(pdbvendor);
5458                break;
5459            }
5460            case sstredshiftCommit:
5461            {
5462                ret = new TRedshiftCommit(pdbvendor);
5463                break;
5464            }
5465            case sstredshiftCopy:
5466            {
5467                ret = new TRedshiftCopy(pdbvendor);
5468                break;
5469            }
5470            case sstcreatedatabase:
5471            {
5472                ret = new TCreateDatabaseSqlStatement(pdbvendor);
5473                break;
5474            }
5475            case sstredshiftCreateGroup:
5476            {
5477                ret = new TCreateGroup(pdbvendor);
5478                break;
5479            }
5480            case sstredshiftCreateSchema:
5481            {
5482                ret = new TCreateSchemaSqlStatement(pdbvendor);
5483                break;
5484            }
5485            case sstcreatetable:
5486            {
5487                ret = new TCreateTableSqlStatement(pdbvendor);
5488                break;
5489            }
5490            case sstredshiftCreateUser:
5491            {
5492                ret = new TRedshiftCreateUser(pdbvendor);
5493                break;
5494            }
5495            case sstcreateview:
5496            {
5497                ret = new TCreateViewSqlStatement(pdbvendor);
5498                break;
5499            }
5500            case sstredshiftDeallocate:
5501            {
5502                ret = new TRedshiftDeallocate(pdbvendor);
5503                break;
5504            }
5505            case sstredshiftDeclare:
5506            {
5507                ret = new TRedshiftDeclare(pdbvendor);
5508                break;
5509            }
5510            case sstredshiftDropDatabase:
5511            {
5512                ret = new TDropDatabaseStmt(pdbvendor);
5513                break;
5514            }
5515            case sstredshiftDropGroup:
5516            {
5517                ret = new TDropGroup(pdbvendor);
5518                break;
5519            }
5520            case sstredshiftDropSchema:
5521            {
5522                ret = new TRedshiftDropSchema(pdbvendor);
5523                break;
5524            }
5525            case sstdroptable:
5526            {
5527                ret = new TDropTableSqlStatement(pdbvendor);
5528                break;
5529            }
5530            case sstredshiftDropUser:
5531            {
5532                ret = new TRedshiftDropUser(pdbvendor);
5533                break;
5534            }
5535            case sstdropview:
5536            {
5537                ret = new TDropViewSqlStatement(pdbvendor);
5538                break;
5539            }
5540            case sstredshiftEnd:
5541            {
5542                ret = new TRedshiftEnd(pdbvendor);
5543                break;
5544            }
5545            case sstExecutePreparedStmt:
5546            {
5547                ret = new TExecuteSqlStatement(pdbvendor);
5548                break;
5549            }
5550            case sstExplain:
5551            {
5552                ret = new TExplainPlan(pdbvendor);
5553                break;
5554            }
5555            case sstFetchFrom:
5556            {
5557                ret = new TFetchFromStmt(pdbvendor);
5558                break;
5559            }
5560            case sstGrant:
5561            {
5562                ret = new TGrantStmt(pdbvendor);
5563                break;
5564            }
5565            case sstredshiftLock:
5566            {
5567                ret = new TLockTableStmt(pdbvendor);
5568                break;
5569            }
5570            case sstredshiftPrepare:
5571            {
5572                ret = new TRedshiftPrepare(pdbvendor);
5573                break;
5574            }
5575            case sstredshiftReset:
5576            {
5577                ret = new TRedshiftReset(pdbvendor);
5578                break;
5579            }
5580            case sstRevoke:
5581            {
5582                ret = new TRevokeStmt(pdbvendor);
5583                break;
5584            }
5585            case sstredshiftRollback:
5586            {
5587                ret = new TRedshiftRollback(pdbvendor);
5588                break;
5589            }
5590            case sstredshiftSet:
5591            {
5592                ret = new TSetStmt(pdbvendor);
5593                break;
5594            }
5595            case sstredshiftSetSessionAuthorization:
5596            {
5597                ret = new TRedshiftSessionAuthorization(pdbvendor);
5598                break;
5599            }
5600            case sstredshiftShow:
5601            {
5602                ret = new TShowStmt(pdbvendor);
5603                break;
5604            }
5605            case sstStartTransaction:
5606            {
5607                ret = new TStartTransactionStmt(pdbvendor);
5608                break;
5609            }
5610            case sstTruncate:
5611            {
5612                ret = new TTruncateStatement(pdbvendor);
5613                break;
5614            }
5615            case sstredshiftUnload:
5616            {
5617                ret = new TUnloadStmt(pdbvendor);
5618                break;
5619            }
5620            case sstredshiftVacuum:
5621            {
5622                ret = new TRedshiftVacuum(pdbvendor);
5623                break;
5624            }
5625            case sstcreatefunction:
5626                ret = new TCreateFunctionStmt(pdbvendor);
5627                break;
5628            case sstcreateprocedure:
5629                ret = new TCreateProcedureStmt(pdbvendor);
5630                break;
5631            case sstcreatematerializedview:{
5632                ret = new TCreateMaterializedSqlStatement(pdbvendor);
5633                break;
5634            }
5635            case sstcall:
5636                ret = new TCallStatement(pdbvendor);
5637                break;
5638            case sstmerge:
5639            {
5640                ret = new TMergeSqlStatement(pdbvendor);
5641                break;
5642            }
5643            default:
5644            {
5645                ret = new TUnknownSqlStatement(pdbvendor);
5646                ret.sqlstatementtype = gnewsqlstatementtype;
5647                break;
5648            }
5649        }    // case
5650
5651        return ret;
5652    }
5653    TCustomSqlStatement isgaussdb(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
5654        TCustomSqlStatement ret = null;
5655
5656        gnewsqlstatementtype = ESqlStatementType.sstinvalid;
5657
5658        if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
5659                || (pcst.tokencode  == TBaseType.cmtslashstar)
5660                || (pcst.tokencode  == TBaseType.lexspace)
5661                || (pcst.tokencode  == TBaseType.lexnewline)
5662                || (pcst.tokentype == ETokenType.ttsemicolon) )
5663        {
5664            return null;
5665        }
5666
5667        int lcpos = pcst.posinlist;
5668        TSourceTokenList lcsourcetokenlist = pcst.container;
5669        TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
5670
5671        //subquery after semicolon or at first line
5672        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
5673        {
5674            int k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
5675            if ( k >0 )
5676            {
5677                ret = new TSelectSqlStatement(pdbvendor);
5678            }else{
5679                k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_with,1,"(");
5680                if ( k >0 )
5681                { // syntax like: (with ... )
5682                    ret = new TSelectSqlStatement(pdbvendor);
5683                }
5684            }
5685
5686            return ret;
5687        }
5688
5689        //cte
5690        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
5691        {
5692            ret = findcte(pcst,pdbvendor);
5693            if ( (ret != null) )  return ret;
5694        }
5695
5696        gnewsqlstatementtype = findgaussdbcmd(pcst);
5697
5698        TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
5699        switch (gnewsqlstatementtype) {    //
5700            case sstinvalid:
5701            {
5702                ret = null;
5703
5704                if ( pstate == EFindSqlStateType.stnormal )
5705                {
5706                    if ( pcst.tokencode == TBaseType.label_begin )
5707                    {
5708                        ret = new TCommonBlock(pdbvendor);
5709                        gnewsqlstatementtype = ret.sqlstatementtype;
5710
5711                    }
5712                    else if ( pcst.tokencode == TBaseType.rrw_declare )
5713                    {
5714                        ret = new TCommonBlock(pdbvendor);
5715                        gnewsqlstatementtype = ret.sqlstatementtype;
5716                    }
5717                    else if ( pcst.tokencode == TBaseType.rrw_begin )
5718                    {
5719                        // https://support.huaweicloud.com/distributed-devg-v3-opengauss/gaussdb-12-0498.html
5720                        // 有两种可能 1:开启匿名块,或 2:开启事务
5721                        boolean isBlock = true;
5722                        TSourceToken st = pcst.nextSolidToken();
5723                        if (st != null){
5724                            if ((st.tokencode == ';')
5725                                    ||(st.toString().equalsIgnoreCase("work"))
5726                                    ||(st.toString().equalsIgnoreCase("transaction"))
5727                            ){
5728                                isBlock = false;
5729                            }
5730                        }
5731                        if (isBlock){
5732                            ret = new TCommonBlock(pdbvendor);
5733                            gnewsqlstatementtype = ret.sqlstatementtype;
5734                        }else{
5735                            ret = new TStartTransactionStmt(pdbvendor);
5736                            gnewsqlstatementtype = ret.sqlstatementtype;
5737                            pcst.tokencode = TBaseType.GAUSSDB_BEGIN_TRANSACTION;
5738                        }
5739
5740                    }
5741                    else if ( pcst.tokencode == TBaseType.rrw_procedure )
5742                    {
5743                        ret = new TCreateProcedureStmt(pdbvendor);
5744                        // ret.sqlstatementtype = ESqlStatementType.sstplsql_createprocedure;
5745                        gnewsqlstatementtype = ret.sqlstatementtype;
5746                    }
5747                    else if ( pcst.tokencode == TBaseType.rrw_function )
5748                    {
5749                        ret = new TPlsqlCreateFunction(pdbvendor);
5750                        // ret.sqlstatementtype = ESqlStatementType.sstplsql_createfunction;
5751                        gnewsqlstatementtype = ret.sqlstatementtype;
5752                    }
5753                    else if ( pcst.tokencode == TBaseType.rrw_package )
5754                    {
5755                        ret = new TPlsqlCreatePackage(pdbvendor);
5756                        // ret.sqlstatementtype = ESqlStatementType.sstplsql_createpackage;
5757                        gnewsqlstatementtype = ret.sqlstatementtype;
5758                    }
5759                }
5760                break;
5761            }
5762            case sstpostgresqlDeclare:{
5763                // https://support.huaweicloud.com/distributed-devg-v3-opengauss/gaussdb-12-0554.html
5764                // declare cursor_name [ BINARY ] [ NO SCROLL ] CURSOR ..., 这是单个的定义游标语句
5765                // 下面这种类型的定义才是开始一个 匿名块
5766                // [DECLARE [declare_statements]]
5767                //BEGIN
5768                //execution_statements
5769                //END;
5770
5771                // 判断逻辑如下:
5772                // 1. 如果 declare 后直接跟 CURSOR, 那就是开启一个 匿名块
5773                // 2. 如果 declare 后直接跟的是一个 identifier, 那再检查之后的第2或3或4个token是否为 CURSOR,
5774                // 如果是,该语句为 单个的定义游标语句,否则为  匿名块
5775
5776                boolean isBlock = true;
5777                TSourceToken st = pcst.nextSolidToken();
5778                if (st != null){
5779                    if (st.tokencode == TBaseType.GAUSSDB_CURSOR){
5780                        isBlock = true;
5781                    }else if (st.tokencode == TBaseType.ident){
5782                        st = st.nextSolidToken();
5783                        if (st != null){
5784                            if ((st.tokencode == TBaseType.GAUSSDB_CURSOR)
5785                                    ||(st.tokencode == TBaseType.rrw_binary)
5786                                    ||(st.toString().equalsIgnoreCase("no"))
5787                            ){
5788                                isBlock = false;
5789                            }
5790                        }
5791                    }
5792                }
5793                if (isBlock){
5794                    ret = new TCommonBlock(pdbvendor);
5795                    gnewsqlstatementtype = ret.sqlstatementtype;
5796                }else{
5797                    ret = new TDeclareCursorStmt(pdbvendor);
5798                    gnewsqlstatementtype = ret.sqlstatementtype;
5799                    pcst.tokencode = TBaseType.GAUSSDB_DECLARE_SINGLE_STMT;
5800                }
5801
5802                break;
5803            }
5804            case sstmerge:
5805            {
5806                ret = new TMergeSqlStatement(pdbvendor);
5807                ret.sqlstatementtype = gnewsqlstatementtype;
5808                break;
5809            }
5810            case sstcreatesynonym:
5811                ret = new TCreateSynonymStmt(pdbvendor);
5812                break;
5813            case sstdropsynonym:
5814                ret = new TDropSynonymStmt(pdbvendor);
5815                break;
5816            case sstAlterPackage:
5817                ret = new TAlterPackageStmt(pdbvendor);
5818                break;
5819            case sstpostgresqlRefreshMaterializedView:
5820                ret = new TRefreshMaterializedViewStmt(pdbvendor);
5821                break;
5822            case sstAlterSynonym:
5823                ret = new TAlterSynonymStmt(pdbvendor);
5824                break;
5825            case sstsavepoint:
5826            {
5827                ret = new TSavepointStmt(pdbvendor);
5828                ret.sqlstatementtype = gnewsqlstatementtype;
5829                break;
5830            }
5831            case sstselect:
5832            {
5833                boolean lcisnewsql = true;
5834
5835                if ( pstate != EFindSqlStateType.stnormal )
5836                {
5837                    // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
5838                    if ( (lcprevsolidtoken != null) )
5839                    {
5840                        if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
5841                            lcisnewsql = false; //subqery
5842                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
5843                            lcisnewsql = false;
5844                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
5845                            lcisnewsql = false;
5846                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
5847                            lcisnewsql = false;
5848                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
5849                            lcisnewsql = false;
5850                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
5851                            lcisnewsql = false;
5852                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
5853                        {
5854                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
5855                                lcisnewsql = false;
5856                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
5857                                lcisnewsql = false;
5858                        }
5859
5860                        if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
5861                        {
5862                            TSourceToken lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
5863                            if ( (lcpprevsolidtoken != null) )
5864                            {
5865                                if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
5866                                    lcisnewsql = false;
5867                            }
5868                        }
5869
5870                    }
5871
5872
5873                    if ( (lccurrentsqlstatement != null) )
5874                    {
5875                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
5876                            lcisnewsql = false;
5877                    }
5878
5879                }
5880
5881                if ( lcisnewsql )
5882                    ret = new TSelectSqlStatement(pdbvendor);
5883
5884                break;
5885            }
5886            case sstinsert:
5887            {
5888                boolean lcisnewsql = true;
5889                if ( pstate != EFindSqlStateType.stnormal )
5890                {
5891                    if ( (lccurrentsqlstatement != null) )
5892                    {
5893
5894                    }
5895                }
5896
5897                if ( lcisnewsql )
5898                    ret = new TInsertSqlStatement(pdbvendor);
5899
5900                break;
5901            }
5902            case sstupdate:
5903            {
5904                boolean lcisnewsql = true;
5905                if ( pstate != EFindSqlStateType.stnormal )
5906                {
5907                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
5908                    if ( (lcprevsolidtoken != null) )
5909                    { //
5910                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
5911                            lcisnewsql = false;
5912                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
5913                            lcisnewsql = false;
5914                    }
5915
5916                    TSourceToken lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
5917                    if ( (lcnextsolidtoken != null) )
5918                    {
5919                        if ( lcnextsolidtoken.tokentype == ETokenType.ttleftparenthesis)
5920                        {
5921                            int k = lcsourcetokenlist.solidtokenafterpos(lcnextsolidtoken.posinlist,TBaseType.rrw_select,1,"(");
5922                            if ( k  == 0 ) lcisnewsql = false;
5923                        }
5924                    }
5925
5926
5927                    if ( (lccurrentsqlstatement != null) )
5928                    {
5929                    }
5930                }
5931
5932                if ( lcisnewsql )
5933                {
5934                    ret = new TUpdateSqlStatement(pdbvendor);
5935                    ret.dummytag = 1; // means set clause in update is not found yet, used to seperate set clause from set statement
5936                }
5937                break;
5938            }
5939            case sstdelete:
5940            {
5941                boolean lcisnewsql = true;
5942
5943                if ( pstate != EFindSqlStateType.stnormal )
5944                {
5945                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
5946                    if ( (lcprevsolidtoken != null) )
5947                    {
5948                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
5949                            lcisnewsql = false;
5950                    }
5951
5952                    if ( (lccurrentsqlstatement != null) )
5953                    {
5954                    }
5955                }
5956
5957                if ( lcisnewsql )
5958                    ret = new TDeleteSqlStatement(pdbvendor);
5959
5960                break;
5961            }
5962            case sstoraclecommit:
5963            {
5964                ret = new TUnknownSqlStatement(pdbvendor);
5965                ret.sqlstatementtype = gnewsqlstatementtype;
5966                break;
5967            }
5968            case sstoraclerollback:
5969            {
5970                ret = new TUnknownSqlStatement(pdbvendor);
5971                ret.sqlstatementtype = gnewsqlstatementtype;
5972                break;
5973            }
5974            case sstoraclesavepoint:
5975            {
5976                ret = new TUnknownSqlStatement(pdbvendor);
5977                ret.sqlstatementtype = gnewsqlstatementtype;
5978                break;
5979            }
5980            case sstoraclerevoke:
5981            {
5982                ret = new TUnknownSqlStatement(pdbvendor);
5983                ret.sqlstatementtype = gnewsqlstatementtype;
5984                break;
5985            }
5986            case sstoraclegrant:
5987            {
5988                ret = new TUnknownSqlStatement(pdbvendor);
5989                //ret = new TGrantStmt(pdbvendor);
5990                ret.sqlstatementtype = gnewsqlstatementtype;
5991                break;
5992            }
5993            case sstoracleanalyze:
5994            {
5995                ret = new TUnknownSqlStatement(pdbvendor);
5996                ret.sqlstatementtype = gnewsqlstatementtype;
5997                break;
5998            }
5999            case sstoracletruncate:
6000            {
6001                ret = new TUnknownSqlStatement(pdbvendor);
6002                ret.sqlstatementtype = gnewsqlstatementtype;
6003                break;
6004            }
6005            case sstcreatetable:
6006            {
6007                ret = new TCreateTableSqlStatement(pdbvendor);
6008                break;
6009            }
6010            case sstoraclecreateview:
6011            {
6012                ret = new TCreateViewSqlStatement(pdbvendor);
6013                break;
6014            }
6015            case sstcreatematerializedview:{
6016                ret = new TCreateMaterializedSqlStatement(pdbvendor);
6017                break;
6018            }
6019            case sstoraclecreateindex:
6020            {
6021                ret = new TCreateIndexSqlStatement(pdbvendor);
6022                break;
6023            }
6024            case sstoraclecreatedatabase:
6025            {
6026                ret = new TCreateDatabaseSqlStatement(pdbvendor);
6027                break;
6028            }
6029            case sstoracledroptable:
6030            {
6031                ret = new TDropTableSqlStatement(pdbvendor);
6032                break;
6033            }
6034            case sstoracledropview:
6035            {
6036                ret = new TDropViewSqlStatement(pdbvendor);
6037                break;
6038            }
6039            case sstoracledropindex:
6040            {
6041                ret = new TDropIndexSqlStatement(pdbvendor);
6042                break;
6043            }
6044            case sstaltertable:
6045            {
6046                ret = new TAlterTableStatement(pdbvendor);
6047                break;
6048            }
6049            case sstoraclealtersession:
6050            {
6051                ret = new TAlterSessionStatement(pdbvendor);
6052                break;
6053            }
6054            case sstplsql_createprocedure:
6055            {
6056                ret = new TPlsqlCreateProcedure(pdbvendor);
6057                ret.sqlstatementtype = gnewsqlstatementtype;
6058                // System.out.println(gnewsqlstatementtype);
6059                break;
6060            }
6061            case sstplsql_createfunction:
6062            {
6063                ret = new TPlsqlCreateFunction(pdbvendor);
6064                ret.sqlstatementtype = gnewsqlstatementtype;
6065                // System.out.println(gnewsqlstatementtype);
6066                break;
6067            }
6068            case sstplsql_createpackage:
6069            {
6070                ret = new TPlsqlCreatePackage(pdbvendor);
6071                ret.sqlstatementtype = gnewsqlstatementtype;
6072                // System.out.println(gnewsqlstatementtype);
6073                break;
6074            }
6075            case sstoraclecreatepackagebody:
6076            {
6077                ret = new TPlsqlCreatePackage(pdbvendor);
6078                ret.sqlstatementtype = gnewsqlstatementtype;
6079                //ret.sqlstatementtype = ESqlStatementType.sstplsql_createpackage;
6080                break;
6081            }
6082            case sstplsql_createtrigger:
6083            {
6084                ret = new TPlsqlCreateTrigger(pdbvendor);
6085                ret.sqlstatementtype = gnewsqlstatementtype;
6086                // System.out.println(gnewsqlstatementtype);
6087                break;
6088            }
6089            case sstplsql_execimmestmt:
6090            {
6091                ret = new TExecImmeStmt(pdbvendor);
6092                // ret.sqlstatementtype = gnewsqlstatementtype;
6093                // System.out.println(gnewsqlstatementtype);
6094                break;
6095            }
6096            case sstplsql_createtype_placeholder:
6097            {
6098                ret = new TPlsqlCreateType_Placeholder(pdbvendor);
6099                ret.sqlstatementtype = gnewsqlstatementtype;
6100                // System.out.println(gnewsqlstatementtype);
6101                break;
6102            }
6103            case sstplsql_createtypebody:
6104            {
6105                ret = new TPlsqlCreateTypeBody(pdbvendor);
6106                ret.sqlstatementtype = gnewsqlstatementtype;
6107                break;
6108            }
6109            case sstCommentOn:
6110            {
6111                ret = new TCommentOnSqlStmt(pdbvendor);
6112                break;
6113            }
6114            case sstoraclecreatesequence:
6115            {
6116                ret = new TCreateSequenceStmt(pdbvendor);
6117                break;
6118            }
6119            case sstoraclecreatesynonym:
6120            {
6121                ret = new TCreateSynonymStmt(pdbvendor);
6122                break;
6123            }
6124            case sstoraclecreatedirectory:
6125            {
6126                ret = new TOracleCreateDirectoryStmt(pdbvendor);
6127                break;
6128            }
6129            case sstpostgresqlCreateIndex:
6130                ret = new TCreateIndexSqlStatement(pdbvendor);
6131                break;
6132            case sstpostgresqlCreateView:
6133                ret = new TCreateViewSqlStatement(pdbvendor);
6134                break;
6135            case sstpostgresqlCreateFunction:
6136                ret = new TCreateFunctionStmt(pdbvendor);
6137                break;
6138            case sstcreatetrigger:
6139                ret = new TCreateTriggerStmt(pdbvendor);
6140                break;
6141            case sstpostgresqlMove:
6142                ret = new TMoveStmt(pdbvendor);
6143                break;
6144            case sstpostgresqlTruncate:
6145                ret = new TTruncateStatement(pdbvendor);
6146                break;
6147            case sstpostgresqlExecute:
6148                ret = new TExecuteSqlStatement(pdbvendor);
6149                break;
6150            case sstpostgresqlDropTable:
6151                ret = new TDropTableSqlStatement(pdbvendor);
6152                break;
6153            case sstPostgresqlBlock:
6154                ret = new TCommonBlock(pdbvendor);
6155                break;
6156            case sstVacuum:
6157                ret = new TVacuumStmt(pdbvendor);
6158                break;
6159            case sstReindex:
6160                ret = new TReindexStmt(pdbvendor);
6161                break;
6162            case sstcreateprocedure:
6163                ret = new TCreateProcedureStmt(pdbvendor);
6164                break;
6165            case sstpostgresqlCommit:
6166                ret = new TCommitStmt(pdbvendor);
6167                break;
6168            case sstpostgresqlCreateSchema:
6169                ret = new TCreateSchemaSqlStatement(pdbvendor);
6170                break;
6171            case sstpostgresqlDropSchema:
6172                ret = new TDropSchemaSqlStatement(pdbvendor);
6173                break;
6174            case sstpostgresqlShowSearchPath:
6175                ret = new TShowSearchPathStmt(pdbvendor);
6176                break;
6177            case sstpostgresqlCopy:
6178                ret = new TCopyStmt(pdbvendor);
6179                break;
6180            case sstcall:
6181                ret = new TCallStatement(pdbvendor);
6182                break;
6183            case sstpostgresqlAlterSchema:
6184                ret = new TAlterSchemaStmt(pdbvendor);
6185                break;
6186            case sstpostgresqlAlterfunction:
6187                ret = new TAlterFunctionStmt(pdbvendor);
6188                break;
6189            case sstStartTransaction:
6190            {
6191                ret = new TStartTransactionStmt(pdbvendor);
6192                break;
6193            }
6194            case sstpostgresqlComment:
6195                ret = new TCommentOnSqlStmt(pdbvendor);
6196                break;
6197            case sstpostgresqlShow:
6198                ret = new TShowStmt(pdbvendor);
6199                break;
6200            case sstpostgresqlSetSearchPath:
6201            case sstpostgresqlSet:
6202                ret = new TSetStmt(pdbvendor);
6203                break;
6204            case sstpostgresqlDropFunction:
6205                ret = new TDropFunctionStmt(pdbvendor);
6206                break;
6207            case sstpostgresqlDropTrigger:
6208                ret = new TDropTriggerSqlStatement(pdbvendor);
6209                break;
6210            case sstpostgresqlDropProcedure:
6211                ret = new TDropProcedureStmt(pdbvendor);
6212                break;
6213            case sstdropindex:
6214                ret = new TDropIndexSqlStatement(pdbvendor);
6215                break;
6216            case sstpostgresqlDropSequence:
6217                ret = new TDropSequenceStmt(pdbvendor);
6218                break;
6219            case sstpostgresqlDropView:
6220                ret = new TDropViewSqlStatement(pdbvendor);
6221                break;
6222            case sstpostgresqlCreateSequence:
6223                ret = new TCreateSequenceStmt(pdbvendor);
6224                break;
6225            case sstpostgresqlCreateType:
6226                ret = new TCreateTypeStmt(pdbvendor);
6227                break;
6228            case sstcreateExtension:
6229                ret = new TCreateExtensionStmt(pdbvendor);
6230                break;
6231            case sstPostgresqlTable:
6232                ret = new TPostgresqlTableStmt(pdbvendor);
6233                break;
6234            case sstpostgresqlEnd:
6235                ret = new TEndTran(pdbvendor);
6236                break;
6237            case sstpostgresqlDo:
6238                boolean lcisnewsql = false;
6239
6240                if ( pstate == EFindSqlStateType.stnormal )
6241                {
6242                    TSourceToken lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
6243                    if ( (lcnextsolidtoken != null) )
6244                    {
6245                        if ( lcnextsolidtoken.tokencode == TBaseType.rrw_postgresql_function_delimiter )
6246                            lcisnewsql = true;
6247                    }
6248                }
6249
6250                if ( lcisnewsql )
6251                    ret = new TDoExecuteBlockStmt(pdbvendor);
6252
6253                break;
6254            default:
6255            {
6256                ret = new TUnknownSqlStatement(pdbvendor);
6257                ret.sqlstatementtype = gnewsqlstatementtype;
6258                break;
6259            }
6260        }    // case
6261
6262        return ret;
6263    }
6264
6265    TCustomSqlStatement ispostgresql(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
6266        TCustomSqlStatement ret = null;
6267
6268        gnewsqlstatementtype = ESqlStatementType.sstinvalid;
6269
6270        if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
6271                || (pcst.tokencode  == TBaseType.cmtslashstar)
6272                || (pcst.tokencode  == TBaseType.lexspace)
6273                || (pcst.tokencode  == TBaseType.lexnewline)
6274                || (pcst.tokentype == ETokenType.ttsemicolon) )
6275        {
6276            return null;
6277        }
6278
6279        int lcpos = pcst.posinlist;
6280        TSourceTokenList lcsourcetokenlist = pcst.container;
6281        TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
6282
6283        //subquery after semicolon or at first line
6284        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
6285        {
6286            int k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
6287            if ( k >0 )
6288            {
6289                ret = new TSelectSqlStatement(pdbvendor);
6290            }
6291
6292            return ret;
6293        }
6294
6295        //cte
6296        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
6297        {
6298            ret = findcte(pcst,pdbvendor);
6299            if ( (ret != null) )  return ret;
6300        }
6301
6302        gnewsqlstatementtype = findpostgresqlcmd(pcst);
6303
6304        TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
6305        switch (gnewsqlstatementtype) {    //
6306            case sstinvalid:
6307            {
6308                ret = null;
6309
6310                if ( pstate == EFindSqlStateType.stnormal )
6311                {
6312                    if ( pcst.tokencode == TBaseType.label_begin )
6313                    {
6314                        ret = new TCommonBlock(pdbvendor);
6315                        gnewsqlstatementtype = ret.sqlstatementtype;
6316                    }
6317                    else if ( pcst.tokencode == TBaseType.rrw_declare )
6318                    {
6319                        ret = new TCommonBlock(pdbvendor);
6320                        gnewsqlstatementtype = ret.sqlstatementtype;
6321                    }
6322                    else if ( pcst.tokencode == TBaseType.rrw_begin )
6323                    {
6324                        ret = new TCommonBlock(pdbvendor);
6325                        gnewsqlstatementtype = ret.sqlstatementtype;
6326                    }
6327                    else if ( pcst.tokencode == TBaseType.rrw_procedure )
6328                    {
6329                        ret = new TCreateProcedureStmt(pdbvendor);
6330                        // ret.sqlstatementtype = ESqlStatementType.sstplsql_createprocedure;
6331                        gnewsqlstatementtype = ret.sqlstatementtype;
6332                    }
6333                    else if ( pcst.tokencode == TBaseType.rrw_function )
6334                    {
6335                        ret = new TPlsqlCreateFunction(pdbvendor);
6336                        // ret.sqlstatementtype = ESqlStatementType.sstplsql_createfunction;
6337                        gnewsqlstatementtype = ret.sqlstatementtype;
6338                    }
6339                    else if ( pcst.tokencode == TBaseType.rrw_package )
6340                    {
6341                        ret = new TPlsqlCreatePackage(pdbvendor);
6342                        // ret.sqlstatementtype = ESqlStatementType.sstplsql_createpackage;
6343                        gnewsqlstatementtype = ret.sqlstatementtype;
6344                    }
6345                }
6346                break;
6347            }
6348            case sstselect:
6349            {
6350                boolean lcisnewsql = true;
6351
6352                if ( pstate != EFindSqlStateType.stnormal )
6353                {
6354                    // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
6355                    if ( (lcprevsolidtoken != null) )
6356                    {
6357                        if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
6358                            lcisnewsql = false; //subqery
6359                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
6360                            lcisnewsql = false;
6361                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
6362                            lcisnewsql = false;
6363                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
6364                            lcisnewsql = false;
6365                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
6366                            lcisnewsql = false;
6367                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
6368                            lcisnewsql = false;
6369                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
6370                        {
6371                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
6372                                lcisnewsql = false;
6373                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
6374                                lcisnewsql = false;
6375                        }
6376
6377
6378                        if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
6379                        {
6380                            TSourceToken lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
6381                            if ( (lcpprevsolidtoken != null) )
6382                            {
6383                                if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
6384                                    lcisnewsql = false;
6385                            }
6386                        }
6387
6388                    }
6389
6390
6391                    if ( (lccurrentsqlstatement != null) )
6392                    {
6393                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
6394                            lcisnewsql = false;
6395                    }
6396
6397                }
6398
6399                if ( lcisnewsql )
6400                    ret = new TSelectSqlStatement(pdbvendor);
6401
6402                break;
6403            }
6404            case sstinsert:
6405            {
6406                boolean lcisnewsql = true;
6407                if ( pstate != EFindSqlStateType.stnormal )
6408                {
6409                    if ( (lccurrentsqlstatement != null) )
6410                    {
6411
6412                    }
6413                }
6414
6415                if ( lcisnewsql )
6416                    ret = new TInsertSqlStatement(pdbvendor);
6417
6418                break;
6419            }
6420            case sstupdate:
6421            {
6422                boolean lcisnewsql = true;
6423                if ( pstate != EFindSqlStateType.stnormal )
6424                {
6425                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
6426                    if ( (lcprevsolidtoken != null) )
6427                    { //
6428                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
6429                            lcisnewsql = false;
6430                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
6431                            lcisnewsql = false;
6432                    }
6433
6434                    TSourceToken lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
6435                    if ( (lcnextsolidtoken != null) )
6436                    {
6437                        if ( lcnextsolidtoken.tokentype == ETokenType.ttleftparenthesis)
6438                        {
6439                            int k = lcsourcetokenlist.solidtokenafterpos(lcnextsolidtoken.posinlist,TBaseType.rrw_select,1,"(");
6440                            if ( k  == 0 ) lcisnewsql = false;
6441                        }
6442                    }
6443
6444
6445                    if ( (lccurrentsqlstatement != null) )
6446                    {
6447                    }
6448                }
6449
6450                if ( lcisnewsql )
6451                {
6452                    ret = new TUpdateSqlStatement(pdbvendor);
6453                    ret.dummytag = 1; // means set clause in update is not found yet, used to seperate set clause from set statement
6454                }
6455                break;
6456            }
6457            case sstdelete:
6458            {
6459                boolean lcisnewsql = true;
6460
6461                if ( pstate != EFindSqlStateType.stnormal )
6462                {
6463                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
6464                    if ( (lcprevsolidtoken != null) )
6465                    {
6466                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
6467                            lcisnewsql = false;
6468                    }
6469
6470                    if ( (lccurrentsqlstatement != null) )
6471                    {
6472                    }
6473                }
6474
6475                if ( lcisnewsql )
6476                    ret = new TDeleteSqlStatement(pdbvendor);
6477
6478                break;
6479            }
6480            case sstmerge:
6481            {
6482                ret = new TMergeSqlStatement(pdbvendor);
6483                ret.sqlstatementtype = gnewsqlstatementtype;
6484                break;
6485            }
6486            case sstoraclecommit:
6487            {
6488                ret = new TUnknownSqlStatement(pdbvendor);
6489                ret.sqlstatementtype = gnewsqlstatementtype;
6490                break;
6491            }
6492            case sstoraclerollback:
6493            {
6494                ret = new TUnknownSqlStatement(pdbvendor);
6495                ret.sqlstatementtype = gnewsqlstatementtype;
6496                break;
6497            }
6498            case sstoraclesavepoint:
6499            {
6500                ret = new TUnknownSqlStatement(pdbvendor);
6501                ret.sqlstatementtype = gnewsqlstatementtype;
6502                break;
6503            }
6504            case sstoraclerevoke:
6505            {
6506                ret = new TUnknownSqlStatement(pdbvendor);
6507                ret.sqlstatementtype = gnewsqlstatementtype;
6508                break;
6509            }
6510            case sstoraclegrant:
6511            {
6512                ret = new TUnknownSqlStatement(pdbvendor);
6513                //ret = new TGrantStmt(pdbvendor);
6514                ret.sqlstatementtype = gnewsqlstatementtype;
6515                break;
6516            }
6517            case sstoracleanalyze:
6518            {
6519                ret = new TUnknownSqlStatement(pdbvendor);
6520                ret.sqlstatementtype = gnewsqlstatementtype;
6521                break;
6522            }
6523            case sstoracletruncate:
6524            {
6525                ret = new TUnknownSqlStatement(pdbvendor);
6526                ret.sqlstatementtype = gnewsqlstatementtype;
6527                break;
6528            }
6529            case sstcreatetable:
6530            {
6531                ret = new TCreateTableSqlStatement(pdbvendor);
6532                break;
6533            }
6534            case sstoraclecreateview:
6535            {
6536                ret = new TCreateViewSqlStatement(pdbvendor);
6537                break;
6538            }
6539            case sstcreatematerializedview:{
6540                ret = new TCreateMaterializedSqlStatement(pdbvendor);
6541                break;
6542            }
6543            case sstoraclecreateindex:
6544            {
6545                ret = new TCreateIndexSqlStatement(pdbvendor);
6546                break;
6547            }
6548            case sstoraclecreatedatabase:
6549            {
6550                ret = new TCreateDatabaseSqlStatement(pdbvendor);
6551                break;
6552            }
6553            case sstoracledroptable:
6554            {
6555                ret = new TDropTableSqlStatement(pdbvendor);
6556                break;
6557            }
6558            case sstoracledropview:
6559            {
6560                ret = new TDropViewSqlStatement(pdbvendor);
6561                break;
6562            }
6563            case sstoracledropindex:
6564            {
6565                ret = new TDropIndexSqlStatement(pdbvendor);
6566                break;
6567            }
6568            case sstaltertable:
6569            {
6570                ret = new TAlterTableStatement(pdbvendor);
6571                break;
6572            }
6573            case sstoraclealtersession:
6574            {
6575                ret = new TAlterSessionStatement(pdbvendor);
6576                break;
6577            }
6578            case sstplsql_createprocedure:
6579            {
6580                ret = new TPlsqlCreateProcedure(pdbvendor);
6581                ret.sqlstatementtype = gnewsqlstatementtype;
6582                // System.out.println(gnewsqlstatementtype);
6583                break;
6584            }
6585            case sstplsql_createfunction:
6586            {
6587                ret = new TPlsqlCreateFunction(pdbvendor);
6588                ret.sqlstatementtype = gnewsqlstatementtype;
6589                // System.out.println(gnewsqlstatementtype);
6590                break;
6591            }
6592            case sstplsql_createpackage:
6593            {
6594                ret = new TPlsqlCreatePackage(pdbvendor);
6595                ret.sqlstatementtype = gnewsqlstatementtype;
6596                // System.out.println(gnewsqlstatementtype);
6597                break;
6598            }
6599            case sstplsql_createtrigger:
6600            {
6601                ret = new TPlsqlCreateTrigger(pdbvendor);
6602                ret.sqlstatementtype = gnewsqlstatementtype;
6603                // System.out.println(gnewsqlstatementtype);
6604                break;
6605            }
6606            case sstplsql_execimmestmt:
6607            {
6608                ret = new TExecImmeStmt(pdbvendor);
6609                // ret.sqlstatementtype = gnewsqlstatementtype;
6610                // System.out.println(gnewsqlstatementtype);
6611                break;
6612            }
6613            case sstoraclecreatepackagebody:
6614            {
6615                ret = new TPlsqlCreatePackage(pdbvendor);
6616                ret.sqlstatementtype = ESqlStatementType.sstplsql_createpackage;
6617                break;
6618            }
6619            case sstplsql_createtype_placeholder:
6620            {
6621                ret = new TPlsqlCreateType_Placeholder(pdbvendor);
6622                ret.sqlstatementtype = gnewsqlstatementtype;
6623                // System.out.println(gnewsqlstatementtype);
6624                break;
6625            }
6626            case sstplsql_createtypebody:
6627            {
6628                ret = new TPlsqlCreateTypeBody(pdbvendor);
6629                ret.sqlstatementtype = gnewsqlstatementtype;
6630                break;
6631            }
6632            case sstCommentOn:
6633            {
6634                ret = new TCommentOnSqlStmt(pdbvendor);
6635                break;
6636            }
6637            case sstoraclecreatesequence:
6638            {
6639                ret = new TCreateSequenceStmt(pdbvendor);
6640                break;
6641            }
6642            case sstoraclecreatesynonym:
6643            {
6644                ret = new TCreateSynonymStmt(pdbvendor);
6645                break;
6646            }
6647            case sstoraclecreatedirectory:
6648            {
6649                ret = new TOracleCreateDirectoryStmt(pdbvendor);
6650                break;
6651            }
6652            case sstpostgresqlCreateIndex:
6653                ret = new TCreateIndexSqlStatement(pdbvendor);
6654                break;
6655            case sstpostgresqlCreateView:
6656                ret = new TCreateViewSqlStatement(pdbvendor);
6657                break;
6658            case sstpostgresqlCreateFunction:
6659                ret = new TCreateFunctionStmt(pdbvendor);
6660                break;
6661            case sstcreatetrigger:
6662                ret = new TCreateTriggerStmt(pdbvendor);
6663                break;
6664            case sstpostgresqlMove:
6665                ret = new TMoveStmt(pdbvendor);
6666                break;
6667            case sstpostgresqlTruncate:
6668                ret = new TTruncateStatement(pdbvendor);
6669                break;
6670            case sstpostgresqlExecute:
6671                ret = new TExecuteSqlStatement(pdbvendor);
6672                break;
6673            case sstpostgresqlDropTable:
6674                ret = new TDropTableSqlStatement(pdbvendor);
6675                break;
6676            case sstPostgresqlBlock:
6677                ret = new TCommonBlock(pdbvendor);
6678                break;
6679            case sstVacuum:
6680                ret = new TVacuumStmt(pdbvendor);
6681                break;
6682            case sstReindex:
6683                ret = new TReindexStmt(pdbvendor);
6684                break;
6685            case sstcreateprocedure:
6686                ret = new TCreateProcedureStmt(pdbvendor);
6687                break;
6688            case sstpostgresqlCommit:
6689                ret = new TCommitStmt(pdbvendor);
6690                break;
6691            case sstpostgresqlCreateSchema:
6692                ret = new TCreateSchemaSqlStatement(pdbvendor);
6693                break;
6694            case sstpostgresqlDropSchema:
6695                ret = new TDropSchemaSqlStatement(pdbvendor);
6696                break;
6697            case sstpostgresqlShowSearchPath:
6698                ret = new TShowSearchPathStmt(pdbvendor);
6699                break;
6700            case sstpostgresqlCopy:
6701                ret = new TCopyStmt(pdbvendor);
6702                break;
6703            case sstcall:
6704                ret = new TCallStatement(pdbvendor);
6705                break;
6706            case sstpostgresqlAlterSchema:
6707                ret = new TAlterSchemaStmt(pdbvendor);
6708                break;
6709            case sstpostgresqlAlterfunction:
6710                ret = new TAlterFunctionStmt(pdbvendor);
6711                break;
6712            case sstStartTransaction:
6713            {
6714                ret = new TStartTransactionStmt(pdbvendor);
6715                break;
6716            }
6717            case sstpostgresqlComment:
6718                ret = new TCommentOnSqlStmt(pdbvendor);
6719                break;
6720            case sstpostgresqlShow:
6721                ret = new TShowStmt(pdbvendor);
6722                break;
6723            case sstpostgresqlSetSearchPath:
6724            case sstpostgresqlSet:
6725                ret = new TSetStmt(pdbvendor);
6726                break;
6727            case sstpostgresqlDropFunction:
6728                ret = new TDropFunctionStmt(pdbvendor);
6729                break;
6730            case sstpostgresqlDropTrigger:
6731                ret = new TDropTriggerSqlStatement(pdbvendor);
6732                break;
6733            case sstpostgresqlDropProcedure:
6734                ret = new TDropProcedureStmt(pdbvendor);
6735                break;
6736            case sstdropindex:
6737                ret = new TDropIndexSqlStatement(pdbvendor);
6738                break;
6739            case sstpostgresqlDropSequence:
6740                ret = new TDropSequenceStmt(pdbvendor);
6741                break;
6742            case sstpostgresqlDropView:
6743                ret = new TDropViewSqlStatement(pdbvendor);
6744                break;
6745            case sstpostgresqlCreateSequence:
6746                ret = new TCreateSequenceStmt(pdbvendor);
6747                break;
6748            case sstpostgresqlCreateType:
6749                ret = new TCreateTypeStmt(pdbvendor);
6750                break;
6751            case sstcreateExtension:
6752                ret = new TCreateExtensionStmt(pdbvendor);
6753                break;
6754            case sstPostgresqlTable:
6755                ret = new TPostgresqlTableStmt(pdbvendor);
6756                break;
6757            case sstpostgresqlDropMaterializedView:
6758                ret = new TDropMaterializedViewStmt(pdbvendor);
6759                break;
6760            case sstpostgresqlDo:
6761                boolean lcisnewsql = false;
6762
6763                if ( pstate == EFindSqlStateType.stnormal )
6764                {
6765                    TSourceToken lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
6766                    if ( (lcnextsolidtoken != null) )
6767                    {
6768                        if ( lcnextsolidtoken.tokencode == TBaseType.rrw_postgresql_function_delimiter )
6769                            lcisnewsql = true;
6770                    }
6771                }
6772
6773                if ( lcisnewsql )
6774                    ret = new TDoExecuteBlockStmt(pdbvendor);
6775
6776                break;
6777            case sstpostgresqlDeclare:
6778                ret = new TCommonBlock(pdbvendor);
6779                gnewsqlstatementtype = ret.sqlstatementtype;
6780                break;
6781            case sstpostgresqlExplain:
6782                ret = new TExplainPlan(pdbvendor);
6783                gnewsqlstatementtype = ret.sqlstatementtype;
6784                break;
6785            case sstpostgresqlCreateRole:
6786                ret = new TCreateRoleStmt(pdbvendor);
6787                break;
6788            case sstpostgresqlAlterRole:
6789                ret = new TAlterRoleStmt(pdbvendor);
6790                break;
6791            case sstpostgresqlAlterIndex:
6792                ret = new TAlterIndexStmt(pdbvendor);
6793                break;
6794            default:
6795            {
6796                ret = new TUnknownSqlStatement(pdbvendor);
6797                ret.sqlstatementtype = gnewsqlstatementtype;
6798                break;
6799            }
6800        }    // case
6801
6802        return ret;
6803    }
6804
6805
6806
6807TCustomSqlStatement isbigquery(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
6808        TCustomSqlStatement ret = null;
6809
6810        gnewsqlstatementtype = ESqlStatementType.sstinvalid;
6811
6812        if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
6813                || (pcst.tokencode  == TBaseType.cmtslashstar)
6814                || (pcst.tokencode  == TBaseType.lexspace)
6815                || (pcst.tokencode  == TBaseType.lexnewline)
6816                || (pcst.tokentype == ETokenType.ttsemicolon) )
6817        {
6818            return null;
6819        }
6820
6821        int lcpos = pcst.posinlist;
6822        TSourceTokenList lcsourcetokenlist = pcst.container;
6823        TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
6824
6825        //subquery after semicolon or at first line
6826        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
6827        {
6828            int k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
6829            if ( k >0 )
6830            {
6831                ret = new TSelectSqlStatement(pdbvendor);
6832            }
6833
6834            return ret;
6835        }
6836
6837        //cte
6838        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
6839        {
6840            ret = findcte(pcst,pdbvendor);
6841            if ( (ret != null) )  return ret;
6842        }
6843
6844        gnewsqlstatementtype = findbigquerycmd(pcst);
6845
6846        TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
6847        switch (gnewsqlstatementtype) {    //
6848            case sstinvalid:
6849            {
6850                ret = null;
6851
6852                if ( pstate == EFindSqlStateType.stnormal )
6853                {
6854                    if ( pcst.tokencode == TBaseType.rrw_begin )
6855                    {
6856
6857                        ret = new TCommonBlock(pdbvendor);
6858                        gnewsqlstatementtype = ret.sqlstatementtype;
6859                    }
6860
6861                }
6862                break;
6863            }
6864            case sstselect:
6865            {
6866                boolean lcisnewsql = true;
6867
6868                if ( pstate != EFindSqlStateType.stnormal )
6869                {
6870                    // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
6871                    if ( (lcprevsolidtoken != null) )
6872                    {
6873                        if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
6874                            lcisnewsql = false; //subqery
6875                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
6876                            lcisnewsql = false;
6877                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
6878                            lcisnewsql = false;
6879                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
6880                            lcisnewsql = false;
6881                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
6882                            lcisnewsql = false;
6883                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
6884                            lcisnewsql = false;
6885                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
6886                        {
6887                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
6888                                lcisnewsql = false;
6889                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
6890                                lcisnewsql = false;
6891                        }
6892
6893                        if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
6894                        {
6895                            TSourceToken lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
6896                            if ( (lcpprevsolidtoken != null) )
6897                            {
6898                                if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
6899                                    lcisnewsql = false;
6900                            }
6901                        }
6902
6903                    }
6904
6905
6906                    if ( (lccurrentsqlstatement != null) )
6907                    {
6908                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
6909                            lcisnewsql = false;
6910                    }
6911
6912                }
6913
6914                if ( lcisnewsql )
6915                    ret = new TSelectSqlStatement(pdbvendor);
6916
6917                break;
6918            }
6919            case sstinsert:
6920            {
6921                boolean lcisnewsql = true;
6922                if ( pstate != EFindSqlStateType.stnormal )
6923                {
6924                    if ( (lccurrentsqlstatement != null) )
6925                    {
6926
6927                    }
6928                }
6929
6930                if ( lcisnewsql )
6931                    ret = new TInsertSqlStatement(pdbvendor);
6932
6933                break;
6934            }
6935            case sstupdate:
6936            {
6937                boolean lcisnewsql = true;
6938                if ( pstate != EFindSqlStateType.stnormal )
6939                {
6940                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
6941                    if ( (lcprevsolidtoken != null) )
6942                    { //
6943                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
6944                            lcisnewsql = false;
6945                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
6946                            lcisnewsql = false;
6947                    }
6948
6949                    TSourceToken lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
6950                    if ( (lcnextsolidtoken != null) )
6951                    {
6952                        if ( lcnextsolidtoken.tokentype == ETokenType.ttleftparenthesis)
6953                        {
6954                            int k = lcsourcetokenlist.solidtokenafterpos(lcnextsolidtoken.posinlist,TBaseType.rrw_select,1,"(");
6955                            if ( k  == 0 ) lcisnewsql = false;
6956                        }
6957                    }
6958
6959
6960                    if ( (lccurrentsqlstatement != null) )
6961                    {
6962                    }
6963                }
6964
6965                if ( lcisnewsql )
6966                {
6967                    ret = new TUpdateSqlStatement(pdbvendor);
6968                    ret.dummytag = 1; // means set clause in update is not found yet, used to seperate set clause from set statement
6969                }
6970                break;
6971            }
6972            case sstdelete:
6973            {
6974                boolean lcisnewsql = true;
6975
6976                if ( pstate != EFindSqlStateType.stnormal )
6977                {
6978                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
6979                    if ( (lcprevsolidtoken != null) )
6980                    {
6981                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
6982                            lcisnewsql = false;
6983                    }
6984
6985                    if ( (lccurrentsqlstatement != null) )
6986                    {
6987                    }
6988                }
6989
6990                if ( lcisnewsql )
6991                    ret = new TDeleteSqlStatement(pdbvendor);
6992
6993                break;
6994            }
6995            case sstmerge:
6996            {
6997                ret = new TMergeSqlStatement(pdbvendor);
6998                ret.sqlstatementtype = gnewsqlstatementtype;
6999                break;
7000            }
7001            case sstcreatetable:
7002            {
7003                ret = new TCreateTableSqlStatement(pdbvendor);
7004                break;
7005            }
7006            case sstcreateview:{
7007                ret = new TCreateViewSqlStatement(pdbvendor);
7008                break;
7009            }
7010            case sstaltertable:
7011            {
7012                ret = new TAlterTableStatement(pdbvendor);
7013                break;
7014            }
7015            case sstalterview:
7016            {
7017                ret = new TAlterViewStatement(pdbvendor);
7018                break;
7019            }
7020            case sstdroptable:
7021            {
7022                ret = new TDropTableSqlStatement(pdbvendor);
7023                break;
7024            }
7025            case sstdropview:
7026            {
7027                ret = new TDropViewSqlStatement(pdbvendor);
7028                break;
7029            }
7030            case sstcreatefunction:
7031            {
7032                ret = new TCreateFunctionStmt(pdbvendor);
7033                break;
7034            }
7035            case sstcreateprocedure:
7036            {
7037                ret = new TCreateProcedureStmt(pdbvendor);
7038                break;
7039            }
7040            case sstBigQueryDeclare:
7041                ret = new TMssqlDeclare(pdbvendor);
7042                break;
7043            case sstTruncate:
7044            {
7045                ret = new TTruncateStatement(pdbvendor);
7046                break;
7047            }
7048            case sstset:
7049            {
7050                boolean lcisnewsql = true;
7051                if ( pstate != EFindSqlStateType.stnormal )
7052                {
7053                    if ( TBaseType.assigned(lccurrentsqlstatement) )
7054                    {
7055                        lcisnewsql = false;
7056                    }
7057                }
7058
7059                if ( lcisnewsql )
7060                {
7061                    ret =  new TSetStmt(pdbvendor);
7062                }
7063                break;
7064            }
7065            case sstcreatematerializedview:{
7066                ret = new TCreateMaterializedSqlStatement(pdbvendor);
7067                break;
7068            }
7069            case sstdropprocedure:
7070            {
7071                ret = new TDropProcedureStmt(pdbvendor);
7072                break;
7073            }
7074            case sstdropfunction:
7075            {
7076                ret = new TDropFunctionStmt(pdbvendor);
7077                break;
7078            }
7079            case sstDropMaterializedView:
7080                ret = new TDropMaterializedViewStmt(pdbvendor);
7081                break;
7082            case sstcall:
7083                ret = new TCallStatement(pdbvendor);
7084                break;
7085            case sstBigQueryExportData:
7086                ret = new TExportDataStmt(pdbvendor);
7087                break;
7088            case sstBegin:
7089            {
7090                boolean isblock = false;
7091                int numOfSolidToken = 0;
7092                // if linebreak appears before the ;, then it a block, else it a
7093                TSourceToken st ;
7094                if (lcpos == lcsourcetokenlist.size() - 1){
7095                    // this is the last token
7096                }else{
7097                    for(int i=lcpos+1;i<lcsourcetokenlist.size();i++){
7098                        st = lcsourcetokenlist.get(i);
7099                        if (st.issolidtoken()){
7100                            numOfSolidToken++;
7101                        }
7102                        
7103
7104                        
7105                        if (st.tokencode == ';') {
7106                            if (numOfSolidToken<=3){
7107
7108                            }else{
7109                                isblock = true;
7110                            }
7111                            break;
7112                        }
7113
7114                        if (numOfSolidToken > 3){
7115                            isblock = true;
7116                            break;
7117                        }
7118                    }
7119                }
7120
7121                if (isblock){
7122                    ret = new TCommonBlock(pdbvendor);
7123                    gnewsqlstatementtype = ret.sqlstatementtype;
7124                }else{
7125                    ret = new TBeginTran(pdbvendor);
7126                    pcst.tokencode = TBaseType.rrw_bigquery_begin_transaction;
7127                }
7128
7129
7130                break;
7131            }
7132            case sstbegintran:
7133            {
7134                ret = new TBeginTran(pdbvendor);
7135                if (pcst.tokencode == TBaseType.rrw_begin){
7136                    pcst.tokencode = TBaseType.rrw_bigquery_begin_transaction;
7137                }
7138
7139                break;
7140            }
7141            case sstExecute:
7142            {
7143                ret =  new TExecImmeStmt(pdbvendor);
7144                break;
7145            }
7146            case sst_ifstmt:
7147                ret = new TIfStmt(pdbvendor);
7148                break;
7149            case sst_loopstmt:
7150                ret = new TLoopStmt(pdbvendor);
7151                break;
7152            case sstRepeat:
7153                ret = new TRepeatStmt(pdbvendor);
7154                break;
7155            case sstWhilestmt:
7156                ret = new TWhileStmt(pdbvendor);
7157                break;
7158            case sstForStmt:
7159                ret = new TForStmt(pdbvendor);
7160                break;
7161            case sst_casestmt:
7162                ret = new TCaseStmt(pdbvendor);
7163                break;
7164            case sstDropAssignment:
7165                ret = new TDropStmt(pdbvendor);
7166                break;
7167            case sstdropschema:
7168                ret = new TDropSchemaSqlStatement(pdbvendor);
7169                break;
7170            case sstDropReservation:
7171                ret = new TDropStmt(pdbvendor);
7172                break;
7173            case sstDropRowAccessPolicy:
7174                ret = new TDropStmt(pdbvendor);
7175                break;
7176            case sstDropSnapshotTable:
7177                ret = new TDropStmt(pdbvendor);
7178                break;
7179            case sstDropTableFunction:
7180                ret = new TDropStmt(pdbvendor);
7181                break;
7182            default:
7183            {
7184                ret = new TUnknownSqlStatement(pdbvendor);
7185                ret.sqlstatementtype = gnewsqlstatementtype;
7186                break;
7187            }
7188        }    // case
7189
7190        return ret;
7191    }
7192
7193TCustomSqlStatement issnowflake(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
7194    TCustomSqlStatement ret = null;
7195
7196    gnewsqlstatementtype = ESqlStatementType.sstinvalid;
7197
7198    if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
7199       || (pcst.tokencode  == TBaseType.cmtslashstar)
7200       || (pcst.tokencode  == TBaseType.lexspace)
7201       || (pcst.tokencode  == TBaseType.lexnewline)
7202        || (pcst.tokentype == ETokenType.ttsemicolon) )
7203    {
7204      return null;
7205    }
7206
7207    int lcpos = pcst.posinlist;
7208    TSourceTokenList lcsourcetokenlist = pcst.container;
7209    TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
7210
7211    //subquery after semicolon or at first line
7212    if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
7213      {
7214        int k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
7215        if ( k >0 )
7216          {
7217            ret = new TSelectSqlStatement(pdbvendor);
7218          }
7219        else{
7220            k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_with,1,"(");
7221            int k2 = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_as,3,"(");
7222            if (( k >0 ) && (k2 > 2))
7223            {
7224                ret = new TSelectSqlStatement(pdbvendor);
7225            }
7226
7227        }
7228
7229        return ret;
7230      }
7231
7232    //cte
7233    if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
7234      {
7235        ret = findcte(pcst,pdbvendor);
7236        if ( (ret != null) )  return ret;
7237      }
7238
7239    gnewsqlstatementtype = findsnowflakecmd(pcst);
7240
7241    TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
7242    switch (gnewsqlstatementtype) {    //
7243        case sstinvalid:
7244          {
7245            ret = null;
7246
7247            if ( pstate == EFindSqlStateType.stnormal )
7248              {
7249                if ( pcst.tokencode == TBaseType.label_begin )
7250                  {
7251                    ret = new TCommonBlock(pdbvendor);
7252                    gnewsqlstatementtype = ret.sqlstatementtype;
7253                  }
7254                else if ( pcst.tokencode == TBaseType.rrw_declare )
7255                  {
7256                    ret = new TCommonBlock(pdbvendor);
7257                    gnewsqlstatementtype = ret.sqlstatementtype;
7258                  }
7259                else if ( pcst.tokencode == TBaseType.rrw_begin )
7260                  {
7261                    ret = new TCommonBlock(pdbvendor);
7262                    gnewsqlstatementtype = ret.sqlstatementtype;
7263                  }
7264                else if ( pcst.tokencode == TBaseType.rrw_procedure )
7265                  {
7266                    ret = new TPlsqlCreateProcedure(pdbvendor);
7267                    // ret.sqlstatementtype = ESqlStatementType.sstplsql_createprocedure;
7268                    gnewsqlstatementtype = ret.sqlstatementtype;
7269                  }
7270                else if ( pcst.tokencode == TBaseType.rrw_function )
7271                  {
7272                    ret = new TPlsqlCreateFunction(pdbvendor);
7273                    // ret.sqlstatementtype = ESqlStatementType.sstplsql_createfunction;
7274                    gnewsqlstatementtype = ret.sqlstatementtype;
7275                  }
7276                else if ( pcst.tokencode == TBaseType.rrw_package )
7277                  {
7278                    ret = new TPlsqlCreatePackage(pdbvendor);
7279                   // ret.sqlstatementtype = ESqlStatementType.sstplsql_createpackage;
7280                    gnewsqlstatementtype = ret.sqlstatementtype;
7281                  }
7282              }
7283              break;
7284          }
7285        case sstselect:
7286          {
7287            boolean lcisnewsql = true;
7288
7289            if ( pstate != EFindSqlStateType.stnormal )
7290              {
7291                // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
7292                if ( (lcprevsolidtoken != null) )
7293                  {
7294                    if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
7295                      lcisnewsql = false; //subqery
7296                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
7297                      lcisnewsql = false;
7298                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
7299                      lcisnewsql = false;
7300                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
7301                      lcisnewsql = false;
7302                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
7303                      lcisnewsql = false;
7304                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
7305                      lcisnewsql = false;
7306                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
7307                      {
7308                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
7309                          lcisnewsql = false;
7310                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
7311                          lcisnewsql = false;
7312                      }
7313
7314                    if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
7315                      {
7316                        TSourceToken lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
7317                        if ( (lcpprevsolidtoken != null) )
7318                          {
7319                            if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
7320                              lcisnewsql = false;
7321                          }
7322                      }
7323
7324                  }
7325
7326
7327                if ( (lccurrentsqlstatement != null) )
7328                  {
7329                    if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
7330                      lcisnewsql = false;
7331                  }
7332
7333              }
7334
7335            if ( lcisnewsql )
7336              ret = new TSelectSqlStatement(pdbvendor);
7337
7338            break;
7339          }
7340        case sstinsert:
7341          {
7342            boolean lcisnewsql = true;
7343            if ( pstate != EFindSqlStateType.stnormal )
7344              {
7345                if ( (lccurrentsqlstatement != null) )
7346                  {
7347
7348                  }
7349              }
7350
7351            if ( lcisnewsql )
7352              ret = new TInsertSqlStatement(pdbvendor);
7353
7354            break;
7355          }
7356        case sstupdate:
7357          {
7358            boolean lcisnewsql = true;
7359            if ( pstate != EFindSqlStateType.stnormal )
7360              {
7361                lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
7362                if ( (lcprevsolidtoken != null) )
7363                  { //
7364                    if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
7365                      lcisnewsql = false;
7366                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
7367                      lcisnewsql = false;
7368                  }
7369
7370                TSourceToken lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
7371                if ( (lcnextsolidtoken != null) )
7372                  {
7373                    if ( lcnextsolidtoken.tokentype == ETokenType.ttleftparenthesis)
7374                      {
7375                        int k = lcsourcetokenlist.solidtokenafterpos(lcnextsolidtoken.posinlist,TBaseType.rrw_select,1,"(");
7376                        if ( k  == 0 ) lcisnewsql = false;
7377                      }
7378                  }
7379
7380
7381                if ( (lccurrentsqlstatement != null) )
7382                  {
7383                  }
7384              }
7385
7386            if ( lcisnewsql )
7387              {
7388                ret = new TUpdateSqlStatement(pdbvendor);
7389                ret.dummytag = 1; // means set clause in update is not found yet, used to seperate set clause from set statement
7390              }
7391            break;
7392          }
7393        case sstdelete:
7394          {
7395            boolean lcisnewsql = true;
7396
7397            if ( pstate != EFindSqlStateType.stnormal )
7398              {
7399                lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
7400                if ( (lcprevsolidtoken != null) )
7401                  {
7402                    if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
7403                      lcisnewsql = false;
7404                  }
7405
7406                if ( (lccurrentsqlstatement != null) )
7407                  {
7408                  }
7409              }
7410
7411            if ( lcisnewsql )
7412              ret = new TDeleteSqlStatement(pdbvendor);
7413
7414            break;
7415          }
7416        case sstmerge:
7417          {
7418            ret = new TMergeSqlStatement(pdbvendor);
7419            ret.sqlstatementtype = gnewsqlstatementtype;
7420            break;
7421          }
7422        case sstoraclecommit:
7423          {
7424            ret = new TUnknownSqlStatement(pdbvendor);
7425            ret.sqlstatementtype = gnewsqlstatementtype;
7426            break;
7427          }
7428        case sstoraclerollback:
7429          {
7430            ret = new TUnknownSqlStatement(pdbvendor);
7431            ret.sqlstatementtype = gnewsqlstatementtype;
7432            break;
7433          }
7434        case sstoraclerevoke:
7435          {
7436            ret = new TUnknownSqlStatement(pdbvendor);
7437            ret.sqlstatementtype = gnewsqlstatementtype;
7438              break;
7439          }
7440        case sstoraclegrant:
7441          {
7442            ret = new TUnknownSqlStatement(pdbvendor);
7443            ret.sqlstatementtype = gnewsqlstatementtype;
7444              break;
7445          }
7446        case sstcreatetable:
7447          {
7448            ret = new TCreateTableSqlStatement(pdbvendor);
7449              break;
7450          }
7451        case sstoraclecreateview:
7452          {
7453            ret = new TCreateViewSqlStatement(pdbvendor);
7454              break;
7455          }
7456        case sstAlterAccount:
7457        {
7458            ret = new TAlterAccountStmt(pdbvendor);
7459            break;
7460        }
7461        case sstalterdatabase:
7462        {
7463            ret = new TAlterDatabaseStmt(pdbvendor);
7464            break;
7465        }
7466        case sstAlterFileFormat:
7467        {
7468            ret = new TAlterFileFormatStmt(pdbvendor);
7469            break;
7470        }
7471        case sstalterfunction:
7472        {
7473            ret = new TAlterFunctionStmt(pdbvendor);
7474            break;
7475        }
7476        case sstAlterNetworkPolicy:
7477        {
7478            ret = new TAlterNetworkPolicyStmt(pdbvendor);
7479            break;
7480        }
7481        case sstAlterPipe:
7482        {
7483            ret = new TAlterPipeStmt(pdbvendor);
7484            break;
7485        }
7486        case sstAlterResourceMonitor:
7487        {
7488            ret = new TAlterResourceMonitorStmt(pdbvendor);
7489            break;
7490        }
7491        case sstAlterRole:
7492        {
7493            ret = new TAlterRoleStmt(pdbvendor);
7494            break;
7495        }
7496        case sstAlterSchema:
7497        {
7498            ret = new TAlterSchemaStmt(pdbvendor);
7499            break;
7500        }
7501        case sstaltersequence:
7502        {
7503            ret = new TAlterSequenceStatement(pdbvendor);
7504            break;
7505        }
7506        case sstaltersession:
7507        {
7508            ret = new TAlterSessionStatement(pdbvendor);
7509            break;
7510        }
7511        case sstAlterStage:
7512        {
7513            ret = new TAlterStageStmt(pdbvendor);
7514            break;
7515        }
7516        case sstalteruser:
7517        {
7518            ret = new TAlterUserStmt(pdbvendor);
7519            break;
7520        }
7521        case sstAlterShare:
7522        {
7523            ret = new TAlterShareStmt(pdbvendor);
7524            break;
7525        }
7526        case sstalterview:
7527        {
7528            ret = new TAlterViewStatement(pdbvendor);
7529            break;
7530        }
7531        case sstAlterWarehouse:
7532        {
7533            ret = new TAlterWarehouseStmt(pdbvendor);
7534            break;
7535        }
7536        case sstBegin:
7537        {
7538            boolean isblock = false;
7539            int numOfSolidToken = 0;
7540            // if linebreak appears before the ;, then it a block, else it a
7541            TSourceToken st ;
7542            if (lcpos == lcsourcetokenlist.size() - 1){
7543                // this is the last token
7544            }else{
7545                for(int i=lcpos+1;i<lcsourcetokenlist.size();i++){
7546                    st = lcsourcetokenlist.get(i);
7547                    if (st.issolidtoken()){
7548                        numOfSolidToken++;
7549                    }
7550                    // Check for newline before semicolon - if found, must be a block
7551                    if (st.tokencode == TBaseType.lexnewline) {
7552                        isblock = true;
7553                        // Continue to look for semicolon to complete the check
7554                    }
7555
7556                    if (st.tokencode == ';') {
7557                        if (numOfSolidToken<=3){
7558
7559                        }else{
7560                            isblock = true;
7561                        }
7562                        break;
7563                    }
7564
7565                    if (numOfSolidToken > 3){
7566                        isblock = true;
7567                        break;
7568                    }
7569                }
7570            }
7571
7572            if (isblock){
7573                ret = new TCommonBlock(pdbvendor);
7574                gnewsqlstatementtype = ret.sqlstatementtype;
7575            }else{
7576                ret = new TBeginTran(pdbvendor);
7577                pcst.tokencode = TBaseType.rrw_snowflake_begin_transaction;
7578            }
7579
7580
7581            break;
7582        }
7583        case sstbegintran:
7584        {
7585            ret = new TBeginTran(pdbvendor);
7586            if (pcst.tokencode == TBaseType.rrw_begin){
7587                pcst.tokencode = TBaseType.rrw_snowflake_begin_transaction;
7588            }
7589
7590            break;
7591        }
7592        case sstcomment:
7593        {
7594            ret = new TCommentOnSqlStmt(pdbvendor);
7595            break;
7596        }
7597        case sstcommit:
7598        {
7599            ret = new TCommitStmt(pdbvendor);
7600            break;
7601        }
7602        case sstCopyInto:
7603        {
7604            ret = new TSnowflakeCopyIntoStmt(pdbvendor);
7605            break;
7606        }
7607        case sstcreatedatabase:
7608        {
7609            ret = new TCreateDatabaseSqlStatement(pdbvendor);
7610            break;
7611        }
7612        case sstCreateFileFormat:
7613        {
7614            ret = new TCreateFileFormatStmt(pdbvendor);
7615            break;
7616        }
7617        case sstcreatefunction:
7618        {
7619            ret = new TCreateFunctionStmt(pdbvendor);
7620            break;
7621        }
7622        case sstCreateNetworkPolicy:
7623        {
7624            ret = new TCreateNetworkPolicyStmt(pdbvendor);
7625            break;
7626        }
7627        case sstCreatePipe:
7628        {
7629            ret = new TCreatePipeStmt(pdbvendor);
7630            break;
7631        }
7632        case sstCreateResourceMonitor:
7633        {
7634            ret = new TCreateResourceMonitorStmt(pdbvendor);
7635            break;
7636        }
7637        case sstcreaterole:
7638        {
7639            ret = new TCreateRoleStmt(pdbvendor);
7640            break;
7641        }
7642        case sstcreateschema:
7643        {
7644            ret = new TCreateSchemaSqlStatement(pdbvendor);
7645            break;
7646        }
7647        case sstcreatesequence:
7648        {
7649            ret = new TCreateSequenceStmt(pdbvendor);
7650            break;
7651        }
7652        case sstCreateShare:
7653        {
7654            ret = new TCreateShareStmt(pdbvendor);
7655            break;
7656        }
7657        case sstCreateStage:
7658        {
7659            ret = new TCreateStageStmt(pdbvendor);
7660            break;
7661        }
7662        case sstcreateuser:
7663        {
7664            ret = new TCreateUserStmt(pdbvendor);
7665            break;
7666        }
7667        case sstCreateWarehouse:
7668        {
7669            ret = new TCreateWarehouseStmt(pdbvendor);
7670            break;
7671        }
7672        case sstDescFileFormat:
7673        case sstDescFunction:
7674        case sstDescNetworkPolicy:
7675        case sstDescPipe:
7676        case sstDescResult:
7677        case sstDescShare:
7678        case sstDescStage:
7679        case sstDescTable:
7680        case sstDescUser:
7681        case sstDescView:
7682        case sstDescStorage:
7683        {
7684            ret = new TDescribeStmt(pdbvendor);
7685            break;
7686        }
7687        case sstdropfunction:
7688        {
7689            ret = new TDropFunctionStmt(pdbvendor);
7690            break;
7691        }
7692        case sstdropdatabase:
7693        {
7694            ret = new TDropDatabaseStmt(pdbvendor);
7695            break;
7696        }
7697        case sstDropFileFormat:
7698        {
7699            ret = new TDropStmt(pdbvendor);
7700            ret.sqlstatementtype = gnewsqlstatementtype;
7701            break;
7702        }
7703        case sstDropNetworkPolicy:
7704        {
7705            ret = new TDropStmt(pdbvendor);
7706            ret.sqlstatementtype = gnewsqlstatementtype;
7707            break;
7708        }
7709        case sstDropPipe:
7710        {
7711            ret = new TDropStmt(pdbvendor);
7712            ret.sqlstatementtype = gnewsqlstatementtype;
7713            break;
7714        }
7715        case sstDropResourceMonitor:
7716        {
7717            ret = new TDropStmt(pdbvendor);
7718            ret.sqlstatementtype = gnewsqlstatementtype;
7719            break;
7720        }
7721        case sstdroprole:
7722        {
7723            ret = new TDropRoleStmt(pdbvendor);
7724            break;
7725        }
7726        case sstdropschema:
7727        {
7728            ret = new TDropSchemaSqlStatement(pdbvendor);
7729            break;
7730        }
7731        case sstDropShare:
7732        {
7733            ret = new TDropStmt(pdbvendor);
7734            ret.sqlstatementtype = gnewsqlstatementtype;
7735            break;
7736        }
7737        case sstDropStage:
7738        {
7739            ret = new TDropStmt(pdbvendor);
7740            ret.sqlstatementtype = gnewsqlstatementtype;
7741            break;
7742        }
7743        case sstdroptable:
7744        {
7745            ret = new TDropTableSqlStatement(pdbvendor);
7746            break;
7747        }
7748        case sstdropuser:
7749        {
7750            ret = new TDropUserStmt(pdbvendor);
7751            break;
7752        }
7753        case sstdropview:
7754        {
7755            ret = new TDropViewSqlStatement(pdbvendor);
7756            break;
7757        }
7758        case sstDropWarehouse:
7759        {
7760            ret = new TDropStmt(pdbvendor);
7761            ret.sqlstatementtype = gnewsqlstatementtype;
7762            break;
7763        }
7764        case sstGet:
7765        {
7766            ret = new TGetStmt(pdbvendor);
7767            break;
7768        }
7769        case sstGrant:
7770        {
7771            ret = new TGrantStmt(pdbvendor);
7772            break;
7773        }
7774        case sstList:
7775        {
7776            ret = new TListStmt(pdbvendor);
7777            break;
7778        }
7779        case sstPut:
7780        {
7781            ret = new TPutStmt(pdbvendor);
7782            break;
7783        }
7784        case sstRemove:
7785        {
7786            ret = new TRemoveStmt(pdbvendor);
7787            break;
7788        }
7789        case sstRevoke:
7790        {
7791            ret = new TRevokeStmt(pdbvendor);
7792            break;
7793        }
7794        case sstrollback:
7795        {
7796            ret = new TRollbackStmt(pdbvendor);
7797            break;
7798        }
7799        case sstset:
7800        {
7801            ret = new TSetStmt(pdbvendor);
7802            break;
7803        }
7804        case sstShowColumns:
7805        case sstShowDatabases:
7806        case sstShowFileFormats:
7807        case sstShowFunctions:
7808        case sstShowGrants:
7809        case sstShowNetworkPolicies:
7810        case sstShowObjects:
7811        case sstShowParameters:
7812        case sstShowPipes:
7813        case sstShowResourceMonitors:
7814        case sstShowRoles:
7815        case sstShowSchemas:
7816        case sstShowSequences:
7817        case sstShowShares:
7818        case sstShowStages:
7819        case sstShowTables:
7820        case sstShowTransactions:
7821        case sstShowUserFunctions:
7822        case sstShowUsers:
7823        case sstShowVariables:
7824        case sstShowViews:
7825        case sstShowWarehouses:
7826        case sstShowProcedures:
7827        case sstShowTasks:
7828        case sstShowStreams:
7829        {
7830            ret = new TShowStmt(pdbvendor);
7831            ret.sqlstatementtype = gnewsqlstatementtype;
7832            break;
7833        }
7834        case sstTruncate:
7835        {
7836            ret = new TTruncateStatement(pdbvendor);
7837
7838            break;
7839        }
7840        case sstUndropDatabase:
7841        case sstUndropSchema:
7842        case sstUndropTable:
7843        {
7844            ret = new TUndropStmt(pdbvendor);
7845            ret.sqlstatementtype = gnewsqlstatementtype;
7846            break;
7847        }
7848        case sstunset:
7849        {
7850            ret = new TUnsetStmt(pdbvendor);
7851            break;
7852        }
7853        case sstcreatematerializedview:{
7854            ret = new TCreateMaterializedSqlStatement(pdbvendor);
7855            break;
7856        }
7857        case sstoraclecreateindex:
7858          {
7859            ret = new TCreateIndexSqlStatement(pdbvendor);
7860              break;
7861          }
7862        case sstoracledroptable:
7863          {
7864            ret = new TDropTableSqlStatement(pdbvendor);
7865              break;
7866          }
7867        case sstoracledropview:
7868          {
7869           ret = new TDropViewSqlStatement(pdbvendor);
7870              break;
7871          }
7872        case sstoracledropindex:
7873          {
7874            ret = new TDropIndexSqlStatement(pdbvendor);
7875              break;
7876          }
7877        case sstaltertable:
7878          {
7879            ret = new TAlterTableStatement(pdbvendor);
7880              break;
7881          }
7882        case sstoraclealtersession:
7883          {
7884            ret = new TAlterSessionStatement(pdbvendor);
7885              break;
7886          }
7887        case sstplsql_createfunction:
7888        {
7889          ret = new TPlsqlCreateFunction(pdbvendor);
7890          ret.sqlstatementtype = gnewsqlstatementtype;
7891          // System.out.println(gnewsqlstatementtype);
7892            break;
7893        }
7894        case sstCommentOn:
7895          {
7896            ret = new TCommentOnSqlStmt(pdbvendor);
7897              break;
7898          }
7899        case sstoraclecreatesequence:
7900          {
7901            ret = new TCreateSequenceStmt(pdbvendor);
7902              break;
7903          }
7904        case sstpostgresqlCreateIndex:
7905            ret = new TCreateIndexSqlStatement(pdbvendor);
7906            break;
7907        case sstpostgresqlCreateView:
7908            ret = new TCreateViewSqlStatement(pdbvendor);
7909            break;
7910        case sstpostgresqlCreateFunction:
7911            ret = new TCreateFunctionStmt(pdbvendor);
7912            break;
7913//        case sstcreatetrigger:
7914//            ret = new TCreateTriggerStmt(pdbvendor);
7915//            break;
7916        case sstpostgresqlTruncate:
7917            ret = new TTruncateStatement(pdbvendor);
7918            break;
7919        case sstpostgresqlDropTable:
7920            ret = new TDropTableSqlStatement(pdbvendor);
7921            break;
7922        case sstcreateview:
7923            ret = new TCreateViewSqlStatement(pdbvendor);
7924            break;
7925        case sstcall:
7926            ret = new TCallStatement(pdbvendor);
7927            break;
7928        case sstSnowflakePseudoExprStmt:
7929            ret = new TPseudoExprStmt(pdbvendor);
7930            break;
7931        case sstcreateprocedure:
7932            ret = new TCreateProcedureStmt(pdbvendor);
7933            break;
7934        case sstCreateStream:
7935            ret = new TCreateStreamStmt(pdbvendor);
7936            break;
7937        case sstUse:
7938            TSourceToken lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
7939            if (lcnextsolidtoken != null){
7940                if (lcnextsolidtoken.toString().equalsIgnoreCase("database")){
7941                    ret = new TUseDatabase(pdbvendor);
7942                }else if (lcnextsolidtoken.toString().equalsIgnoreCase("role")){
7943                    ret = new TUseRole(pdbvendor);
7944                }else if (lcnextsolidtoken.toString().equalsIgnoreCase("warehouse")){
7945                    ret = new TUseWarehouse(pdbvendor);
7946                }else{
7947                    ret = new TUseSchema(pdbvendor);
7948                }
7949
7950            }else{
7951                ret = new TUnknownSqlStatement(pdbvendor);
7952                ret.sqlstatementtype = gnewsqlstatementtype;
7953            }
7954            break;
7955        case sstExecute:
7956        {
7957            ret =  new TExecuteSqlStatement(pdbvendor);
7958            break;
7959        }
7960        case sstAlterTask:
7961            ret =  new TAlterTaskStmt(pdbvendor);
7962            break;
7963        case sstCreateTask:
7964            ret = new TCreateTaskStmt(pdbvendor);
7965            break;
7966        case sstAlterMaterializedView:
7967            ret = new TAlterMaterializedViewStmt(pdbvendor);
7968            break;
7969        case sstDropMaterializedView:
7970            ret = new TDropMaterializedViewStmt(pdbvendor);
7971            break;
7972        case sstdropprocedure:
7973            ret = new TDropProcedureStmt(pdbvendor);
7974            break;
7975        case sstUseSecondaryRoles:
7976            ret = new TUseSecondaryRolesStmt(pdbvendor);
7977            break;
7978        case sstDropStreamlit:
7979            ret = new TDropStmt(pdbvendor);
7980            break;
7981        case sstDropStream:
7982            ret = new TDropStreamStmt(pdbvendor);
7983            break;
7984        default:
7985          {
7986            ret = new TUnknownSqlStatement(pdbvendor);
7987            ret.sqlstatementtype = gnewsqlstatementtype;
7988            break;
7989          }
7990    }    // case
7991
7992    return ret;
7993}
7994
7995TCustomSqlStatement isgreenplum(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
7996        TCustomSqlStatement ret = null;
7997
7998        gnewsqlstatementtype = ESqlStatementType.sstinvalid;
7999
8000        if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
8001           || (pcst.tokencode  == TBaseType.cmtslashstar)
8002           || (pcst.tokencode  == TBaseType.lexspace)
8003           || (pcst.tokencode  == TBaseType.lexnewline)
8004            || (pcst.tokentype == ETokenType.ttsemicolon) )
8005        {
8006          return null;
8007        }
8008
8009        int lcpos = pcst.posinlist;
8010        TSourceTokenList lcsourcetokenlist = pcst.container;
8011        TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
8012
8013        //subquery after semicolon or at first line
8014        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
8015          {
8016            int k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
8017            if ( k >0 )
8018              {
8019                ret = new TSelectSqlStatement(pdbvendor);
8020              }
8021
8022            return ret;
8023          }
8024
8025        //cte
8026        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
8027          {
8028            ret = findcte(pcst,pdbvendor);
8029            if ( (ret != null) )  return ret;
8030          }
8031
8032        gnewsqlstatementtype = findgreenplumcmd(pcst);
8033
8034        TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
8035        switch (gnewsqlstatementtype) {    //
8036            case sstinvalid:
8037              {
8038                ret = null;
8039
8040                if ( pstate == EFindSqlStateType.stnormal )
8041                  {
8042                    if ( pcst.tokencode == TBaseType.label_begin )
8043                      {
8044                        ret = new TCommonBlock(pdbvendor);
8045                        gnewsqlstatementtype = ret.sqlstatementtype;
8046                      }
8047                    else if ( pcst.tokencode == TBaseType.rrw_declare )
8048                      {
8049                        ret = new TCommonBlock(pdbvendor);
8050                        gnewsqlstatementtype = ret.sqlstatementtype;
8051                      }
8052                    else if ( pcst.tokencode == TBaseType.rrw_begin )
8053                      {
8054                        ret = new TCommonBlock(pdbvendor);
8055                        gnewsqlstatementtype = ret.sqlstatementtype;
8056                      }
8057                    else if ( pcst.tokencode == TBaseType.rrw_procedure )
8058                      {
8059                        ret = new TPlsqlCreateProcedure(pdbvendor);
8060                        // ret.sqlstatementtype = ESqlStatementType.sstplsql_createprocedure;
8061                        gnewsqlstatementtype = ret.sqlstatementtype;
8062                      }
8063                    else if ( pcst.tokencode == TBaseType.rrw_function )
8064                      {
8065                        ret = new TPlsqlCreateFunction(pdbvendor);
8066                        // ret.sqlstatementtype = ESqlStatementType.sstplsql_createfunction;
8067                        gnewsqlstatementtype = ret.sqlstatementtype;
8068                      }
8069                    else if ( pcst.tokencode == TBaseType.rrw_package )
8070                      {
8071                        ret = new TPlsqlCreatePackage(pdbvendor);
8072                       // ret.sqlstatementtype = ESqlStatementType.sstplsql_createpackage;
8073                        gnewsqlstatementtype = ret.sqlstatementtype;
8074                      }
8075                  }
8076                  break;
8077              }
8078            case sstselect:
8079              {
8080                boolean lcisnewsql = true;
8081
8082                if ( pstate != EFindSqlStateType.stnormal )
8083                  {
8084                    // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
8085                    if ( (lcprevsolidtoken != null) )
8086                      {
8087                        if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
8088                          lcisnewsql = false; //subqery
8089                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
8090                          lcisnewsql = false;
8091                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
8092                          lcisnewsql = false;
8093                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
8094                          lcisnewsql = false;
8095                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
8096                          lcisnewsql = false;
8097                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
8098                          lcisnewsql = false;
8099                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
8100                          {
8101                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
8102                              lcisnewsql = false;
8103                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
8104                              lcisnewsql = false;
8105                          }
8106
8107                        if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
8108                          {
8109                            TSourceToken lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
8110                            if ( (lcpprevsolidtoken != null) )
8111                              {
8112                                if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
8113                                  lcisnewsql = false;
8114                              }
8115                          }
8116
8117                      }
8118
8119
8120                    if ( (lccurrentsqlstatement != null) )
8121                      {
8122                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
8123                          lcisnewsql = false;
8124                      }
8125
8126                  }
8127
8128                if ( lcisnewsql )
8129                  ret = new TSelectSqlStatement(pdbvendor);
8130
8131                break;
8132              }
8133            case sstinsert:
8134              {
8135                boolean lcisnewsql = true;
8136                if ( pstate != EFindSqlStateType.stnormal )
8137                  {
8138                    if ( (lccurrentsqlstatement != null) )
8139                      {
8140
8141                      }
8142                  }
8143
8144                if ( lcisnewsql )
8145                  ret = new TInsertSqlStatement(pdbvendor);
8146
8147                break;
8148              }
8149            case sstupdate:
8150              {
8151                boolean lcisnewsql = true;
8152                if ( pstate != EFindSqlStateType.stnormal )
8153                  {
8154                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
8155                    if ( (lcprevsolidtoken != null) )
8156                      { //
8157                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
8158                          lcisnewsql = false;
8159                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
8160                          lcisnewsql = false;
8161                      }
8162
8163                    TSourceToken lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
8164                    if ( (lcnextsolidtoken != null) )
8165                      {
8166                        if ( lcnextsolidtoken.tokentype == ETokenType.ttleftparenthesis)
8167                          {
8168                            int k = lcsourcetokenlist.solidtokenafterpos(lcnextsolidtoken.posinlist,TBaseType.rrw_select,1,"(");
8169                            if ( k  == 0 ) lcisnewsql = false;
8170                          }
8171                      }
8172
8173
8174                    if ( (lccurrentsqlstatement != null) )
8175                      {
8176                      }
8177                  }
8178
8179                if ( lcisnewsql )
8180                  {
8181                    ret = new TUpdateSqlStatement(pdbvendor);
8182                    ret.dummytag = 1; // means set clause in update is not found yet, used to seperate set clause from set statement
8183                  }
8184                break;
8185              }
8186            case sstdelete:
8187              {
8188                boolean lcisnewsql = true;
8189
8190                if ( pstate != EFindSqlStateType.stnormal )
8191                  {
8192                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
8193                    if ( (lcprevsolidtoken != null) )
8194                      {
8195                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
8196                          lcisnewsql = false;
8197                      }
8198
8199                    if ( (lccurrentsqlstatement != null) )
8200                      {
8201                      }
8202                  }
8203
8204                if ( lcisnewsql )
8205                  ret = new TDeleteSqlStatement(pdbvendor);
8206
8207                break;
8208              }
8209            case sstmerge:
8210              {
8211                ret = new TMergeSqlStatement(pdbvendor);
8212                ret.sqlstatementtype = gnewsqlstatementtype;
8213                break;
8214              }
8215            case sstoraclecommit:
8216              {
8217                ret = new TUnknownSqlStatement(pdbvendor);
8218                ret.sqlstatementtype = gnewsqlstatementtype;
8219                break;
8220              }
8221            case sstoraclerollback:
8222              {
8223                ret = new TUnknownSqlStatement(pdbvendor);
8224                ret.sqlstatementtype = gnewsqlstatementtype;
8225                break;
8226              }
8227            case sstoraclesavepoint:
8228              {
8229                ret = new TUnknownSqlStatement(pdbvendor);
8230                ret.sqlstatementtype = gnewsqlstatementtype;
8231                  break;
8232              }
8233            case sstoraclerevoke:
8234              {
8235                ret = new TUnknownSqlStatement(pdbvendor);
8236                ret.sqlstatementtype = gnewsqlstatementtype;
8237                  break;
8238              }
8239            case sstoraclegrant:
8240              {
8241                ret = new TUnknownSqlStatement(pdbvendor);
8242                ret.sqlstatementtype = gnewsqlstatementtype;
8243                  break;
8244              }
8245            case sstoracleanalyze:
8246              {
8247                ret = new TUnknownSqlStatement(pdbvendor);
8248                ret.sqlstatementtype = gnewsqlstatementtype;
8249                  break;
8250              }
8251            case sstoracletruncate:
8252              {
8253                ret = new TUnknownSqlStatement(pdbvendor);
8254                ret.sqlstatementtype = gnewsqlstatementtype;
8255                  break;
8256              }
8257            case sstcreatetable:
8258            case sstgreenplumCreateExternalTable:
8259              {
8260                ret = new TCreateTableSqlStatement(pdbvendor);
8261                  break;
8262              }
8263            case sstoraclecreateview:
8264              {
8265                ret = new TCreateViewSqlStatement(pdbvendor);
8266                  break;
8267              }
8268            case sstcreatematerializedview:{
8269                ret = new TCreateMaterializedSqlStatement(pdbvendor);
8270                break;
8271            }
8272            case sstoraclecreateindex:
8273              {
8274                ret = new TCreateIndexSqlStatement(pdbvendor);
8275                  break;
8276              }
8277            case sstoraclecreatedatabase:
8278              {
8279                ret = new TCreateDatabaseSqlStatement(pdbvendor);
8280                  break;
8281              }
8282            case sstoracledroptable:
8283              {
8284                ret = new TDropTableSqlStatement(pdbvendor);
8285                  break;
8286              }
8287            case sstoracledropview:
8288              {
8289               ret = new TDropViewSqlStatement(pdbvendor);
8290                  break;
8291              }
8292            case sstoracledropindex:
8293              {
8294                ret = new TDropIndexSqlStatement(pdbvendor);
8295                  break;
8296              }
8297            case sstaltertable:
8298              {
8299                ret = new TAlterTableStatement(pdbvendor);
8300                  break;
8301              }
8302            case sstoraclealtersession:
8303              {
8304                ret = new TAlterSessionStatement(pdbvendor);
8305                  break;
8306              }
8307            case sstplsql_createprocedure:
8308            {
8309              ret = new TPlsqlCreateProcedure(pdbvendor);
8310              ret.sqlstatementtype = gnewsqlstatementtype;
8311              // System.out.println(gnewsqlstatementtype);
8312                break;
8313            }
8314            case sstplsql_createfunction:
8315            {
8316              ret = new TPlsqlCreateFunction(pdbvendor);
8317              ret.sqlstatementtype = gnewsqlstatementtype;
8318              // System.out.println(gnewsqlstatementtype);
8319                break;
8320            }
8321            case sstplsql_createpackage:
8322            {
8323              ret = new TPlsqlCreatePackage(pdbvendor);
8324              ret.sqlstatementtype = gnewsqlstatementtype;
8325              // System.out.println(gnewsqlstatementtype);
8326                break;
8327            }
8328            case sstplsql_createtrigger:
8329            {
8330              ret = new TPlsqlCreateTrigger(pdbvendor);
8331              ret.sqlstatementtype = gnewsqlstatementtype;
8332              // System.out.println(gnewsqlstatementtype);
8333                break;
8334            }
8335            case sstplsql_execimmestmt:
8336              {
8337                ret = new TExecImmeStmt(pdbvendor);
8338               // ret.sqlstatementtype = gnewsqlstatementtype;
8339                // System.out.println(gnewsqlstatementtype);
8340                  break;
8341              }
8342            case sstoraclecreatepackagebody:
8343             {
8344                ret = new TPlsqlCreatePackage(pdbvendor);
8345                ret.sqlstatementtype = ESqlStatementType.sstplsql_createpackage;
8346                 break;
8347             }
8348            case sstplsql_createtype_placeholder:
8349            {
8350              ret = new TPlsqlCreateType_Placeholder(pdbvendor);
8351              ret.sqlstatementtype = gnewsqlstatementtype;
8352              // System.out.println(gnewsqlstatementtype);
8353                break;
8354            }
8355            case sstplsql_createtypebody:
8356              {
8357                ret = new TPlsqlCreateTypeBody(pdbvendor);
8358                ret.sqlstatementtype = gnewsqlstatementtype;
8359                  break;
8360              }
8361            case sstCommentOn:
8362              {
8363                ret = new TCommentOnSqlStmt(pdbvendor);
8364                  break;
8365              }
8366            case sstoraclecreatesequence:
8367              {
8368                ret = new TCreateSequenceStmt(pdbvendor);
8369                  break;
8370              }
8371            case sstoraclecreatesynonym:
8372              {
8373                ret = new TCreateSynonymStmt(pdbvendor);
8374                  break;
8375              }
8376            case sstoraclecreatedirectory:
8377              {
8378                ret = new TOracleCreateDirectoryStmt(pdbvendor);
8379                  break;
8380              }
8381            case sstpostgresqlCreateIndex:
8382                ret = new TCreateIndexSqlStatement(pdbvendor);
8383                break;
8384            case sstpostgresqlCreateView:
8385                ret = new TCreateViewSqlStatement(pdbvendor);
8386                break;
8387            case sstpostgresqlCreateFunction:
8388                ret = new TCreateFunctionStmt(pdbvendor);
8389                break;
8390            case sstcreatetrigger:
8391                ret = new TCreateTriggerStmt(pdbvendor);
8392                break;
8393            case sstpostgresqlMove:
8394                ret = new TMoveStmt(EDbVendor.dbvgreenplum);
8395                break;
8396            case sstpostgresqlTruncate:
8397                ret = new TTruncateStatement(EDbVendor.dbvgreenplum);
8398                break;
8399            case sstpostgresqlExecute:
8400                ret = new TExecuteSqlStatement(EDbVendor.dbvgreenplum);
8401                break;
8402            case sstValues:
8403                ret = new TSelectSqlStatement(EDbVendor.dbvgreenplum);
8404                break;
8405            case sstpostgresqlDeclare: {
8406                boolean lcisnewsql = true;
8407
8408                TSourceToken lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos, 2, false);
8409                if ((lcnextsolidtoken != null)) {
8410                    if (lcnextsolidtoken.tokencode == TBaseType.rrw_greenplum_CURSOR) {
8411                        lcisnewsql = false;
8412                    }
8413                }
8414
8415
8416                if (lcisnewsql)
8417                    ret = new TCommonBlock(pdbvendor);
8418                else {
8419                    ret = new TUnknownSqlStatement(pdbvendor);
8420                }
8421                ret.sqlstatementtype = gnewsqlstatementtype;
8422
8423                break;
8424            }
8425            case sstpostgresqlSet:
8426                ret = new TSetStmt(pdbvendor);
8427                break;
8428            case sstcreateExtension:
8429                ret = new TCreateExtensionStmt(pdbvendor);
8430                break;
8431            case sstcall:
8432                ret = new TCallStatement(pdbvendor);
8433                break;
8434            case sstpostgresqlCreateSchema:
8435                ret = new TCreateSchemaSqlStatement(pdbvendor);
8436                break;
8437            case sstpostgresqlDo: {
8438                boolean lcisnewsql = false;
8439
8440                if (pstate == EFindSqlStateType.stnormal) {
8441                    TSourceToken lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos, 1, false);
8442                    if ((lcnextsolidtoken != null)) {
8443                        if (lcnextsolidtoken.tokencode == TBaseType.rrw_greenplum_function_delimiter)
8444                            lcisnewsql = true;
8445                    }
8446                }
8447
8448                if (lcisnewsql)
8449                    ret = new TDoExecuteBlockStmt(pdbvendor);
8450
8451                break;
8452            }
8453            case sstpostgresqlComment:
8454                ret = new TCommentOnSqlStmt(pdbvendor);
8455                break;
8456            default:
8457              {
8458                ret = new TUnknownSqlStatement(pdbvendor);
8459                ret.sqlstatementtype = gnewsqlstatementtype;
8460                break;
8461              }
8462        }    // case
8463
8464        return ret;
8465    }
8466
8467TCustomSqlStatement isoraclesql(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
8468    TCustomSqlStatement ret = null;
8469
8470    gnewsqlstatementtype = ESqlStatementType.sstinvalid;
8471
8472    if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
8473       || (pcst.tokencode  == TBaseType.cmtslashstar)
8474       || (pcst.tokencode  == TBaseType.lexspace)
8475       || (pcst.tokencode  == TBaseType.lexnewline)
8476        || (pcst.tokentype == ETokenType.ttsemicolon) )
8477    {
8478      return null;
8479    }
8480
8481    int lcpos = pcst.posinlist;
8482    TSourceTokenList lcsourcetokenlist = pcst.container;
8483    TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
8484
8485    //subquery after semicolon or at first line
8486    if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
8487      {
8488        int k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
8489        if ( k >0 )
8490          {
8491            ret = new TSelectSqlStatement(pdbvendor);
8492          }
8493
8494        return ret;
8495      }
8496
8497    //cte
8498    if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
8499      {
8500        ret = findcte(pcst,pdbvendor);
8501        if ( (ret != null) )  return ret;
8502      }
8503
8504    gnewsqlstatementtype = findoraclecmd(pcst);
8505
8506    TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
8507    switch (gnewsqlstatementtype) {    //
8508        case sstinvalid:
8509          {
8510            ret = null;
8511
8512            if ( pstate == EFindSqlStateType.stnormal )
8513              {
8514                if ( pcst.tokencode == TBaseType.label_begin )
8515                  {
8516                    ret = new TCommonBlock(pdbvendor);
8517                    gnewsqlstatementtype = ret.sqlstatementtype;
8518                  }
8519                else if ( pcst.tokencode == TBaseType.rrw_declare )
8520                  {
8521                    ret = new TCommonBlock(pdbvendor);
8522                    gnewsqlstatementtype = ret.sqlstatementtype;
8523                  }
8524                else if ( pcst.tokencode == TBaseType.rrw_begin )
8525                  {
8526                    ret = new TCommonBlock(pdbvendor);
8527                    gnewsqlstatementtype = ret.sqlstatementtype;
8528                  }
8529                else if ( pcst.tokencode == TBaseType.rrw_procedure )
8530                  {
8531                    ret = new TPlsqlCreateProcedure(pdbvendor);
8532                    // ret.sqlstatementtype = ESqlStatementType.sstplsql_createprocedure;
8533                    gnewsqlstatementtype = ret.sqlstatementtype;
8534                  }
8535                else if ( pcst.tokencode == TBaseType.rrw_function )
8536                  {
8537                    ret = new TPlsqlCreateFunction(pdbvendor);
8538                    // ret.sqlstatementtype = ESqlStatementType.sstplsql_createfunction;
8539                    gnewsqlstatementtype = ret.sqlstatementtype;
8540                  }
8541                else if ( pcst.tokencode == TBaseType.rrw_package )
8542                  {
8543                    ret = new TPlsqlCreatePackage(pdbvendor);
8544                   // ret.sqlstatementtype = ESqlStatementType.sstplsql_createpackage;
8545                    gnewsqlstatementtype = ret.sqlstatementtype;
8546                  }
8547              }
8548              break;
8549          }
8550        case sstselect:
8551          {
8552            boolean lcisnewsql = true;
8553
8554            if ( pstate != EFindSqlStateType.stnormal )
8555              {
8556                // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
8557                if ( (lcprevsolidtoken != null) )
8558                  {
8559                    if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
8560                      lcisnewsql = false; //subquery
8561                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
8562                      lcisnewsql = false;
8563                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
8564                      lcisnewsql = false;
8565                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
8566                      lcisnewsql = false;
8567                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
8568                      lcisnewsql = false;
8569                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
8570                      lcisnewsql = false;
8571                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
8572                      {
8573                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
8574                          lcisnewsql = false;
8575                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
8576                          lcisnewsql = false;
8577                      }
8578
8579                    if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
8580                      {
8581                        TSourceToken lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
8582                        if ( (lcpprevsolidtoken != null) )
8583                          {
8584                            if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
8585                              lcisnewsql = false;
8586                          }
8587                      }
8588
8589                  }
8590
8591
8592                if ( (lccurrentsqlstatement != null) )
8593                  {
8594                      switch (lccurrentsqlstatement.sqlstatementtype){
8595                          case sstinsert:
8596                              lcisnewsql = false;
8597                              break;
8598                          case sstcreatetable:
8599                          case sstcreateview:
8600                              lcisnewsql = false;
8601                              break;
8602                      }
8603                  }
8604
8605              }
8606
8607            if ( lcisnewsql )
8608              ret = new TSelectSqlStatement(pdbvendor);
8609
8610            break;
8611          }
8612        case sstinsert:
8613          {
8614            boolean lcisnewsql = true;
8615            if ( pstate != EFindSqlStateType.stnormal )
8616              {
8617                if ( (lccurrentsqlstatement != null) )
8618                  {
8619
8620                  }
8621              }
8622
8623            if ( lcisnewsql )
8624              ret = new TInsertSqlStatement(pdbvendor);
8625
8626            break;
8627          }
8628        case sstupdate:
8629          {
8630            boolean lcisnewsql = true;
8631            if ( pstate != EFindSqlStateType.stnormal )
8632              {
8633                lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
8634                if ( (lcprevsolidtoken != null) )
8635                  { //
8636                    if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
8637                      lcisnewsql = false;
8638                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
8639                      lcisnewsql = false;
8640                  }
8641
8642                TSourceToken lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
8643                if ( (lcnextsolidtoken != null) )
8644                  {
8645                    if ( lcnextsolidtoken.tokentype == ETokenType.ttleftparenthesis)
8646                      {
8647                        int k = lcsourcetokenlist.solidtokenafterpos(lcnextsolidtoken.posinlist,TBaseType.rrw_select,1,"(");
8648                        if ( k  == 0 ) lcisnewsql = false;
8649                      }
8650                  }
8651
8652
8653                if ( (lccurrentsqlstatement != null) )
8654                  {
8655                  }
8656              }
8657
8658            if ( lcisnewsql )
8659              {
8660                ret = new TUpdateSqlStatement(pdbvendor);
8661                ret.dummytag = 1; // means set clause in update is not found yet, used to seperate set clause from set statement
8662              }
8663            break;
8664          }
8665        case sstdelete:
8666          {
8667            boolean lcisnewsql = true;
8668
8669            if ( pstate != EFindSqlStateType.stnormal )
8670              {
8671                lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
8672                if ( (lcprevsolidtoken != null) )
8673                  {
8674                    if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
8675                      lcisnewsql = false;
8676                  }
8677
8678                if ( (lccurrentsqlstatement != null) )
8679                  {
8680                      TSourceToken lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
8681                      if ( (lcnextsolidtoken != null) ){
8682                          if (lcnextsolidtoken.tokencode == TBaseType.rrw_oracle_rows){
8683                              lcisnewsql = false;
8684                          }
8685                      }
8686                  }
8687              }
8688
8689            if ( lcisnewsql )
8690              ret = new TDeleteSqlStatement(pdbvendor);
8691
8692            break;
8693          }
8694        case sstmerge:
8695          {
8696            ret = new TMergeSqlStatement(pdbvendor);
8697            ret.sqlstatementtype = gnewsqlstatementtype;
8698            break;
8699          }
8700        case sstoraclecommit:
8701          {
8702
8703              boolean lcisnewsql = true;
8704              if ( pstate != EFindSqlStateType.stnormal )
8705              {
8706                  lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
8707                  if ( (lcprevsolidtoken != null) )
8708                  { //
8709                      if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
8710                          lcisnewsql = false;
8711                  }
8712              }
8713
8714              if (lcisnewsql){
8715                  ret = new TCommitStmt(pdbvendor);
8716                  ret.sqlstatementtype = gnewsqlstatementtype;
8717              }
8718
8719            break;
8720          }
8721        case sstoraclerollback:
8722          {
8723            ret = new TUnknownSqlStatement(pdbvendor);
8724            ret.sqlstatementtype = gnewsqlstatementtype;
8725            break;
8726          }
8727        case sstoraclesavepoint:
8728          {
8729            ret = new TUnknownSqlStatement(pdbvendor);
8730            ret.sqlstatementtype = gnewsqlstatementtype;
8731              break;
8732          }
8733        case sstoraclerevoke:
8734          {
8735            ret = new TUnknownSqlStatement(pdbvendor);
8736            ret.sqlstatementtype = gnewsqlstatementtype;
8737              break;
8738          }
8739        case sstoraclegrant:
8740          {
8741            ret = new TUnknownSqlStatement(pdbvendor);
8742            ret.sqlstatementtype = gnewsqlstatementtype;
8743              break;
8744          }
8745        case sstoracleanalyze:
8746          {
8747            ret = new TUnknownSqlStatement(pdbvendor);
8748            ret.sqlstatementtype = gnewsqlstatementtype;
8749              break;
8750          }
8751        case sstTruncate:
8752          {
8753              ret = new TTruncateStatement(pdbvendor);
8754              ret.sqlstatementtype = gnewsqlstatementtype;
8755              break;
8756          }
8757        case sstcreatetable:
8758          {
8759            ret = new TCreateTableSqlStatement(pdbvendor);
8760              break;
8761          }
8762        case sstoraclecreateview:
8763          {
8764            ret = new TCreateViewSqlStatement(pdbvendor);
8765              break;
8766          }
8767        case sstcreatematerializedview:{
8768            ret = new TCreateMaterializedSqlStatement(pdbvendor);
8769            break;
8770        }
8771        case sstoraclecreatematerializedviewlog:{
8772            ret = new TCreateMaterializedViewLogSqlStatement(pdbvendor);
8773            break;
8774        }
8775        case sstoraclecreateindex:
8776          {
8777            ret = new TCreateIndexSqlStatement(pdbvendor);
8778              break;
8779          }
8780        case sstoraclecreatedatabase:
8781          {
8782            ret = new TCreateDatabaseSqlStatement(pdbvendor);
8783              break;
8784          }
8785        case sstoracledroptable:
8786          {
8787            ret = new TDropTableSqlStatement(pdbvendor);
8788              break;
8789          }
8790        case sstoracledropview:
8791          {
8792           ret = new TDropViewSqlStatement(pdbvendor);
8793              break;
8794          }
8795        case sstoracledropindex:
8796          {
8797            ret = new TDropIndexSqlStatement(pdbvendor);
8798              break;
8799          }
8800        case sstaltertable:
8801          {
8802            ret = new TAlterTableStatement(pdbvendor);
8803              break;
8804          }
8805        case sstoraclealtersession:
8806          {
8807            ret = new TAlterSessionStatement(pdbvendor);
8808              break;
8809          }
8810        case sstplsql_createprocedure:
8811        {
8812          ret = new TPlsqlCreateProcedure(pdbvendor);
8813          ret.sqlstatementtype = gnewsqlstatementtype;
8814          // System.out.println(gnewsqlstatementtype);
8815            break;
8816        }
8817        case sstplsql_createfunction:
8818        {
8819          ret = new TPlsqlCreateFunction(pdbvendor);
8820          ret.sqlstatementtype = gnewsqlstatementtype;
8821          // System.out.println(gnewsqlstatementtype);
8822            break;
8823        }
8824        case sstplsql_createpackage:
8825        {
8826          ret = new TPlsqlCreatePackage(pdbvendor);
8827          ret.sqlstatementtype = gnewsqlstatementtype;
8828          // System.out.println(gnewsqlstatementtype);
8829            break;
8830        }
8831        case sstplsql_createtrigger:
8832        {
8833          ret = new TPlsqlCreateTrigger(pdbvendor);
8834          ret.sqlstatementtype = gnewsqlstatementtype;
8835          // System.out.println(gnewsqlstatementtype);
8836            break;
8837        }
8838        case sstplsql_execimmestmt:
8839          {
8840            ret = new TExecImmeStmt(pdbvendor);
8841           // ret.sqlstatementtype = gnewsqlstatementtype;
8842            // System.out.println(gnewsqlstatementtype);
8843              break;
8844          }
8845        case sstoraclecreatepackagebody:
8846         {
8847            ret = new TPlsqlCreatePackage(pdbvendor);
8848            ret.sqlstatementtype = ESqlStatementType.sstplsql_createpackage;
8849             break;
8850         }
8851        case sstplsql_createtype_placeholder:
8852        {
8853          ret = new TPlsqlCreateType_Placeholder(pdbvendor);
8854          ret.sqlstatementtype = gnewsqlstatementtype;
8855          // System.out.println(gnewsqlstatementtype);
8856            break;
8857        }
8858        case sstplsql_createtypebody:
8859          {
8860            ret = new TPlsqlCreateTypeBody(pdbvendor);
8861            ret.sqlstatementtype = gnewsqlstatementtype;
8862              break;
8863          }
8864        case sstCommentOn:
8865          {
8866            ret = new TCommentOnSqlStmt(pdbvendor);
8867              break;
8868          }
8869        case sstoraclecreatesequence:
8870          {
8871            ret = new TCreateSequenceStmt(pdbvendor);
8872              break;
8873          }
8874        case sstoraclecreatesynonym:
8875          {
8876            ret = new TCreateSynonymStmt(pdbvendor);
8877              break;
8878          }
8879        case sstoraclecreatedirectory:
8880          {
8881            ret = new TOracleCreateDirectoryStmt(pdbvendor);
8882              break;
8883          }
8884        case sstoracleexecuteprocedure:
8885        {
8886            ret = new TOracleExecuteProcedure(pdbvendor);
8887            break;
8888        }
8889        case sstExplain:
8890        {
8891            ret = new TExplainPlan(pdbvendor);
8892            break;
8893        }
8894        case sstoraclecreatelibrary:
8895            ret = new TOracleCreateLibraryStmt(pdbvendor);
8896            break;
8897        case sstaltertrigger:
8898            ret  = new TAlterTriggerStmt(pdbvendor);
8899            break;
8900        case sstoracledropsequence:
8901            ret = new TDropSequenceStmt(pdbvendor);
8902            break;
8903        case sstoraclecall:
8904            ret = new TCallStatement(pdbvendor);
8905            break;
8906        case sstoraclealterview:
8907            ret = new TAlterViewStatement(pdbvendor);
8908            break;
8909        case sstoracledropsynonym:
8910            ret = new TDropSynonymStmt(pdbvendor);
8911            break;
8912        case sstoracledropdatabaselink:
8913            ret = new TDropDatabaseLinkStmt(pdbvendor);
8914            break;
8915        case sstoraclecreatedatabaselink:
8916            ret = new TCreateDatabaseLinkStmt(pdbvendor);
8917            break;
8918        case sstoracledropmaterializedview:
8919            ret = new TDropMaterializedViewStmt(pdbvendor);
8920            break;
8921        case sstoracledropmaterializedviewlog:
8922            ret = new TDropMaterializedViewLogStmt(pdbvendor);
8923            break;
8924        case sstoraclerename:
8925            ret = new TRenameStmt(pdbvendor);
8926            break;
8927        case sstoracledropprocedure:
8928            ret = new TDropProcedureStmt(pdbvendor);
8929            break;
8930        case sstAlterMaterializedView:
8931            ret = new TAlterMaterializedViewStmt(pdbvendor);
8932            break;
8933        case sstoracledroptrigger:
8934            ret = new TDropTriggerSqlStatement(pdbvendor);
8935            break;
8936        case sstoracledropfunction:
8937            ret = new TDropFunctionStmt(pdbvendor);
8938            break;
8939        case sstoraclealterindex:
8940            ret = new TAlterIndexStmt(pdbvendor);
8941            break;
8942        case sstoraclealtersequence:
8943            ret = new TAlterSequenceStatement(pdbvendor);
8944            break;
8945        case sstoraclealtertype:
8946            ret = new TAlterTypeStatement(pdbvendor);
8947            break;
8948        default:
8949          {
8950            ret = new TUnknownSqlStatement(pdbvendor);
8951            ret.sqlstatementtype = gnewsqlstatementtype;
8952            break;
8953          }
8954    }    // case
8955
8956    return ret;
8957}
8958
8959TCustomSqlStatement isinformixsql(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
8960    TCustomSqlStatement ret = null;
8961
8962    gnewsqlstatementtype = ESqlStatementType.sstinvalid;
8963
8964    if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
8965       || (pcst.tokencode  == TBaseType.cmtslashstar)
8966       || (pcst.tokencode  == TBaseType.lexspace)
8967       || (pcst.tokencode  == TBaseType.lexnewline)
8968        || (pcst.tokentype == ETokenType.ttsemicolon) )
8969    {
8970      return null;
8971    }
8972
8973    int lcpos = pcst.posinlist;
8974    TSourceTokenList lcsourcetokenlist = pcst.container;
8975    TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
8976
8977    //subquery after semicolon or at first line
8978    if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
8979      {
8980        int k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
8981        if ( k >0 )
8982          {
8983            ret = new TSelectSqlStatement(pdbvendor);
8984          }
8985
8986        return ret;
8987      }
8988
8989    //cte
8990    if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
8991      {
8992        ret = findcte(pcst,pdbvendor);
8993        if ( (ret != null) )  return ret;
8994      }
8995
8996    gnewsqlstatementtype = findinformixcmd(pcst);
8997
8998    TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
8999    switch (gnewsqlstatementtype) {    //
9000        case sstinvalid:
9001          {
9002            ret = null;
9003
9004            if ( pstate == EFindSqlStateType.stnormal )
9005              {
9006                if ( pcst.tokencode == TBaseType.label_begin )
9007                  {
9008                    ret = new TCommonBlock(pdbvendor);
9009                    gnewsqlstatementtype = ret.sqlstatementtype;
9010                  }
9011                else if ( pcst.tokencode == TBaseType.rrw_declare )
9012                  {
9013                    ret = new TCommonBlock(pdbvendor);
9014                    gnewsqlstatementtype = ret.sqlstatementtype;
9015                  }
9016                else if ( pcst.tokencode == TBaseType.rrw_begin )
9017                  {
9018                    ret = new TCommonBlock(pdbvendor);
9019                    gnewsqlstatementtype = ret.sqlstatementtype;
9020                  }
9021                else if ( pcst.tokencode == TBaseType.rrw_procedure )
9022                  {
9023                    ret = new TPlsqlCreateProcedure(pdbvendor);
9024                    // ret.sqlstatementtype = ESqlStatementType.sstplsql_createprocedure;
9025                    gnewsqlstatementtype = ret.sqlstatementtype;
9026                  }
9027                else if ( pcst.tokencode == TBaseType.rrw_function )
9028                  {
9029                    ret = new TPlsqlCreateFunction(pdbvendor);
9030                    // ret.sqlstatementtype = ESqlStatementType.sstplsql_createfunction;
9031                    gnewsqlstatementtype = ret.sqlstatementtype;
9032                  }
9033                else if ( pcst.tokencode == TBaseType.rrw_package )
9034                  {
9035                    ret = new TPlsqlCreatePackage(pdbvendor);
9036                   // ret.sqlstatementtype = ESqlStatementType.sstplsql_createpackage;
9037                    gnewsqlstatementtype = ret.sqlstatementtype;
9038                  }
9039              }
9040              break;
9041          }
9042        case sstselect:
9043          {
9044            boolean lcisnewsql = true;
9045
9046            if ( pstate != EFindSqlStateType.stnormal )
9047              {
9048                // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
9049                if ( (lcprevsolidtoken != null) )
9050                  {
9051                    if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
9052                      lcisnewsql = false; //subqery
9053                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
9054                      lcisnewsql = false;
9055                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
9056                      lcisnewsql = false;
9057                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
9058                      lcisnewsql = false;
9059                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
9060                      lcisnewsql = false;
9061                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
9062                      lcisnewsql = false;
9063                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
9064                      {
9065                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
9066                          lcisnewsql = false;
9067                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
9068                          lcisnewsql = false;
9069                      }
9070
9071                    if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
9072                      {
9073                        TSourceToken lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
9074                        if ( (lcpprevsolidtoken != null) )
9075                          {
9076                            if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
9077                              lcisnewsql = false;
9078                          }
9079                      }
9080
9081                  }
9082
9083
9084                if ( (lccurrentsqlstatement != null) )
9085                  {
9086                    if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
9087                      lcisnewsql = false;
9088                  }
9089
9090              }
9091
9092            if ( lcisnewsql )
9093              ret = new TSelectSqlStatement(pdbvendor);
9094
9095            break;
9096          }
9097        case sstinsert:
9098          {
9099            boolean lcisnewsql = true;
9100            if ( pstate != EFindSqlStateType.stnormal )
9101              {
9102                if ( (lccurrentsqlstatement != null) )
9103                  {
9104                        // merge
9105                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
9106                        {
9107                              if (lcprevsolidtoken != null)
9108                              {
9109                                  if (lcprevsolidtoken.tokencode == TBaseType.rrw_then)
9110                                  {lcisnewsql = false;}
9111                              }
9112                        }
9113
9114                  }
9115              }
9116
9117            if ( lcisnewsql )
9118              ret = new TInsertSqlStatement(pdbvendor);
9119
9120            break;
9121          }
9122        case sstupdate:
9123          {
9124            boolean lcisnewsql = true;
9125            if ( pstate != EFindSqlStateType.stnormal )
9126              {
9127                lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
9128                if ( (lcprevsolidtoken != null) )
9129                  { //
9130                    if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
9131                      lcisnewsql = false;
9132                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
9133                      lcisnewsql = false;
9134                  }
9135
9136                TSourceToken lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
9137                if ( (lcnextsolidtoken != null) )
9138                  {
9139                    if ( lcnextsolidtoken.tokentype == ETokenType.ttleftparenthesis)
9140                      {
9141                        int k = lcsourcetokenlist.solidtokenafterpos(lcnextsolidtoken.posinlist,TBaseType.rrw_select,1,"(");
9142                        if ( k  == 0 ) lcisnewsql = false;
9143                      }
9144                  }
9145
9146
9147                if ( (lccurrentsqlstatement != null) )
9148                  {
9149                        // merge
9150                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
9151                        {
9152                              if (lcprevsolidtoken != null)
9153                              {
9154                                  if (lcprevsolidtoken.tokencode == TBaseType.rrw_then)
9155                                  {lcisnewsql = false;}
9156                              }
9157                        }
9158                  }
9159              }
9160
9161            if ( lcisnewsql )
9162              {
9163                ret = new TUpdateSqlStatement(pdbvendor);
9164                ret.dummytag = 1; // means set clause in update is not found yet, used to seperate set clause from set statement
9165              }
9166            break;
9167          }
9168        case sstdelete:
9169          {
9170            boolean lcisnewsql = true;
9171
9172            if ( pstate != EFindSqlStateType.stnormal )
9173              {
9174                lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
9175                if ( (lcprevsolidtoken != null) )
9176                  {
9177                    if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
9178                      lcisnewsql = false;
9179                  }
9180
9181                if ( (lccurrentsqlstatement != null) )
9182                  {
9183                        // merge
9184                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
9185                        {
9186                              if (lcprevsolidtoken != null)
9187                              {
9188                                  if (lcprevsolidtoken.tokencode == TBaseType.rrw_then)
9189                                  {lcisnewsql = false;}
9190                              }
9191                        }
9192                  }
9193              }
9194
9195            if ( lcisnewsql )
9196              ret = new TDeleteSqlStatement(pdbvendor);
9197
9198            break;
9199          }
9200        case sstmerge:
9201          {
9202            ret = new TMergeSqlStatement(pdbvendor);
9203            ret.sqlstatementtype = gnewsqlstatementtype;
9204            break;
9205          }
9206        case sstinformixCommit:
9207          {
9208            ret = new TUnknownSqlStatement(pdbvendor);
9209            ret.sqlstatementtype = gnewsqlstatementtype;
9210            break;
9211          }
9212        case sstinformixSavepoint:
9213          {
9214            ret = new TUnknownSqlStatement(pdbvendor);
9215            ret.sqlstatementtype = gnewsqlstatementtype;
9216              break;
9217          }
9218        case sstinformixRevoke:
9219          {
9220            ret = new TUnknownSqlStatement(pdbvendor);
9221            ret.sqlstatementtype = gnewsqlstatementtype;
9222              break;
9223          }
9224        case sstinformixGrant:
9225          {
9226            ret = new TUnknownSqlStatement(pdbvendor);
9227            ret.sqlstatementtype = gnewsqlstatementtype;
9228              break;
9229          }
9230        case sstTruncate:
9231          {
9232              ret = new TTruncateStatement(pdbvendor);
9233              ret.sqlstatementtype = gnewsqlstatementtype;
9234              break;
9235          }
9236        case sstcreatetable:
9237        case sstinformixCreateTempTable:
9238          {
9239            ret = new TCreateTableSqlStatement(pdbvendor);
9240              break;
9241          }
9242        case sstinformixCreateView:
9243          {
9244            ret = new TCreateViewSqlStatement(pdbvendor);
9245              break;
9246          }
9247        case sstinformixCreateIndex:
9248          {
9249            ret = new TCreateIndexSqlStatement(pdbvendor);
9250              break;
9251          }
9252        case sstinformixCreateDatabase:
9253          {
9254            ret = new TCreateDatabaseSqlStatement(pdbvendor);
9255              break;
9256          }
9257        case sstinformixDropTable:
9258          {
9259            ret = new TDropTableSqlStatement(pdbvendor);
9260              break;
9261          }
9262        case sstinformixDropView:
9263          {
9264           ret = new TDropViewSqlStatement(pdbvendor);
9265              break;
9266          }
9267        case sstinformixDropIndex:
9268          {
9269            ret = new TDropIndexSqlStatement(pdbvendor);
9270              break;
9271          }
9272        case sstinformixDropRowType:
9273        {
9274            ret = new TInformixDropRowTypeStmt(pdbvendor);
9275            break;
9276        }
9277        case sstinformixDropSequence:
9278        {
9279            ret = new TDropSequenceStmt(pdbvendor);
9280            break;
9281        }
9282        case sstinformixDropSynonym:
9283        {
9284            ret = new TDropSynonymStmt(pdbvendor);
9285            break;
9286        }
9287        case sstinformixAlterTable:
9288          {
9289            ret = new TAlterTableStatement(pdbvendor);
9290              break;
9291          }
9292        case sstinformixCreateProcedure:
9293        {
9294          ret = new TInformixCreateProcedure(pdbvendor);
9295          ret.sqlstatementtype = gnewsqlstatementtype;
9296            break;
9297        }
9298        case sstinformixCreateFunction:
9299        {
9300          ret = new TInformixCreateFunction(pdbvendor);
9301          ret.sqlstatementtype = gnewsqlstatementtype;
9302            break;
9303        }
9304        case sstcreatetrigger:
9305        {
9306          ret = new TCreateTriggerStmt(pdbvendor);
9307            break;
9308        }
9309        case sstinformixExecuteImmediate:
9310          {
9311            ret = new TInformixExecuteImmediate(pdbvendor);
9312              break;
9313          }
9314        case sstinformixCreateSequence:
9315        case sstinformixAlterSequence:
9316          {
9317            ret = new TCreateSequenceStmt(pdbvendor);
9318              break;
9319          }
9320        case sstinformixCreateSynonym:
9321          {
9322            ret = new TCreateSynonymStmt(pdbvendor);
9323              break;
9324          }
9325        case sstinformixExecuteFunction:
9326        {
9327            ret = new TInformixExecuteFunction(pdbvendor);
9328            break;
9329        }
9330        case sstinformixExecuteProcedure:
9331        {
9332            ret = new TInformixExecuteProcedure(pdbvendor);
9333            break;
9334        }
9335        case sstinformixCreateRowType:
9336        {
9337            ret = new TInformixCreateRowTypeStmt(pdbvendor);
9338            break;
9339        }
9340        case sstinformixPut:
9341        case sstinformixInfo:
9342          {
9343            ret = null;
9344
9345            if ( pstate == EFindSqlStateType.stnormal )
9346              {
9347                  ret = new TUnknownSqlStatement(pdbvendor);
9348                  ret.sqlstatementtype = gnewsqlstatementtype;
9349              }
9350              break;
9351          }
9352        case sstinformixAlterIndex:
9353        {
9354            ret = new TAlterIndexStmt(pdbvendor);
9355            break;
9356        }
9357        case sstinformixRenameColumn:
9358        case sstinformixRenameTable:
9359        case sstinformixRenameSequence:
9360        case sstinformixRenameIndex:
9361        {
9362            ret = new TRenameStmt(pdbvendor);
9363            break;
9364        }
9365        case sstdropdatabase:
9366            ret = new TDropDatabaseStmt(pdbvendor);
9367            break;
9368        case sstinformixRollbackWork:
9369        {
9370            ret =  new TMssqlRollback(pdbvendor);
9371            break;
9372        }
9373        default:
9374          {
9375            ret = new TUnknownSqlStatement(pdbvendor);
9376            ret.sqlstatementtype = gnewsqlstatementtype;
9377            break;
9378          }
9379    }    // case
9380
9381    return ret;
9382}
9383
9384
9385    TCustomSqlStatement issybasesql(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
9386        TCustomSqlStatement ret = null;
9387        int k;
9388        boolean lcisnewsql;
9389        TSourceToken lcpprevsolidtoken,lcnextsolidtoken,lctoken;
9390
9391        gnewsqlstatementtype = ESqlStatementType.sstinvalid;
9392
9393        if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
9394                || (pcst.tokencode  == TBaseType.cmtslashstar)
9395                || (pcst.tokencode  == TBaseType.lexspace)
9396                || (pcst.tokencode  == TBaseType.lexnewline)
9397                || (pcst.tokentype == ETokenType.ttsemicolon) )
9398        {
9399            return ret;
9400        }
9401
9402        int lcpos = pcst.posinlist;
9403        TSourceTokenList lcsourcetokenlist = pcst.container;
9404        TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
9405
9406        //subquery after semicolon || at first line
9407        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
9408        {
9409            k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
9410            if ( k >0 )
9411            {
9412                ret =  new TSelectSqlStatement(pdbvendor);
9413            }
9414
9415            return ret;
9416        }
9417
9418        //cte
9419        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
9420        {
9421            ret = findcte(pcst,pdbvendor);
9422            if ( (ret != null) )  return ret;
9423        }
9424
9425        gnewsqlstatementtype = findsybasecmd(pcst);
9426
9427        TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
9428        switch(gnewsqlstatementtype ) {   //
9429            case sstinvalid:
9430            {
9431                if ( pcst.tokencode == TBaseType.mslabel )
9432                {
9433                    ret =  new TMssqlLabel(pdbvendor);
9434                }
9435                else
9436                    ret = null;
9437
9438                break;
9439            }
9440            case sstselect:
9441            {
9442                lcisnewsql = true;
9443
9444                if ( pstate != EFindSqlStateType.stnormal )
9445                {
9446                    // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
9447                    if ( (lcprevsolidtoken != null) )
9448                    {
9449                        if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
9450                            lcisnewsql = false; //subqery
9451                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
9452                            lcisnewsql = false;
9453                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
9454                            lcisnewsql = false;
9455                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
9456                            lcisnewsql = false;
9457                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
9458                            lcisnewsql = false;
9459                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
9460                            lcisnewsql = false;
9461                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
9462                        {
9463                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
9464                                lcisnewsql = false;
9465                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
9466                                lcisnewsql = false;
9467                        }
9468                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
9469                        {
9470                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlset )
9471                                lcisnewsql = false;
9472                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqldeclare )
9473                                lcisnewsql = false;
9474                        }
9475
9476                        if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
9477                        {
9478                            lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
9479                            if ( (lcpprevsolidtoken != null) )
9480                            {
9481                                if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
9482                                    lcisnewsql = false;
9483                            }
9484                        }
9485
9486                    }
9487
9488                    if ( (lccurrentsqlstatement != null) )
9489                    {
9490                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
9491                        {
9492                        }
9493                        else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlgrant )
9494                        {
9495                            if ( (lcprevsolidtoken != null) )
9496                            {
9497                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_grant )
9498                                    lcisnewsql = false;
9499                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
9500                                    lcisnewsql = false;
9501                            }
9502                        } else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlrevoke )
9503                        {
9504                            if ( (lcprevsolidtoken != null) )
9505                            {
9506                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_revoke )
9507                                    lcisnewsql = false;
9508                            }
9509                        }else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview ){
9510                            lcisnewsql = false;
9511                        }
9512                    }
9513
9514                }
9515
9516                if ( lcisnewsql )
9517                    ret =  new TSelectSqlStatement(pdbvendor);
9518
9519                break;
9520
9521            }
9522            case sstinsert:
9523            {
9524                lcisnewsql = true;
9525                if ( pstate != EFindSqlStateType.stnormal )
9526                {
9527                    if ( (lccurrentsqlstatement != null) )
9528                    {
9529                        // merge
9530                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
9531                        {
9532                              if (lcprevsolidtoken != null)
9533                              {
9534                                  if (lcprevsolidtoken.tokencode == TBaseType.rrw_then)
9535                                  {lcisnewsql = false;}
9536                              }
9537                        }
9538
9539                        // bulk insert
9540                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlbulkinsert )
9541                        {
9542                            if ( (lcprevsolidtoken != null) )
9543                            {
9544                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_bulk )
9545                                    lcisnewsql = false;
9546                            }
9547                        }
9548
9549                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlgrant )
9550                        {
9551                            if ( (lcprevsolidtoken != null) )
9552                            {
9553                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_grant )
9554                                    lcisnewsql = false;
9555                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
9556                                    lcisnewsql = false;
9557                            }
9558                        }else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlrevoke ) {
9559                            if ( (lcprevsolidtoken != null) )
9560                            {
9561                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_revoke )
9562                                    lcisnewsql = false;
9563                            }
9564                        }
9565
9566                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetrigger )
9567                        {
9568                            if ( (lcprevsolidtoken != null) )
9569                            {
9570                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
9571                                    lcisnewsql = false;
9572                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
9573                                    lcisnewsql = false;
9574                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(),"after") == 0 )
9575                                    lcisnewsql = false;
9576                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(), "of") == 0 )
9577                                    lcisnewsql = false;
9578                            }
9579                        }
9580
9581
9582                    }
9583                }
9584
9585                if ( lcisnewsql )
9586                {
9587                    ret =  new TInsertSqlStatement(pdbvendor);
9588                    ret.dummytag = 1; //  select stmt in insert is permitted
9589                    for ( k = lcpos + 1; k < lcsourcetokenlist.size();k++ )    // iterate
9590                    {
9591                        if ( lcsourcetokenlist.get(k).isnonsolidtoken() ) continue;
9592                        if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_values ) break;
9593                        if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_go ) break;
9594                        if ( lcsourcetokenlist.get(k).tokentype == ETokenType.ttsemicolon ) break;
9595                        if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_select ) break;
9596                        if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_execute ) break;
9597                        if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_exec ) break;
9598                    }    // for (
9599                    if ( k > lcsourcetokenlist.size() - 1 )
9600                        k = lcsourcetokenlist.size() - 1;
9601
9602                    for ( int i = lcpos + 1; i <=  k; i++ )    // iterate
9603                    {
9604                        lcsourcetokenlist.get(i).tokenstatus = ETokenStatus.tsignoredbygetrawstatement;
9605                    }    // for (
9606
9607                }
9608
9609                break;
9610            }
9611            case sstsybaseInsertBulk:
9612            {
9613                ret =  new TInsertBulk(pdbvendor);
9614                break;
9615            }
9616            case sstupdate:
9617            {
9618                lcisnewsql = true;
9619                if ( pstate != EFindSqlStateType.stnormal )
9620                {
9621                    // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
9622                    if ( (lcprevsolidtoken != null) )
9623                    { //
9624                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
9625                            lcisnewsql = false;
9626                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
9627                            lcisnewsql = false;
9628                    }
9629
9630                    lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
9631                    if ( TBaseType.assigned(lcnextsolidtoken) )
9632                    {
9633                        if ( lcnextsolidtoken.tokentype == ETokenType.ttleftparenthesis)
9634                        {
9635                            k = lcsourcetokenlist.solidtokenafterpos(lcnextsolidtoken.posinlist,TBaseType.rrw_select,1,"(");
9636                            if ( k  == 0 ) lcisnewsql = false;
9637                        }
9638                    }
9639
9640
9641                    if ( TBaseType.assigned(lccurrentsqlstatement) )
9642                    {
9643                        // merge
9644                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
9645                        {
9646                              if (lcprevsolidtoken != null)
9647                              {
9648                                  if (lcprevsolidtoken.tokencode == TBaseType.rrw_then)
9649                                  {lcisnewsql = false;}
9650                              }
9651                        }
9652
9653                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlgrant )
9654                        {
9655                            if ( TBaseType.assigned(lcprevsolidtoken) )
9656                            {
9657                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_grant )
9658                                    lcisnewsql = false;
9659                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
9660                                    lcisnewsql = false;
9661                            }
9662                        }else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlrevoke )
9663                        {
9664                            if ( TBaseType.assigned(lcprevsolidtoken) )
9665                            {
9666                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_revoke )
9667                                    lcisnewsql = false;
9668                            }
9669                        }
9670                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetrigger )
9671                        {
9672                            if ( TBaseType.assigned(lcprevsolidtoken) )
9673                            {
9674                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
9675                                    lcisnewsql = false;
9676                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
9677                                    lcisnewsql = false;
9678                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(),"after") == 0 )
9679                                    lcisnewsql = false;
9680                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(), "of") == 0 )
9681                                    lcisnewsql = false;
9682                            }
9683                        }
9684
9685                    }
9686                }
9687
9688                if ( lcisnewsql )
9689                {
9690                    ret =  new TUpdateSqlStatement(pdbvendor);
9691                    ret.dummytag = 1; // means set clause in update is not found yet, used to seperate set clause from set statement
9692                }
9693
9694                break;
9695            }
9696            case sstdelete:
9697            {
9698                lcisnewsql = true;
9699
9700                if ( pstate != EFindSqlStateType.stnormal )
9701                {
9702                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
9703                    if ( TBaseType.assigned(lcprevsolidtoken) )
9704                    {
9705                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
9706                            lcisnewsql = false;
9707                    }
9708
9709                    if ( TBaseType.assigned(lccurrentsqlstatement) )
9710                    {
9711                        // merge
9712                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
9713                        {
9714                              if (lcprevsolidtoken != null)
9715                              {
9716                                  if (lcprevsolidtoken.tokencode == TBaseType.rrw_then)
9717                                  {lcisnewsql = false;}
9718                              }
9719                        }
9720
9721                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlgrant )
9722                        {
9723                            if ( TBaseType.assigned(lcprevsolidtoken) )
9724                            {
9725                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_grant )
9726                                    lcisnewsql = false;
9727                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
9728                                    lcisnewsql = false;
9729                            }
9730                        }else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlrevoke )
9731                        {
9732                            if ( TBaseType.assigned(lcprevsolidtoken) )
9733                            {
9734                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_revoke )
9735                                    lcisnewsql = false;
9736                            }
9737                        }
9738
9739                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetrigger )
9740                        {
9741                            if ( TBaseType.assigned(lcprevsolidtoken) )
9742                            {
9743                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
9744                                    lcisnewsql = false;
9745                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
9746                                    lcisnewsql = false;
9747                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(),"after") == 0 )
9748                                    lcisnewsql = false;
9749                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(), "of") == 0 )
9750                                    lcisnewsql = false;
9751                            }
9752                        }
9753
9754                    }
9755                }
9756
9757                if ( lcisnewsql )
9758                    ret =  new TDeleteSqlStatement(pdbvendor);
9759
9760                break;
9761            }
9762            case sstcreatetable:
9763            {
9764                ret =  new TCreateTableSqlStatement(pdbvendor);
9765                break;
9766            }
9767            case sstcreateview:
9768            {
9769                ret =  new TCreateViewSqlStatement(pdbvendor);
9770                break;
9771            }
9772            case sstaltertable:
9773            {
9774                ret =  new TAlterTableStatement(pdbvendor);
9775                break;
9776            }
9777            case sstmssqlfetch:
9778            {
9779                ret =  new TMssqlFetch(pdbvendor);
9780                break;
9781            }
9782            case sstmssqlif :
9783            {
9784                lcisnewsql = true;
9785                if ((lccurrentsqlstatement != null) && ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqldropprocedure ))
9786                {lcisnewsql = false;}
9787                if (lcisnewsql){
9788                    ret = new TMssqlIfElse(pdbvendor);
9789                    ret.dummytag = 1;// reduce to 0 while stmt find in 'if ( condtion stmt' || 'else stmt'
9790                }
9791
9792                break;
9793            }
9794            case sstmssqlwhile:
9795            {
9796                ret = new TMssqlIfElse(pdbvendor);
9797                ret.dummytag = 1;// reduce to 0 while stmt find in 'if ( condtion stmt' || 'else stmt'
9798                break;
9799            }
9800            case sstmssqlcreateprocedure :
9801            case sstmssqlalterprocedure:
9802            {
9803                ret = new TMssqlCreateProcedure(pdbvendor);
9804                break;
9805            }
9806            case sstmssqlcreatefunction :
9807            case sstmssqlalterfunction:
9808            {
9809                ret =  new TMssqlCreateFunction(pdbvendor);
9810                break;
9811            }
9812            case sstcreatetrigger :
9813            case sstmssqlaltertrigger:
9814            {
9815                ret =  new TCreateTriggerStmt(pdbvendor);
9816                break;
9817            }
9818            case sstmssqlreturn:
9819            {
9820                ret =  new TMssqlReturn(pdbvendor);
9821                break;
9822            }
9823            case sstmssqlprint:
9824            {
9825                ret =  new TMssqlPrint(pdbvendor);
9826                break;
9827            }
9828            case sstmssqluse:
9829            {
9830                ret =  new TUseDatabase(pdbvendor);
9831                break;
9832            }
9833            case sstmssqlgo:
9834            {
9835                ret =  new TMssqlGo(pdbvendor);
9836                break;
9837            }
9838            case sstmssqlrevert:
9839            {
9840                ret =  new TMssqlRevert(pdbvendor);
9841                break;
9842            }
9843            case sstmssqlgrant:
9844            {
9845                lcisnewsql = true;
9846                // prev tokentext can't be with
9847                if ( pstate != EFindSqlStateType.stnormal )
9848                {
9849                    if ( TBaseType.assigned(lcprevsolidtoken) )
9850                    {
9851                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_with )
9852                        {
9853                            ret = null;
9854                            lcisnewsql = false;
9855                        }
9856                    }
9857                }
9858                if ( lcisnewsql )
9859                {
9860                    ret =  new TGrantStmt(pdbvendor);
9861                    //ret.sqlstatementtype = gnewsqlstatementtype;
9862                    for ( k = lcpos + 1; k< lcsourcetokenlist.size();k++ )    // iterate
9863                    {
9864                        lctoken = lcsourcetokenlist.get(k);
9865                        if (lctoken.isnonsolidtoken() ) continue;
9866                        if ( lctoken.tokencode == TBaseType.rrw_go ) break;
9867                        if ( lctoken.tokentype == ETokenType.ttsemicolon ) break;
9868                        if ( lctoken.tokencode == TBaseType.rrw_to   ) break;
9869                        lctoken.tokenstatus = ETokenStatus.tsignoredbygetrawstatement;
9870                    }
9871                }
9872                break;
9873            }
9874            case sstmssqldeclare:
9875            {
9876                ret =  new TMssqlDeclare(pdbvendor);
9877                break;
9878            }
9879            case sstmssqlcontinue:
9880            {
9881                lcisnewsql = true;
9882                if ((lccurrentsqlstatement != null) && ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstload ))
9883                {lcisnewsql = false;}
9884                if (lcisnewsql){
9885                    ret =  new TMssqlContinue(pdbvendor);
9886                }
9887
9888                break;
9889            }
9890            case sstbreak:
9891            {
9892                ret =  new TBreakStmt(pdbvendor);
9893                break;
9894            }
9895            case sstmssqlopen:
9896            {
9897                ret =  new TMssqlOpen(pdbvendor);
9898                break;
9899            }
9900            case sstmssqlclose:
9901            {
9902                ret =  new TMssqlClose(pdbvendor);
9903                break;
9904            }
9905            case sstmssqlbulkinsert:
9906            {
9907                ret =  new TMssqlBulkInsert(pdbvendor);
9908                break;
9909            }
9910            case sstmssqldeallocate:
9911            {
9912                ret =  new TMssqlDeallocate(pdbvendor);
9913                break;
9914            }
9915            case sstmssqlraiserror:
9916            {
9917                ret =  new TMssqlRaiserror(pdbvendor);
9918                break;
9919            }
9920            case sstmssqlgoto:
9921            {
9922                ret =  new TMssqlGoTo(pdbvendor);
9923                break;
9924            }
9925            case sstmssqldropview:
9926            {
9927                ret =  new TDropViewSqlStatement(pdbvendor);
9928                break;
9929            }
9930            case sstmssqldroptable:
9931            {
9932                ret =  new TDropTableSqlStatement(pdbvendor);
9933                break;
9934            }
9935            case sstmssqldropindex:
9936            {
9937                ret =  new TDropIndexSqlStatement(pdbvendor);
9938                break;
9939            }
9940            case sstmssqldroppartitionscheme :
9941                ret = new TDropPartitionSchemeStmt(pdbvendor);
9942                break;
9943
9944            case sstmssqldropaggregate :
9945            case sstmssqldropapplicationrole :
9946            case sstmssqldropassembly :
9947            case sstmssqldropasymmetrickey :
9948            case sstmssqldropcertificate :
9949            case sstmssqldropcontract :
9950            case sstmssqldropcredential :
9951            case sstmssqldropdefault :
9952            case sstmssqldropendpoint :
9953            case sstmssqldropeventnotification :
9954            case sstmssqldropfulltextcatalog :
9955            case sstmssqldropfulltextindex :
9956            case sstmssqldropfunction :
9957            case sstmssqldroplogin :
9958            case sstmssqldropmasterkey :
9959            case sstmssqldropmessagetype :
9960            case sstmssqldroppartitionfunction :
9961            case sstmssqldropprocedure :
9962            case sstmssqldropqueue :
9963            case sstmssqldropremoteservicebinding :
9964            case sstmssqldroprole :
9965            case sstmssqldroproute :
9966            case sstmssqldroprule :
9967            case sstmssqldropschema :
9968            case sstmssqldropservice :
9969            case sstmssqldropsignature:
9970            case sstmssqldropstatistics :
9971            case sstmssqldropsymmetrickey :
9972            case sstmssqldroptrigger :
9973            case sstmssqldroptype :
9974            case sstmssqldropuser :
9975            case sstmssqldropxmlschemacollection:
9976            case sstmssqldropdatabase :
9977            {
9978                ret =  new TMssqlDropDbObject(EDbVendor.dbvsybase);
9979                ret.sqlstatementtype = gnewsqlstatementtype;
9980                break;
9981            }
9982            case sstmssqldropsynonym :
9983            {
9984                ret =  new TDropSynonymStmt(pdbvendor);
9985                break;
9986            }
9987            case sstmssqltruncatetable:
9988            {
9989                ret =  new TTruncateStatement(pdbvendor);
9990                break;
9991            }
9992            case sstmssqlbegintran:
9993            {
9994                ret =  new TBeginTran(pdbvendor);
9995                break;
9996            }
9997            case sstmssqlsavetran:
9998            {
9999                ret =  new TMssqlSaveTran(pdbvendor);
10000                break;
10001            }
10002            case sstmssqlcommit:
10003            {
10004                lcisnewsql = true;
10005
10006                if ( TBaseType.assigned(lcprevsolidtoken) )
10007                {
10008                    if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
10009                    {
10010
10011                        lcisnewsql = false;
10012                    }
10013                }
10014
10015                if (lcisnewsql){
10016                    ret =  new TMssqlCommit(pdbvendor);
10017                }
10018
10019                break;
10020            }
10021            case sstmssqlrollback:
10022            {
10023                ret =  new TMssqlRollback(pdbvendor);
10024                break;
10025            }
10026            case sstmssqlreadtext :
10027            case sstmssqldbcc :
10028            case sstmssqlrestore :
10029            case sstmssqlbackup :
10030            {
10031                ret = new TMssqlDummyStmt(pdbvendor);
10032                ret.sqlstatementtype = gnewsqlstatementtype;
10033                break;
10034            }
10035            case sstcreateindex:
10036            {
10037                ret =  new TCreateIndexSqlStatement(pdbvendor);
10038                break;
10039            }
10040            case sstmssqlwaitfor:
10041            {
10042                ret =  new TMssqlWaitFor(pdbvendor);
10043                break;
10044            }
10045            case sstmerge:
10046            {
10047                lcisnewsql = true;
10048
10049                if (pstate != EFindSqlStateType.stnormal)
10050                {
10051
10052                    if (lccurrentsqlstatement != null)
10053                    {
10054                        // merge union, merge join
10055                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstselect)
10056                        {
10057                                    lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
10058                                    if (lcnextsolidtoken != null)
10059                                       {
10060                                        if ((lcnextsolidtoken.tokencode == TBaseType.rrw_union) || (lcnextsolidtoken.tokencode == TBaseType.rrw_join))
10061                                           {
10062                                              lcisnewsql = false;
10063                                           }
10064                                        }
10065                        }
10066
10067                    }
10068
10069                    TSourceToken lcnexttoken = lcsourcetokenlist.nextsolidtoken(lcpos, 1, false);
10070                    if ( (lcnexttoken != null) )
10071                    {
10072                        if ( lcnexttoken.tokencode == TBaseType.rrw_sybase_partition )
10073                            lcisnewsql = false;
10074                    }
10075
10076                }
10077
10078                if (lcisnewsql)
10079                {
10080                    ret = new TMergeSqlStatement(pdbvendor);
10081                    ret.sqlstatementtype = gnewsqlstatementtype;
10082                }
10083
10084                break;
10085            }
10086            case sstmssqlbegintry :
10087            case sstmssqlbegincatch:
10088            {
10089                ret =  new TMssqlBlock(pdbvendor);
10090                ret.sqlstatementtype = gnewsqlstatementtype;
10091                break;
10092            }
10093            case sstmssqlexec:
10094            {
10095                lcisnewsql = true;
10096                // prev tokentext can't be with
10097                if ( pstate != EFindSqlStateType.stnormal )
10098                {
10099                    if ( TBaseType.assigned(lccurrentsqlstatement) )
10100                    {
10101                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
10102                        {
10103                            if ( lccurrentsqlstatement.dummytag == 1 )
10104                            {
10105                                lcisnewsql = false;
10106                                lccurrentsqlstatement.dummytag = 0; // no select is permited after it
10107                            }
10108                        }
10109
10110                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlgrant )
10111                        {
10112                            if ( TBaseType.assigned(lcprevsolidtoken) )
10113                            {
10114                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_grant )
10115                                    lcisnewsql = false;
10116                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
10117                                    lcisnewsql = false;
10118                            }
10119                        }else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlrevoke ){
10120                            if ( TBaseType.assigned(lcprevsolidtoken) )
10121                            {
10122                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_revoke )
10123                                    lcisnewsql = false;
10124                            }
10125                        }
10126
10127
10128
10129                        if (
10130                                (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlcreateprocedure)
10131                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetrigger)
10132                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlcreatefunction)
10133                                        ||(lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlalterprocedure)
10134                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlaltertrigger)
10135                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlalterfunction)
10136                                )
10137                        {
10138                            if ( TBaseType.assigned(lcprevsolidtoken) )
10139                            {
10140                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_with )
10141                                    lcisnewsql = false;
10142                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
10143                                    lcisnewsql = false;
10144                            }
10145                        }
10146                    }
10147                }
10148                if ( lcisnewsql )
10149                {
10150                    ret =  new TMssqlExecute(pdbvendor);
10151                }
10152                break;
10153            }
10154            case sstmssqlexecuteas:
10155            {
10156                lcisnewsql = true;
10157                // prev tokentext can't be with
10158                if ( pstate != EFindSqlStateType.stnormal )
10159                {
10160                    if ( TBaseType.assigned(lccurrentsqlstatement) )
10161                    {
10162                        if (
10163                                (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlcreateprocedure)
10164                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetrigger)
10165                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlcreatefunction)
10166                                        ||(lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlalterprocedure)
10167                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlaltertrigger)
10168                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlalterfunction)
10169                                )
10170                        {
10171                            if ( TBaseType.assigned(lcprevsolidtoken) )
10172                            {
10173                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_with )
10174                                    lcisnewsql = false;
10175                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
10176                                    lcisnewsql = false;
10177                            }
10178                        }
10179                    }
10180                }
10181                if ( lcisnewsql )
10182                {
10183                    ret =  new TMssqlExecuteAs(pdbvendor);
10184                    ret.sqlstatementtype = gnewsqlstatementtype;
10185                }
10186                break;
10187            }
10188            case sstmssqlset:
10189            {
10190                lcisnewsql = true;
10191                if ( pstate != EFindSqlStateType.stnormal )
10192                {
10193                    if ( TBaseType.assigned(lccurrentsqlstatement) )
10194                    {
10195
10196                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlif)
10197                        {
10198                             TSourceToken lcPPToken = lcsourcetokenlist.searchToken(TBaseType.rrw_update,"",pcst,-10);
10199                             if (TBaseType.assigned(lcPPToken))
10200                            {
10201                                  lcisnewsql = false;
10202                            }
10203                        }
10204
10205                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
10206                        {
10207                              if (lcprevsolidtoken != null)
10208                              {
10209                                  if (lcprevsolidtoken.tokencode == TBaseType.rrw_update){
10210                                    lcisnewsql = false;}
10211                              }
10212                        }
10213
10214                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstupdate )
10215                        {
10216                            if ( lccurrentsqlstatement.dummytag == 1 )
10217                            {
10218                                //update statement still find set clause yet, so this is setclause in update statement
10219                                lccurrentsqlstatement.dummytag = 0;
10220                                lcisnewsql = false;
10221                            }
10222                        }
10223                    }
10224
10225                    lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
10226                    if ( TBaseType.assigned(lcnextsolidtoken) )
10227                    { //set null, set default
10228                        if ( (TBaseType.mycomparetext(lcnextsolidtoken.getAstext(),"null")==0)
10229                                || (TBaseType.mycomparetext(lcnextsolidtoken.getAstext(), "default")==0) )
10230                        {
10231                            lcisnewsql = false;
10232                        }
10233                    }
10234
10235                }
10236
10237                if ( lcisnewsql )
10238                {
10239                    ret =  new TMssqlSet(pdbvendor);
10240                }
10241
10242                break;
10243            }
10244            case sstmssqlupdatetext:
10245            {
10246                ret =  new TMssqlUpdateText(pdbvendor);
10247                break;
10248            }
10249            case sstmssqlendconversation:
10250            {
10251                ret =  new TMssqlEndConversation(pdbvendor);
10252                break;
10253            }
10254            case sstmssqlbegindialog:
10255            {
10256                ret =  new TMssqlBeginDialog(pdbvendor);
10257                break;
10258            }
10259            case sstmssqlsendonconversation:
10260            {
10261                ret =  new TMssqlSendOnConversation(pdbvendor);
10262                break;
10263            }
10264            case sstmssqldisabletrigger :
10265            case sstmssqlenabletrigger:
10266            {
10267                lcisnewsql = true;
10268                if ( TBaseType.assigned(lccurrentsqlstatement) )
10269                {
10270                    if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstaltertable )
10271                        lcisnewsql = false;
10272                }
10273
10274                if ( lcisnewsql )
10275                {
10276                    ret =  new TDisableEnableTriggerStmt(pdbvendor);
10277                    ret.sqlstatementtype = gnewsqlstatementtype;
10278                }
10279                break;
10280            }
10281            case sstsybaseWritetext:
10282            {
10283                ret =  new TSybaseWritetext(pdbvendor);
10284                break;
10285            }
10286            case sstsybaseDeleteStatistics:
10287            {
10288                ret = new TSybaseDeleteStatistics(pdbvendor);
10289                break;
10290            }
10291            case sstcall:
10292            {
10293                ret = new TCallStatement(pdbvendor);
10294                break;
10295            }
10296            default:
10297            {
10298                ret =  new TUnknownSqlStatement(pdbvendor);
10299                ret.sqlstatementtype = gnewsqlstatementtype;
10300                break;
10301            }
10302        }    // case
10303
10304        return ret;
10305    }
10306
10307    TCustomSqlStatement ismssqlsql(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
10308        TCustomSqlStatement ret = null;
10309        int k;
10310        boolean lcisnewsql;
10311        TSourceToken lcpprevsolidtoken,lcnextsolidtoken,lctoken;
10312
10313        gnewsqlstatementtype = ESqlStatementType.sstinvalid;
10314
10315        if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
10316                || (pcst.tokencode  == TBaseType.cmtslashstar)
10317                || (pcst.tokencode  == TBaseType.lexspace)
10318                || (pcst.tokencode  == TBaseType.lexnewline)
10319                || (pcst.tokentype == ETokenType.ttsemicolon) )
10320        {
10321            return ret;
10322        }
10323
10324        int lcpos = pcst.posinlist;
10325        TSourceTokenList lcsourcetokenlist = pcst.container;
10326        TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
10327
10328        //subquery after semicolon or at first line
10329        if ( pcst.tokentype == ETokenType.ttleftparenthesis)  // (
10330        {
10331            k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
10332            if ( k >0 )
10333            {
10334                if (pstate == EFindSqlStateType.stnormal){
10335                    ret =  new TSelectSqlStatement(pdbvendor);
10336                    return ret;
10337                }
10338//                if (((lccurrentsqlstatement != null) )&&(lccurrentsqlstatement.sqlstatementtype != ESqlStatementType.sstselect)&&(lcsourcetokenlist.returnbeforecurtoken(true))){
10339//                    ret =  new TSelectSqlStatement(pdbvendor);
10340//                    return ret;
10341//                }
10342            }
10343        }
10344
10345        //cte
10346        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
10347        {
10348            ret = findcte(pcst,pdbvendor);
10349            if ( (ret != null) )  return ret;
10350        }
10351
10352        if ( (lccurrentsqlstatement != null) && (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable)
10353                && (pcst.tokencode == TBaseType.rrw_with) )
10354        {
10355            TSourceToken lcPrevToken = pcst.prevSolidToken();
10356            if ((lcPrevToken != null) && (lcPrevToken.tokencode == TBaseType.rrw_as))
10357            { // mantisbt/view.php?id=3900, create table with as select, ignore tokens from with to select (including the select token)
10358                ret = findcte(pcst,pdbvendor);
10359                if ( (ret != null) )  {
10360                    ret = null;
10361                }
10362            }
10363        }
10364
10365        //odbc
10366        if ( (pstate == EFindSqlStateType.stnormal) && ((pcst.tokencode == '{')||(pcst.tokencode == TBaseType.odbc_esc_prefix)) && (pcst.getLinkToken() != null)  )
10367        {
10368            ret = new TCallStatement(pdbvendor);
10369            return ret;
10370        }
10371
10372        gnewsqlstatementtype = findmssqlcmd(pcst);
10373
10374        TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
10375        switch(gnewsqlstatementtype ) {   //
10376            case sstinvalid:
10377            {
10378                if ( pcst.tokencode == TBaseType.mslabel )
10379                {
10380                    ret =  new TMssqlLabel(pdbvendor);
10381                }
10382                else
10383                    ret = null;
10384
10385                break;
10386            }
10387            case sstselect:
10388            {
10389                lcisnewsql = true;
10390
10391                if ( pstate != EFindSqlStateType.stnormal )
10392                {
10393                    // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
10394                    if ( (lcprevsolidtoken != null) )
10395                    {
10396                        if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
10397                            lcisnewsql = false; //subqery
10398                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
10399                            lcisnewsql = false;
10400                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
10401                            lcisnewsql = false;
10402                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
10403                            lcisnewsql = false;
10404                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
10405                            lcisnewsql = false;
10406                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
10407                            lcisnewsql = false;
10408                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
10409                        {
10410                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
10411                                lcisnewsql = false;
10412                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
10413                                lcisnewsql = false;
10414                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstalterview )
10415                                lcisnewsql = false;
10416                        }
10417                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
10418                        {
10419                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlset )
10420                                lcisnewsql = false;
10421                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqldeclare )
10422                                lcisnewsql = false;
10423                        }
10424
10425                        if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
10426                        {
10427                            lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
10428                            if ( (lcpprevsolidtoken != null) )
10429                            {
10430                                if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
10431                                    lcisnewsql = false;
10432                            }
10433                        }
10434
10435                    }
10436
10437                    if ( (lccurrentsqlstatement != null) )
10438                    {
10439                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
10440                        {
10441                        }
10442                        else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlgrant )
10443                        {
10444                            if ( (lcprevsolidtoken != null) )
10445                            {
10446                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_grant )
10447                                    lcisnewsql = false;
10448                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
10449                                    lcisnewsql = false;
10450                            }
10451                        }else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview ){
10452                            lcisnewsql = false;
10453                        }else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatematerializedview ){
10454                            lcisnewsql = false;
10455                        }
10456                    }
10457
10458                }
10459
10460                if ( lcisnewsql )
10461                    ret =  new TSelectSqlStatement(pdbvendor);
10462
10463                break;
10464
10465            }
10466            case sstinsert:
10467            {
10468                lcisnewsql = true;
10469                if ( pstate != EFindSqlStateType.stnormal )
10470                {
10471                    if ( (lccurrentsqlstatement != null) )
10472                    {
10473                        // merge
10474                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
10475                        {
10476                              if (lcprevsolidtoken != null)
10477                              {
10478                                  if (lcprevsolidtoken.tokencode == TBaseType.rrw_then)
10479                                  {lcisnewsql = false;}
10480                              }
10481                        }
10482
10483                        // bulk insert
10484                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlbulkinsert )
10485                        {
10486                            if ( (lcprevsolidtoken != null) )
10487                            {
10488                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_bulk )
10489                                    lcisnewsql = false;
10490                            }
10491                        }
10492
10493                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlgrant )
10494                        {
10495                            if ( (lcprevsolidtoken != null) )
10496                            {
10497                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_grant )
10498                                    lcisnewsql = false;
10499                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
10500                                    lcisnewsql = false;
10501                            }
10502                        }
10503
10504                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetrigger )
10505                        {
10506                            if ( (lcprevsolidtoken != null) )
10507                            {
10508                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
10509                                    lcisnewsql = false;
10510                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
10511                                    lcisnewsql = false;
10512                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(),"after") == 0 )
10513                                    lcisnewsql = false;
10514                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(), "of") == 0 )
10515                                    lcisnewsql = false;
10516                            }
10517                        }
10518
10519
10520                    }
10521                }
10522
10523                if ( lcisnewsql )
10524                {
10525                    ret =  new TInsertSqlStatement(pdbvendor);
10526                    ret.dummytag = 1; //  select stmt in insert is permitted
10527                    for ( k = lcpos + 1; k < lcsourcetokenlist.size();k++ )    // iterate
10528                    {
10529                        if ( lcsourcetokenlist.get(k).isnonsolidtoken() ) continue;
10530                        if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_values ) break;
10531                        if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_go ) break;
10532                        if ( lcsourcetokenlist.get(k).tokentype == ETokenType.ttsemicolon ) break;
10533                        if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_select ){
10534                            ret.dummytag = 0;
10535                            break;
10536                        }
10537                        if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_execute ) break;
10538                        if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_exec ) break;
10539                    }    // for (
10540                    if ( k > lcsourcetokenlist.size() - 1 )
10541                        k = lcsourcetokenlist.size() - 1;
10542
10543                    for ( int i = lcpos + 1; i <=  k; i++ )    // iterate
10544                    {
10545                        lcsourcetokenlist.get(i).tokenstatus = ETokenStatus.tsignoredbygetrawstatement;
10546                    }    // for (
10547
10548                }
10549
10550                break;
10551            }
10552            case sstupdate:
10553            {
10554                lcisnewsql = true;
10555                if ( pstate != EFindSqlStateType.stnormal )
10556                {
10557                    // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
10558                    if ( (lcprevsolidtoken != null) )
10559                    { //
10560                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
10561                            lcisnewsql = false;
10562                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
10563                            lcisnewsql = false;
10564                    }
10565
10566                    lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
10567                    if ( TBaseType.assigned(lcnextsolidtoken) )
10568                    {
10569                        if ( lcnextsolidtoken.tokentype == ETokenType.ttleftparenthesis)
10570                        {
10571                            k = lcsourcetokenlist.solidtokenafterpos(lcnextsolidtoken.posinlist,TBaseType.rrw_select,1,"(");
10572                            if ( k  == 0 ) lcisnewsql = false;
10573                        }
10574                    }
10575
10576
10577                    if ( TBaseType.assigned(lccurrentsqlstatement) )
10578                    {
10579                        // merge
10580                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
10581                        {
10582                              if (lcprevsolidtoken != null)
10583                              {
10584                                  if (lcprevsolidtoken.tokencode == TBaseType.rrw_then)
10585                                  {lcisnewsql = false;}
10586                              }
10587                        }
10588
10589                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlgrant )
10590                        {
10591                            if ( TBaseType.assigned(lcprevsolidtoken) )
10592                            {
10593                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_grant )
10594                                    lcisnewsql = false;
10595                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
10596                                    lcisnewsql = false;
10597                            }
10598                        }
10599                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetrigger )
10600                        {
10601                            if ( TBaseType.assigned(lcprevsolidtoken) )
10602                            {
10603                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
10604                                    lcisnewsql = false;
10605                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
10606                                    lcisnewsql = false;
10607                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(),"after") == 0 )
10608                                    lcisnewsql = false;
10609                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(), "of") == 0 )
10610                                    lcisnewsql = false;
10611                            }
10612                        }
10613
10614                    }
10615                }
10616
10617                if ( lcisnewsql )
10618                {
10619                    ret =  new TUpdateSqlStatement(pdbvendor);
10620                    ret.dummytag = 1; // means set clause in update is not found yet, used to separate set clause from set statement
10621                }
10622
10623                break;
10624            }
10625            case sstdelete:
10626            {
10627                lcisnewsql = true;
10628
10629                if ( pstate != EFindSqlStateType.stnormal )
10630                {
10631                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
10632                    if ( TBaseType.assigned(lcprevsolidtoken) )
10633                    {
10634                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
10635                            lcisnewsql = false;
10636                    }
10637
10638                    if ( TBaseType.assigned(lccurrentsqlstatement) )
10639                    {
10640                        // merge
10641                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
10642                        {
10643                              if (lcprevsolidtoken != null)
10644                              {
10645                                  if (lcprevsolidtoken.tokencode == TBaseType.rrw_then)
10646                                  {lcisnewsql = false;}
10647                              }
10648                        }
10649
10650                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlgrant )
10651                        {
10652                            if ( TBaseType.assigned(lcprevsolidtoken) )
10653                            {
10654                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_grant )
10655                                    lcisnewsql = false;
10656                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
10657                                    lcisnewsql = false;
10658                            }
10659                        }
10660
10661                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetrigger )
10662                        {
10663                            if ( TBaseType.assigned(lcprevsolidtoken) )
10664                            {
10665                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
10666                                    lcisnewsql = false;
10667                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
10668                                    lcisnewsql = false;
10669                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(),"after") == 0 )
10670                                    lcisnewsql = false;
10671                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(), "of") == 0 )
10672                                    lcisnewsql = false;
10673                            }
10674                        }
10675
10676                    }
10677                }
10678
10679                if ( lcisnewsql )
10680                    ret =  new TDeleteSqlStatement(pdbvendor);
10681
10682                break;
10683            }
10684            case sstcreatetable:
10685            {
10686                lcisnewsql = true;
10687                if ( pstate != EFindSqlStateType.stnormal ) {
10688
10689                    if (TBaseType.assigned(lccurrentsqlstatement)) {
10690                        if ((lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateschema)
10691                                )
10692                        {
10693                            lcisnewsql = false;
10694                        }
10695                    }
10696                }
10697
10698                if (lcisnewsql) {
10699                    ret = new TCreateTableSqlStatement(pdbvendor);
10700
10701                }
10702                break;
10703            }
10704            case sstcreateview:
10705            {
10706
10707                lcisnewsql = true;
10708                if ( pstate != EFindSqlStateType.stnormal ) {
10709
10710                    if (TBaseType.assigned(lccurrentsqlstatement)) {
10711                        if ((lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateschema)
10712                                )
10713                        {
10714                            lcisnewsql = false;
10715                        }
10716                    }
10717                }
10718                if (lcisnewsql) {
10719                    ret =  new TCreateViewSqlStatement(pdbvendor);
10720                }
10721                break;
10722            }
10723            case sstcreatesequence:
10724              {
10725                ret = new TCreateSequenceStmt(pdbvendor);
10726                  break;
10727              }
10728            case sstaltertable:
10729            {
10730                ret =  new TAlterTableStatement(pdbvendor);
10731                break;
10732            }
10733            case sstmssqlfetch:
10734            {
10735                ret =  new TMssqlFetch(pdbvendor);
10736                break;
10737            }
10738            case sstmssqlif :
10739            {
10740                lcisnewsql = true;
10741                if ( pstate != EFindSqlStateType.stnormal ) {
10742
10743                    if (TBaseType.assigned(lccurrentsqlstatement)) {
10744                        // merge
10745                        if (
10746                            (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstdropprocedure)
10747                                ||(lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstdropdatabase)
10748                                    ||(lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstdropfunction)
10749                                    ||(lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlDropSecurityPolicy)
10750                                )
10751                        {
10752                            lcisnewsql = false;
10753                        }else if ( (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstdroptable)
10754                                ||(lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstdropindex)
10755                                ||(lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable)
10756                                ||(lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstdropsynonym)
10757                                ||(lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstdropview)
10758                                ||(lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstdropsequence)
10759                        ){
10760                            // DROP TABLE IF EXISTS T1;
10761                            TSourceToken st = lcsourcetokenlist.solidtokenbefore(lcpos);
10762                            if ((st.tokencode == TBaseType.rrw_table)||(st.tokencode == TBaseType.rrw_index)
10763                                ||(st.tokencode == TBaseType.rrw_sqlserver_synonym)||(st.tokencode == TBaseType.rrw_view)
10764                                ||(st.tokencode == TBaseType.rrw_sqlserver_sequence)
10765                                ){
10766                                lcisnewsql = false;
10767                            }
10768                        }else if ((lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstaltertable)){
10769                            lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
10770                            if (lcnextsolidtoken != null){
10771                                if (lcnextsolidtoken.tokencode == TBaseType.rrw_sqlserver_exists){
10772                                    lcisnewsql = false;
10773                                }
10774                            }
10775                        }
10776                    }
10777                }
10778
10779
10780                if (lcisnewsql) {
10781                    ret = new TMssqlIfElse(pdbvendor);
10782                    ret.dummytag = 1;// reduce to 0 while stmt find in 'if ( condtion stmt' || 'else stmt'
10783                }
10784                break;
10785            }
10786            case sstmssqlwhile:
10787            {
10788                ret = new TMssqlIfElse(pdbvendor);
10789                ret.dummytag = 1;// reduce to 0 while stmt find in 'if ( condtion stmt' || 'else stmt'
10790                break;
10791            }
10792            case sstmssqlcreateprocedure :
10793            case sstmssqlalterprocedure:
10794            {
10795                ret = new TMssqlCreateProcedure(pdbvendor);
10796                break;
10797            }
10798            case sstmssqlcreatefunction :
10799            case sstmssqlalterfunction:
10800            {
10801                ret =  new TMssqlCreateFunction(pdbvendor);
10802                break;
10803            }
10804            case sstcreatetrigger :
10805            case sstmssqlaltertrigger:
10806            {
10807                ret =  new TCreateTriggerStmt(pdbvendor); //TMssqlCreateTrigger(pdbvendor);
10808                break;
10809            }
10810            case sstmssqlreturn:
10811            {
10812                ret =  new TMssqlReturn(pdbvendor);
10813                break;
10814            }
10815            case sstmssqlprint:
10816            {
10817                if (pdbvendor == EDbVendor.dbvodbc){
10818
10819                }else if (pdbvendor == EDbVendor.dbvmssql){
10820                    ret =  new TMssqlPrint(pdbvendor);
10821                }
10822
10823                break;
10824            }
10825            case sstmssqluse:
10826            {
10827                ret =  new TUseDatabase(pdbvendor);
10828                break;
10829            }
10830            case sstmssqlgo:
10831            {
10832                ret =  new TMssqlGo(pdbvendor);
10833                break;
10834            }
10835            case sstmssqlrevert:
10836            {
10837                lcisnewsql = true;
10838                // prev tokentext can't be with
10839                if ( pstate != EFindSqlStateType.stnormal ) {
10840                    if (TBaseType.assigned(lcprevsolidtoken)) {
10841                        if (lcprevsolidtoken.toString().equalsIgnoreCase("no")) {
10842                            ret = null;
10843                            lcisnewsql = false;
10844                        }
10845                    }
10846                }
10847                if (lcisnewsql){
10848                    ret =  new TMssqlRevert(pdbvendor);
10849                }
10850
10851                break;
10852            }
10853            case sstmssqlgrant:
10854            {
10855                lcisnewsql = true;
10856                // prev tokentext can't be with
10857                if ( pstate != EFindSqlStateType.stnormal )
10858                {
10859                    if ( TBaseType.assigned(lcprevsolidtoken) )
10860                    {
10861                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_with )
10862                        {
10863                            ret = null;
10864                            lcisnewsql = false;
10865                        }
10866                    }
10867
10868                    if((lcisnewsql)&&(TBaseType.assigned(lccurrentsqlstatement))) {
10869                        if ((lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateschema)
10870                                )
10871                        {
10872                            lcisnewsql = false;
10873                        }
10874                    }
10875                }
10876                if ( lcisnewsql )
10877                {
10878                    ret =  new TGrantStmt(pdbvendor);
10879                    //ret.sqlstatementtype = gnewsqlstatementtype;
10880                    for ( k = lcpos + 1; k< lcsourcetokenlist.size();k++ )    // iterate
10881                    {
10882                        lctoken = lcsourcetokenlist.get(k);
10883                        if (lctoken.isnonsolidtoken() ) continue;
10884                        if ( lctoken.tokencode == TBaseType.rrw_go ) break;
10885                        if ( lctoken.tokentype == ETokenType.ttsemicolon ) break;
10886                        if ( lctoken.tokencode == TBaseType.rrw_to   ) break;
10887                        lctoken.tokenstatus = ETokenStatus.tsignoredbygetrawstatement;
10888                    }
10889                }
10890                break;
10891            }
10892            case sstmssqlrevoke:{
10893                lcisnewsql = true;
10894                if ( pstate != EFindSqlStateType.stnormal )
10895                {
10896                    if((lcisnewsql)&&(TBaseType.assigned(lccurrentsqlstatement))) {
10897                        if ((lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateschema)
10898                                )
10899                        {
10900                            lcisnewsql = false;
10901                        }
10902                    }
10903                }
10904                if ( lcisnewsql )
10905                {
10906                    ret =  new TRevokeStmt(pdbvendor);
10907                    for ( k = lcpos + 1; k< lcsourcetokenlist.size();k++ )    // iterate
10908                    {
10909                        lctoken = lcsourcetokenlist.get(k);
10910                        if (lctoken.isnonsolidtoken() ) continue;
10911                        if ( lctoken.tokencode == TBaseType.rrw_go ) break;
10912                        if ( lctoken.tokentype == ETokenType.ttsemicolon ) break;
10913                        if ( lctoken.tokencode == TBaseType.rrw_to   ) break;
10914                        lctoken.tokenstatus = ETokenStatus.tsignoredbygetrawstatement;
10915                    }
10916                }
10917                break;
10918
10919            }
10920            case sstmssqldeny:
10921            {
10922                lcisnewsql = true;
10923                if ( pstate != EFindSqlStateType.stnormal )
10924                {
10925                    if((lcisnewsql)&&(TBaseType.assigned(lccurrentsqlstatement))) {
10926                        if ((lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateschema)
10927                                )
10928                        {
10929                            lcisnewsql = false;
10930                        }
10931                    }
10932                }
10933                if ( lcisnewsql )
10934                {
10935                    ret =  new TDenyStmt(pdbvendor);
10936                    for ( k = lcpos + 1; k< lcsourcetokenlist.size();k++ )    // iterate
10937                    {
10938                        lctoken = lcsourcetokenlist.get(k);
10939                        if (lctoken.isnonsolidtoken() ) continue;
10940                        if ( lctoken.tokencode == TBaseType.rrw_go ) break;
10941                        if ( lctoken.tokentype == ETokenType.ttsemicolon ) break;
10942                        if ( lctoken.tokencode == TBaseType.rrw_to   ) break;
10943                        lctoken.tokenstatus = ETokenStatus.tsignoredbygetrawstatement;
10944                    }
10945                }
10946                break;
10947            }
10948            case sstmssqldeclare:
10949            {
10950                ret =  new TMssqlDeclare(pdbvendor);
10951                break;
10952            }
10953            case sstmssqlcontinue:
10954            {
10955                ret =  new TMssqlContinue(pdbvendor);
10956                break;
10957            }
10958            case sstbreak:
10959            {
10960                ret =  new TBreakStmt(pdbvendor);
10961                break;
10962            }
10963            case sstmssqlopen:
10964            {
10965                ret =  new TMssqlOpen(pdbvendor);
10966                break;
10967            }
10968            case sstmssqlclose:
10969            {
10970                ret =  new TMssqlClose(pdbvendor);
10971                break;
10972            }
10973            case sstmssqlbulkinsert:
10974            {
10975                ret =  new TMssqlBulkInsert(pdbvendor);
10976                break;
10977            }
10978            case sstmssqldeallocate:
10979            {
10980                ret =  new TMssqlDeallocate(pdbvendor);
10981                break;
10982            }
10983            case sstmssqlraiserror:
10984            {
10985                ret =  new TMssqlRaiserror(pdbvendor);
10986                break;
10987            }
10988            case sstmssqlgoto:
10989            {
10990                ret =  new TMssqlGoTo(pdbvendor);
10991                break;
10992            }
10993            case sstmssqldropview:
10994            {
10995                ret =  new TDropViewSqlStatement(pdbvendor);
10996                break;
10997            }
10998            case sstmssqldroptable:
10999            {
11000                ret =  new TDropTableSqlStatement(pdbvendor);
11001                break;
11002            }
11003            case sstmssqldropindex:
11004            {
11005                ret =  new TDropIndexSqlStatement(pdbvendor);
11006                break;
11007            }
11008            case sstmssqldroppartitionscheme :
11009                ret = new TDropPartitionSchemeStmt(pdbvendor);
11010                break;
11011            case sstmssqldropaggregate :
11012            case sstmssqldropapplicationrole :
11013            case sstmssqldropassembly :
11014            case sstmssqldropasymmetrickey :
11015            case sstmssqldropcertificate :
11016            case sstmssqldropcontract :
11017            case sstmssqldropcredential :
11018            case sstmssqldropdefault :
11019            case sstmssqldropendpoint :
11020            case sstmssqldropeventnotification :
11021            case sstmssqldropfulltextcatalog :
11022            case sstmssqldropfulltextindex :
11023            case sstmssqldroplogin :
11024            case sstmssqldropmasterkey :
11025            case sstmssqldropmessagetype :
11026            case sstmssqldroppartitionfunction :
11027            case sstmssqldropqueue :
11028            case sstmssqldropremoteservicebinding :
11029            case sstmssqldroprole :
11030            case sstmssqldroproute :
11031            case sstmssqldroprule :
11032            case sstmssqldropservice :
11033            case sstmssqldropsignature:
11034            case sstmssqldropstatistics :
11035            case sstmssqldropsymmetrickey :
11036            case sstmssqldroptrigger :
11037            case sstmssqldroptype :
11038            case sstmssqldropuser :
11039            case sstmssqldropxmlschemacollection:
11040            case sstmssqldropeventsession:
11041            {
11042                ret =  new TMssqlDropDbObject(EDbVendor.dbvmssql);
11043                ret.sqlstatementtype = gnewsqlstatementtype;
11044                break;
11045            }
11046            case sstmssqldropsynonym :
11047            {
11048                ret =  new TDropSynonymStmt(pdbvendor);
11049                break;
11050            }
11051            case sstmssqldropprocedure :
11052            {
11053                ret =  new TDropProcedureStmt(EDbVendor.dbvmssql);
11054                break;
11055            }
11056            case sstmssqldropdatabase :
11057            {
11058                ret =  new TDropDatabaseStmt(EDbVendor.dbvmssql);
11059                break;
11060            }
11061            case sstmssqldropschema :
11062            {
11063                ret =  new TDropSchemaSqlStatement(EDbVendor.dbvmssql);
11064                break;
11065            }
11066            case sstmssqltruncatetable:
11067            {
11068                ret =  new TTruncateStatement(pdbvendor);
11069                break;
11070            }
11071            case sstmssqlbegintran:
11072            {
11073                ret =  new TBeginTran(pdbvendor);
11074                break;
11075            }
11076            case sstmssqlsavetran:
11077            {
11078                if (pdbvendor == EDbVendor.dbvodbc){
11079
11080                }else if (pdbvendor == EDbVendor.dbvmssql) {
11081                    ret = new TMssqlSaveTran(pdbvendor);
11082                }
11083                break;
11084            }
11085            case sstmssqlcommit:
11086            {
11087                ret =  new TMssqlCommit(pdbvendor);
11088                break;
11089            }
11090            case sstmssqlrollback:
11091            {
11092                ret =  new TMssqlRollback(pdbvendor);
11093                break;
11094            }
11095            case sstmssqlreadtext :
11096            case sstmssqldbcc :
11097            case sstmssqlrestore :
11098            case sstmssqlbackup :
11099            {
11100                ret = new TMssqlDummyStmt(pdbvendor);
11101                ret.sqlstatementtype = gnewsqlstatementtype;
11102                break;
11103            }
11104
11105            case sstmssqlreceive:
11106            {
11107                lcisnewsql = true;
11108                if ( pstate != EFindSqlStateType.stnormal )
11109                {
11110                    if((lcisnewsql)&&(TBaseType.assigned(lccurrentsqlstatement))) {
11111                        if ((lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstselect)
11112                        )
11113                        {
11114                            lcisnewsql = false;
11115                        }
11116                    }
11117                }
11118                if ( lcisnewsql )
11119                {
11120                    ret = new TMssqlDummyStmt(pdbvendor);
11121                    ret.sqlstatementtype = gnewsqlstatementtype;
11122                }
11123                break;
11124            }
11125            case sstcreateindex:
11126            {
11127                ret =  new TCreateIndexSqlStatement(pdbvendor);
11128                break;
11129            }
11130            case sstmssqlwaitfor:
11131            {
11132                ret =  new TMssqlWaitFor(pdbvendor);
11133                break;
11134            }
11135            case sstmerge:
11136            {
11137                lcisnewsql = true;
11138
11139                if (pstate != EFindSqlStateType.stnormal)
11140                {
11141
11142                    if (lccurrentsqlstatement != null)
11143                    {
11144                        // merge union, merge join
11145                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstselect)
11146                        {
11147                                    lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
11148                                    if (lcnextsolidtoken != null)
11149                                       {
11150                                        if ((lcnextsolidtoken.tokencode == TBaseType.rrw_union) || (lcnextsolidtoken.tokencode == TBaseType.rrw_join)) 
11151                                           {
11152                                              lcisnewsql = false;
11153                                           }
11154                                        }
11155                        }
11156
11157//                        if ( TBaseType.assigned(lcprevsolidtoken) )
11158//                        {
11159//                            if ( lcprevsolidtoken.tokencode == '(' )
11160//                                lcisnewsql = false;
11161//                        }
11162
11163                    }
11164                    if (lcisnewsql){
11165                        TSourceToken nextSt = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
11166                        if (nextSt != null){
11167                            if (nextSt.tokencode == TBaseType.rrw_join){
11168                                lcisnewsql = false;
11169                            }
11170                        }
11171                    }
11172                }
11173
11174                if (lcisnewsql)
11175                {
11176                    ret = new TMergeSqlStatement(pdbvendor);
11177                    ret.sqlstatementtype = gnewsqlstatementtype;
11178                }
11179
11180                break;
11181            }
11182            case sstmssqlbegintry :
11183            case sstmssqlbegincatch:
11184            {
11185                ret =  new TMssqlBlock(pdbvendor);
11186                ret.sqlstatementtype = gnewsqlstatementtype;
11187                break;
11188            }
11189            case sstmssqlexec:
11190            {
11191                lcisnewsql = true;
11192                // prev tokentext can't be with
11193                if ( pstate != EFindSqlStateType.stnormal )
11194                {
11195                    if ( TBaseType.assigned(lccurrentsqlstatement) )
11196                    {
11197                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
11198                        {
11199                            if ( lccurrentsqlstatement.dummytag == 1 )
11200                            {
11201                                lcisnewsql = false;
11202                                lccurrentsqlstatement.dummytag = 0; // no select is permitted after it
11203                            }
11204
11205                            TSourceToken valuesToken = pcst.searchToken(TBaseType.rrw_values,-pcst.posinlist);
11206                            if (valuesToken != null){
11207                                // https://www.sqlparser.com/bugs/mantisbt/view.php?id=3153
11208                                // INSERT INTO @tempTbl VALUES ('Test5')
11209                                //
11210                                //EXEC sp_execute @handle, 1
11211                                // 如果 EXEC 在 insert 语句的 values 后面,则这个 EXEC 为独立的 sql 语句,
11212                                // 而不是属于insert 语句
11213                                TSourceToken insertToken = lccurrentsqlstatement.sourcetokenlist.get(0);
11214                                if (valuesToken.posinlist > insertToken.posinlist){
11215                                    lcisnewsql = true;
11216                                }
11217                            }
11218                        }
11219
11220                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlgrant )
11221                        {
11222                            if ( TBaseType.assigned(lcprevsolidtoken) )
11223                            {
11224                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_grant )
11225                                    lcisnewsql = false;
11226                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
11227                                    lcisnewsql = false;
11228                            }
11229                        }
11230
11231                        if (
11232                                (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlcreateprocedure)
11233                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetrigger)
11234                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlcreatefunction)
11235                                        ||(lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlalterprocedure)
11236                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlaltertrigger)
11237                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlalterfunction)
11238                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlcreatequeue)
11239                                )
11240                        {
11241                            if ( TBaseType.assigned(lcprevsolidtoken) )
11242                            {
11243                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_with )
11244                                    lcisnewsql = false;
11245                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
11246                                    lcisnewsql = false;
11247                            }
11248                        }
11249                    }
11250                }
11251                if ( lcisnewsql )
11252                {
11253                    ret =  new TMssqlExecute(pdbvendor);
11254                }
11255                break;
11256            }
11257            case sstmssqlexecuteas:
11258            {
11259                lcisnewsql = true;
11260                // prev tokentext can't be with
11261                if ( pstate != EFindSqlStateType.stnormal )
11262                {
11263                    if ( TBaseType.assigned(lccurrentsqlstatement) )
11264                    {
11265                        if (
11266                                (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlcreateprocedure)
11267                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetrigger)
11268                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlcreatefunction)
11269                                        ||(lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlalterprocedure)
11270                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlaltertrigger)
11271                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlalterfunction)
11272                                )
11273                        {
11274                            if ( TBaseType.assigned(lcprevsolidtoken) )
11275                            {
11276                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_with )
11277                                    lcisnewsql = false;
11278                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
11279                                    lcisnewsql = false;
11280                            }
11281                        }
11282                    }
11283                }
11284                if ( lcisnewsql )
11285                {
11286                    ret =  new TMssqlExecuteAs(pdbvendor);
11287                    ret.sqlstatementtype = gnewsqlstatementtype;
11288                }
11289                break;
11290            }
11291            case sstmssqlset:
11292            {
11293                lcisnewsql = true;
11294                if ( pstate != EFindSqlStateType.stnormal )
11295                {
11296                    if ( TBaseType.assigned(lccurrentsqlstatement) )
11297                    {
11298
11299                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlif)
11300                        {
11301                             TSourceToken lcPPToken = lcsourcetokenlist.searchToken(TBaseType.rrw_update,"",pcst,-10);
11302                             if (TBaseType.assigned(lcPPToken))
11303                            {
11304                                  lcisnewsql = false;
11305                            }
11306                        }
11307
11308                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstalterdatabase)
11309                        {
11310                             TSourceToken lcPPToken = lcsourcetokenlist.searchToken(TBaseType.rrw_alter,"",pcst,-10);
11311                             if (TBaseType.assigned(lcPPToken))
11312                            {
11313                                  lcisnewsql = false;
11314                            }
11315                        }
11316
11317                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
11318                        {
11319                              if (lcprevsolidtoken != null)
11320                              {
11321                                  if (lcprevsolidtoken.tokencode == TBaseType.rrw_update){
11322                                    lcisnewsql = false;}
11323                              }
11324                        }
11325
11326                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstupdate )
11327                        {
11328                            if ( lccurrentsqlstatement.dummytag == 1 )
11329                            {
11330                                //update statement still find set clause yet, so this is set clause in update statement
11331                                lccurrentsqlstatement.dummytag = 0;
11332                                lcisnewsql = false;
11333                            }
11334                        }
11335
11336                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlcreateeventsession )
11337                        {
11338                            lcisnewsql = false;
11339                        }
11340                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstaltertable )
11341                        {
11342                            lcisnewsql = false;
11343                        }
11344                    }
11345
11346                    lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
11347                    if ( TBaseType.assigned(lcnextsolidtoken) )
11348                    { //set null, set default
11349                        if ( (TBaseType.mycomparetext(lcnextsolidtoken.getAstext(),"null")==0)
11350                                || (TBaseType.mycomparetext(lcnextsolidtoken.getAstext(), "default")==0) )
11351                        {
11352                            lcisnewsql = false;
11353                        }
11354                    }
11355
11356                }
11357
11358                if ( lcisnewsql )
11359                {
11360                    ret =  new TMssqlSet(pdbvendor);
11361                }
11362
11363                break;
11364            }
11365            case sstmssqlsetrowcount:
11366            {
11367                ret =  new TMssqlSetRowCount(pdbvendor);
11368                break;
11369            }
11370            case sstmssqlupdatetext:
11371            {
11372                ret =  new TMssqlUpdateText(pdbvendor);
11373                break;
11374            }
11375            case sstmssqlendconversation:
11376            {
11377                ret =  new TMssqlEndConversation(pdbvendor);
11378                break;
11379            }
11380            case sstmssqlbegindialog:
11381            {
11382                ret =  new TMssqlBeginDialog(pdbvendor);
11383                break;
11384            }
11385            case sstmssqlsendonconversation:
11386            {
11387                ret =  new TMssqlSendOnConversation(pdbvendor);
11388                break;
11389            }
11390            case sstdropsequence:
11391                ret = new TDropSequenceStmt(pdbvendor);
11392                break;
11393            case sstmssqldisabletrigger :
11394            case sstmssqlenabletrigger:
11395            {
11396                lcisnewsql = true;
11397                if ( TBaseType.assigned(lccurrentsqlstatement) )
11398                {
11399                    if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstaltertable )
11400                        lcisnewsql = false;
11401                }
11402
11403                if ( lcisnewsql )
11404                {
11405                    ret =  new TUnknownSqlStatement(pdbvendor);
11406                    ret.sqlstatementtype = gnewsqlstatementtype;
11407                }
11408                break;
11409            }
11410            case sstmssqlthrow:
11411                ret = new TMssqlThrow(pdbvendor);
11412                break;
11413            case sstmssqlalterdatabase:
11414                ret = new TAlterDatabaseStmt(pdbvendor);
11415                break;
11416            case sstmssqlreconfigure:
11417                ret = new TReconfigure(pdbvendor);
11418                break;
11419            case sstcreatedatabase:
11420            {
11421                ret = new TCreateDatabaseSqlStatement(pdbvendor);
11422                break;
11423            }
11424            case sstmssqlcreateschema:
11425            {
11426                ret = new TCreateSchemaSqlStatement(pdbvendor);
11427                for ( k = lcpos + 1; k< lcsourcetokenlist.size();k++ )    // iterate
11428                {
11429                    lctoken = lcsourcetokenlist.get(k);
11430                    if (lctoken.isnonsolidtoken() ) continue;
11431                    if ( lctoken.tokencode == TBaseType.rrw_go ) break;
11432                    if ( lctoken.tokentype == ETokenType.ttsemicolon ) break;
11433                    lctoken.tokenstatus = ETokenStatus.tsignoredbygetrawstatement;
11434                }
11435                break;
11436            }
11437            case sstmssqlcreatesynonym:
11438            {
11439                ret = new TCreateSynonymStmt(pdbvendor);
11440                break;
11441            }
11442            case sstmssqlcreatetype:
11443                ret = new TMssqlCreateType(pdbvendor);
11444                break;
11445            case sstmssqlcreatexmlschemacollection:
11446                ret = new TMssqlCreateXmlSchemaCollectionStmt(pdbvendor);
11447                break;
11448            case sstmssqlalterindex:
11449                ret = new TAlterIndexStmt(pdbvendor);
11450                break;
11451            case sstmssqlcreateevexternalDataSource:
11452                ret = new TCreateExternalDataSourceStmt(pdbvendor);
11453                break;
11454            case sstmssqlcreateeventsession:
11455                ret = new TCreateEventSession(pdbvendor);
11456                break;
11457            case sstmssqldropfunction :
11458                ret = new TDropFunctionStmt(pdbvendor);
11459                break;
11460            case sstmssqlcreateevexternalLanguage:
11461                ret = new TCreateExternalLanguage(pdbvendor);
11462                break;
11463            case sstmssqlalterview:
11464            {
11465                lcisnewsql = true;
11466                if ( TBaseType.assigned(lccurrentsqlstatement) )
11467                {
11468                    if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
11469                        lcisnewsql = false;
11470                }
11471
11472                if ( lcisnewsql )
11473                {
11474                    ret =  new TAlterViewStatement(pdbvendor);
11475                    //ret.sqlstatementtype = gnewsqlstatementtype;
11476                }
11477                break;
11478            }
11479            case sstCreateFileFormat:
11480            {
11481                ret = new TCreateFileFormatStmt(pdbvendor);
11482                break;
11483            }
11484            case sstmssqlcreatemasterkey:
11485                ret = new TCreateMasterKeyStmt(pdbvendor);
11486                break;
11487            case sstcreatecredential:
11488                ret =  new TCreateCredentialStmt(pdbvendor);
11489                break;
11490            case sstCopyInto:
11491            {
11492                ret = new TMssqlCopyIntoStmt(pdbvendor);
11493                break;
11494            }
11495            case sstcreatematerializedview:{
11496                ret = new TCreateMaterializedSqlStatement(pdbvendor);
11497                break;
11498            }
11499            case sstmssqlCreateSecurityPolicy:
11500                ret = new TMssqlCreateSecurityPolicy(pdbvendor);
11501                break;
11502            case sstmssqlAlterSecurityPolicy:
11503                ret = new TMssqlAlterSecurityPolicy(pdbvendor);
11504                break;
11505            case sstmssqlDropSecurityPolicy:
11506                ret = new TMssqlDropSecurityPolicy(pdbvendor);
11507                break;
11508            case sstmssqlalterpartitionfunction:
11509                ret = new TAlterPartitionFunctionStmt(pdbvendor);
11510                break;
11511            case sstmssqlcreatepartitionfunction:
11512                ret = new TCreatePartitionFunctionStmt(pdbvendor);
11513                break;
11514            case sstmssqlalterpartitionscheme:
11515                ret = new TAlterPartitionSchemeSqlStatement(pdbvendor);
11516                break;
11517            case sstmssqlcreatepartitionscheme:
11518                ret = new TCreatePartitionSchemeSqlStatement(pdbvendor);
11519                break;
11520            default:
11521            {
11522                ret =  new TUnknownSqlStatement(pdbvendor);
11523                ret.sqlstatementtype = gnewsqlstatementtype;
11524                break;
11525            }
11526        }    // case
11527
11528        return ret;
11529    }
11530
11531    TCustomSqlStatement isteradatasql(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
11532        TCustomSqlStatement ret = null;
11533        int k;
11534        boolean lcisnewsql;
11535        TSourceToken lcpprevsolidtoken,lcnextsolidtoken,lctoken;
11536
11537        gnewsqlstatementtype = ESqlStatementType.sstinvalid;
11538
11539        if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
11540                || (pcst.tokencode  == TBaseType.cmtslashstar)
11541                || (pcst.tokencode  == TBaseType.lexspace)
11542                || (pcst.tokencode  == TBaseType.lexnewline)
11543                || (pcst.tokentype == ETokenType.ttsemicolon) )
11544        {
11545            return ret;
11546        }
11547
11548        int lcpos = pcst.posinlist;
11549        TSourceTokenList lcsourcetokenlist = pcst.container;
11550        TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
11551
11552        //subquery after semicolon || at first line
11553        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokentype == ETokenType.ttleftparenthesis) )
11554        {
11555            k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
11556            if ( k >0 )
11557            {
11558                ret =  new TSelectSqlStatement(pdbvendor);
11559            }else{
11560                k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_teradata_sel,1,"(");
11561                if ( k >0 )
11562                {
11563                    ret =  new TSelectSqlStatement(pdbvendor);
11564                }
11565            }
11566
11567            return ret;
11568        }
11569
11570        //cte
11571        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
11572        {
11573            ret = findcte(pcst,pdbvendor);
11574            if ( (ret != null) )  return ret;
11575        }
11576
11577        // using
11578        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_teradata_using) ){
11579           //return mapTeradataUsing(pcst);
11580            return new TTeradataUsing(pdbvendor);
11581        }
11582        
11583        if ( (pstate == EFindSqlStateType.stnormal) &&
11584                ((pcst.tokencode == TBaseType.rrw_lock)||(pcst.tokencode == TBaseType.rrw_teradata_locking)) ){
11585            return new TTeradataLock(pdbvendor);
11586        }
11587
11588        gnewsqlstatementtype = findteradatacmd(pcst);
11589
11590        TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
11591        switch(gnewsqlstatementtype ) {   //
11592            case sstinvalid:
11593            {
11594                ret = null;
11595                break;
11596            }
11597            case sstselect:
11598            {
11599                lcisnewsql = true;
11600
11601                if ( pstate != EFindSqlStateType.stnormal )
11602                {
11603                    // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
11604                    if ( (lcprevsolidtoken != null) )
11605                    {
11606                        if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
11607                            lcisnewsql = false; //subqery
11608                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
11609                            lcisnewsql = false;
11610                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
11611                            lcisnewsql = false;
11612                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
11613                            lcisnewsql = false;
11614                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
11615                            lcisnewsql = false;
11616                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
11617                            lcisnewsql = false;
11618                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
11619                        {
11620                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
11621                                lcisnewsql = false;
11622                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
11623                                lcisnewsql = false;
11624                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstteradatareplaceview )
11625                                lcisnewsql = false;
11626                        }
11627
11628                        if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
11629                        {
11630                            lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
11631                            if ( (lcpprevsolidtoken != null) )
11632                            {
11633                                if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
11634                                    lcisnewsql = false;
11635                            }
11636                        }
11637
11638                    }
11639
11640                    if ( (lccurrentsqlstatement != null) )
11641                    {
11642                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
11643                        {
11644                        }
11645                        else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview ){
11646                            lcisnewsql = false;
11647                        }
11648                    }
11649
11650                }
11651
11652                if ( lcisnewsql )
11653                    ret =  new TSelectSqlStatement(pdbvendor);
11654
11655                break;
11656
11657            }
11658            case sstinsert:
11659            {
11660                lcisnewsql = true;
11661                if ( pstate != EFindSqlStateType.stnormal )
11662                {
11663                    if ( (lccurrentsqlstatement != null) )
11664                    {
11665                        // merge
11666                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
11667                        {
11668                              if (lcprevsolidtoken != null)
11669                              {
11670                                  if (lcprevsolidtoken.tokencode == TBaseType.rrw_then)
11671                                  {lcisnewsql = false;}
11672                              }
11673                        }
11674
11675
11676
11677                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstteradatacreatetrigger )
11678                        {
11679                            if ( (lcprevsolidtoken != null) )
11680                            {
11681                                if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
11682                                    lcisnewsql = false;
11683                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(),"after") == 0 )
11684                                    lcisnewsql = false;
11685                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(),"before") == 0 )
11686                                    lcisnewsql = false;
11687                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(), "of") == 0 )
11688                                    lcisnewsql = false;
11689                            }
11690                        }
11691
11692
11693                    }
11694                }
11695
11696                if ( lcisnewsql )
11697                {
11698                    ret =  new TInsertSqlStatement(pdbvendor);
11699                    ret.dummytag = 1; //  select stmt in insert is permitted
11700                    for ( k = lcpos + 1; k < lcsourcetokenlist.size();k++ )    // iterate
11701                    {
11702                        if ( lcsourcetokenlist.get(k).isnonsolidtoken() ) continue;
11703                        if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_values ) break;
11704                        // if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_go ) break;
11705                        if ( lcsourcetokenlist.get(k).tokentype == ETokenType.ttsemicolon ) break;
11706                        if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_select ) break;
11707                        if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_execute ) break;
11708                        if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_exec ) break;
11709                    }    // for (
11710                    if ( k > lcsourcetokenlist.size() - 1 )
11711                        k = lcsourcetokenlist.size() - 1;
11712
11713                    for ( int i = lcpos + 1; i <=  k; i++ )    // iterate
11714                    {
11715                        lcsourcetokenlist.get(i).tokenstatus = ETokenStatus.tsignoredbygetrawstatement;
11716                    }    // for (
11717
11718                }
11719
11720                break;
11721            }
11722            case sstupdate:
11723            {
11724                lcisnewsql = true;
11725                if ( pstate != EFindSqlStateType.stnormal )
11726                {
11727                    // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
11728                    if ( (lcprevsolidtoken != null) )
11729                    { //
11730                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
11731                            lcisnewsql = false;
11732                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
11733                            lcisnewsql = false;
11734                    }
11735
11736                    lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
11737                    if ( TBaseType.assigned(lcnextsolidtoken) )
11738                    {
11739                        if ( lcnextsolidtoken.tokentype == ETokenType.ttleftparenthesis)
11740                        {
11741                            k = lcsourcetokenlist.solidtokenafterpos(lcnextsolidtoken.posinlist,TBaseType.rrw_select,1,"(");
11742                            if ( k  == 0 ) lcisnewsql = false;
11743                        }
11744                    }
11745
11746
11747                    if ( TBaseType.assigned(lccurrentsqlstatement) )
11748                    {
11749                        // merge
11750                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
11751                        {
11752                              if (lcprevsolidtoken != null)
11753                              {
11754                                  if (lcprevsolidtoken.tokencode == TBaseType.rrw_then)
11755                                  {lcisnewsql = false;}
11756                              }
11757                        }
11758
11759
11760                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstteradatacreatetrigger )
11761                        {
11762                            if ( TBaseType.assigned(lcprevsolidtoken) )
11763                            {
11764                                if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
11765                                    lcisnewsql = false;
11766                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(),"after") == 0 )
11767                                    lcisnewsql = false;
11768                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(),"before") == 0 )
11769                                    lcisnewsql = false;
11770                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(), "of") == 0 )
11771                                    lcisnewsql = false;
11772                            }
11773                        }
11774
11775                    }
11776                }
11777
11778                if ( lcisnewsql )
11779                {
11780                    ret =  new TUpdateSqlStatement(pdbvendor);
11781                    ret.dummytag = 1; // means set clause in update is not found yet, used to seperate set clause from set statement
11782                }
11783
11784                break;
11785            }
11786            case sstdelete:
11787            {
11788                lcisnewsql = true;
11789
11790                if ( pstate != EFindSqlStateType.stnormal )
11791                {
11792                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
11793                    if ( TBaseType.assigned(lcprevsolidtoken) )
11794                    {
11795                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
11796                            lcisnewsql = false;
11797                    }
11798
11799                    if ( TBaseType.assigned(lccurrentsqlstatement) )
11800                    {
11801                        // merge
11802                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
11803                        {
11804                              if (lcprevsolidtoken != null)
11805                              {
11806                                  if (lcprevsolidtoken.tokencode == TBaseType.rrw_then)
11807                                  {lcisnewsql = false;}
11808                              }
11809                        }
11810
11811
11812                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstteradatacreatetrigger )
11813                        {
11814                            if ( TBaseType.assigned(lcprevsolidtoken) )
11815                            {
11816                                if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
11817                                    lcisnewsql = false;
11818                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(),"after") == 0 )
11819                                    lcisnewsql = false;
11820                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(),"before") == 0 )
11821                                    lcisnewsql = false;
11822                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(), "of") == 0 )
11823                                    lcisnewsql = false;
11824                            }
11825                        }
11826
11827                    }
11828                }
11829
11830                if ( lcisnewsql )
11831                    ret =  new TDeleteSqlStatement(pdbvendor);
11832
11833                break;
11834            }
11835            case sstcreatetable:
11836            {
11837                ret =  new TCreateTableSqlStatement(pdbvendor);
11838                break;
11839            }
11840            case sstaltertable:
11841            case sstteradataaltertable:
11842            {
11843                ret =  new TAlterTableStatement(pdbvendor);
11844                break;
11845            }
11846            case sstteradatafetch:
11847            {
11848                ret =  new TMssqlFetch(pdbvendor);
11849                break;
11850            }
11851            case sstcreateprocedure :
11852            case sstteradatareplaceprocedure:
11853            {
11854                ret = new TCreateProcedureStmt(pdbvendor);
11855                break;
11856            }
11857            case sstteradataalterprocedure:
11858                ret = new TAlterProcedureStmt(pdbvendor);
11859                break;
11860            case sstteradatacreatefunction :
11861            case sstteradatareplacefunction:
11862            {
11863                ret =  new TTeradataCreateFunction(pdbvendor);
11864                break;
11865            }
11866            case sstteradataalterfunction:
11867                ret =  new TAlterFunctionStmt(pdbvendor);
11868                break;
11869            case sstteradatacreatetrigger :
11870            case sstteradataaltertrigger:
11871            case sstteradatareplacetrigger:
11872            {                              
11873                ret =  new TCreateTriggerStmt(pdbvendor);
11874                break;
11875            }
11876            case sstteradatagrant:
11877            {
11878                lcisnewsql = true;
11879                // prev tokentext can't be with
11880                if ( pstate != EFindSqlStateType.stnormal )
11881                {
11882                    if ( TBaseType.assigned(lcprevsolidtoken) )
11883                    {
11884                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_with )
11885                        {
11886                            ret = null;
11887                            lcisnewsql = false;
11888                        }
11889                    }
11890                }
11891                if ( lcisnewsql )
11892                {
11893                    ret =  new TTeradataGrant(pdbvendor);
11894                    ret.sqlstatementtype = gnewsqlstatementtype;
11895                    for ( k = lcpos + 1; k< lcsourcetokenlist.size();k++ )    // iterate
11896                    {
11897                        lctoken = lcsourcetokenlist.get(k);
11898                        if (lctoken.isnonsolidtoken() ) continue;
11899                        if ( lctoken.tokencode == TBaseType.rrw_go ) break;
11900                        if ( lctoken.tokentype == ETokenType.ttsemicolon ) break;
11901                        if ( lctoken.tokencode == TBaseType.rrw_to   ) break;
11902                        lctoken.tokenstatus = ETokenStatus.tsignoredbygetrawstatement;
11903                    }
11904                }
11905                break;
11906            }
11907            case sstdropindex:
11908            {
11909                ret =  new TDropIndexSqlStatement(pdbvendor);
11910                break;
11911            }
11912            case sstdroptable:
11913            {
11914                ret =  new TDropTableSqlStatement(pdbvendor);
11915                break;
11916            }
11917            case sstdropview:
11918            {
11919                ret =  new TDropViewSqlStatement(pdbvendor);
11920                break;
11921            }
11922            case sstteradatadropprocedure:
11923                ret =  new TDropProcedureStmt(pdbvendor);
11924                break;
11925            case sstteradatadropauthorization:
11926            case sstteradatadropcast:
11927            case sstteradatadropdatabase:
11928            case sstteradatadropfunction:
11929            case sstteradatadroptrigger:
11930            case sstteradatadropordering:
11931            case sstteradatadropprofile:
11932            case sstteradatadropreplicationgroup:
11933            case sstteradatadroprole:
11934            case sstteradatadroptransform:
11935            case sstteradatadroptype:
11936            case sstteradatadropuser:
11937            case sstteradatadropzone:
11938            {
11939                ret =  new TTeradataDropDbObject(EDbVendor.dbvteradata);
11940                ret.sqlstatementtype = gnewsqlstatementtype;
11941                break;
11942            }
11943            case sstteradatadropmacro:
11944                ret = new TDropMacro(EDbVendor.dbvteradata);
11945                break;
11946            case sstteradatadropconstraint:
11947                ret = new TDropConstraintStmt(EDbVendor.dbvteradata);
11948                break;
11949            case sstteradatabegintransaction:
11950            {
11951                ret =  new TBeginTran(pdbvendor);
11952                break;
11953            }
11954            case sstteradataendtransaction:
11955            {
11956                ret =  new TEndTran(pdbvendor);
11957                break;
11958            }
11959            case sstteradatacommit:
11960            {
11961                ret =  new TTeradataCommit(pdbvendor);
11962                break;
11963            }
11964            case sstteradatarollback:
11965            {
11966                ret =  new TTeradataRollback(pdbvendor);
11967                break;
11968            }
11969            case sstcreateindex:
11970            {
11971                ret =  new TCreateIndexSqlStatement(pdbvendor);
11972                break;
11973            }
11974            case sstmerge:
11975            {
11976                lcisnewsql = true;
11977
11978                if (pstate != EFindSqlStateType.stnormal)
11979                {
11980
11981                    if (lccurrentsqlstatement != null)
11982                    {
11983                        // merge union, merge join
11984                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstselect)
11985                        {
11986                                    lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
11987                                    if (lcnextsolidtoken != null)
11988                                       {
11989                                        if ((lcnextsolidtoken.tokencode == TBaseType.rrw_union) || (lcnextsolidtoken.tokencode == TBaseType.rrw_join))
11990                                           {
11991                                              lcisnewsql = false;
11992                                           }
11993                                        }
11994                        }
11995
11996                    }
11997                }
11998
11999                if (lcisnewsql)
12000                {
12001                    ret = new TMergeSqlStatement(pdbvendor);
12002                    ret.sqlstatementtype = gnewsqlstatementtype;
12003                }
12004
12005                break;
12006            }
12007            case sstteradataexecute:
12008            {
12009                lcisnewsql = true;
12010                // prev tokentext can't be with
12011                if ( pstate != EFindSqlStateType.stnormal )
12012                {
12013                    if ( TBaseType.assigned(lccurrentsqlstatement) )
12014                    {
12015                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
12016                        {
12017                            if ( lccurrentsqlstatement.dummytag == 1 )
12018                            {
12019                                lcisnewsql = false;
12020                                lccurrentsqlstatement.dummytag = 0; // no select is permited after it
12021                            }
12022                        }
12023
12024                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstteradatagrant )
12025                        {
12026                            if ( TBaseType.assigned(lcprevsolidtoken) )
12027                            {
12028                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_grant )
12029                                    lcisnewsql = false;
12030                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
12031                                    lcisnewsql = false;
12032                            }
12033                        }
12034
12035                        if (
12036                                (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateprocedure)
12037                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstteradatacreatetrigger)
12038                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstteradatacreatefunction)
12039                                        ||(lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstteradataalterprocedure)
12040                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstteradataaltertrigger)
12041                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstteradataalterfunction)
12042                                )
12043                        {
12044                            if ( TBaseType.assigned(lcprevsolidtoken) )
12045                            {
12046                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_with )
12047                                    lcisnewsql = false;
12048                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
12049                                    lcisnewsql = false;
12050                            }
12051                        }
12052                    }
12053                }
12054                if ( lcisnewsql )
12055                {
12056                    ret =  new TTeradataExecute(pdbvendor);
12057                }
12058                break;
12059            }
12060            case sstteradatasetsession:
12061            {
12062                ret =  new TTeradataSetSession(pdbvendor);
12063                break;
12064            }
12065            case sstteradatadatabase:
12066                if (pcst.isFirstTokenOfLine()){
12067                    ret =  new TTeradataSetSession(pdbvendor);
12068                }
12069
12070                break;
12071            case sstteradatasettimezone:
12072            {
12073                ret =  new TTeradataSetTimezone(pdbvendor);
12074                break;
12075            }
12076            case sstteradatasetrole:
12077            {
12078                ret =  new TTeradataSetRole(pdbvendor);
12079                break;
12080            }
12081            case sstteradataendlogging:
12082            {
12083                ret =  new TTeradataEndLogging(pdbvendor);
12084                break;
12085            }
12086            case sstteradatabeginlogging:
12087            {
12088                ret =  new TTeradataBeginLogging(pdbvendor);
12089                break;
12090            }
12091            case sstteradataabort:
12092            {
12093                ret = new TTeradataAbort(pdbvendor);
12094                break;
12095            }
12096            case sstteradatareplaceview:
12097            case sstcreateview:
12098            {
12099                ret = new TCreateViewSqlStatement(pdbvendor);
12100                ret.sqlstatementtype = ESqlStatementType.sstcreateview;
12101                break;
12102            }
12103            case sstteradatacollectstatistics:
12104            {
12105                ret = new TTeradataCollectStatistics(pdbvendor);
12106                break;
12107            }
12108            case sstteradatagive:
12109            {
12110                ret = new TTeradataGive(pdbvendor);
12111                break;
12112            }
12113            case sstteradatacall:
12114                ret = new TCallStatement(pdbvendor);
12115                break;
12116            case sstteradatacreatemacro:
12117            case sstteradatareplacemacro:
12118                ret = new TCreateMacro(pdbvendor);
12119                break;
12120            case sstteradatarenametable:
12121                ret = new TRenameStmt(pdbvendor);
12122                break;
12123            case sstteradatacomment:
12124                ret = new TCommentOnSqlStmt(pdbvendor);
12125                break;
12126            case sstteradatacheckworkload:
12127                ret = new TCheckWorkload(pdbvendor);
12128                break;
12129            case sstgetdiagnostics:
12130                ret = new TGetDiagStmt(pdbvendor);
12131                break;
12132            case sstteradatacreaterole:
12133                ret = new TCreateRoleStmt(pdbvendor);
12134                break;
12135            case sstteradatarevoke:
12136                ret = new TRevokeStmt(pdbvendor);
12137                break;
12138            case sstteradataalterzone:
12139                ret = new TAlterZoneStmt(pdbvendor);
12140                break;
12141            case sstcreatezone:
12142                ret = new TCreateZoneStmt(pdbvendor);
12143                break;
12144            case sstteradataalterconstraint:
12145                ret = new TAlterConstraintStmt(pdbvendor);
12146                break;
12147            case sstExplain:
12148                ret = new TExplainPlan(pdbvendor);
12149                break;
12150            case sstteradatareleaseLock:
12151                ret = new TTeradataReleaseLockStmt(pdbvendor);
12152                break;
12153            default:
12154            {
12155                ret =  new TTeradataNotImplement(pdbvendor);
12156                ret.sqlstatementtype = gnewsqlstatementtype;
12157                break;
12158            }
12159        }    // case
12160
12161        return ret;
12162    }
12163
12164
12165    TCustomSqlStatement ishana(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
12166        TCustomSqlStatement ret = null;
12167        int k;
12168        boolean lcisnewsql;
12169        TSourceToken lcpprevsolidtoken,lcnextsolidtoken,lctoken;
12170
12171        gnewsqlstatementtype = ESqlStatementType.sstinvalid;
12172
12173        if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
12174                || (pcst.tokencode  == TBaseType.cmtslashstar)
12175                || (pcst.tokencode  == TBaseType.lexspace)
12176                || (pcst.tokencode  == TBaseType.lexnewline)
12177                || (pcst.tokentype == ETokenType.ttsemicolon) )
12178        {
12179            return ret;
12180        }
12181
12182        int lcpos = pcst.posinlist;
12183        TSourceTokenList lcsourcetokenlist = pcst.container;
12184        TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
12185
12186        //subquery after semicolon || at first line
12187        if ( pcst.tokentype == ETokenType.ttleftparenthesis)  // (
12188        {
12189            k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
12190            if ( k >0 )
12191            {
12192                if (pstate == EFindSqlStateType.stnormal){
12193                    ret =  new TSelectSqlStatement(pdbvendor);
12194                    return ret;
12195                }
12196            }
12197        }
12198
12199        //cte
12200        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
12201        {
12202            ret = findcte(pcst,pdbvendor);
12203            if ( (ret != null) )  return ret;
12204        }
12205
12206        gnewsqlstatementtype = findhanacmd(pcst);
12207
12208        TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
12209        switch(gnewsqlstatementtype ) {   //
12210            case sstinvalid:
12211            {
12212                if ( pcst.tokencode == TBaseType.mslabel )
12213                {
12214                    ret =  new TMssqlLabel(pdbvendor);
12215                }
12216                else
12217                    ret = null;
12218
12219                break;
12220            }
12221            case sstselect:
12222            {
12223                lcisnewsql = true;
12224
12225                if ( pstate != EFindSqlStateType.stnormal )
12226                {
12227                    // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
12228                    if ( (lcprevsolidtoken != null) )
12229                    {
12230                        if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
12231                            lcisnewsql = false; //subqery
12232                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
12233                            lcisnewsql = false;
12234                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
12235                            lcisnewsql = false;
12236                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
12237                            lcisnewsql = false;
12238                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
12239                            lcisnewsql = false;
12240                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
12241                            lcisnewsql = false;
12242                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
12243                        {
12244                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
12245                                lcisnewsql = false;
12246                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
12247                                lcisnewsql = false;
12248                        }
12249                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
12250                        {
12251                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlset )
12252                                lcisnewsql = false;
12253                        }
12254                        else if (lcprevsolidtoken.tokentype == ETokenType.ttrightparenthesis){
12255                            if ((lccurrentsqlstatement != null) && (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable)){
12256                                lcisnewsql = false;
12257                            }
12258                        }
12259
12260                        if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
12261                        {
12262                            lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
12263                            if ( (lcpprevsolidtoken != null) )
12264                            {
12265                                if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
12266                                    lcisnewsql = false;
12267                            }
12268                        }
12269
12270                    }
12271
12272                    if ( (lccurrentsqlstatement != null) )
12273                    {
12274                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
12275                        {
12276                            lcisnewsql = false;
12277                        }
12278                        else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstGrant )
12279                        {
12280                            if ( (lcprevsolidtoken != null) )
12281                            {
12282                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_grant )
12283                                    lcisnewsql = false;
12284                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
12285                                    lcisnewsql = false;
12286                            }
12287                        }else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview ){
12288                            lcisnewsql = false;
12289                        }else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstaltersequence ){
12290                            lcisnewsql = false;
12291                        }else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstExplain ){
12292                            lcisnewsql = false;
12293                        }else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstRevoke ){
12294                            lcisnewsql = false;
12295                        }else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstupsert ){
12296                            lcisnewsql = false;
12297                        }else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstalterview ){
12298                            lcisnewsql = false;
12299                        }
12300                    }
12301
12302                }
12303
12304                if ( lcisnewsql )
12305                    ret =  new TSelectSqlStatement(pdbvendor);
12306
12307                break;
12308
12309            }
12310            case sstinsert:
12311            {
12312                lcisnewsql = true;
12313                if ( pstate != EFindSqlStateType.stnormal )
12314                {
12315                    if ( (lccurrentsqlstatement != null) )
12316                    {
12317                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateauditpolicy)
12318                        {
12319                            lcisnewsql = false;
12320                        }
12321                        // merge
12322                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
12323                        {
12324                            if (lcprevsolidtoken != null)
12325                            {
12326                                if (lcprevsolidtoken.tokencode == TBaseType.rrw_then)
12327                                {lcisnewsql = false;}
12328                            }
12329                        }
12330
12331
12332                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstGrant )
12333                        {
12334                            if ( (lcprevsolidtoken != null) )
12335                            {
12336                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_grant )
12337                                    lcisnewsql = false;
12338                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
12339                                    lcisnewsql = false;
12340                            }
12341                        }else if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
12342                        {
12343                            lcisnewsql = false;
12344                        }
12345
12346                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetrigger )
12347                        {
12348                            if ( (lcprevsolidtoken != null) )
12349                            {
12350                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
12351                                    lcisnewsql = false;
12352                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
12353                                    lcisnewsql = false;
12354                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(),"after") == 0 )
12355                                    lcisnewsql = false;
12356                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(), "of") == 0 )
12357                                    lcisnewsql = false;
12358                            }
12359                        }
12360
12361
12362                    }
12363                }
12364
12365                if ( lcisnewsql )
12366                {
12367                    ret =  new TInsertSqlStatement(pdbvendor);
12368                    ret.dummytag = 1; //  select stmt in insert is permitted
12369                    for ( k = lcpos + 1; k < lcsourcetokenlist.size();k++ )    // iterate
12370                    {
12371                        if ( lcsourcetokenlist.get(k).isnonsolidtoken() ) continue;
12372                        if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_values ) break;
12373                        if ( lcsourcetokenlist.get(k).tokentype == ETokenType.ttsemicolon ) break;
12374                        if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_select ){
12375                            ret.dummytag = 0;
12376                            break;
12377                        }
12378                    }    // for (
12379                    if ( k > lcsourcetokenlist.size() - 1 )
12380                        k = lcsourcetokenlist.size() - 1;
12381
12382                    for ( int i = lcpos + 1; i <=  k; i++ )    // iterate
12383                    {
12384                        lcsourcetokenlist.get(i).tokenstatus = ETokenStatus.tsignoredbygetrawstatement;
12385                    }    // for (
12386
12387                }
12388
12389                break;
12390            }
12391            case sstupdate:
12392            {
12393                lcisnewsql = true;
12394                if ( pstate != EFindSqlStateType.stnormal )
12395                {
12396                    // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
12397                    if ( (lcprevsolidtoken != null) )
12398                    { //
12399                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
12400                            lcisnewsql = false;
12401                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
12402                            lcisnewsql = false;
12403                    }
12404
12405                    lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
12406                    if ( TBaseType.assigned(lcnextsolidtoken) )
12407                    {
12408                        if ( lcnextsolidtoken.tokentype == ETokenType.ttleftparenthesis)
12409                        {
12410                            k = lcsourcetokenlist.solidtokenafterpos(lcnextsolidtoken.posinlist,TBaseType.rrw_select,1,"(");
12411                            if ( k  == 0 ) lcisnewsql = false;
12412                        }
12413                    }
12414
12415
12416                    if ( TBaseType.assigned(lccurrentsqlstatement) )
12417                    {
12418                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateauditpolicy)
12419                        {
12420                                lcisnewsql = false;
12421                        }else if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
12422                        {
12423                            lcisnewsql = false;
12424                        }
12425                        // merge
12426                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
12427                        {
12428                            if (lcprevsolidtoken != null)
12429                            {
12430                                if (lcprevsolidtoken.tokencode == TBaseType.rrw_then)
12431                                {lcisnewsql = false;}
12432                            }
12433                        }
12434
12435                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstGrant )
12436                        {
12437                            if ( TBaseType.assigned(lcprevsolidtoken) )
12438                            {
12439                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_grant )
12440                                    lcisnewsql = false;
12441                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
12442                                    lcisnewsql = false;
12443                            }
12444                        }
12445                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetrigger )
12446                        {
12447                            if ( TBaseType.assigned(lcprevsolidtoken) )
12448                            {
12449                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
12450                                    lcisnewsql = false;
12451                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
12452                                    lcisnewsql = false;
12453                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(),"after") == 0 )
12454                                    lcisnewsql = false;
12455                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(), "of") == 0 )
12456                                    lcisnewsql = false;
12457                            }
12458                        }
12459
12460                    }
12461                }
12462
12463                if ( lcisnewsql )
12464                {
12465                    ret =  new TUpdateSqlStatement(pdbvendor);
12466                    ret.dummytag = 1; // means set clause in update is not found yet, used to separate set clause from set statement
12467                }
12468
12469                break;
12470            }
12471            case sstdelete:
12472            {
12473                lcisnewsql = true;
12474
12475                if ( pstate != EFindSqlStateType.stnormal )
12476                {
12477                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
12478                    if ( TBaseType.assigned(lcprevsolidtoken) )
12479                    {
12480                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
12481                            lcisnewsql = false;
12482                    }
12483
12484                    if ( TBaseType.assigned(lccurrentsqlstatement) )
12485                    {
12486                        // merge
12487                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
12488                        {
12489                            if (lcprevsolidtoken != null)
12490                            {
12491                                if (lcprevsolidtoken.tokencode == TBaseType.rrw_then)
12492                                {lcisnewsql = false;}
12493                            }
12494                        }
12495
12496                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstGrant )
12497                        {
12498                            if ( TBaseType.assigned(lcprevsolidtoken) )
12499                            {
12500                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_grant )
12501                                    lcisnewsql = false;
12502                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
12503                                    lcisnewsql = false;
12504                            }
12505                        }
12506
12507                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetrigger )
12508                        {
12509                            if ( TBaseType.assigned(lcprevsolidtoken) )
12510                            {
12511                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
12512                                    lcisnewsql = false;
12513                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
12514                                    lcisnewsql = false;
12515                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(),"after") == 0 )
12516                                    lcisnewsql = false;
12517                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(), "of") == 0 )
12518                                    lcisnewsql = false;
12519                            }
12520                        }
12521
12522                        if ((lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstbackupcatalogdelete)
12523                        ||(lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable)
12524                                )
12525                        {
12526                            lcisnewsql = false;
12527                        }
12528
12529                    }
12530                }
12531
12532                if ( lcisnewsql )
12533                    ret =  new TDeleteSqlStatement(pdbvendor);
12534
12535                break;
12536            }
12537            case sstcreatetable:
12538            {
12539                ret =  new TCreateTableSqlStatement(pdbvendor);
12540                break;
12541            }
12542            case sstcreateview:
12543            {
12544                ret =  new TCreateViewSqlStatement(pdbvendor);
12545                break;
12546            }
12547            case sstcreatesequence:
12548            {
12549                ret = new TCreateSequenceStmt(pdbvendor);
12550                break;
12551            }
12552            case sstaltertable:
12553            {
12554                lcisnewsql = true;
12555                if ( pstate != EFindSqlStateType.stnormal )
12556                {
12557                            lcisnewsql = false;
12558                }
12559                if ( lcisnewsql ) {
12560                    ret = new TAlterTableStatement(pdbvendor);
12561                }
12562                break;
12563            }
12564            case sstcreateprocedure :
12565            {
12566                ret = new TCreateProcedureStmt(pdbvendor);
12567                break;
12568            }
12569            case sstalterprocedure:
12570            {
12571                boolean isAlter = false;
12572                // hana  alter and create procedure 语法混在一起,无法区分
12573                // c:\prg\gsp_java\gsp_java_core\gsp_sqlfiles\TestCases\public\allversions\hana\create_procedure.sql
12574                if (pcst.tokencode == TBaseType.rrw_alter){
12575
12576                    TSourceToken st = pcst.nextSolidToken(3);
12577                    if (st != null){
12578                        switch (st.toString().toUpperCase()) {
12579                            case "RECOMPILE":   
12580                                isAlter = true;
12581                                break;
12582                            case "ENCRYPTION":
12583                                isAlter = true;
12584                                break;
12585                            case "ADD":
12586                                isAlter = true;
12587                                break;
12588                            default:
12589                                break;
12590                        }
12591                    }
12592
12593                    // TSourceToken st = pcst.searchToken("recompile",4);
12594                    // if (st != null){
12595                    //     isAlter = true;
12596                    // }else{
12597                    //     st = pcst.searchToken("encryption",4);
12598                    //     if (st != null){
12599                    //         isAlter = true;
12600                    //     }
12601                    // }
12602                }
12603                if (isAlter){
12604                    ret = new TAlterProcedureStmt (pdbvendor);
12605                }else{
12606                    ret  = new TCreateProcedureStmt (pdbvendor);
12607                }
12608
12609                break;
12610            }
12611            case sstcreatefunction :
12612            {
12613                ret =  new TCreateFunctionStmt(pdbvendor);
12614                break;
12615            }
12616            case sstalterfunction:
12617            {
12618                boolean isAlter = false;
12619                // hana  alter and create function 语法混在一起,无法区分
12620
12621                if (pcst.tokencode == TBaseType.rrw_alter){
12622                    TSourceToken stAdd = pcst.searchToken("add",4);
12623                    TSourceToken stAlter = pcst.searchToken("alter",4);
12624                    TSourceToken stDrop = pcst.searchToken("drop",4);
12625                    if ((stAdd != null)||(stAlter != null)||(stDrop != null)){
12626                        isAlter = true;
12627                    }else{
12628                        TSourceToken st = pcst.searchToken("encryption",4);
12629                        if (st != null){
12630                            isAlter = true;
12631                        }
12632                    }
12633                }
12634
12635                if (isAlter){
12636                    ret = new TAlterFunctionStmt (pdbvendor);
12637                }else{
12638                    ret  = new TCreateFunctionStmt (pdbvendor);
12639                }
12640
12641
12642                break;
12643            }
12644            case sstcreatetrigger :
12645            case sstaltertrigger:
12646            {
12647                ret =  new TCreateTriggerStmt(pdbvendor);
12648                break;
12649            }
12650            case sstGrant:
12651            {
12652                lcisnewsql = true;
12653
12654                if ( pstate != EFindSqlStateType.stnormal )
12655                {
12656                    lcisnewsql = false;
12657
12658                }
12659                if ( lcisnewsql )
12660                {
12661                    ret =  new TGrantStmt(pdbvendor);
12662                    //ret.sqlstatementtype = gnewsqlstatementtype;
12663                    for ( k = lcpos + 1; k< lcsourcetokenlist.size();k++ )    // iterate
12664                    {
12665                        lctoken = lcsourcetokenlist.get(k);
12666                        if (lctoken.isnonsolidtoken() ) continue;
12667                        if ( lctoken.tokencode == TBaseType.rrw_go ) break;
12668                        if ( lctoken.tokentype == ETokenType.ttsemicolon ) break;
12669                        if ( lctoken.tokencode == TBaseType.rrw_to   ) break;
12670                        lctoken.tokenstatus = ETokenStatus.tsignoredbygetrawstatement;
12671                    }
12672                }
12673                break;
12674            }
12675            case sstdropview:
12676            {
12677                ret =  new TDropViewSqlStatement(pdbvendor);
12678                break;
12679            }
12680            case sstdroptable:
12681            {
12682                ret =  new TDropTableSqlStatement(pdbvendor);
12683                break;
12684            }
12685            case sstdropindex:
12686            {
12687                ret =  new TDropIndexSqlStatement(pdbvendor);
12688                break;
12689            }
12690            case ssttruncatetable:
12691            {
12692                ret =  new TTruncateStatement(pdbvendor);
12693                break;
12694            }
12695            case sstcommit:
12696            {
12697                lcisnewsql = true;
12698                TSourceToken lcPrev = pcst.prevSolidToken();
12699                if ((lcPrev != null) && (lcPrev.tokencode == TBaseType.rrw_hana_of)){
12700                    lcisnewsql = false;
12701                }
12702                if ( pstate != EFindSqlStateType.stnormal )
12703                {
12704                    lcisnewsql = false;
12705
12706                }
12707                if (lcisnewsql){
12708                    ret =  new TCommitStmt(pdbvendor);
12709                }
12710
12711                break;
12712            }
12713            case sstrollback:
12714            {
12715                ret =  new TRollbackStmt(pdbvendor);
12716                break;
12717            }
12718            case sstRevoke:
12719            {
12720                lcisnewsql = true;
12721
12722                if ( pstate != EFindSqlStateType.stnormal )
12723                {
12724                    lcisnewsql = false;
12725
12726                }
12727                if (lcisnewsql){
12728                    ret = new TRevokeStmt(pdbvendor);
12729                }
12730                break;
12731            }
12732            case sstcreateindex:
12733            {
12734                ret =  new TCreateIndexSqlStatement(pdbvendor);
12735                break;
12736            }
12737            case sstset:
12738            {
12739                lcisnewsql = true;
12740                if ( pstate != EFindSqlStateType.stnormal )
12741                {
12742                    if ( TBaseType.assigned(lccurrentsqlstatement) )
12743                    {
12744                        lcisnewsql = false;
12745                    }
12746                }
12747
12748                if ( lcisnewsql )
12749                {
12750                    ret =  new TMssqlSet(pdbvendor);
12751                }
12752
12753                break;
12754            }
12755            case sstdropsequence:
12756                ret = new TDropSequenceStmt(pdbvendor);
12757                break;
12758            case sstalterdatabase:
12759                ret = new TAlterDatabaseStmt(pdbvendor);
12760                break;
12761            case sstcreatedatabase:
12762            {
12763                ret = new TCreateDatabaseSqlStatement(pdbvendor);
12764                break;
12765            }
12766            case sstcreateschema:
12767            {
12768                ret = new TCreateSchemaSqlStatement(pdbvendor);
12769                break;
12770            }
12771            case sstcreatesynonym:
12772            {
12773                ret = new TCreateSynonymStmt(pdbvendor);
12774                break;
12775            }
12776            case sstcreatetype:
12777                ret = new TMssqlCreateType(pdbvendor);
12778                break;
12779            case sstreplace:
12780                lcisnewsql = true;
12781                TSourceToken lcNext = pcst.nextSolidToken();
12782                if ((lcNext != null) && (lcNext.tokencode == '(')){
12783                    lcisnewsql = false;
12784                }
12785                if ( pstate != EFindSqlStateType.stnormal )
12786                {
12787                    lcisnewsql = false;
12788                }
12789                if (lcisnewsql) {
12790                     ret = new TUpsertStmt(pdbvendor);
12791                    //ret.sqlstatementtype = gnewsqlstatementtype;
12792                }
12793                break;
12794            case sstalterauditpolicy:
12795                ret = new TAlterAuditPolicyStmt(pdbvendor);
12796                break;
12797            case sstaltercredential:
12798                ret = new TAlterCredentialStmt(pdbvendor);
12799                break;
12800            case sstalterfulltextindex:
12801                ret = new TAlterFulltextIndexStmt(pdbvendor);
12802                break;
12803            case sstalterindex:
12804                ret = new TAlterIndexStmt(pdbvendor);
12805                break;
12806            case sstalterldapprovider:
12807                ret = new TAlterLDAPProviderStmt(pdbvendor);
12808                break;
12809            case sstalterjwtprovider:
12810                ret = new TAlterJWTProviderStmt(pdbvendor);
12811                break;
12812            case sstalterpse:
12813                ret = new TAlterPSEStmt(pdbvendor);
12814                break;
12815            case sstalterremotesource:
12816                ret = new TAlterRemoteSourceStmt(pdbvendor);
12817                break;
12818            case sstAlterRole:
12819                ret = new TAlterRoleStmt(pdbvendor);
12820                break;
12821            case sstaltersamlprovider:
12822                ret = new TAlterSAMLProviderStmt(pdbvendor);
12823                break;
12824            case sstaltersequence:
12825                ret = new TAlterSequenceStatement(pdbvendor);
12826                break;
12827            case sstalterstatistics:
12828                ret = new TAlterStatisticsStmt(pdbvendor);
12829                break;
12830            case sstaltersystem:
12831                ret = new TAlterSystemStmt(pdbvendor);
12832                break;
12833            case sstunload:
12834                lcisnewsql = true;
12835                if ( pstate != EFindSqlStateType.stnormal )
12836                {
12837                    lcisnewsql = false;
12838                }
12839                if ( lcisnewsql ) {
12840                    ret = new TUnloadStmt(pdbvendor);
12841                    ret.sqlstatementtype = gnewsqlstatementtype;
12842                }
12843                break;
12844            case sstunset:
12845            case sstunsetpse:
12846            case sstunsetsystemlicense:
12847                lcisnewsql = true;
12848                if ( pstate != EFindSqlStateType.stnormal )
12849                {
12850                    lcisnewsql = false;
12851                }
12852                if ( lcisnewsql ) {
12853                    ret = new TUnsetStmt(pdbvendor);
12854                    ret.sqlstatementtype = gnewsqlstatementtype;
12855                }
12856                break;
12857            case sstalteruser:
12858                ret  = new TAlterUserStmt(pdbvendor);
12859                break;
12860            case sstconnect:
12861                lcisnewsql = true;
12862                if ( pstate != EFindSqlStateType.stnormal )
12863                {
12864                    lcisnewsql = false;
12865                }
12866                if ( lcisnewsql ) {
12867                    ret = new TConnectStmt(pdbvendor);
12868                    ret.sqlstatementtype = gnewsqlstatementtype;
12869                }
12870                break;
12871            case sstalterusergroup:
12872                ret = new TAlterUserGroupStmt(pdbvendor);
12873                        break;
12874            case sstalterview:
12875            case sstalterviewcache:
12876                ret = new TAlterViewStatement(pdbvendor);
12877                break;
12878            case sstaltervirtualtable:
12879                ret = new TAlterVirtualTableStmt(pdbvendor);
12880                break;
12881            case sstalterworkloadclass:
12882                ret = new TAlterWorkloadClassStmt(pdbvendor);
12883                break;
12884            case sstalterworkloadmapping:
12885                ret = new TAlterWorkloadMappingStmt(pdbvendor);
12886                break;
12887            case sstbackupcancel:
12888                ret = new TBackupCancelStmt(pdbvendor);
12889                break;
12890            case sstbackupcatalogdelete:
12891                ret = new TBackupCatalogDeleteStmt(pdbvendor);
12892                break;
12893            case sstbackupcheck:
12894            case sstbackupcheckaccess:
12895                ret = new TBackupCheckStmt(pdbvendor);
12896                break;
12897            case sstbackupdata:
12898                ret = new TBackupDataStmt(pdbvendor);
12899                break;
12900            case sstbackuplistdata:
12901                ret = new TBackupListDataStmt(pdbvendor);
12902                break;
12903            case sstcall:
12904                ret = new TCallStatement(pdbvendor);
12905                break;
12906            case sstcomment:
12907                ret = new TCommentOnSqlStmt(pdbvendor);
12908                break;
12909            case sstcreateauditpolicy:
12910                ret =  new TCreateAuditPolicyStmt(pdbvendor);
12911                break;
12912            case sstcreatecertificate:
12913                ret =  new TCreateCertificateStmt(pdbvendor);
12914                break;
12915            case sstcreatecollection:
12916                ret =  new TCreateCollectionStmt(pdbvendor);
12917                break;
12918            case sstcreatecredential:
12919                ret =  new TCreateCredentialStmt(pdbvendor);
12920                break;
12921            case sstcreatefulltextindex:
12922                ret =  new TCreateFulltextIndexStmt(pdbvendor);
12923                break;
12924            case sstcreategraphworkspace:
12925                ret =  new TCreateGraphWorkspaceStmt(pdbvendor);
12926                break;
12927            case sstcreateJWTProvider:
12928                ret =  new TCreateJWTProviderStmt(pdbvendor);
12929                break;
12930            case sstcreateLDAPProvider:
12931                ret =  new TCreateLDAPProviderStmt(pdbvendor);
12932                break;
12933            case sstcreatepse:
12934                ret =  new TCreatePSEStmt(pdbvendor);
12935                break;
12936            case sstcreateremotesource:
12937                ret =  new TCreateRemoteSourceStmt(pdbvendor);
12938                break;
12939            case sstcreaterole:
12940                ret =  new TCreateRoleStmt(pdbvendor);
12941                break;
12942            case sstcreatesamlprovider:
12943                ret =  new TCreateSAMLProviderStmt(pdbvendor);
12944                break;
12945            case sstcreatestatistics:
12946                ret =  new TCreateStatistics(pdbvendor);
12947                break;
12948            case sstcreatestructuredprivilege:
12949                ret =  new TCreateStructuredPrivilegeStmt(pdbvendor);
12950                break;
12951            case sstcreateuser:
12952                ret =  new TCreateUserStmt(pdbvendor);
12953                break;
12954            case sstcreateusergroup:
12955                ret =  new TCreateUserGroupStmt(pdbvendor);
12956                break;
12957            case sstcreatevirtualfunction:
12958                ret =  new TCreateVirtualFunctionStmt(pdbvendor);
12959                break;
12960            case sstcreatevirtualtable:
12961                ret =  new TCreateVirtualTableStmt(pdbvendor);
12962                break;
12963            case sstcreateworkloadclass:
12964                ret =  new TCreateWorkloadClassStmt(pdbvendor);
12965                break;
12966            case sstcreateworkloadmapping:
12967                ret =  new TCreateWorkloadMappingStmt(pdbvendor);
12968                break;
12969            case sstdropauditpolicy:
12970            case sstdropcertificate:
12971            case sstdropcollection:
12972            case sstdropcredential:
12973            case sstdropfulltextindex:
12974            case sstdropJWTProvider:
12975            case sstdropLDAPProvider:
12976            case sstdroppse:
12977            case sstdropremotesource:
12978            case sstdropsamlprovider:
12979            case sstdropstatistics:
12980            case sstdropgraphworkspace:
12981            case sstdropstructuredprivilege:
12982            case sstdroptype:
12983            case sstdropusergroup:
12984            case sstdropworkloadclass:
12985            case sstdropworkloadmapping:
12986                lcisnewsql = true;
12987                if ( pstate != EFindSqlStateType.stnormal )
12988                {
12989                    lcisnewsql = false;
12990                }
12991                if ( lcisnewsql ) {
12992                    ret =  new TDropStmt(pdbvendor);
12993                }
12994
12995                break;
12996            case sstdropdatabase:
12997                ret =  new TDropDatabaseStmt(pdbvendor);
12998                break;
12999            case sstdropfunction:
13000                ret =  new TDropFunctionStmt(pdbvendor);
13001                break;
13002            case sstdropprocedure:
13003                ret =  new TDropProcedureStmt(pdbvendor);
13004                break;
13005            case sstdroprole:
13006                ret =  new TDropRoleStmt(pdbvendor);
13007                break;
13008            case sstdropschema:
13009                ret =  new TDropSchemaSqlStatement(pdbvendor);
13010                break;
13011            case sstdropsynonym:
13012                ret =  new TDropSynonymStmt(pdbvendor);
13013                break;
13014            case sstdroptrigger:
13015                ret =  new TDropTriggerSqlStatement(pdbvendor);
13016                break;
13017            case sstdropuser:
13018                ret =  new TDropUserStmt(pdbvendor);
13019                break;
13020            case sstExplain:
13021                ret =  new TExplainPlan(pdbvendor);
13022                break;
13023            case sstexport:
13024                ret =  new TExportStmt(pdbvendor);
13025                break;
13026            case sstimport:
13027//            case sstimportfrom:
13028//            case sstimportscan:
13029                ret =  new TImportStmt(pdbvendor);
13030                break;
13031            case sstload:
13032                lcisnewsql = true;
13033                if ( pstate != EFindSqlStateType.stnormal )
13034                {
13035                    lcisnewsql = false;
13036                }
13037                if ( lcisnewsql ) {
13038                    ret =  new TLoadStmt(pdbvendor);
13039                }
13040
13041                break;
13042            case sstlocktable:
13043                ret =  new TLockTableStmt(pdbvendor);
13044                break;
13045            case sstmergedelta:
13046                ret =  new TMergeDeltaStmt(pdbvendor);
13047                break;
13048            case sstmerge:
13049                ret =  new TMergeSqlStatement(pdbvendor);
13050                break;
13051            case sstrecoverdata:
13052                ret =  new TRecoverDataStmt(pdbvendor);
13053                break;
13054            case sstrecoverdatabase:
13055                ret =  new TRecoverDatabaseStmt(pdbvendor);
13056                break;
13057            case sstrefreshstatistics:
13058                ret =  new TRefreshStatisticsStmt(pdbvendor);
13059                break;
13060            case sstrenamecollection:
13061            case sstrenamecolumn:
13062            case sstrenamedatabase:
13063            case sstrenameindex:
13064            case sstrenametable:
13065                ret =  new TRenameStmt(pdbvendor);
13066                break;
13067            case sssethistorysession:
13068            case sstsetpse:
13069            case sstsetschema:
13070            case sstsetsystemlicense:
13071            case sstsettransaction:
13072            case sstsettransactionautocommit:
13073                ret =  new TSetDatabaseObjectStmt(pdbvendor);
13074                break;
13075            case ssttruncatecollection:
13076                ret =  new TTruncateCollectionStmt(pdbvendor);
13077                break;
13078            case sstvalidateLDAPProvider:
13079                ret =  new TValidateLDAPProviderStmt(pdbvendor);
13080                break;
13081            case sstvalidateUser:
13082                ret =  new TValidateUserStmt(pdbvendor);
13083                break;
13084            case sstupsert:
13085                ret =  new TUpsertStmt(pdbvendor);
13086                break;
13087            case sstsavepoint:
13088                {
13089                    lcisnewsql = true;
13090
13091                    if ( pstate != EFindSqlStateType.stnormal )
13092                    {
13093                        lcisnewsql = false;
13094    
13095                    }
13096                    if (lcisnewsql){
13097                    ret = new TSavepointStmt(pdbvendor);
13098                    ret.sqlstatementtype = gnewsqlstatementtype;
13099                    }
13100                    break;
13101                }                
13102            default:
13103            {
13104                ret =  new TUnknownSqlStatement(pdbvendor);
13105                ret.sqlstatementtype = gnewsqlstatementtype;
13106                break;
13107            }
13108        }    // case
13109
13110        return ret;
13111    }
13112
13113    TCustomSqlStatement mapTeradataUsing(TSourceToken ptoken){
13114        TCustomSqlStatement ret = null;
13115        TSourceToken lctoken = null;
13116        int lcnested = 0,k,j;
13117
13118        //using ... insert/select/delete/update/begin transaction
13119        int lcpos = ptoken.posinlist;
13120        TSourceTokenList lcsourcetokenlist = ptoken.container;
13121
13122        for (int i = lcpos + 1; i <  lcsourcetokenlist.size();i++)    // iterate
13123          {
13124            lctoken = lcsourcetokenlist.get(i);
13125              if ( (lctoken.tokencode == TBaseType.rrw_delete) )
13126                {
13127                  ret = new TDeleteSqlStatement(EDbVendor.dbvteradata);
13128                  gnewsqlstatementtype = ESqlStatementType.sstdelete;
13129                  break;
13130                }
13131              else if ( (lctoken.tokencode == TBaseType.rrw_insert) )
13132                {
13133                  ret = new TInsertSqlStatement(EDbVendor.dbvteradata);
13134                  gnewsqlstatementtype = ESqlStatementType.sstinsert;
13135                  break;
13136                }
13137              else if ( (lctoken.tokencode == TBaseType.rrw_select) )
13138                {
13139                  ret = new TSelectSqlStatement(EDbVendor.dbvteradata);
13140                  gnewsqlstatementtype = ESqlStatementType.sstselect;
13141                  break;
13142                }
13143              else if ( (lctoken.tokencode == TBaseType.rrw_update) )
13144                {
13145                  ret = new TUpdateSqlStatement(EDbVendor.dbvteradata);
13146                  gnewsqlstatementtype = ESqlStatementType.sstupdate;
13147                  break;
13148                }
13149              else if ( (lctoken.tokencode == TBaseType.rrw_begin) || (lctoken.tokencode == TBaseType.rrw_bt) )
13150                {
13151                  ret = new TTeradataBeginTransaction(EDbVendor.dbvteradata);
13152                  gnewsqlstatementtype = ESqlStatementType.sstteradatabegintransaction;
13153                  break;
13154                }
13155          }
13156        return ret;
13157    }
13158
13159/**
13160 * Analyzes a SQL token to determine if it starts a Common Table Expression (CTE) 
13161 * and returns the appropriate SQL statement object.
13162 *
13163 * This function handles CTEs that begin with "WITH" and can contain:
13164 * - SELECT statements
13165 * - INSERT statements  
13166 * - UPDATE statements
13167 * - DELETE statements
13168 * - MERGE statements
13169 * - VALUES clauses (PostgreSQL)
13170 *
13171 * Side Effects:
13172 * When a CTE is found, this function marks tokens as "ignored" to prevent them from being 
13173 * processed again during raw statement parsing:
13174 * 1. All tokens from after WITH up to and including the main statement keyword (SELECT/INSERT/etc.) 
13175 *    are marked with ETokenStatus.tsignoredbygetrawstatement
13176 * 2. For INSERT statements, additional tokens after INSERT up to VALUES/SELECT/EXECUTE/semicolon 
13177 *    are also marked as ignored
13178 * 
13179 * Example of ignored tokens:
13180 * WITH cte AS (SELECT * FROM t1)  -- these tokens marked as ignored
13181 * SELECT * FROM cte;             -- SELECT is also marked as ignored
13182 *                               -- parsing continues after SELECT
13183 *
13184 * @param ptoken The source token to analyze, expected to be a "WITH" keyword
13185 * @param pdbvendor The database vendor type (e.g. Oracle, SQL Server, etc.)
13186 * @return A TCustomSqlStatement object representing the CTE statement type found,
13187 *         or null if no valid CTE statement is detected
13188 */    
13189TCustomSqlStatement findcte(TSourceToken ptoken, EDbVendor pdbvendor){
13190    TCustomSqlStatement ret = null;
13191    TSourceToken lctoken = null;
13192    int lcnested = 0,k,j;
13193    boolean inXmlNamespaces = false;
13194    boolean isXmlNamespaces = false;
13195
13196    int lcpos = ptoken.posinlist;
13197    TSourceTokenList lcsourcetokenlist = ptoken.container;
13198
13199    for (int i = lcpos + 1; i <  lcsourcetokenlist.size();i++)    // iterate
13200      {
13201        lctoken = lcsourcetokenlist.get(i);
13202//        if (lctoken.tokencode == TBaseType.rrw_postgresql_recursive){
13203//            continue;
13204//        }
13205          if (lctoken.tokencode == TBaseType.rrw_xmlnamespaces){
13206              inXmlNamespaces = true;
13207              lcnested = 0;
13208              continue;
13209          }
13210          if (inXmlNamespaces) {
13211              if ( lctoken.tokentype == ETokenType.ttleftparenthesis)  lcnested++;
13212              if ( lctoken.tokentype == ETokenType.ttrightparenthesis) {
13213                  lcnested--;
13214                  if (lcnested == 0) {
13215                    inXmlNamespaces = false;
13216                    isXmlNamespaces = true;
13217                  }
13218              }
13219              continue;
13220          }
13221        if (( lctoken.tokencode == TBaseType.rrw_as ) || isXmlNamespaces)
13222          {
13223            lcnested = 0;
13224            int startPos = i+1;
13225            if (isXmlNamespaces) startPos = i;
13226            for ( j = startPos; j < lcsourcetokenlist.size();j++)
13227            {
13228              lctoken = lcsourcetokenlist.get(j);
13229              if (lctoken.isnonsolidtoken() ) continue;
13230              if ( lctoken.tokentype == ETokenType.ttleftparenthesis)  lcnested++;
13231              if ( lctoken.tokentype == ETokenType.ttrightparenthesis) lcnested--;
13232
13233
13234              if ( (lcnested == 0) && (lctoken.tokencode == TBaseType.rrw_delete) )
13235                {
13236                  ret = new TDeleteSqlStatement(pdbvendor);
13237                  ret.isctequery = true;
13238                  gnewsqlstatementtype = ESqlStatementType.sstdelete;
13239                  break;
13240                }
13241
13242                if ( (lcnested == 0) && (lctoken.tokencode == TBaseType.rrw_merge) )
13243                  {
13244                    ret = new TMergeSqlStatement(pdbvendor);
13245                    ret.isctequery = true;
13246                    gnewsqlstatementtype = ESqlStatementType.sstmerge;
13247                    break;
13248                  }
13249
13250              if ( (lcnested == 0) && (lctoken.tokencode == TBaseType.rrw_insert) )
13251                {
13252                  ret = new TInsertSqlStatement(pdbvendor);
13253                  ret.isctequery = true;
13254                  gnewsqlstatementtype = ESqlStatementType.sstinsert;
13255                  ret.dummytag = 1; //  select stmt in insert is permitted
13256
13257                  for ( k = lctoken.posinlist + 1; k < lcsourcetokenlist.size();k++)    // iterate
13258                  {
13259                    if ( lcsourcetokenlist.get(k).isnonsolidtoken()  ) continue;
13260                    if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_values ) break;
13261                    if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_go ) break;
13262                    if ( lcsourcetokenlist.get(k).tokentype == ETokenType.ttsemicolon ) break;
13263                    if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_select ) break;
13264                    if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_execute ) break;
13265                    if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_exec ) break;
13266                  }    // for
13267                  if ( k > lcsourcetokenlist.size() - 1 )
13268                    k = lcsourcetokenlist.size() - 1;
13269
13270                  for (int m = lctoken.posinlist + 1; m <=  k; m++)    // iterate
13271                  {
13272                    lcsourcetokenlist.get(m).tokenstatus = ETokenStatus.tsignoredbygetrawstatement;
13273                  }    // for
13274
13275                  break;
13276                }
13277
13278                if ( (lcnested == 0) && (lctoken.tokencode == TBaseType.rrw_values) &&(pdbvendor == EDbVendor.dbvpostgresql) )
13279                {
13280                        ret = new TSelectSqlStatement(pdbvendor);
13281                        ret.isctequery = true;
13282                        gnewsqlstatementtype = ESqlStatementType.sstselect;
13283                        break;
13284                }
13285
13286              if ( (lcnested == 0) && (lctoken.tokencode == TBaseType.rrw_select) )
13287                {
13288                  ret = new TSelectSqlStatement(pdbvendor);
13289                  ret.isctequery = true;
13290                  gnewsqlstatementtype = ESqlStatementType.sstselect;
13291                  break;
13292                }
13293
13294              if ( (lcnested == 0) && (lctoken.tokencode == TBaseType.rrw_update) )
13295                {
13296                  ret = new TUpdateSqlStatement(pdbvendor);
13297                  ret.isctequery = true;
13298                  ret.dummytag = 1; // means set clause in update is not found yet, used to seperate set clause from set statement
13299                  gnewsqlstatementtype = ESqlStatementType.sstupdate;
13300                  break;
13301                }
13302
13303                if ( (pdbvendor == EDbVendor.dbvhive) && (lcnested == 0) && (lctoken.tokencode == TBaseType.rrw_from) )
13304                {
13305                    TSourceToken cmdToken = lctoken.searchToken(TBaseType.rrw_insert,3);
13306                    if (cmdToken != null){
13307                        ret = new TInsertSqlStatement(pdbvendor);
13308                        ret.isctequery = true;
13309                        gnewsqlstatementtype = ESqlStatementType.sstinsert;
13310
13311                    }else{
13312                        ret = new TSelectSqlStatement(pdbvendor);
13313                        ret.isctequery = true;
13314                        gnewsqlstatementtype = ESqlStatementType.ssthiveFromQuery;
13315                    }
13316                    break;
13317                }
13318
13319
13320            }    // for
13321
13322            if ( (ret != null) )
13323              {
13324                for (k = lcpos + 1; k <= j;k++)    // iterate
13325                {
13326                  lcsourcetokenlist.get(k).tokenstatus = ETokenStatus.tsignoredbygetrawstatement;
13327                }    // for
13328                break;
13329              }
13330
13331          }
13332      }
13333
13334    return ret;
13335}
13336
13337  TCustomSqlStatement findMdxStmtBeginWithClause(TSourceToken ptoken, EDbVendor pdbvendor){
13338      TCustomSqlStatement ret = null;
13339      ret = new TMdxSelect(pdbvendor);
13340      ret.isctequery = true;
13341      gnewsqlstatementtype = ESqlStatementType.sstmdxselect;
13342      return ret;
13343 }
13344
13345 TCustomSqlStatement isdb2sql(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
13346    TCustomSqlStatement ret = null;
13347    int k;
13348    boolean lcisnewsql;
13349    TSourceToken lcpprevsolidtoken,lcnextsolidtoken;
13350
13351    gnewsqlstatementtype = ESqlStatementType.sstinvalid;
13352
13353    if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
13354       || (pcst.tokencode  == TBaseType.cmtslashstar)
13355       || (pcst.tokencode  == TBaseType.lexspace)
13356       || (pcst.tokencode  == TBaseType.lexnewline)
13357        || (pcst.tokentype == ETokenType.ttsemicolon) )
13358    {
13359      return ret;
13360    }
13361
13362    int lcpos = pcst.posinlist;
13363    TSourceTokenList lcsourcetokenlist = pcst.container;
13364    TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
13365
13366    //subquery after semicolon || at first line
13367    if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
13368      {
13369        k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
13370        if ( k >0 )
13371          {
13372            ret =  new TSelectSqlStatement(pdbvendor);
13373          }
13374
13375        return ret;
13376      }
13377
13378    //cte
13379    if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
13380      {
13381        ret = findcte(pcst,pdbvendor);
13382        if ( TBaseType.assigned(ret) )  return ret;
13383      }
13384
13385    //values
13386    if ( (pstate == EFindSqlStateType.stnormal) &&  (pcst.tokencode == TBaseType.rrw_values) )
13387      {
13388        ret =  new TSelectSqlStatement(pdbvendor);
13389        return ret;
13390      }
13391
13392    // db2 scriptoptions
13393    if ( pcst.tokencode == TBaseType.scriptoptions )
13394      {
13395        ret = new TDb2ScriptOptionStmt(pdbvendor);
13396        return ret;
13397      }
13398
13399    gnewsqlstatementtype = finddb2cmd(pcst);
13400
13401    TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
13402    switch(gnewsqlstatementtype) {   //
13403        case sstinvalid:
13404          {
13405            ret = null;
13406           if ( pcst.tokencode == TBaseType.rrw_begin )
13407          {
13408              ret = new TCommonBlock(pdbvendor);
13409              gnewsqlstatementtype = ret.sqlstatementtype;
13410          }
13411              break;
13412          }
13413        case sstselect:
13414          {
13415            lcisnewsql = true;
13416
13417            if ( pstate != EFindSqlStateType.stnormal )
13418              {
13419                // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
13420                if ( TBaseType.assigned(lcprevsolidtoken) )
13421                  {
13422                    if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
13423                      lcisnewsql = false; //subqery
13424                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
13425                      lcisnewsql = false;
13426                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
13427                      lcisnewsql = false;
13428                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
13429                      lcisnewsql = false;
13430                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
13431                      lcisnewsql = false;
13432                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
13433                      lcisnewsql = false;
13434                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
13435                      {
13436                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
13437                          lcisnewsql = false;
13438                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
13439                          lcisnewsql = false;
13440                      }
13441
13442                    if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
13443                      {
13444                        lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
13445                        if ( TBaseType.assigned(lcpprevsolidtoken) )
13446                          {
13447                            if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
13448                              lcisnewsql = false;
13449                          }
13450                      }
13451
13452                  }
13453
13454
13455                if ( TBaseType.assigned(lccurrentsqlstatement) )
13456                  {
13457                    if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
13458                    {
13459                      lcisnewsql = false;
13460                    }
13461                    else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstselect )
13462                      {
13463                        if ( lccurrentsqlstatement.isctequery )
13464                          lcisnewsql = false;
13465                      }
13466                  }
13467
13468              }
13469
13470            if ( lcisnewsql )
13471              ret =  new TSelectSqlStatement(pdbvendor);
13472              break;
13473          }
13474        case sstinsert:
13475          {
13476            lcisnewsql = true;
13477            if ( pstate != EFindSqlStateType.stnormal )
13478              {
13479                if ( TBaseType.assigned(lccurrentsqlstatement) )
13480                  {
13481
13482                  }
13483              }
13484
13485            if ( lcisnewsql )
13486              ret =  new TInsertSqlStatement(pdbvendor);
13487              break;
13488          }
13489        case sstupdate:
13490          {
13491            lcisnewsql = true;
13492            if ( pstate != EFindSqlStateType.stnormal )
13493              {
13494                lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
13495                if ( TBaseType.assigned(lcprevsolidtoken) )
13496                  { //
13497                    if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
13498                      lcisnewsql = false;
13499                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
13500                      lcisnewsql = false;
13501                  }
13502
13503                lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
13504                if ( TBaseType.assigned(lcnextsolidtoken) )
13505                  {
13506                    if ( lcnextsolidtoken.tokentype == ETokenType.ttleftparenthesis)
13507                      {
13508                        k = lcsourcetokenlist.solidtokenafterpos(lcnextsolidtoken.posinlist,TBaseType.rrw_select,1,"(");
13509                        if ( k  == 0 ) lcisnewsql = false;
13510                      }
13511                  }
13512
13513
13514                if ( TBaseType.assigned(lccurrentsqlstatement) )
13515                  {
13516                  }
13517              }
13518
13519            if ( lcisnewsql )
13520              {
13521                ret =  new TUpdateSqlStatement(pdbvendor);
13522                ret.dummytag = 1; // means set clause in update is not found yet, used to seperate set clause from set statement
13523              }
13524              break;
13525          }
13526        case sstdelete:
13527          {
13528            lcisnewsql = true;
13529
13530            if ( pstate != EFindSqlStateType.stnormal )
13531              {
13532                lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
13533                if ( TBaseType.assigned(lcprevsolidtoken) )
13534                  {
13535                    if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
13536                      lcisnewsql = false;
13537                  }
13538
13539                if ( TBaseType.assigned(lccurrentsqlstatement) )
13540                  {
13541                  }
13542              }
13543
13544            if ( lcisnewsql )
13545              ret =  new TDeleteSqlStatement(pdbvendor);
13546              break;
13547          }
13548        case sstmerge:
13549          {
13550            ret =  new TMergeSqlStatement(pdbvendor);
13551            ret.sqlstatementtype = gnewsqlstatementtype;
13552              break;
13553          }
13554        case sstcommit:
13555          {
13556            ret =  new TUnknownSqlStatement(pdbvendor);
13557            ret.sqlstatementtype = gnewsqlstatementtype;
13558              break;
13559          }
13560        case sstrollback:
13561          {
13562            ret =  new TUnknownSqlStatement(pdbvendor);
13563            ret.sqlstatementtype = gnewsqlstatementtype;
13564              break;
13565          }
13566        case sstsavepoint:
13567          {
13568            ret =  new TUnknownSqlStatement(pdbvendor);
13569            ret.sqlstatementtype = gnewsqlstatementtype;
13570              break;
13571          }
13572        case sstRevoke:
13573          {
13574            ret =  new TUnknownSqlStatement(pdbvendor);
13575            ret.sqlstatementtype = gnewsqlstatementtype;
13576              break;
13577          }
13578        case sstcreatetable:
13579          {
13580            ret =  new TCreateTableSqlStatement(pdbvendor);
13581              break;
13582          }
13583        case sstcreateview:
13584          {
13585            ret =  new TCreateViewSqlStatement(pdbvendor);
13586              break;
13587          }
13588        case sstcreateindex:
13589          {
13590            ret =  new TCreateIndexSqlStatement(pdbvendor);
13591              break;
13592          }
13593        case sstcreatedatabase:
13594          {
13595            ret =  new TCreateDatabaseSqlStatement(pdbvendor);
13596              break;
13597          }
13598        case sstdroptable:
13599          {
13600            ret =  new TDropTableSqlStatement(pdbvendor);
13601              break;
13602          }
13603        case sstdropview:
13604          {
13605            ret =  new TDropViewSqlStatement(pdbvendor);
13606              break;
13607          }
13608        case sstdropindex:
13609          {
13610            ret =  new TDropIndexSqlStatement(pdbvendor);
13611              break;
13612          }
13613        case sstaltertable:
13614          {
13615            ret =  new TAlterTableStatement(pdbvendor);
13616              break;
13617          }
13618        case sstaltersession:
13619          {
13620            ret =  new TAlterSessionStatement(pdbvendor);
13621              break;
13622          }
13623        case sstdb2set:
13624          {
13625            ret = new TDb2SetVariableStmt(pdbvendor);
13626              break;
13627          }
13628        case sstdb2setschema:
13629        {
13630            ret = new TSetDatabaseObjectStmt(pdbvendor);
13631            break;
13632        }
13633        case sstdb2call:
13634          {
13635            ret = new TDb2CallStmt(pdbvendor);
13636              break;
13637          }
13638        case sstdb2declarecursor:
13639          {
13640            ret = new TDb2DeclareCursorStatement(pdbvendor);
13641              break;
13642          }
13643        case sstcreateprocedure:
13644          {
13645            ret = new TCreateProcedureStmt(pdbvendor);
13646              break;
13647          }
13648        case sstcreatefunction:
13649          {
13650            ret = new TCreateFunctionStmt(pdbvendor);
13651              break;
13652          }
13653        case sstdb2createtrigger:
13654          {
13655            ret = new TCreateTriggerStmt(pdbvendor);
13656              break;
13657          }
13658        case sstdb2return:
13659          {
13660            ret = new TDb2ReturnStmt(pdbvendor);
13661              break;
13662          }
13663      case sstdb2refreshtable:
13664      case sstdb2connect:
13665      case sstdb2terminate:
13666      case sstdb2execute:
13667          {
13668            ret = new TDb2DummyStmt(pdbvendor);
13669              break;
13670          }
13671        case sstdb2createalias:
13672        {
13673            ret = new TCreateAliasStmt(pdbvendor);
13674            break;
13675        }
13676        case sstcreateauditpolicy:
13677            ret =  new TCreateAuditPolicyStmt(pdbvendor);
13678            break;
13679        case sstdb2comment:
13680            ret =  new TCommentOnSqlStmt(pdbvendor);
13681            break;
13682        case sstdb2createvariable:
13683            ret =  new TCreateVariableStmt(pdbvendor);
13684            break;
13685        case sstcreaterole:
13686            ret =  new TCreateRoleStmt(pdbvendor);
13687            break;
13688        case sstcreateTablespace:
13689            ret =  new TCreateTablespaceStmt(pdbvendor);
13690            break;
13691        case sstRunStats:
13692            ret =  new TRunStats(pdbvendor);
13693            break;
13694        case ssttruncatetable:
13695        {
13696            ret =  new TTruncateStatement(pdbvendor);
13697            break;
13698        }
13699        case sstcreatesynonym:
13700            ret = new TCreateSynonymStmt(pdbvendor);
13701            break;        
13702        default:
13703          {
13704            // ret = tdb2dummystmt.create(pdbvendor);
13705            ret =  new TUnknownSqlStatement(pdbvendor);
13706            ret.sqlstatementtype = gnewsqlstatementtype;
13707              break;
13708          }
13709    }    // case
13710
13711    return ret;
13712}
13713
13714    public TCustomSqlStatement issql(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
13715        TCustomSqlStatement ret = null;
13716        if (pcst == null) return null;
13717
13718        switch (pdbvendor){
13719            case dbvoracle: {
13720                ret = isoraclesql(pcst,pdbvendor,pstate,psqlstatement);
13721                break;
13722            }
13723            case dbvmssql: {
13724                ret = ismssqlsql(pcst, pdbvendor, pstate, psqlstatement);
13725                break;
13726            }
13727            case dbvdb2: {
13728                ret = isdb2sql(pcst, pdbvendor, pstate, psqlstatement);
13729                break;
13730            }
13731            case dbvmysql: {
13732                ret = ismysqlsql(pcst, pdbvendor, pstate, psqlstatement);
13733                break;
13734            }
13735            case dbvaccess: {
13736                ret = ismssqlsql(pcst, pdbvendor, pstate, psqlstatement);
13737                break;
13738            }
13739            case dbvteradata: {
13740                ret = isteradatasql(pcst, pdbvendor, pstate, psqlstatement);
13741                break;
13742            }
13743            case dbvpostgresql: {
13744                ret = ispostgresql(pcst, pdbvendor, pstate, psqlstatement);
13745                break;
13746            }
13747            case dbvredshift: {
13748                ret = isredshift(pcst, pdbvendor, pstate, psqlstatement);
13749                break;
13750            }
13751            case dbvgreenplum: {
13752                ret = isgreenplum(pcst,pdbvendor,pstate,psqlstatement);
13753                break;
13754            }
13755            case dbvmdx:{
13756                ret = ismdxsql(pcst, pdbvendor, pstate, psqlstatement);
13757                break;
13758            }
13759            case dbvnetezza:{
13760                ret = isnetezza(pcst, pdbvendor, pstate, psqlstatement);
13761                break;
13762            }
13763            case dbvsybase:{
13764                ret = issybasesql(pcst, pdbvendor, pstate, psqlstatement);
13765                break;
13766            }
13767            case dbvinformix:{
13768                ret = isinformixsql(pcst, pdbvendor, pstate, psqlstatement);
13769                break;
13770            }
13771            case dbvhive:{
13772                ret = ishive(pcst, pdbvendor, pstate, psqlstatement);
13773                break;
13774            }
13775            case dbvimpala:{
13776                ret = ishive(pcst, pdbvendor, pstate, psqlstatement);
13777                break;
13778            }
13779            case dbvhana:{
13780                ret = ishana(pcst, pdbvendor, pstate, psqlstatement);
13781                break;
13782            }
13783            case dbvvertica:{
13784                ret = isvertica(pcst, pdbvendor, pstate, psqlstatement);
13785                break;
13786            }
13787            case dbvcouchbase:{
13788                ret = iscouchbase(pcst, pdbvendor, pstate, psqlstatement);
13789                break;
13790            }
13791            case dbvsnowflake:{
13792                ret = issnowflake(pcst, pdbvendor, pstate, psqlstatement);
13793                break;
13794            }
13795            case dbvbigquery:{
13796                ret = isbigquery(pcst, pdbvendor, pstate, psqlstatement);
13797                break;
13798            }
13799            case dbvsoql:{
13800                ret = ismssqlsql(pcst,pdbvendor,pstate,psqlstatement);
13801                break;
13802            }
13803            case dbvsparksql:{
13804                ret = issparksql(pcst,pdbvendor,pstate,psqlstatement);
13805                break;
13806            }
13807            case dbvpresto:{
13808                ret = ispresto(pcst,pdbvendor,pstate,psqlstatement);
13809                break;
13810            }
13811            case dbvathena:{
13812                ret = isathena(pcst,pdbvendor,pstate,psqlstatement);
13813                break;
13814            }
13815            case dbvdatabricks:{
13816                ret = isdatabricks(pcst,pdbvendor,pstate,psqlstatement);
13817                break;
13818            }
13819            case dbvgaussdb:{
13820                ret = isgaussdb(pcst,pdbvendor,pstate,psqlstatement);
13821                break;
13822            }
13823            default:
13824            {
13825                ret = ismssqlsql(pcst,pdbvendor,pstate,psqlstatement);
13826            }
13827        }    // case
13828        return ret;
13829    }
13830    TCustomSqlStatement isdatabricks(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
13831
13832        TCustomSqlStatement ret = null;
13833        int k;
13834        boolean lcisnewsql;
13835        TSourceToken lcpprevsolidtoken,lcnextsolidtoken;
13836
13837        gnewsqlstatementtype = ESqlStatementType.sstinvalid;
13838
13839        if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
13840                || (pcst.tokencode  == TBaseType.cmtslashstar)
13841                || (pcst.tokencode  == TBaseType.lexspace)
13842                || (pcst.tokencode  == TBaseType.lexnewline)
13843                || (pcst.tokentype == ETokenType.ttsemicolon) )
13844        {
13845            return ret;
13846        }
13847
13848        int lcpos = pcst.posinlist;
13849        TSourceTokenList lcsourcetokenlist = pcst.container;
13850        TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
13851
13852        //subquery after semicolon || at first line
13853        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
13854        {
13855            k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
13856            if ( k >0 )
13857            {
13858                ret =  new TSelectSqlStatement(pdbvendor);
13859            }
13860
13861            return ret;
13862        }
13863
13864        //cte
13865        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
13866        {
13867            ret = findcte(pcst,pdbvendor);
13868            if ( (ret != null) )  return ret;
13869        }
13870
13871
13872        gnewsqlstatementtype = finddatabrickscmd(pcst);
13873
13874        TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
13875
13876        if ((gnewsqlstatementtype == ESqlStatementType.sstinvalid)&&(pcst.tokencode == TBaseType.rrw_create)){
13877            //if (pcst.container.nextsolidtoken(pcst.posinlist,15,))
13878            TSourceToken viewToken = pcst.container.searchToken(TBaseType.rrw_view,"",pcst,15);
13879            if (viewToken != null){
13880                gnewsqlstatementtype = ESqlStatementType.sstcreateview;
13881            }
13882        }
13883        switch (gnewsqlstatementtype){
13884            case sstinvalid:
13885            {
13886                ret = null;
13887                break;
13888            }
13889            case sstselect:
13890            {
13891                lcisnewsql = true;
13892
13893                if ( pstate != EFindSqlStateType.stnormal )
13894                {
13895                    // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
13896                    if ( TBaseType.assigned(lcprevsolidtoken) )
13897                    {
13898                        if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
13899                            lcisnewsql = false; //subqery
13900                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
13901                            lcisnewsql = false;
13902                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
13903                            lcisnewsql = false;
13904                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
13905                            lcisnewsql = false;
13906                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
13907                            lcisnewsql = false;
13908                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
13909                            lcisnewsql = false;
13910                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
13911                        {
13912                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
13913                                lcisnewsql = false;
13914                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
13915                                lcisnewsql = false;
13916                        }
13917
13918                        if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
13919                        {
13920                            lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
13921                            if ( TBaseType.assigned(lcpprevsolidtoken) )
13922                            {
13923                                if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
13924                                    lcisnewsql = false;
13925                            }
13926                        }
13927
13928                    }
13929
13930
13931                    if ( TBaseType.assigned(lccurrentsqlstatement) )
13932                    {
13933                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
13934                            lcisnewsql = false;
13935                    }
13936
13937                }
13938
13939                if ( lcisnewsql )
13940                    ret =  new TSelectSqlStatement(pdbvendor);
13941                break;
13942            }
13943            case sstinsert:
13944            {
13945                lcisnewsql = true;
13946                if ( pstate != EFindSqlStateType.stnormal )
13947                {
13948                    if ( TBaseType.assigned(lccurrentsqlstatement) )
13949                    {
13950
13951                    }
13952                }
13953
13954                if ( lcisnewsql )
13955                    ret =  new TInsertSqlStatement(pdbvendor);
13956                ret.sqlstatementtype = gnewsqlstatementtype;
13957                break;
13958            }
13959            case sstdelete:
13960            {
13961                lcisnewsql = true;
13962
13963                if ( pstate != EFindSqlStateType.stnormal )
13964                {
13965                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
13966                    if ( TBaseType.assigned(lcprevsolidtoken) )
13967                    {
13968                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
13969                            lcisnewsql = false;
13970                    }
13971
13972                    if ( TBaseType.assigned(lccurrentsqlstatement) )
13973                    {
13974                    }
13975                }
13976
13977                if ( lcisnewsql )
13978                    ret =  new TDeleteSqlStatement(pdbvendor);
13979                break;
13980            }
13981            case sstaltertable:
13982            {
13983                ret =  new TAlterTableStatement(pdbvendor);
13984                break;
13985            }
13986            case sstalterfunction:
13987            {
13988                ret =  new TAlterFunctionStmt(pdbvendor);
13989                break;
13990            }
13991            case sstAlterSchema:
13992            {
13993                ret =  new TAlterSchemaStmt(pdbvendor);
13994                break;
13995            }
13996            case sstanalyzeTable:
13997            {
13998                ret = new TAnalyzeStmt(pdbvendor);
13999                break;
14000            }
14001            case sstcall:
14002            {
14003                ret =  new TCallStatement(pdbvendor);
14004                break;
14005            }
14006            case sstcommit:
14007            {
14008                ret =  new TCommitStmt(pdbvendor);
14009                break;
14010            }
14011            case sstcreatefunction:
14012            {
14013                ret =  new TCreateFunctionStmt(pdbvendor);
14014                break;
14015            }
14016            case sstcreaterole:
14017            {
14018                ret =  new TCreateRoleStmt(pdbvendor);
14019                break;
14020            }
14021            case sstcreateschema:
14022            {
14023                ret =  new TCreateSchemaSqlStatement(pdbvendor);
14024                break;
14025            }
14026            case sstcreatetable:
14027            {
14028                ret =  new TCreateTableSqlStatement(pdbvendor);
14029                break;
14030            }
14031            case sstcreateview:
14032            {
14033                ret =  new TCreateViewSqlStatement(pdbvendor);
14034                break;
14035            }
14036            case sstpostgresqlDeallocate:
14037            {
14038                ret =  new TUnknownSqlStatement(pdbvendor);
14039                ret.sqlstatementtype = gnewsqlstatementtype;
14040                break;
14041            }
14042            case sstdropfunction:
14043            {
14044                ret =  new TDropFunctionStmt(pdbvendor);
14045                break;
14046            }
14047            case sstdroprole:
14048            {
14049                ret =  new TDropRoleStmt(pdbvendor);
14050                break;
14051            }
14052            case sstdropschema:
14053            {
14054                ret =  new TDropSchemaSqlStatement(pdbvendor);
14055                break;
14056            }
14057            case sstdroptable:
14058            {
14059                ret =  new TDropTableSqlStatement(pdbvendor);
14060                break;
14061            }
14062            case sstdropview:
14063            {
14064                ret =  new TDropViewSqlStatement(pdbvendor);
14065                break;
14066            }
14067            case sstExecute:
14068            {
14069                ret =  new TExecuteSqlStatement(pdbvendor);
14070                break;
14071            }
14072            case sstExplain:
14073            {
14074                ret =  new TExplainPlan(pdbvendor);
14075                break;
14076            }
14077            case sstGrant:
14078            {
14079                ret =  new TGrantStmt(pdbvendor);
14080                break;
14081            }
14082            case sstprepare:
14083            {
14084                ret =  new TPrepareStmt(pdbvendor);
14085                break;
14086            }
14087            case sstset:
14088            case sstReset:
14089            {
14090                lcisnewsql = true;
14091                if ( pstate != EFindSqlStateType.stnormal )
14092                {
14093                    if ( TBaseType.assigned(lccurrentsqlstatement) )
14094                    {
14095                        lcisnewsql = false;
14096                    }
14097                }
14098
14099                if ( lcisnewsql )
14100                {
14101                    ret =  new TSetStmt(pdbvendor);
14102                }
14103                break;
14104            }
14105            case sstShow:
14106            {
14107                ret = new TShowStmt(pdbvendor);
14108                ret.sqlstatementtype = gnewsqlstatementtype;
14109                break;
14110            }
14111            case sstStartTransaction:
14112            {
14113                ret = new TStartTransactionStmt(pdbvendor);
14114                break;
14115            }
14116            case sstValues:
14117            {
14118                ret =  new TSelectSqlStatement(pdbvendor);
14119                break;
14120            }
14121            case sstResetSession:
14122            {
14123                ret =  new TResetSessionStmt(pdbvendor);
14124                break;
14125            }
14126            case sstCreateExternallocation:
14127                ret = new TCreateExternalLocationStmt(pdbvendor);
14128                break;
14129            case sstList:
14130            {
14131                ret = new TListStmt(pdbvendor);
14132                break;
14133            }
14134            case sstRevoke:
14135                ret = new TRevokeStmt(pdbvendor);
14136                break;
14137            case sstaltercredental:
14138                ret = new TAlterCredentialStmt(pdbvendor);
14139                break;
14140            case sstdescribeCatalog:
14141            case  sstdescribeFunction:
14142            case   sstdescribeProvider:
14143            case   sstdescribeQuery:
14144            case   sstdescribeRecipient:
14145            case   sstdescribeSchema:
14146            case    sstdescribeShare:
14147            case    sstdescribeTable:
14148            case    sstdescribeDatabase:
14149            case    sstdescribeLocation:
14150            case    sstdescribeCredential:
14151            case    sstdescribe:
14152                ret = new TDescribeStmt(pdbvendor);
14153                break;
14154            case sstUseCatalog:
14155            case sstUseSchema:
14156            case sstUseDatabase:
14157            case sstUse:
14158                ret = new TUseDatabase(pdbvendor);
14159                break;
14160            case sstAnalyzeTable:
14161                ret = new TAnalyzeStmt(pdbvendor);
14162                break;
14163            case sstCreategroup:
14164                ret = new TCreateGroup(pdbvendor);
14165                break;
14166            case sstAlterGroup:
14167                ret = new TAlterGroup(pdbvendor);
14168                break;
14169            case sstDeny:
14170                ret = new TDenyStmt(pdbvendor);
14171                break;
14172            case sstDropGroup:
14173                ret = new TDropGroup(pdbvendor);
14174                break;
14175            case sstmsckrepairtable:
14176                 ret = new TMSCKStmt(pdbvendor);
14177                break;
14178            case sstcreatecatalog:
14179                ret = new TCreateCatalogStmt(pdbvendor);
14180                break;
14181            case sstConvertToDelta:
14182                ret = new TConvertToDeltaStmt(pdbvendor);
14183                break;
14184            case sstOptimize:
14185                ret = new TOptimizeStmt(pdbvendor);
14186                break;
14187            case sstRestoreTable:
14188                ret = new TRestoreTableStmt(pdbvendor);
14189                break;
14190            case sstReorgTable:
14191                ret = new TReorgTableStmt(pdbvendor);
14192                    break;
14193            case sstVacuum:
14194                ret = new TVacuumStmt(pdbvendor);
14195                break;
14196            case sstmerge:
14197                ret = new TMergeSqlStatement(pdbvendor);
14198                break;
14199            default:
14200            {
14201                ret =  new TUnknownSqlStatement(pdbvendor);
14202                ret.sqlstatementtype = gnewsqlstatementtype;
14203                break;
14204            }
14205        }    // case
14206
14207        return ret;
14208
14209    }
14210    TCustomSqlStatement ispresto(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
14211
14212        TCustomSqlStatement ret = null;
14213        int k;
14214        boolean lcisnewsql;
14215        TSourceToken lcpprevsolidtoken,lcnextsolidtoken;
14216
14217        gnewsqlstatementtype = ESqlStatementType.sstinvalid;
14218
14219        if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
14220                || (pcst.tokencode  == TBaseType.cmtslashstar)
14221                || (pcst.tokencode  == TBaseType.lexspace)
14222                || (pcst.tokencode  == TBaseType.lexnewline)
14223                || (pcst.tokentype == ETokenType.ttsemicolon) )
14224        {
14225            return ret;
14226        }
14227
14228        int lcpos = pcst.posinlist;
14229        TSourceTokenList lcsourcetokenlist = pcst.container;
14230        TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
14231
14232        //subquery after semicolon || at first line
14233        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
14234        {
14235            k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
14236            if ( k >0 )
14237            {
14238                ret =  new TSelectSqlStatement(pdbvendor);
14239            }
14240
14241            return ret;
14242        }
14243
14244        //cte
14245        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
14246        {
14247            ret = findcte(pcst,pdbvendor);
14248            if ( (ret != null) )  return ret;
14249        }
14250
14251
14252        gnewsqlstatementtype = findprestocmd(pcst);
14253
14254        TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
14255
14256        if ((gnewsqlstatementtype == ESqlStatementType.sstinvalid)&&(pcst.tokencode == TBaseType.rrw_create)){
14257            //if (pcst.container.nextsolidtoken(pcst.posinlist,15,))
14258            TSourceToken viewToken = pcst.container.searchToken(TBaseType.rrw_view,"",pcst,15);
14259            if (viewToken != null){
14260                gnewsqlstatementtype = ESqlStatementType.sstcreateview;
14261            }
14262        }
14263        switch (gnewsqlstatementtype){
14264            case sstinvalid:
14265            {
14266                ret = null;
14267                break;
14268            }
14269            case sstselect:
14270            {
14271                lcisnewsql = true;
14272
14273                if ( pstate != EFindSqlStateType.stnormal )
14274                {
14275                    // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
14276                    if ( TBaseType.assigned(lcprevsolidtoken) )
14277                    {
14278                        if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
14279                            lcisnewsql = false; //subqery
14280                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
14281                            lcisnewsql = false;
14282                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
14283                            lcisnewsql = false;
14284                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
14285                            lcisnewsql = false;
14286                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
14287                            lcisnewsql = false;
14288                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
14289                            lcisnewsql = false;
14290                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
14291                        {
14292                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
14293                                lcisnewsql = false;
14294                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
14295                                lcisnewsql = false;
14296                        }
14297
14298                        if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
14299                        {
14300                            lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
14301                            if ( TBaseType.assigned(lcpprevsolidtoken) )
14302                            {
14303                                if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
14304                                    lcisnewsql = false;
14305                            }
14306                        }
14307
14308                    }
14309
14310
14311                    if ( TBaseType.assigned(lccurrentsqlstatement) )
14312                    {
14313                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
14314                            lcisnewsql = false;
14315                    }
14316
14317                }
14318
14319                if ( lcisnewsql )
14320                    ret =  new TSelectSqlStatement(pdbvendor);
14321                break;
14322            }
14323            case sstinsert:
14324            {
14325                lcisnewsql = true;
14326                if ( pstate != EFindSqlStateType.stnormal )
14327                {
14328                    if ( TBaseType.assigned(lccurrentsqlstatement) )
14329                    {
14330
14331                    }
14332                }
14333
14334                if ( lcisnewsql )
14335                    ret =  new TInsertSqlStatement(pdbvendor);
14336                ret.sqlstatementtype = gnewsqlstatementtype;
14337                break;
14338            }
14339            case sstdelete:
14340            {
14341                lcisnewsql = true;
14342
14343                if ( pstate != EFindSqlStateType.stnormal )
14344                {
14345                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
14346                    if ( TBaseType.assigned(lcprevsolidtoken) )
14347                    {
14348                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
14349                            lcisnewsql = false;
14350                    }
14351
14352                    if ( TBaseType.assigned(lccurrentsqlstatement) )
14353                    {
14354                    }
14355                }
14356
14357                if ( lcisnewsql )
14358                    ret =  new TDeleteSqlStatement(pdbvendor);
14359                break;
14360            }
14361            case sstaltertable:
14362            {
14363                ret =  new TAlterTableStatement(pdbvendor);
14364                break;
14365            }
14366            case sstalterfunction:
14367            {
14368                ret =  new TAlterFunctionStmt(pdbvendor);
14369                break;
14370            }
14371            case sstAlterSchema:
14372            {
14373                ret =  new TAlterSchemaStmt(pdbvendor);
14374                break;
14375            }
14376            case sstanalyzeTable:
14377            {
14378                ret = new TAnalyzeStmt(pdbvendor);
14379                break;
14380            }
14381            case sstcall:
14382            {
14383                ret =  new TCallStatement(pdbvendor);
14384                break;
14385            }
14386            case sstcommit:
14387            {
14388                ret =  new TCommitStmt(pdbvendor);
14389                break;
14390            }
14391            case sstcreatefunction:
14392            {
14393                ret =  new TCreateFunctionStmt(pdbvendor);
14394                break;
14395            }
14396            case sstcreaterole:
14397            {
14398                ret =  new TCreateRoleStmt(pdbvendor);
14399                break;
14400            }
14401            case sstcreateschema:
14402            {
14403                ret =  new TCreateSchemaSqlStatement(pdbvendor);
14404                break;
14405            }
14406            case sstcreatetable:
14407            {
14408                ret =  new TCreateTableSqlStatement(pdbvendor);
14409                break;
14410            }
14411            case sstcreateview:
14412            {
14413                ret =  new TCreateViewSqlStatement(pdbvendor);
14414                break;
14415            }
14416            case sstpostgresqlDeallocate:
14417            {
14418                ret =  new TUnknownSqlStatement(pdbvendor);
14419                ret.sqlstatementtype = gnewsqlstatementtype;
14420                break;
14421            }
14422            case sstdescribe:
14423            {
14424                ret =  new TDescribeStmt(pdbvendor);
14425                break;
14426            }
14427            case sstdropfunction:
14428            {
14429                ret =  new TDropFunctionStmt(pdbvendor);
14430                break;
14431            }
14432            case sstdroprole:
14433            {
14434                ret =  new TDropRoleStmt(pdbvendor);
14435                break;
14436            }
14437            case sstdropschema:
14438            {
14439                ret =  new TDropSchemaSqlStatement(pdbvendor);
14440                break;
14441            }
14442            case sstdroptable:
14443            {
14444                ret =  new TDropTableSqlStatement(pdbvendor);
14445                break;
14446            }
14447            case sstdropview:
14448            {
14449                ret =  new TDropViewSqlStatement(pdbvendor);
14450                break;
14451            }
14452            case sstExecute:
14453            {
14454                ret =  new TExecuteSqlStatement(pdbvendor);
14455                break;
14456            }
14457            case sstExplain:
14458            {
14459                ret =  new TExplainPlan(pdbvendor);
14460                break;
14461            }
14462            case sstGrant:
14463            {
14464                ret =  new TGrantStmt(pdbvendor);
14465                break;
14466            }
14467            case sstprepare:
14468            {
14469                ret =  new TPrepareStmt(pdbvendor);
14470                break;
14471            }
14472            case sstset:
14473            case sstReset:
14474            {
14475                lcisnewsql = true;
14476                if ( pstate != EFindSqlStateType.stnormal )
14477                {
14478                    if ( TBaseType.assigned(lccurrentsqlstatement) )
14479                    {
14480                        lcisnewsql = false;
14481                    }
14482                }
14483
14484                if ( lcisnewsql )
14485                {
14486                    ret =  new TSetStmt(pdbvendor);
14487                }
14488                break;
14489            }
14490            case sstShow:
14491            {
14492                ret = new TShowStmt(pdbvendor);
14493                ret.sqlstatementtype = gnewsqlstatementtype;
14494                break;
14495            }
14496            case sstStartTransaction:
14497            {
14498                ret = new TStartTransactionStmt(pdbvendor);
14499                break;
14500            }
14501            case sstUse:
14502            {
14503                ret =  new TUseDatabase(pdbvendor);
14504                break;
14505            }
14506            case sstValues:
14507            {
14508                ret =  new TSelectSqlStatement(pdbvendor);
14509                break;
14510            }
14511            case sstResetSession:
14512            {
14513                ret =  new TResetSessionStmt(pdbvendor);
14514                break;
14515            }
14516            default:
14517            {
14518                ret =  new TUnknownSqlStatement(pdbvendor);
14519                ret.sqlstatementtype = gnewsqlstatementtype;
14520                break;
14521            }
14522        }    // case
14523
14524        return ret;
14525
14526    }
14527    TCustomSqlStatement isathena(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
14528
14529        TCustomSqlStatement ret = null;
14530        int k;
14531        boolean lcisnewsql;
14532        TSourceToken lcpprevsolidtoken,lcnextsolidtoken;
14533
14534        gnewsqlstatementtype = ESqlStatementType.sstinvalid;
14535
14536        if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
14537                || (pcst.tokencode  == TBaseType.cmtslashstar)
14538                || (pcst.tokencode  == TBaseType.lexspace)
14539                || (pcst.tokencode  == TBaseType.lexnewline)
14540                || (pcst.tokentype == ETokenType.ttsemicolon) )
14541        {
14542            return ret;
14543        }
14544
14545        int lcpos = pcst.posinlist;
14546        TSourceTokenList lcsourcetokenlist = pcst.container;
14547        TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
14548
14549        //subquery after semicolon || at first line
14550        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
14551        {
14552            k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
14553            if ( k >0 )
14554            {
14555                ret =  new TSelectSqlStatement(pdbvendor);
14556            }
14557
14558            return ret;
14559        }
14560
14561        //cte
14562        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
14563        {
14564            ret = findcte(pcst,pdbvendor);
14565            if ( (ret != null) )  return ret;
14566        }
14567
14568
14569        gnewsqlstatementtype = findathenacmd(pcst);
14570
14571        TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
14572
14573        if ((gnewsqlstatementtype == ESqlStatementType.sstinvalid)&&(pcst.tokencode == TBaseType.rrw_create)){
14574            //if (pcst.container.nextsolidtoken(pcst.posinlist,15,))
14575            TSourceToken viewToken = pcst.container.searchToken(TBaseType.rrw_view,"",pcst,15);
14576            if (viewToken != null){
14577                gnewsqlstatementtype = ESqlStatementType.sstcreateview;
14578            }
14579        }
14580        switch (gnewsqlstatementtype){
14581            case sstinvalid:
14582            {
14583                ret = null;
14584                break;
14585            }
14586            case sstselect:
14587            {
14588                lcisnewsql = true;
14589
14590                if ( pstate != EFindSqlStateType.stnormal )
14591                {
14592                    // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
14593                    if ( TBaseType.assigned(lcprevsolidtoken) )
14594                    {
14595                        if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
14596                            lcisnewsql = false; //subqery
14597                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
14598                            lcisnewsql = false;
14599                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
14600                            lcisnewsql = false;
14601                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
14602                            lcisnewsql = false;
14603                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
14604                            lcisnewsql = false;
14605                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
14606                            lcisnewsql = false;
14607                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
14608                        {
14609                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
14610                                lcisnewsql = false;
14611                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
14612                                lcisnewsql = false;
14613                        }
14614
14615                        if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
14616                        {
14617                            lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
14618                            if ( TBaseType.assigned(lcpprevsolidtoken) )
14619                            {
14620                                if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
14621                                    lcisnewsql = false;
14622                            }
14623                        }
14624
14625                    }
14626
14627
14628                    if ( TBaseType.assigned(lccurrentsqlstatement) )
14629                    {
14630                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
14631                            lcisnewsql = false;
14632                    }
14633
14634                }
14635
14636                if ( lcisnewsql )
14637                    ret =  new TSelectSqlStatement(pdbvendor);
14638                break;
14639            }
14640            case sstinsert:
14641            {
14642                lcisnewsql = true;
14643                if ( pstate != EFindSqlStateType.stnormal )
14644                {
14645                    if ( TBaseType.assigned(lccurrentsqlstatement) )
14646                    {
14647
14648                    }
14649                }
14650
14651                if ( lcisnewsql )
14652                    ret =  new TInsertSqlStatement(pdbvendor);
14653                ret.sqlstatementtype = gnewsqlstatementtype;
14654                break;
14655            }
14656            case sstdelete:
14657            {
14658                lcisnewsql = true;
14659
14660                if ( pstate != EFindSqlStateType.stnormal )
14661                {
14662                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
14663                    if ( TBaseType.assigned(lcprevsolidtoken) )
14664                    {
14665                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
14666                            lcisnewsql = false;
14667                    }
14668
14669                    if ( TBaseType.assigned(lccurrentsqlstatement) )
14670                    {
14671                    }
14672                }
14673
14674                if ( lcisnewsql )
14675                    ret =  new TDeleteSqlStatement(pdbvendor);
14676                break;
14677            }
14678            case sstaltertable:
14679            {
14680                ret =  new TAlterTableStatement(pdbvendor);
14681                break;
14682            }
14683            case sstalterfunction:
14684            {
14685                ret =  new TAlterFunctionStmt(pdbvendor);
14686                break;
14687            }
14688            case sstAlterSchema:
14689            {
14690                ret =  new TAlterSchemaStmt(pdbvendor);
14691                break;
14692            }
14693            case sstanalyzeTable:
14694            {
14695                ret = new TAnalyzeStmt(pdbvendor);
14696                break;
14697            }
14698            case sstcall:
14699            {
14700                ret =  new TCallStatement(pdbvendor);
14701                break;
14702            }
14703            case sstcommit:
14704            {
14705                ret =  new TCommitStmt(pdbvendor);
14706                break;
14707            }
14708            case sstcreatefunction:
14709            {
14710                ret =  new TCreateFunctionStmt(pdbvendor);
14711                break;
14712            }
14713            case sstcreaterole:
14714            {
14715                ret =  new TCreateRoleStmt(pdbvendor);
14716                break;
14717            }
14718            case sstcreateschema:
14719            {
14720                ret =  new TCreateSchemaSqlStatement(pdbvendor);
14721                break;
14722            }
14723            case sstcreatetable:
14724            {
14725                ret =  new TCreateTableSqlStatement(pdbvendor);
14726                break;
14727            }
14728            case sstcreateview:
14729            {
14730                ret =  new TCreateViewSqlStatement(pdbvendor);
14731                break;
14732            }
14733            case sstpostgresqlDeallocate:
14734            {
14735                ret =  new TUnknownSqlStatement(pdbvendor);
14736                ret.sqlstatementtype = gnewsqlstatementtype;
14737                break;
14738            }
14739            case sstdescribe:
14740            {
14741                ret =  new TDescribeStmt(pdbvendor);
14742                break;
14743            }
14744            case sstdropfunction:
14745            {
14746                ret =  new TDropFunctionStmt(pdbvendor);
14747                break;
14748            }
14749            case sstdroprole:
14750            {
14751                ret =  new TDropRoleStmt(pdbvendor);
14752                break;
14753            }
14754            case sstdropschema:
14755            {
14756                ret =  new TDropSchemaSqlStatement(pdbvendor);
14757                break;
14758            }
14759            case sstdroptable:
14760            {
14761                ret =  new TDropTableSqlStatement(pdbvendor);
14762                break;
14763            }
14764            case sstdropview:
14765            {
14766                ret =  new TDropViewSqlStatement(pdbvendor);
14767                break;
14768            }
14769            case sstExecute:
14770            {
14771                ret =  new TExecuteSqlStatement(pdbvendor);
14772                break;
14773            }
14774            case sstExplain:
14775            {
14776                ret =  new TExplainPlan(pdbvendor);
14777                break;
14778            }
14779            case sstGrant:
14780            {
14781                ret =  new TGrantStmt(pdbvendor);
14782                break;
14783            }
14784            case sstprepare:
14785            {
14786                ret =  new TPrepareStmt(pdbvendor);
14787                break;
14788            }
14789            case sstset:
14790            case sstReset:
14791            {
14792                lcisnewsql = true;
14793                if ( pstate != EFindSqlStateType.stnormal )
14794                {
14795                    if ( TBaseType.assigned(lccurrentsqlstatement) )
14796                    {
14797                        lcisnewsql = false;
14798                    }
14799                }
14800
14801                if ( lcisnewsql )
14802                {
14803                    ret =  new TSetStmt(pdbvendor);
14804                }
14805                break;
14806            }
14807            case sstShow:
14808            {
14809                ret = new TShowStmt(pdbvendor);
14810                ret.sqlstatementtype = gnewsqlstatementtype;
14811                break;
14812            }
14813            case sstStartTransaction:
14814            {
14815                ret = new TStartTransactionStmt(pdbvendor);
14816                break;
14817            }
14818            case sstUse:
14819            {
14820                ret =  new TUseDatabase(pdbvendor);
14821                break;
14822            }
14823            case sstValues:
14824            {
14825                ret =  new TSelectSqlStatement(pdbvendor);
14826                break;
14827            }
14828            case sstResetSession:
14829            {
14830                ret =  new TResetSessionStmt(pdbvendor);
14831                break;
14832            }
14833            case sstunload:
14834                lcisnewsql = true;
14835                if ( pstate != EFindSqlStateType.stnormal )
14836                {
14837                    lcisnewsql = false;
14838                }
14839                if ( lcisnewsql ) {
14840                    ret = new TUnloadStmt(pdbvendor);
14841                    ret.sqlstatementtype = gnewsqlstatementtype;
14842                }
14843                break;
14844            case sstmsck:
14845            {
14846                ret = new TMSCKStmt(pdbvendor);
14847                break;
14848            }
14849            case sstcreatedatabase:
14850            {
14851                ret = new TCreateDatabaseSqlStatement(pdbvendor);
14852                break;
14853            }
14854            case sstalterdatabase:
14855            {
14856                ret = new TAlterDatabaseStmt(pdbvendor);
14857                break;
14858            }
14859            case sstdropdatabase:
14860                ret = new TDropDatabaseStmt(pdbvendor);
14861                break;
14862            default:
14863            {
14864                ret =  new TUnknownSqlStatement(pdbvendor);
14865                ret.sqlstatementtype = gnewsqlstatementtype;
14866                break;
14867            }
14868        }    // case
14869
14870        return ret;
14871
14872    }
14873
14874    TCustomSqlStatement issparksql(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
14875
14876            TCustomSqlStatement ret = null;
14877            int k;
14878            boolean lcisnewsql;
14879            TSourceToken lcpprevsolidtoken,lcnextsolidtoken;
14880
14881            gnewsqlstatementtype = ESqlStatementType.sstinvalid;
14882
14883            if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
14884                    || (pcst.tokencode  == TBaseType.cmtslashstar)
14885                    || (pcst.tokencode  == TBaseType.lexspace)
14886                    || (pcst.tokencode  == TBaseType.lexnewline)
14887                    || (pcst.tokentype == ETokenType.ttsemicolon) )
14888            {
14889                return ret;
14890            }
14891
14892            int lcpos = pcst.posinlist;
14893            TSourceTokenList lcsourcetokenlist = pcst.container;
14894            TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
14895
14896            //subquery after semicolon || at first line
14897            if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
14898            {
14899                k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
14900                if ( k >0 )
14901                {
14902                    ret =  new TSelectSqlStatement(pdbvendor);
14903                }
14904
14905                return ret;
14906            }
14907
14908            //cte
14909            if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
14910            {
14911                ret = findcte(pcst,pdbvendor);
14912                if ( (ret != null) )  return ret;
14913            }
14914
14915
14916            gnewsqlstatementtype = findsparksqlcmd(pcst);
14917
14918            TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
14919
14920            if ((gnewsqlstatementtype == ESqlStatementType.sstinvalid)&&(pcst.tokencode == TBaseType.rrw_create)){
14921                //if (pcst.container.nextsolidtoken(pcst.posinlist,15,))
14922                TSourceToken viewToken = pcst.container.searchToken(TBaseType.rrw_view,"",pcst,15);
14923                if (viewToken != null){
14924                    gnewsqlstatementtype = ESqlStatementType.sstcreateview;
14925                }
14926            }
14927            switch (gnewsqlstatementtype){
14928                case sstinvalid:
14929                {
14930                    ret = null;
14931                    break;
14932                }
14933                case sstselect:
14934                {
14935                    lcisnewsql = true;
14936
14937                    if ( pstate != EFindSqlStateType.stnormal )
14938                    {
14939                        // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
14940                        if ( TBaseType.assigned(lcprevsolidtoken) )
14941                        {
14942                            if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
14943                                lcisnewsql = false; //subqery
14944                            else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
14945                                lcisnewsql = false;
14946                            else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
14947                                lcisnewsql = false;
14948                            else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
14949                                lcisnewsql = false;
14950                            else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
14951                                lcisnewsql = false;
14952                            else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
14953                                lcisnewsql = false;
14954                            else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
14955                            {
14956                                if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
14957                                    lcisnewsql = false;
14958                                if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
14959                                    lcisnewsql = false;
14960                            }
14961
14962                            if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
14963                            {
14964                                lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
14965                                if ( TBaseType.assigned(lcpprevsolidtoken) )
14966                                {
14967                                    if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
14968                                        lcisnewsql = false;
14969                                }
14970                            }
14971
14972                        }
14973
14974
14975                        if ( TBaseType.assigned(lccurrentsqlstatement) )
14976                        {
14977                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
14978                                lcisnewsql = false;
14979                        }
14980
14981                    }
14982
14983                    if ( lcisnewsql )
14984                        ret =  new TSelectSqlStatement(pdbvendor);
14985                    break;
14986                }
14987                case sstinsert:
14988                {
14989                    lcisnewsql = true;
14990                    if ( pstate != EFindSqlStateType.stnormal )
14991                    {
14992                        if ( TBaseType.assigned(lccurrentsqlstatement) )
14993                        {
14994
14995                        }
14996                    }
14997
14998                    if ( lcisnewsql )
14999                        ret =  new TInsertSqlStatement(pdbvendor);
15000                    ret.sqlstatementtype = gnewsqlstatementtype;
15001                    break;
15002                }
15003                case sstupdate:
15004                {
15005                    lcisnewsql = true;
15006                    if ( pstate != EFindSqlStateType.stnormal )
15007                    {
15008                        lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
15009                        if ( TBaseType.assigned(lcprevsolidtoken) )
15010                        { //
15011                            if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
15012                                lcisnewsql = false;
15013                            else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
15014                                lcisnewsql = false;
15015                        }
15016
15017                        lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
15018                        if ( TBaseType.assigned(lcnextsolidtoken) )
15019                        {
15020                            if ( lcnextsolidtoken.tokentype == ETokenType.ttleftparenthesis)
15021                            {
15022                                k = lcsourcetokenlist.solidtokenafterpos(lcnextsolidtoken.posinlist,TBaseType.rrw_select,1,"(");
15023                                if ( k  == 0 ) lcisnewsql = false;
15024                            }
15025                        }
15026
15027
15028                        if ( TBaseType.assigned(lccurrentsqlstatement) )
15029                        {
15030                        }
15031                    }
15032
15033                    if ( lcisnewsql )
15034                    {
15035                        ret =  new TUpdateSqlStatement(pdbvendor);
15036                        ret.dummytag = 1; // means set clause in update is not found yet, used to seperate set clause from set statement
15037                    }
15038                    break;
15039                }
15040                case sstdelete:
15041                {
15042                    lcisnewsql = true;
15043
15044                    if ( pstate != EFindSqlStateType.stnormal )
15045                    {
15046                        lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
15047                        if ( TBaseType.assigned(lcprevsolidtoken) )
15048                        {
15049                            if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
15050                                lcisnewsql = false;
15051                        }
15052
15053                        if ( TBaseType.assigned(lccurrentsqlstatement) )
15054                        {
15055                        }
15056                    }
15057
15058                    if ( lcisnewsql )
15059                        ret =  new TDeleteSqlStatement(pdbvendor);
15060                    break;
15061                }
15062                case sstcreatetable:
15063                {
15064                    ret =  new TCreateTableSqlStatement(pdbvendor);
15065                    break;
15066                }
15067                case sstcreateview:
15068                {
15069                    ret =  new TCreateViewSqlStatement(pdbvendor);
15070                    break;
15071                }
15072                case sstcreatedatabase:
15073                {
15074                    ret =  new TCreateDatabaseSqlStatement(pdbvendor);
15075                    break;
15076                }
15077                case sstdroptable:
15078                {
15079                    ret =  new TDropTableSqlStatement(pdbvendor);
15080                    break;
15081                }
15082                case sstdropview:
15083                {
15084                    ret =  new TDropViewSqlStatement(pdbvendor);
15085                    break;
15086                }
15087                case sstaltertable:
15088                {
15089                    ret =  new TAlterTableStatement(pdbvendor);
15090                    break;
15091                }
15092                case sstset:
15093                case sstReset:
15094                case sstSetTimeZone:
15095                {
15096                    lcisnewsql = true;
15097                    if ( pstate != EFindSqlStateType.stnormal )
15098                    {
15099                        if ( TBaseType.assigned(lccurrentsqlstatement) )
15100                        {
15101                            lcisnewsql = false;
15102                        }
15103                    }
15104
15105                    if ( lcisnewsql )
15106                    {
15107                        ret =  new TSetStmt(pdbvendor);
15108                    }
15109                    break;
15110                }
15111                case sstcreatefunction:
15112                {
15113                    ret =  new TCreateFunctionStmt(pdbvendor);
15114                    break;
15115                }
15116                case sstTruncate:
15117                {
15118                    ret =  new TTruncateStatement(pdbvendor);
15119                    break;
15120                }
15121                case sstdescribe:
15122                {
15123                    ret =  new TDescribeStmt(pdbvendor);
15124                    break;
15125                }
15126                case sstExplain:
15127                {
15128                    ret =  new TExplainPlan(pdbvendor);
15129                    break;
15130                }
15131                case sstUse:
15132                {
15133                    ret =  new TUseDatabase(pdbvendor);
15134                    break;
15135                }
15136                case sstLoadData:
15137                {
15138                    ret =  new TLoadDataStmt(pdbvendor);
15139                    break;
15140                }
15141                case sstShowColumns:
15142                case sstShowCreateTable:
15143                case sstShowDatabases:
15144                case sstShowFunctions:
15145                case sstShowPartitions:
15146                case sstShowTableExtended:
15147                case sstShowTables:
15148                case sstShowTblProperties:
15149                case sstShowViews:
15150                case sstShowUser:
15151                    ret = new TShowStmt(pdbvendor);
15152                    ret.sqlstatementtype = gnewsqlstatementtype;
15153                    break;
15154                case sstalterdatabase:
15155                    ret =  new TAlterDatabaseStmt(pdbvendor);
15156                    break;
15157                case sstdescribeDatabase:
15158                case sstdescribeTable:
15159                case sstdescribeFunction:
15160                    ret =  new TDescribeStmt(pdbvendor);
15161                    break;
15162                case sstalterview:
15163                    ret =  new TAlterViewStatement(pdbvendor);
15164                    break;
15165                case sstAddFile:
15166                case sstAddJar:
15167                case sstListFile:
15168                case sstListJar:
15169                    ret =  new TResourceManagement(pdbvendor);
15170                    ret.sqlstatementtype = gnewsqlstatementtype;
15171                    break;
15172                case sstdropdatabase:
15173                    ret =  new TDropDatabaseStmt(pdbvendor);
15174                    break;
15175                case sstdropfunction:
15176                    ret =  new TDropFunctionStmt(pdbvendor);
15177                    break;
15178                case ssttruncatetable:
15179                    ret =  new TTruncateStatement(pdbvendor);
15180                     break;
15181                case sstmsck:
15182                {
15183                    ret = new TMSCKStmt(pdbvendor);
15184                    break;
15185                }
15186                case sstanalyzeTable:
15187                {
15188                    ret = new TAnalyzeStmt(pdbvendor);
15189                    break;
15190                }
15191                case sstCacheTable:
15192                case sstUnCacheTable:
15193                case sstClearCache:
15194                    ret = new TCacheTable(pdbvendor);
15195                    break;
15196                case sstRefreshTable:
15197                case sstRefreshFunction:
15198                case sstRefresh:
15199                    ret = new TRefresh(pdbvendor);
15200                    break;
15201                default:
15202                {
15203                    ret =  new TUnknownSqlStatement(pdbvendor);
15204                    ret.sqlstatementtype = gnewsqlstatementtype;
15205                    break;
15206                }
15207            }    // case
15208
15209            return ret;
15210
15211    }
15212
15213    TCustomSqlStatement ismysqlsql(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
15214    TCustomSqlStatement ret = null;
15215    int k;
15216    boolean lcisnewsql;
15217    TSourceToken lcpprevsolidtoken,lcnextsolidtoken;
15218
15219    gnewsqlstatementtype = ESqlStatementType.sstinvalid;
15220
15221    if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
15222       || (pcst.tokencode  == TBaseType.cmtslashstar)
15223       || (pcst.tokencode  == TBaseType.lexspace)
15224       || (pcst.tokencode  == TBaseType.lexnewline)
15225        || (pcst.tokentype == ETokenType.ttsemicolon) )
15226    {
15227      return ret;
15228    }
15229
15230    int lcpos = pcst.posinlist;
15231    TSourceTokenList lcsourcetokenlist = pcst.container;
15232    TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
15233
15234    //subquery after semicolon || at first line
15235    if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
15236      {
15237        k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
15238        if ( k >0 )
15239          {
15240            ret =  new TSelectSqlStatement(pdbvendor);
15241          }
15242
15243        return ret;
15244      }
15245
15246        //cte
15247        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
15248        {
15249            ret = findcte(pcst,pdbvendor);
15250            if ( (ret != null) )  return ret;
15251        }
15252
15253
15254    //cte
15255//  if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == rrw_with) )
15256//    {
15257//      ret = tselectsqlstatement.create(pdbvendor);
15258//      tselectsqlstatement(ret).isctequery = true;
15259//      exit;
15260//    }
15261//
15262
15263    gnewsqlstatementtype = findmysqlcmd(pcst);
15264
15265    TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
15266
15267    if ((gnewsqlstatementtype == ESqlStatementType.sstinvalid)&&(pcst.tokencode == TBaseType.rrw_create)){
15268      //if (pcst.container.nextsolidtoken(pcst.posinlist,15,))
15269        TSourceToken viewToken = pcst.container.searchToken(TBaseType.rrw_view,"",pcst,15);
15270        if (viewToken != null){
15271            gnewsqlstatementtype = ESqlStatementType.sstcreateview;
15272        }
15273    }
15274    switch (gnewsqlstatementtype){
15275        case sstinvalid:
15276          {
15277            ret = null;
15278            break;
15279          }
15280        case sstselect:
15281          {
15282            lcisnewsql = true;
15283
15284            if ( pstate != EFindSqlStateType.stnormal )
15285              {
15286                // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
15287                if ( TBaseType.assigned(lcprevsolidtoken) )
15288                  {
15289                    if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
15290                      lcisnewsql = false; //subqery
15291                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
15292                      lcisnewsql = false;
15293                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
15294                      lcisnewsql = false;
15295                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
15296                      lcisnewsql = false;
15297                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
15298                      lcisnewsql = false;
15299                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
15300                      lcisnewsql = false;
15301                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
15302                      {
15303                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
15304                          lcisnewsql = false;
15305                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
15306                          lcisnewsql = false;
15307                      }
15308
15309                    if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
15310                      {
15311                        lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
15312                        if ( TBaseType.assigned(lcpprevsolidtoken) )
15313                          {
15314                            if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
15315                              lcisnewsql = false;
15316                          }
15317                      }
15318
15319                  }
15320
15321
15322                if ( TBaseType.assigned(lccurrentsqlstatement) )
15323                  {
15324                    if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
15325                      lcisnewsql = false;
15326                  }
15327
15328              }
15329
15330            if ( lcisnewsql )
15331              ret =  new TSelectSqlStatement(pdbvendor);
15332              break;
15333          }
15334        case sstinsert:
15335        case sstmysqlreplace:
15336          {
15337            lcisnewsql = true;
15338            if ( pstate != EFindSqlStateType.stnormal )
15339              {
15340                if ( TBaseType.assigned(lccurrentsqlstatement) )
15341                  {
15342
15343                  }
15344              }
15345
15346            if ( lcisnewsql )
15347              ret =  new TInsertSqlStatement(pdbvendor);
15348              ret.sqlstatementtype = gnewsqlstatementtype;
15349              break;
15350          }
15351        case sstupdate:
15352          {
15353            lcisnewsql = true;
15354            if ( pstate != EFindSqlStateType.stnormal )
15355              {
15356                lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
15357                if ( TBaseType.assigned(lcprevsolidtoken) )
15358                  { //
15359                    if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
15360                      lcisnewsql = false;
15361                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
15362                      lcisnewsql = false;
15363                  }
15364
15365                lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
15366                if ( TBaseType.assigned(lcnextsolidtoken) )
15367                  {
15368                    if ( lcnextsolidtoken.tokentype == ETokenType.ttleftparenthesis)
15369                      {
15370                        k = lcsourcetokenlist.solidtokenafterpos(lcnextsolidtoken.posinlist,TBaseType.rrw_select,1,"(");
15371                        if ( k  == 0 ) lcisnewsql = false;
15372                      }
15373                  }
15374
15375
15376                if ( TBaseType.assigned(lccurrentsqlstatement) )
15377                  {
15378                  }
15379              }
15380
15381            if ( lcisnewsql )
15382              {
15383                ret =  new TUpdateSqlStatement(pdbvendor);
15384                ret.dummytag = 1; // means set clause in update is not found yet, used to seperate set clause from set statement
15385              }
15386              break;
15387          }
15388        case sstdelete:
15389          {
15390            lcisnewsql = true;
15391
15392            if ( pstate != EFindSqlStateType.stnormal )
15393              {
15394                lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
15395                if ( TBaseType.assigned(lcprevsolidtoken) )
15396                  {
15397                    if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
15398                      lcisnewsql = false;
15399                  }
15400
15401                if ( TBaseType.assigned(lccurrentsqlstatement) )
15402                  {
15403                  }
15404              }
15405
15406            if ( lcisnewsql )
15407              ret =  new TDeleteSqlStatement(pdbvendor);
15408              break;
15409          }
15410        case sstmerge:
15411          {
15412            ret =  new TMergeSqlStatement(pdbvendor);
15413            ret.sqlstatementtype = gnewsqlstatementtype;
15414              break;
15415          }
15416        case sstcommit:
15417          {
15418            ret =  new TUnknownSqlStatement(pdbvendor);
15419            ret.sqlstatementtype = gnewsqlstatementtype;
15420              break;
15421          }
15422        case sstrollback:
15423          {
15424            ret =  new TUnknownSqlStatement(pdbvendor);
15425            ret.sqlstatementtype = gnewsqlstatementtype;
15426              break;
15427          }
15428        case sstsavepoint:
15429          {
15430            ret =  new TUnknownSqlStatement(pdbvendor);
15431            ret.sqlstatementtype = gnewsqlstatementtype;
15432              break;
15433          }
15434        case sstRevoke:
15435          {
15436            ret =  new TUnknownSqlStatement(pdbvendor);
15437            ret.sqlstatementtype = gnewsqlstatementtype;
15438              break;
15439          }
15440        case sstcreatetable:
15441          {
15442            ret =  new TCreateTableSqlStatement(pdbvendor);
15443              break;
15444          }
15445        case sstcreateview:
15446          {
15447            ret =  new TCreateViewSqlStatement(pdbvendor);
15448              break;
15449          }
15450        case sstmysqlcreateindex:
15451          {
15452            ret =  new TCreateIndexSqlStatement(pdbvendor);
15453              break;
15454          }
15455        case sstcreatedatabase:
15456          {
15457            ret =  new TCreateDatabaseSqlStatement(pdbvendor);
15458              break;
15459          }
15460        case sstmysqldroptable:
15461        case sstdroptable:
15462          {
15463            ret =  new TDropTableSqlStatement(pdbvendor);
15464              break;
15465          }
15466        case sstdropview:
15467          {
15468            ret =  new TDropViewSqlStatement(pdbvendor);
15469              break;
15470          }
15471        case sstdropindex:
15472          {
15473            ret =  new TDropIndexSqlStatement(pdbvendor);
15474              break;
15475          }
15476        case sstaltertable:
15477          {
15478            ret =  new TAlterTableStatement(pdbvendor);
15479              break;
15480          }
15481        case sstaltersession:
15482          {
15483            ret =  new TAlterSessionStatement(pdbvendor);
15484              break;
15485          }
15486        case sstmysqlset:
15487          {
15488            ret =  new TSetStmt(pdbvendor);
15489              break;
15490          }
15491        case sstmysqlcreateprocedure:
15492          {
15493            ret =  new TCreateProcedureStmt(pdbvendor);
15494              break;
15495          }
15496        case sstmysqlcreatefunction:
15497          {
15498            ret =  new TCreateFunctionStmt(pdbvendor);
15499              break;
15500          }
15501        case sstcreatetrigger:
15502          {
15503            ret =  new TCreateTriggerStmt(pdbvendor);
15504              break;
15505          }
15506        case sstmysqlcall:
15507        {
15508            ret =  new TCallStatement(pdbvendor);
15509            break;
15510        }
15511        case sstmysqltruncate:
15512        {
15513            ret =  new TTruncateStatement(pdbvendor);
15514            break;
15515        }
15516        case sstmysqlprepare:
15517        {
15518            ret =  new TPrepareStmt(pdbvendor);
15519            break;
15520        }
15521        case sstdescribe:
15522        {
15523            ret =  new TDescribeStmt(pdbvendor);
15524            break;
15525        }
15526        case sstExplain:
15527        {
15528            ret =  new TExplainPlan(pdbvendor);
15529            break;
15530        }
15531        case sstmysqldropindex:
15532        {
15533            ret =  new TDropIndexSqlStatement(pdbvendor);
15534            break;
15535        }
15536        case sstmysqldropprocedure:
15537        {
15538            ret =  new TDropProcedureStmt(pdbvendor);
15539            break;
15540        }
15541        case sstmysqlsignal:
15542        {
15543            ret =  new TMySQLSignal(pdbvendor);
15544            break;
15545        }
15546        case sstmysqlstarttransaction:
15547        {
15548            if ( pstate == EFindSqlStateType.stnormal )
15549            {
15550                ret =  new TUnknownSqlStatement(pdbvendor);
15551                ret.sqlstatementtype = gnewsqlstatementtype;
15552            }
15553            break;
15554        }
15555        case sstmysqluse:
15556        {
15557            ret =  new TUseDatabase(pdbvendor);
15558          break;
15559        }
15560        case sstmysqlexecute:
15561        {
15562            ret =  new TExecuteSqlStatement(pdbvendor);
15563            ret.sqlstatementtype = gnewsqlstatementtype;
15564            break;
15565        }
15566        case sstmysqlcreatedatabase:
15567        {
15568            ret =  new TCreateDatabaseSqlStatement(pdbvendor);
15569            break;
15570        }
15571        case sstmysqlrenametable:
15572        {
15573            ret =  new TRenameStmt(pdbvendor);
15574            break;
15575        }
15576        case sstmysqlshowindex:
15577            ret =  new TShowIndexStmt(pdbvendor);
15578            break;
15579        case sstmysqlloaddatainfile:
15580            ret = new TLoadDataStmt(pdbvendor);
15581            break;
15582        case sstmysqlshowlogs:
15583        case sstmysqlshowbinlogevents:
15584        case sstmysqlshowcharacterset:
15585        case sstmysqlshowcollation:
15586        case sstmysqlshowcolumns:
15587        case sstmysqlshowwarnings:
15588        case sstmysqlshowcreatedatabase:
15589        case sstmysqlshowcreatefunction:
15590        case sstmysqlshowcreateprocedure:
15591        case sstmysqlshowcreatetable:
15592        case sstmysqlshowcreateview:
15593        case sstmysqlshowdatabases:
15594        case sstmysqlshowerrors:
15595        case sstmysqlshowfields:
15596        case sstmysqlshowprocesslist:
15597        case sstmysqlshowtables:
15598        case sstmysqlshowfunctionstatus:
15599        case sstmysqlshowstatus:
15600        case sstmysqlshowvariables:
15601        case sstmysqlshowgrants:
15602        case sstmysqlshowinnodbstatus:
15603        case sstmysqlshowmasterlogs:
15604        case sstmysqlshowplugins:
15605        case sstmysqlshowprivileges:
15606        case sstmysqlshowprofile:
15607        case sstmysqlshowprofiles:
15608        case sstmysqlshowslavehosts:
15609        case sstmysqlshowslavestatus:
15610        case sstmysqlshowtablestatus:
15611        case sstmysqlshowtriggers:
15612        case sstmysqlshowcreateschema:
15613        case sstmysqlshowengines:
15614            ret = new TMySQLShowStmt(pdbvendor);
15615            ret.sqlstatementtype = gnewsqlstatementtype;
15616            break;
15617        case sstmysqlshowengine:
15618            ret = new TShowEngineStmt(pdbvendor);
15619            break;
15620        case sstmysqlshowreplicaStatus:
15621            ret = new TShowStmt(pdbvendor);
15622            ret.sqlstatementtype = gnewsqlstatementtype;
15623            break;
15624        case sstmysqlalterfunction:
15625            ret = new TAlterFunctionStmt(pdbvendor);
15626            break;
15627        case sstmysqlalterprocedure:
15628            ret = new TAlterProcedureStmt(pdbvendor);
15629            break;
15630        case sstmysqldropfunction:
15631            ret = new TDropFunctionStmt(pdbvendor);
15632            break;
15633        case sstmysqldroptrigger:
15634            ret = new TDropTriggerSqlStatement(pdbvendor);
15635            break;
15636        case sstmysqloptimizetable:
15637            ret = new TMySQLOptimizeTableStmt(pdbvendor);
15638            break;
15639        case sstmysqlalterview:
15640            ret  = new TAlterViewStatement(pdbvendor);
15641            break;
15642        default:
15643          {
15644            ret =  new TUnknownSqlStatement(pdbvendor);
15645            ret.sqlstatementtype = gnewsqlstatementtype;
15646              break;
15647          }
15648    }    // case
15649
15650    return ret;
15651}
15652
15653TCustomSqlStatement ismdxsql(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
15654    TCustomSqlStatement ret = null;
15655
15656    gnewsqlstatementtype = ESqlStatementType.sstinvalid;
15657
15658    if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
15659       || (pcst.tokencode  == TBaseType.cmtslashstar)
15660       || (pcst.tokencode  == TBaseType.lexspace)
15661       || (pcst.tokencode  == TBaseType.lexnewline)
15662        || (pcst.tokentype == ETokenType.ttsemicolon) )
15663    {
15664      return null;
15665    }
15666
15667    int lcpos = pcst.posinlist;
15668    TSourceTokenList lcsourcetokenlist = pcst.container;
15669    TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
15670
15671
15672    //with clause before statement
15673    if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
15674      {
15675        ret = findMdxStmtBeginWithClause(pcst,pdbvendor);
15676        if ( (ret != null) )  return ret;
15677      }
15678
15679    gnewsqlstatementtype = findmdxcmd(pcst);
15680
15681    TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
15682    switch (gnewsqlstatementtype) {    //
15683        case sstinvalid:
15684          {
15685            ret = null;
15686            if ( pstate == EFindSqlStateType.stnormal )
15687              {
15688                  //treat all unregonized statement as an expression
15689                  ret = new TMdxExpression(EDbVendor.dbvmdx);
15690              }
15691              break;
15692          }
15693        case sstmdxselect:
15694          {
15695            boolean lcisnewsql = true;
15696
15697            if ( pstate != EFindSqlStateType.stnormal )
15698              {
15699                if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstselect )
15700                  {
15701                    if ( lccurrentsqlstatement.isctequery )
15702                      lcisnewsql = false;
15703                  }
15704              }
15705
15706            if ( lcisnewsql )
15707              ret = new TMdxSelect(pdbvendor);
15708
15709            break;
15710          }
15711        case sstmdxupdate:
15712          {
15713            boolean lcisnewsql = true;
15714            if ( pstate != EFindSqlStateType.stnormal )
15715              {
15716                lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
15717                if ( (lcprevsolidtoken != null) )
15718                  { //
15719                  }
15720
15721                TSourceToken lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
15722                if ( (lcnextsolidtoken != null) )
15723                  {
15724                  }
15725
15726                if ( (lccurrentsqlstatement != null) )
15727                  {
15728                  }
15729              }
15730
15731            if ( lcisnewsql )
15732              {
15733                ret = new TMdxUpdate(pdbvendor);
15734              }
15735            break;
15736          }
15737        case sstmdxaltercube:
15738          {
15739            ret = new TMdxAlterCube(pdbvendor);
15740              break;
15741          }
15742        case sstmdxcalculate:
15743          {
15744            ret = new TMdxCalculate(pdbvendor);
15745              break;
15746          }
15747        case sstmdxcall:
15748          {
15749            ret = new TMdxCall(pdbvendor);
15750              break;
15751          }
15752        case sstmdxcase:
15753          {
15754            ret = new TMdxCase(pdbvendor);
15755              break;
15756          }
15757        case sstmdxclearcalculations:
15758          {
15759            ret = new TMdxClearCalculations(pdbvendor);
15760              break;
15761          }
15762        case sstmdxcreateaction:
15763          {
15764            ret = new TMdxCreateAction(pdbvendor);
15765              break;
15766          }
15767        case sstmdxcreatemember:
15768          {
15769            ret = new TMdxCreateMember(pdbvendor);
15770              break;
15771          }
15772        case sstmdxcreatecellcalculation:
15773          {
15774            ret = new TMdxCreateCellCalculation(pdbvendor);
15775              break;
15776          }
15777        case sstmdxcreateglobalcube:
15778          {
15779            ret = new TMdxCreateGlobalCube(pdbvendor);
15780              break;
15781          }
15782        case sstmdxcreateset:
15783          {
15784            ret = new TMdxCreateSet(pdbvendor);
15785              break;
15786          }
15787        case sstmdxcreatesessioncube:
15788          {
15789            ret = new TMdxCreateSessionCube(pdbvendor);
15790              break;
15791          }
15792        case sstmdxcreatesubcube:
15793          {
15794            ret = new TMdxCreateSubCube(pdbvendor);
15795              break;
15796          }
15797        case sstmdxdrillthrough:
15798          {
15799            ret = new TMdxDrillthrough(pdbvendor);
15800              break;
15801          }
15802        case sstmdxdropaction:
15803          {
15804            ret = new TMdxDropAction(pdbvendor);
15805              break;
15806          }
15807        case sstmdxdropmember:
15808          {
15809            ret = new TMdxDropMember(pdbvendor);//ret = new TMdxCreateSessionCube(pdbvendor);
15810              break;
15811          }
15812        case sstmdxdropcellcalculation:
15813          {
15814            ret = new TMdxDropCellCalculation(pdbvendor);
15815              break;
15816          }
15817        case sstmdxdropset:
15818          {
15819            ret = new TMdxDropSet(pdbvendor);
15820              break;
15821          }
15822        case sstmdxdropsubcube:
15823          {
15824            ret = new TMdxDropSubcube(pdbvendor);
15825              break;
15826          }
15827        case sstmdxfreeze:
15828          {
15829            ret = new TMdxFreeze(pdbvendor);
15830            break;
15831          }
15832        case sstmdxif:
15833          {
15834            ret = new TMdxIf(pdbvendor);
15835              break;
15836          }
15837        case sstmdxrefreshcube:
15838          {
15839            ret = new TMdxRefreshCube(pdbvendor);
15840              break;
15841          }
15842        case sstmdxscope:
15843          {
15844            ret = new TMdxScope(pdbvendor);
15845              break;
15846          }
15847        case sstmdxcreatemeasure:
15848        {
15849            ret = new TMdxCreateMeasure(pdbvendor);
15850            break;
15851        }
15852        case sstmdxexisting:
15853        default:
15854          {
15855            ret = new TUnknownSqlStatement(pdbvendor);
15856            ret.sqlstatementtype = gnewsqlstatementtype;
15857            break;
15858          }
15859    }    // case
15860
15861    return ret;
15862}
15863
15864
15865public ESqlStatementType findsybasecmdusedbyyacc(TSourceToken pcst){
15866  ESqlStatementType ret = ESqlStatementType.sstinvalid;
15867
15868    int lcpos = pcst.posinlist;
15869    TSourceTokenList lcsourcetokenlist = pcst.container;
15870
15871    //subquery after semicolon or at first line
15872    if (  (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
15873      {
15874        int k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
15875        if ( k >0 )
15876          {
15877            ret = ESqlStatementType.sstselect;
15878          }
15879
15880        return ret;
15881      }
15882
15883
15884    ret = findsybasecmd(pcst);
15885    // execute can't be used to delimite other sql
15886    if ( ret == ESqlStatementType.sstmssqlexec )
15887      ret = ESqlStatementType.sstinvalid;
15888
15889  return ret;
15890}
15891
15892public ESqlStatementType findmssqlcmdusedbyyacc(TSourceToken pcst){
15893  ESqlStatementType ret = ESqlStatementType.sstinvalid;
15894
15895    int lcpos = pcst.posinlist;
15896    TSourceTokenList lcsourcetokenlist = pcst.container;
15897
15898    //subquery after semicolon or at first line
15899    if (  (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
15900      {
15901        int k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
15902        if ( k >0 )
15903          {
15904            ret = ESqlStatementType.sstselect;
15905          }
15906
15907        return ret;
15908      }
15909
15910
15911    ret = findmssqlcmd(pcst);
15912    // execute can't be used to delimite other sql
15913    if ( ret == ESqlStatementType.sstmssqlexec )
15914      ret = ESqlStatementType.sstinvalid;
15915
15916  return ret;
15917}
15918
15919
15920TCustomSqlStatement ishive(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
15921    TCustomSqlStatement ret = null;
15922
15923    gnewsqlstatementtype = ESqlStatementType.sstinvalid;
15924
15925    if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
15926       || (pcst.tokencode  == TBaseType.cmtslashstar)
15927       || (pcst.tokencode  == TBaseType.lexspace)
15928       || (pcst.tokencode  == TBaseType.lexnewline)
15929        || (pcst.tokentype == ETokenType.ttsemicolon) )
15930    {
15931      return null;
15932    }
15933
15934    int lcpos = pcst.posinlist;
15935    TSourceTokenList lcsourcetokenlist = pcst.container;
15936    TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
15937
15938
15939    //from query
15940    if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_from) )
15941      {
15942          if (pcst.container == null){
15943              return new TSelectSqlStatement(pdbvendor);
15944          }
15945
15946          // search select or insert who comes first,
15947          int lcpos1 = pcst.posinlist;
15948          TSourceTokenList lcsourcetokenlist1 = pcst.container;
15949          TSourceToken tmpSt;
15950          int parenthesisCnt = 0;
15951          for(int k=lcpos1+1;k<lcsourcetokenlist1.size();k++){
15952              tmpSt = lcsourcetokenlist1.get(k);
15953              if (tmpSt.tokencode == ';') break;
15954              if (tmpSt.tokencode == '(') parenthesisCnt++;
15955              if (tmpSt.tokencode == ')') parenthesisCnt--;
15956              if (parenthesisCnt == 0){
15957                  if (tmpSt.tokencode == TBaseType.rrw_select){
15958                      ret = new TSelectSqlStatement(pdbvendor);
15959                      break;
15960                  }else if (tmpSt.tokencode == TBaseType.rrw_insert){
15961                      ret = new TInsertSqlStatement(pdbvendor);
15962                      break;
15963                  }
15964              }
15965          }
15966
15967          if (ret == null){
15968              ret = new TSelectSqlStatement(pdbvendor);
15969//              FROM (
15970//                      FROM pv_users
15971//                      MAP pv_users.userid, pv_users.date
15972//                      USING 'map_script'
15973//              AS dt, uid
15974//              CLUSTER BY dt) map_output;
15975          }
15976
15977          return ret;
15978      }
15979
15980    //cte
15981    if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
15982    {
15983        ret = findcte(pcst,pdbvendor);
15984        if ( (ret != null) )  return ret;
15985    }
15986
15987    gnewsqlstatementtype = findhivecmd(pcst);
15988
15989    TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
15990    switch (gnewsqlstatementtype) {    //
15991        case sstinvalid:
15992          {
15993            ret = null;
15994            break;
15995          }
15996        case sstselect:
15997          {
15998            boolean lcisnewsql = true;
15999
16000            if ( pstate != EFindSqlStateType.stnormal )
16001              {
16002
16003                if ( (lccurrentsqlstatement != null) )
16004                  {
16005                    if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.ssthiveFromQuery )
16006                      //if (((TSelectSqlStatement)lccurrentsqlstatement).getSelectToken().tokencode == TBaseType.rrw_from)
16007                        lcisnewsql = false;
16008                  }
16009
16010              }
16011
16012            if ( lcisnewsql )
16013              ret = new TSelectSqlStatement(pdbvendor);
16014
16015            break;
16016          }
16017        case sstinsert:
16018          {
16019            boolean lcisnewsql = true;
16020            if ( pstate != EFindSqlStateType.stnormal )
16021              {
16022                if ( (lccurrentsqlstatement != null) )
16023                  {
16024                      if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.ssthiveFromQuery )
16025                         // if (((TSelectSqlStatement)lccurrentsqlstatement).getSelectToken().tokencode == TBaseType.rrw_from)
16026                             lcisnewsql = false;
16027                  }
16028              }
16029
16030            if ( lcisnewsql )
16031              ret = new TInsertSqlStatement(pdbvendor);
16032
16033            break;
16034          }
16035        case sstTruncate:
16036          {
16037              ret = new TTruncateStatement(pdbvendor);
16038              break;
16039          }
16040        case sstalterdatabase:
16041        {
16042            ret = new TAlterDatabaseStmt(pdbvendor);
16043            break;
16044        }
16045        case sstalterindex:
16046          {
16047            ret = new TAlterIndexStmt(pdbvendor);
16048              break;
16049          }
16050        case sstaltertable:
16051          {
16052            ret = new TAlterTableStatement(pdbvendor);
16053              break;
16054          }
16055        case sstalterview:
16056          {
16057            ret = new TAlterViewStatement(pdbvendor);
16058              break;
16059          }
16060        case sstanalyzeTable:
16061        {
16062            ret = new TAnalyzeStmt(pdbvendor);
16063            break;
16064        }
16065        case sstcreatedatabase:
16066          {
16067            ret = new TCreateDatabaseSqlStatement(pdbvendor);
16068              break;
16069          }
16070        case sstcreatetable:
16071          {
16072            ret = new TCreateTableSqlStatement(pdbvendor);
16073              break;
16074          }
16075        case sstcreateindex:
16076          {
16077            ret = new TCreateIndexSqlStatement(pdbvendor);
16078              break;
16079          }
16080        case sstcreateview:
16081          {
16082            ret = new TCreateViewSqlStatement(pdbvendor);
16083              break;
16084          }
16085        case ssthiveCreateRole:
16086        {
16087            ret = new THiveCreateRole(pdbvendor);
16088            break;
16089        }
16090        case ssthiveCreateFunction:
16091        {
16092            ret = new THiveCreateFunction(pdbvendor);
16093            break;
16094        }
16095        case ssthiveDesc:
16096        {
16097            ret = new THiveDescribe(pdbvendor);
16098            break;
16099        }
16100        case ssthiveDropDatabase:
16101        {
16102            ret = new THiveDropDatabase(pdbvendor);
16103            break;
16104        }
16105        case sstdropindex:
16106          {
16107            ret = new TDropIndexSqlStatement(pdbvendor);
16108              break;
16109          }
16110        case ssthiveDropRole:
16111        {
16112            ret = new THiveDropRole(pdbvendor);
16113              break;
16114        }
16115        case sstdroptable:
16116          {
16117            ret = new TDropTableSqlStatement(pdbvendor);
16118              break;
16119          }
16120        case ssthiveDropFunciton:
16121        {
16122            ret = new THiveDropFunction(pdbvendor);
16123              break;
16124        }
16125        case sstdropview:
16126          {
16127           ret = new TDropViewSqlStatement(pdbvendor);
16128              break;
16129          }
16130        case ssthiveExplain:
16131        {
16132            ret = new THiveExplain(pdbvendor);
16133            break;
16134        }
16135        case ssthiveExportTable:
16136        {
16137            ret = new THiveExportTable(pdbvendor);
16138               break;
16139        }
16140        case ssthiveGrant:
16141        {
16142            ret = new THiveGrant(pdbvendor);
16143               break;
16144        }
16145        case ssthiveGrantRole:
16146        {
16147            ret = new THiveGrantRole(pdbvendor);
16148               break;
16149        }
16150        case ssthiveImportTable:
16151        {
16152            ret = new THiveImportTable(pdbvendor);
16153               break;
16154        }
16155        case ssthiveLoad:
16156        {
16157            ret = new THiveLoad(pdbvendor);
16158               break;
16159        }
16160        case ssthiveLockTable:
16161        {
16162            ret = new TLockTableStmt(pdbvendor);
16163               break;
16164        }
16165        case sstmsck:
16166        {
16167            ret = new TMSCKStmt(pdbvendor);
16168               break;
16169        }
16170        case ssthiveRevoke:
16171        {
16172            ret = new THiveRevoke(pdbvendor);
16173               break;
16174        }
16175        case ssthiveRevokeRole:
16176        {
16177            ret = new THiveRevokeRole(pdbvendor);
16178               break;
16179        }
16180        case ssthiveSet:
16181        {
16182            ret = new THiveSet(pdbvendor);
16183               break;
16184        }
16185        case ssthiveShow:
16186        {
16187            ret = new THiveShow(pdbvendor);
16188               break;
16189        }
16190        case ssthiveShowGrants:
16191        {
16192            ret = new THiveShowGrant(pdbvendor);
16193               break;
16194        }
16195        case ssthiveShowRoleGrants:
16196        {
16197            ret = new THiveShowRoleGrant(pdbvendor);
16198               break;
16199        }
16200        case ssthiveUnlockTable:
16201        {
16202            ret = new THiveUnlockTable(pdbvendor);
16203               break;
16204        }
16205        case ssthiveSwitchDatabase:
16206        {
16207            ret = new TUseDatabase(pdbvendor);
16208               break;
16209        }
16210        case sstmerge:
16211        {
16212            ret = new TMergeSqlStatement(pdbvendor);
16213            break;
16214        }
16215        case sstupdate:
16216        {
16217            ret = new TUpdateSqlStatement(pdbvendor);
16218            break;
16219        }
16220        case sstdelete:
16221        {
16222            ret = new TDeleteSqlStatement(pdbvendor);
16223            break;
16224        }
16225        case sstCreateMacro:
16226            ret = new TCreateMacro(pdbvendor);
16227            break;
16228        case sstDropMacro:
16229            ret = new TDropMacro(pdbvendor);
16230            break;
16231        case sstcreatematerializedview:
16232            ret = new TCreateMaterializedSqlStatement(pdbvendor);
16233            break;
16234        case sstupsert:
16235            ret = new TUpsertStmt(pdbvendor);
16236            break;
16237        default:
16238          {
16239            ret = new TUnknownSqlStatement(pdbvendor);
16240            ret.sqlstatementtype = gnewsqlstatementtype;
16241            break;
16242          }
16243    }    // case
16244
16245    return ret;
16246}
16247
16248    TCustomSqlStatement isvertica(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
16249        TCustomSqlStatement ret = null;
16250
16251        gnewsqlstatementtype = ESqlStatementType.sstinvalid;
16252
16253        if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
16254                || (pcst.tokencode  == TBaseType.cmtslashstar)
16255                || (pcst.tokencode  == TBaseType.lexspace)
16256                || (pcst.tokencode  == TBaseType.lexnewline)
16257                || (pcst.tokentype == ETokenType.ttsemicolon) )
16258        {
16259            return null;
16260        }
16261
16262        int lcpos = pcst.posinlist;
16263        TSourceTokenList lcsourcetokenlist = pcst.container;
16264        TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
16265
16266        //subquery after semicolon or at first line
16267        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
16268        {
16269            int k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
16270            if ( k >0 )
16271            {
16272                ret = new TSelectSqlStatement(pdbvendor);
16273            }
16274
16275            return ret;
16276        }
16277
16278        //cte
16279        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
16280        {
16281            ret = findcte(pcst,pdbvendor);
16282            if ( (ret != null) )  return ret;
16283        }
16284
16285        gnewsqlstatementtype = findverticacmd(pcst);
16286
16287        TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
16288        switch (gnewsqlstatementtype) {    //
16289            case sstinvalid:
16290            {
16291                ret = null;
16292
16293                if ( pstate == EFindSqlStateType.stnormal )
16294                {
16295                    if ( pcst.tokencode == TBaseType.label_begin )
16296                    {
16297                        ret = new TCommonBlock(pdbvendor);
16298                        gnewsqlstatementtype = ret.sqlstatementtype;
16299                    }
16300                    else if ( pcst.tokencode == TBaseType.rrw_declare )
16301                    {
16302                        ret = new TCommonBlock(pdbvendor);
16303                        gnewsqlstatementtype = ret.sqlstatementtype;
16304                    }
16305                    else if ( pcst.tokencode == TBaseType.rrw_begin )
16306                    {
16307                        ret = new TCommonBlock(pdbvendor);
16308                        gnewsqlstatementtype = ret.sqlstatementtype;
16309                    }
16310                    else if ( pcst.tokencode == TBaseType.rrw_procedure )
16311                    {
16312                        ret = new TPlsqlCreateProcedure(pdbvendor);
16313                        // ret.sqlstatementtype = ESqlStatementType.sstplsql_createprocedure;
16314                        gnewsqlstatementtype = ret.sqlstatementtype;
16315                    }
16316                    else if ( pcst.tokencode == TBaseType.rrw_function )
16317                    {
16318                        ret = new TPlsqlCreateFunction(pdbvendor);
16319                        // ret.sqlstatementtype = ESqlStatementType.sstplsql_createfunction;
16320                        gnewsqlstatementtype = ret.sqlstatementtype;
16321                    }
16322                    else if ( pcst.tokencode == TBaseType.rrw_package )
16323                    {
16324                        ret = new TPlsqlCreatePackage(pdbvendor);
16325                        // ret.sqlstatementtype = ESqlStatementType.sstplsql_createpackage;
16326                        gnewsqlstatementtype = ret.sqlstatementtype;
16327                    }
16328                }
16329                break;
16330            }
16331            case sstselect:
16332            {
16333                boolean lcisnewsql = true;
16334
16335                if ( pstate != EFindSqlStateType.stnormal )
16336                {
16337                    // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
16338                    if ( (lcprevsolidtoken != null) )
16339                    {
16340                        if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
16341                            lcisnewsql = false; //subqery
16342                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
16343                            lcisnewsql = false;
16344                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
16345                            lcisnewsql = false;
16346                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
16347                            lcisnewsql = false;
16348                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
16349                            lcisnewsql = false;
16350                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
16351                            lcisnewsql = false;
16352                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
16353                        {
16354                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
16355                                lcisnewsql = false;
16356                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
16357                                lcisnewsql = false;
16358                        }
16359
16360                        if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
16361                        {
16362                            TSourceToken lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
16363                            if ( (lcpprevsolidtoken != null) )
16364                            {
16365                                if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
16366                                    lcisnewsql = false;
16367                            }
16368                        }
16369
16370                    }
16371
16372
16373                    if ( (lccurrentsqlstatement != null) )
16374                    {
16375                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
16376                            lcisnewsql = false;
16377                    }
16378
16379                }
16380
16381                if ( lcisnewsql )
16382                    ret = new TSelectSqlStatement(pdbvendor);
16383
16384                break;
16385            }
16386            case sstinsert:
16387            {
16388                boolean lcisnewsql = true;
16389                if ( pstate != EFindSqlStateType.stnormal )
16390                {
16391                    if ( (lccurrentsqlstatement != null) )
16392                    {
16393
16394                    }
16395                }
16396
16397                if ( lcisnewsql )
16398                    ret = new TInsertSqlStatement(pdbvendor);
16399
16400                break;
16401            }
16402            case sstupdate:
16403            {
16404                boolean lcisnewsql = true;
16405                if ( pstate != EFindSqlStateType.stnormal )
16406                {
16407                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
16408                    if ( (lcprevsolidtoken != null) )
16409                    { //
16410                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
16411                            lcisnewsql = false;
16412                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
16413                            lcisnewsql = false;
16414                    }
16415
16416                    TSourceToken lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
16417                    if ( (lcnextsolidtoken != null) )
16418                    {
16419                        if ( lcnextsolidtoken.tokentype == ETokenType.ttleftparenthesis)
16420                        {
16421                            int k = lcsourcetokenlist.solidtokenafterpos(lcnextsolidtoken.posinlist,TBaseType.rrw_select,1,"(");
16422                            if ( k  == 0 ) lcisnewsql = false;
16423                        }
16424                    }
16425
16426
16427                    if ( (lccurrentsqlstatement != null) )
16428                    {
16429                    }
16430                }
16431
16432                if ( lcisnewsql )
16433                {
16434                    ret = new TUpdateSqlStatement(pdbvendor);
16435                    ret.dummytag = 1; // means set clause in update is not found yet, used to seperate set clause from set statement
16436                }
16437                break;
16438            }
16439            case sstdelete:
16440            {
16441                boolean lcisnewsql = true;
16442
16443                if ( pstate != EFindSqlStateType.stnormal )
16444                {
16445                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
16446                    if ( (lcprevsolidtoken != null) )
16447                    {
16448                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
16449                            lcisnewsql = false;
16450                    }
16451
16452                    if ( (lccurrentsqlstatement != null) )
16453                    {
16454                    }
16455                }
16456
16457                if ( lcisnewsql )
16458                    ret = new TDeleteSqlStatement(pdbvendor);
16459
16460                break;
16461            }
16462            case sstmerge:
16463            {
16464                ret = new TMergeSqlStatement(pdbvendor);
16465                ret.sqlstatementtype = gnewsqlstatementtype;
16466                break;
16467            }
16468            case sstcommit:
16469            case sstEnd:
16470            {
16471                ret = new TCommitStmt(pdbvendor);
16472                ret.sqlstatementtype = gnewsqlstatementtype;
16473                break;
16474            }
16475            case sstrollback:
16476            {
16477                ret = new TRollbackStmt(pdbvendor);
16478                ret.sqlstatementtype = gnewsqlstatementtype;
16479                break;
16480            }
16481            case sstsavepoint:
16482            {
16483                ret = new TSavepointStmt(pdbvendor);
16484                ret.sqlstatementtype = gnewsqlstatementtype;
16485                break;
16486            }
16487            case sstRevoke:
16488            {
16489                ret = new TRevokeStmt(pdbvendor);
16490                ret.sqlstatementtype = gnewsqlstatementtype;
16491                break;
16492            }
16493            case sstGrant:
16494            {
16495                ret = new TGrantStmt(pdbvendor);
16496                ret.sqlstatementtype = gnewsqlstatementtype;
16497                break;
16498            }
16499            case sstTruncate:
16500            {
16501                ret = new TTruncateStatement(pdbvendor);
16502                ret.sqlstatementtype = gnewsqlstatementtype;
16503                break;
16504            }
16505            case sstcreatetable:
16506            {
16507                ret = new TCreateTableSqlStatement(pdbvendor);
16508                break;
16509            }
16510            case sstcreateview:
16511            {
16512                ret = new TCreateViewSqlStatement(pdbvendor);
16513                break;
16514            }
16515            case sstcreateindex:
16516            {
16517                ret = new TCreateIndexSqlStatement(pdbvendor);
16518                break;
16519            }
16520            case sstcreatedatabase:
16521            {
16522                ret = new TCreateDatabaseSqlStatement(pdbvendor);
16523                break;
16524            }
16525            case sstdroptable:
16526            {
16527                ret = new TDropTableSqlStatement(pdbvendor);
16528                break;
16529            }
16530            case sstdropview:
16531            {
16532                ret = new TDropViewSqlStatement(pdbvendor);
16533                break;
16534            }
16535            case sstdropindex:
16536            {
16537                ret = new TDropIndexSqlStatement(pdbvendor);
16538                break;
16539            }
16540            case sstaltertable:
16541            {
16542                ret = new TAlterTableStatement(pdbvendor);
16543                break;
16544            }
16545            case sstaltersession:
16546            {
16547                ret = new TAlterSessionStatement(pdbvendor);
16548                break;
16549            }
16550            case sstcreateprocedure:
16551            {
16552                ret = new TCreateProcedureStmt(pdbvendor);
16553                break;
16554            }
16555            case sstCommentOn:
16556            {
16557                ret = new TCommentOnSqlStmt(pdbvendor);
16558                break;
16559            }
16560            case sstcreatesequence:
16561            {
16562                ret = new TCreateSequenceStmt(pdbvendor);
16563                break;
16564            }
16565            case sstcreatefunction:
16566                ret = new TVerticaCreateFunction(pdbvendor);
16567                break;
16568            case sstaltersequence:
16569                ret = new TAlterSequenceStatement(pdbvendor);
16570                break;
16571            case sstAlterAccessPolicy:
16572                ret = new TAlterAccessPolicy(pdbvendor);
16573                break;
16574            case sstAlterAuthentication:
16575                ret = new TAlterAuthentication(pdbvendor);
16576                break;
16577            case sstalterdatabase:
16578                ret = new TAlterDatabaseStmt(pdbvendor);
16579                break;
16580            case sstAlterFaultGroup:
16581                ret = new TAlterFaultGroup(pdbvendor);
16582                break;
16583            case sstalterfunction:
16584                ret = new TAlterFunctionStmt(pdbvendor);
16585                break;
16586            case sstAlterLibrary:
16587                ret = new TAlterLibraryStmt(pdbvendor);
16588                break;
16589            case sstAlterNode:
16590                 ret = new TAlterNode(pdbvendor);
16591                break;
16592            case sstAlterNetworkInterface:
16593                ret = new TAlterNetworkInterface(pdbvendor);
16594                break;
16595            case sstAlterProjection:
16596                ret = new TAlterProjectionRename(pdbvendor);
16597                break;
16598            case sstAlterProfile:
16599                ret = new TAlterProfile(pdbvendor);
16600                break;
16601            case sstAlterResourcePool:
16602                ret = new TAlterResourcePool(pdbvendor);
16603                break;
16604            case sstAlterRole:
16605                ret = new TAlterRoleStmt(pdbvendor);
16606                break;
16607            case sstAlterSchema:
16608                ret = new TAlterSchemaStmt(pdbvendor);
16609                break;
16610            case sstAlterSubnet:
16611                ret = new TAlterSubnet(pdbvendor);
16612                break;
16613            case sstBegin:
16614            case sstStartTransaction:
16615                ret = new TBeginTran(pdbvendor);
16616                break;
16617            case sstReleaseSavepoint:
16618                ret = new TReleaseSavepointStmt(pdbvendor);
16619                break;
16620            case sstconnect:
16621                ret = new TConnectStmt(pdbvendor);
16622                break;
16623            case sstCreateAccessPolicy:
16624                ret = new TCreateAccessPolicy(pdbvendor);
16625                break;
16626            case sstCreateAuthentication:
16627                ret = new TCreateAuthentication(pdbvendor);
16628                break;
16629            case sstCreateFaultGroup:
16630                ret = new TCreateFaultGroup(pdbvendor);
16631                break;
16632            case sstCreateHCatalogSchema:
16633                ret = new TCreateHCatalogSchema(pdbvendor);
16634                break;
16635            case sstCreateSubnet:
16636                ret = new TCreateSubnet(pdbvendor);
16637                break;
16638            case sstcreateuser:
16639                ret = new TCreateUserStmt(pdbvendor);
16640                break;
16641            case sstDisconnect:
16642                ret = new TDisconnectStmt(pdbvendor);
16643                break;
16644            case sstDropAccessPolicy:
16645                ret = new TDropAccessPolicy(pdbvendor);
16646                break;
16647            case sstDropAggregateFunction:
16648                ret = new TDropAggregateFunction(pdbvendor);
16649                break;
16650            case sstDropAuthentication:
16651                ret = new TDropAuthentication(pdbvendor);
16652                break;
16653            case sstDropFaultGroup:
16654                ret = new TDropFaultGroup(pdbvendor);
16655                break;
16656            case sstdropfunction:
16657                ret = new TDropFunctionStmt(pdbvendor);
16658                break;
16659            case sstDropLibrary:
16660                ret = new TDropLibraryStmt(pdbvendor);
16661                break;
16662            case sstDropNetworkInterface:
16663                ret = new TDropNetworkInterface(pdbvendor);
16664                break;
16665            case sstdropprocedure:
16666                ret = new TDropProcedureStmt(pdbvendor);
16667                break;
16668            case sstDropProjection:
16669                ret = new TDropProjectionStmt(pdbvendor);
16670                break;
16671            case sstDropResourcePool:
16672                ret = new TDropResourcePool(pdbvendor);
16673                break;
16674            case sstdroprole:
16675                ret  = new TDropRoleStmt(pdbvendor);
16676                break;
16677            case sstdropschema:
16678                ret = new TDropSchemaSqlStatement(pdbvendor);
16679                break;
16680            case sstdropsequence:
16681                ret = new TDropSequenceStmt(pdbvendor);
16682                break;
16683            case sstDropSubnet:
16684                ret = new TDropSubnet(pdbvendor);
16685                break;
16686            case sstDropTextIndex:
16687                ret = new TDropTextIndex(pdbvendor);
16688                break;
16689            case sstDropTransformFunction:
16690                ret = new TDropTransformFunction(pdbvendor);
16691                break;
16692            case sstdropuser:
16693                ret = new TDropUserStmt(pdbvendor);
16694                break;
16695            case sstExplain:
16696            {
16697                ret = new TExplainPlan(pdbvendor);
16698                break;
16699            }
16700            case sstExportToVertica:
16701                ret = new TExportToVertica(pdbvendor);
16702                break;
16703            case sstProfile:
16704                ret = new TProfileStmt(pdbvendor);
16705                break;
16706            case sstset:
16707                ret = new TVerticaSetStmt(pdbvendor);
16708                break;
16709            case sstShow:
16710                ret = new TVerticaShow(pdbvendor);
16711                break;
16712            case sstcall:
16713                ret = new TCallStatement(pdbvendor);
16714                break;
16715            default:
16716            {
16717                ret = new TUnknownSqlStatement(pdbvendor);
16718                ret.sqlstatementtype = gnewsqlstatementtype;
16719                break;
16720            }
16721        }    // case
16722
16723        return ret;
16724    }
16725
16726
16727    TCustomSqlStatement iscouchbase(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
16728        TCustomSqlStatement ret = null;
16729
16730        gnewsqlstatementtype = ESqlStatementType.sstinvalid;
16731
16732        if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
16733                || (pcst.tokencode  == TBaseType.cmtslashstar)
16734                || (pcst.tokencode  == TBaseType.lexspace)
16735                || (pcst.tokencode  == TBaseType.lexnewline)
16736                || (pcst.tokentype == ETokenType.ttsemicolon) )
16737        {
16738            return null;
16739        }
16740
16741        int lcpos = pcst.posinlist;
16742        TSourceTokenList lcsourcetokenlist = pcst.container;
16743        TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
16744
16745        //subquery after semicolon or at first line
16746        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
16747        {
16748            int k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
16749            if ( k >0 )
16750            {
16751                ret = new TSelectSqlStatement(pdbvendor);
16752            }
16753
16754            return ret;
16755        }
16756
16757        //cte
16758        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
16759        {
16760            ret = findcte(pcst,pdbvendor);
16761            if ( (ret != null) )  return ret;
16762        }
16763
16764        gnewsqlstatementtype = findcouchbasecmd(pcst);
16765
16766        TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
16767        switch (gnewsqlstatementtype) {    //
16768            case sstinvalid:
16769            {
16770                ret = null;
16771
16772                if ( pstate == EFindSqlStateType.stnormal )
16773                {
16774                    if ( pcst.tokencode == TBaseType.label_begin )
16775                    {
16776                        ret = new TCommonBlock(pdbvendor);
16777                        gnewsqlstatementtype = ret.sqlstatementtype;
16778                    }
16779                    else if ( pcst.tokencode == TBaseType.rrw_declare )
16780                    {
16781                        ret = new TCommonBlock(pdbvendor);
16782                        gnewsqlstatementtype = ret.sqlstatementtype;
16783                    }
16784                    else if ( pcst.tokencode == TBaseType.rrw_begin )
16785                    {
16786                        ret = new TCommonBlock(pdbvendor);
16787                        gnewsqlstatementtype = ret.sqlstatementtype;
16788                    }
16789                    else if ( pcst.tokencode == TBaseType.rrw_procedure )
16790                    {
16791                        ret = new TPlsqlCreateProcedure(pdbvendor);
16792                        // ret.sqlstatementtype = ESqlStatementType.sstplsql_createprocedure;
16793                        gnewsqlstatementtype = ret.sqlstatementtype;
16794                    }
16795                    else if ( pcst.tokencode == TBaseType.rrw_function )
16796                    {
16797                        ret = new TPlsqlCreateFunction(pdbvendor);
16798                        // ret.sqlstatementtype = ESqlStatementType.sstplsql_createfunction;
16799                        gnewsqlstatementtype = ret.sqlstatementtype;
16800                    }
16801                    else if ( pcst.tokencode == TBaseType.rrw_package )
16802                    {
16803                        ret = new TPlsqlCreatePackage(pdbvendor);
16804                        // ret.sqlstatementtype = ESqlStatementType.sstplsql_createpackage;
16805                        gnewsqlstatementtype = ret.sqlstatementtype;
16806                    }
16807                }
16808                break;
16809            }
16810            case sstselect:
16811            {
16812                boolean lcisnewsql = true;
16813
16814                if ( pstate != EFindSqlStateType.stnormal )
16815                {
16816                    // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
16817                    if ( (lcprevsolidtoken != null) )
16818                    {
16819                        if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
16820                            lcisnewsql = false; //subqery
16821                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
16822                            lcisnewsql = false;
16823                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
16824                            lcisnewsql = false;
16825                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
16826                            lcisnewsql = false;
16827                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
16828                            lcisnewsql = false;
16829                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
16830                            lcisnewsql = false;
16831                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
16832                        {
16833                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
16834                                lcisnewsql = false;
16835                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
16836                                lcisnewsql = false;
16837                        }
16838
16839                        if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
16840                        {
16841                            TSourceToken lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
16842                            if ( (lcpprevsolidtoken != null) )
16843                            {
16844                                if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
16845                                    lcisnewsql = false;
16846                            }
16847                        }
16848
16849                    }
16850
16851
16852                    if ( (lccurrentsqlstatement != null) )
16853                    {
16854                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
16855                            lcisnewsql = false;
16856                    }
16857
16858                }
16859
16860                if ( lcisnewsql )
16861                    ret = new TSelectSqlStatement(pdbvendor);
16862
16863                break;
16864            }
16865            case sstinsert:
16866            {
16867                boolean lcisnewsql = true;
16868                if ( pstate != EFindSqlStateType.stnormal )
16869                {
16870                    if ( (lccurrentsqlstatement != null) )
16871                    {
16872
16873                    }
16874                }
16875
16876                if ( lcisnewsql )
16877                    ret = new TInsertSqlStatement(pdbvendor);
16878
16879                break;
16880            }
16881            case sstupdate:
16882            {
16883                boolean lcisnewsql = true;
16884                if ( pstate != EFindSqlStateType.stnormal )
16885                {
16886                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
16887                    if ( (lcprevsolidtoken != null) )
16888                    { //
16889                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
16890                            lcisnewsql = false;
16891                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
16892                            lcisnewsql = false;
16893                    }
16894
16895                    TSourceToken lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
16896                    if ( (lcnextsolidtoken != null) )
16897                    {
16898                        if ( lcnextsolidtoken.tokentype == ETokenType.ttleftparenthesis)
16899                        {
16900                            int k = lcsourcetokenlist.solidtokenafterpos(lcnextsolidtoken.posinlist,TBaseType.rrw_select,1,"(");
16901                            if ( k  == 0 ) lcisnewsql = false;
16902                        }
16903                    }
16904
16905
16906                    if ( (lccurrentsqlstatement != null) )
16907                    {
16908                    }
16909                }
16910
16911                if ( lcisnewsql )
16912                {
16913                    ret = new TUpdateSqlStatement(pdbvendor);
16914                    ret.dummytag = 1; // means set clause in update is not found yet, used to seperate set clause from set statement
16915                }
16916                break;
16917            }
16918            case sstdelete:
16919            {
16920                boolean lcisnewsql = true;
16921
16922                if ( pstate != EFindSqlStateType.stnormal )
16923                {
16924                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
16925                    if ( (lcprevsolidtoken != null) )
16926                    {
16927                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
16928                            lcisnewsql = false;
16929                    }
16930
16931                    if ( (lccurrentsqlstatement != null) )
16932                    {
16933                    }
16934                }
16935
16936                if ( lcisnewsql )
16937                    ret = new TDeleteSqlStatement(pdbvendor);
16938
16939                break;
16940            }
16941            case sstmerge:
16942            {
16943                ret = new TMergeSqlStatement(pdbvendor);
16944                ret.sqlstatementtype = gnewsqlstatementtype;
16945                break;
16946            }
16947            case sstcreateindex:
16948            {
16949                ret = new TCreateIndexSqlStatement(pdbvendor);
16950                break;
16951            }
16952            case sstdropindex:
16953            {
16954                ret = new TDropIndexSqlStatement(pdbvendor);
16955                break;
16956            }
16957            case sstBuildIndex:
16958                ret = new TTBuildIndexesStmt(pdbvendor);
16959                break;
16960            case sstinfer:
16961                ret = new TInferKeyspaceStmt(pdbvendor);
16962                break;
16963            case sstupsert:
16964                ret = new TUpsertStmt(pdbvendor);
16965                break;
16966            case sstExplain:
16967            {
16968                ret = new TExplainPlan(pdbvendor);
16969                break;
16970            }
16971            case sstprepare:
16972            {
16973                ret = new TExplainPlan(pdbvendor);
16974                ret.sqlstatementtype = ESqlStatementType.sstprepare;
16975                break;
16976            }
16977            case sstExecutePreparedStmt:
16978                ret = new TExecuteSqlStatement(pdbvendor);
16979                break;
16980            default:
16981            {
16982                ret = new TUnknownSqlStatement(pdbvendor);
16983                ret.sqlstatementtype = gnewsqlstatementtype;
16984                break;
16985            }
16986        }    // case
16987
16988        return ret;
16989    }
16990
16991    /**
16992     * Generic method for yacc parsers to find SQL command type.
16993     * Delegates to vendor-specific implementations where available.
16994     * Added temporarily for revert testing - uses token's dbvendor field.
16995     */
16996    public ESqlStatementType findCmdUsedByYacc(TSourceToken token) {
16997        EDbVendor vendor = token.getDbvendor();
16998        if (vendor == null) {
16999            return ESqlStatementType.sstinvalid;
17000        }
17001
17002        // Delegate to vendor-specific methods where they exist
17003        switch (vendor) {
17004            case dbvmssql:
17005                return findmssqlcmdusedbyyacc(token);
17006            case dbvsybase:
17007                return findsybasecmdusedbyyacc(token);
17008            // For other vendors, use generic command finding
17009            default:
17010                TSqlCmdList cmdList = getSqlCmdList(vendor);
17011                if (cmdList == null || cmdList.size() == 0) {
17012                    return ESqlStatementType.sstunknown;
17013                }
17014                // Use generic finddbcmd for vendors without specific yacc methods
17015                return finddbcmd(token, cmdList);
17016        }
17017    }
17018
17019}