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.sstmssqlcreatedatabaseencryptionkey, TBaseType.rrw_create,"database","encryption","key"," "," "," ");
2217    addmssqlcmds(ESqlStatementType.sstmssqlcreateselectivexmlindex, TBaseType.rrw_create,"selective","xml","index"," "," "," ");
2218    addmssqlcmds(ESqlStatementType.sstmssqlcreatejsonindex, TBaseType.rrw_create,"json","index"," "," "," "," ");
2219    addmssqlcmds(ESqlStatementType.sstmssqlcreatevectorindex, TBaseType.rrw_create,"vector","index"," "," "," "," ");
2220    addmssqlcmds(ESqlStatementType.sstmssqlrenameobject, TBaseType.rrw_rename,"object"," "," "," "," "," ");
2221    addmssqlcmds(ESqlStatementType.sstmssqlcreateremotetableasselect, TBaseType.rrw_create,"remote","table"," "," "," "," ");
2222    addmssqlcmds(ESqlStatementType.sstcreatecredential, TBaseType.rrw_create,"database","scoped","credential"," "," "," ");
2223    addmssqlcmds(ESqlStatementType.sstmssqlcreatedefault, TBaseType.rrw_create,"default"," "," "," "," "," ");
2224    addmssqlcmds(ESqlStatementType.sstmssqlcreateendpoint, TBaseType.rrw_create,"endpoint"," "," "," "," "," ");
2225    addmssqlcmds(ESqlStatementType.sstmssqlcreateeventnotification, TBaseType.rrw_create,"event", "notification"," "," "," "," ");
2226    addmssqlcmds(ESqlStatementType.sstmssqlcreateeventsession, TBaseType.rrw_create,"event", "session"," "," "," "," ");
2227    addmssqlcmds(ESqlStatementType.sstmssqlcreateevexternalDataSource, TBaseType.rrw_create,"external", "data","source"," "," "," ");
2228    addmssqlcmds(ESqlStatementType.sstCreateFileFormat, TBaseType.rrw_create,"external","file","format"," "," "," ");
2229    addmssqlcmds(ESqlStatementType.sstmssqlcreateevexternalLanguage, TBaseType.rrw_create,"external", "language"," "," "," "," ");
2230    addmssqlcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"external","table"," "," "," "," ");
2231    addmssqlcmds(ESqlStatementType.sstmssqlcreatefulltextcatalog, TBaseType.rrw_create,"fulltext", "catalog"," "," "," "," ");
2232    addmssqlcmds(ESqlStatementType.sstmssqlcreatefulltextindex, TBaseType.rrw_create,"fulltext", "index"," "," "," "," ");
2233    addmssqlcmds(ESqlStatementType.sstmssqlcreatefunction, TBaseType.rrw_create,"function"," "," "," "," "," ");
2234    addmssqlcmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"index"," "," "," "," "," ");
2235    addmssqlcmds(ESqlStatementType.sstmssqlcreatelogin, TBaseType.rrw_create,"login"," "," "," "," "," ");
2236    addmssqlcmds(ESqlStatementType.sstmssqlcreatemasterkey, TBaseType.rrw_create,"master","key"," "," "," "," ");
2237    addmssqlcmds(ESqlStatementType.sstcreatematerializedview, TBaseType.rrw_create,"materialized","view"," "," "," "," ");
2238
2239    addmssqlcmds(ESqlStatementType.sstmssqlcreatemessagetype, TBaseType.rrw_create,"message","type"," "," "," "," ");
2240    addmssqlcmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"nonclustered","columnstore","index"," "," "," ");
2241    addmssqlcmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"nonclustered","index"," "," "," "," ");
2242
2243    addmssqlcmds(ESqlStatementType.sstmssqlcreatefunction, TBaseType.rrw_create,"or","alter","function"," "," "," ");
2244
2245    addmssqlcmds(ESqlStatementType.sstmssqlcreateprocedure, TBaseType.rrw_create,"or","alter","proc"," "," "," ");
2246    addmssqlcmds(ESqlStatementType.sstmssqlcreateprocedure, TBaseType.rrw_create,"or","alter","procedure"," "," "," ");
2247
2248    addmssqlcmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,"or","alter","view"," "," "," ");
2249    addmssqlcmds(ESqlStatementType.sstmssqlcreatepartitionfunction, TBaseType.rrw_create,"partition","function"," "," "," "," ");
2250    addmssqlcmds(ESqlStatementType.sstmssqlcreatepartitionscheme, TBaseType.rrw_create,"partition","scheme"," "," "," "," ");
2251    addmssqlcmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"primary","xml","index"," "," "," ");
2252    addmssqlcmds(ESqlStatementType.sstmssqlcreateprocedure, TBaseType.rrw_create,"proc"," "," "," "," "," ");
2253    addmssqlcmds(ESqlStatementType.sstmssqlcreateprocedure, TBaseType.rrw_create,"procedure"," "," "," "," "," ");
2254    addmssqlcmds(ESqlStatementType.sstmssqlcreatequeue, TBaseType.rrw_create,"queue"," "," "," "," "," ");
2255    addmssqlcmds(ESqlStatementType.sstmssqlcreateremoteservicebinding, TBaseType.rrw_create,"remote", "service", "binding"," "," "," ");
2256    addmssqlcmds(ESqlStatementType.sstmssqlcreaterole, TBaseType.rrw_create,"role"," "," "," "," "," ");
2257    addmssqlcmds(ESqlStatementType.sstmssqlcreateroute, TBaseType.rrw_create,"route"," "," "," "," "," ");
2258    addmssqlcmds(ESqlStatementType.sstmssqlcreaterule, TBaseType.rrw_create,"rule"," "," "," "," "," ");
2259    addmssqlcmds(ESqlStatementType.sstmssqlcreateschema, TBaseType.rrw_create,"schema"," "," "," "," "," ");
2260    addmssqlcmds(ESqlStatementType.sstmssqlCreateSecurityPolicy, TBaseType.rrw_create, "security", "policy", " ", " ", " ", " ");
2261    addmssqlcmds(ESqlStatementType.sstcreatesequence, TBaseType.rrw_create, "sequence", " ", " ", " ", " ", " ");
2262    addmssqlcmds(ESqlStatementType.sstmssqlcreateservice, TBaseType.rrw_create,"service"," "," "," "," "," ");
2263    addmssqlcmds(ESqlStatementType.sstmssqlcreatestatistics, TBaseType.rrw_create,"statistics"," "," "," "," "," ");
2264    addmssqlcmds(ESqlStatementType.sstmssqlcreatesymmetrickey, TBaseType.rrw_create,"symmetric", "key"," "," "," "," ");
2265    addmssqlcmds(ESqlStatementType.sstmssqlcreatesynonym, TBaseType.rrw_create,"synonym"," "," "," "," "," ");
2266    addmssqlcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"table"," "," "," "," "," ");
2267    addmssqlcmds(ESqlStatementType.sstcreatetrigger, TBaseType.rrw_create,"trigger"," "," "," "," "," ");
2268    addmssqlcmds(ESqlStatementType.sstmssqlcreatetype, TBaseType.rrw_create,"type"," "," "," "," "," ");
2269    addmssqlcmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"unique","clustered","index"," "," "," ");
2270    addmssqlcmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"unique","index"," "," "," "," ");
2271    addmssqlcmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"unique","nonclustered","index"," "," "," ");
2272    addmssqlcmds(ESqlStatementType.sstmssqlcreateuser, TBaseType.rrw_create,"user"," "," "," "," "," ");
2273    addmssqlcmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,"view"," "," "," "," "," ");
2274    addmssqlcmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"xml","index"," "," "," "," ");
2275    addmssqlcmds(ESqlStatementType.sstmssqlcreatexmlschemacollection, TBaseType.rrw_create,"xml", "schema", "collection"," "," "," ");
2276// DBCC
2277    addmssqlcmds(ESqlStatementType.sstmssqldbcc, TBaseType.rrw_dbcc," "," "," "," "," "," ");
2278//DEALLOCATE
2279    addmssqlcmds(ESqlStatementType.sstmssqldeallocate, TBaseType.rrw_deallocate," "," "," "," "," "," ");
2280//DECLARE
2281    addmssqlcmds(ESqlStatementType.sstmssqldeclare, TBaseType.rrw_declare," "," "," "," "," "," ");
2282//DELETE
2283    addmssqlcmds(ESqlStatementType.sstdelete, TBaseType.rrw_delete," "," "," "," "," "," ");
2284//DENY
2285    addmssqlcmds(ESqlStatementType.sstmssqldeny, TBaseType.rrw_deny," "," "," "," "," "," ");
2286//DISABLE TRIGGER
2287    addmssqlcmds(ESqlStatementType.sstmssqldisabletrigger, TBaseType.rrw_disable,"trigger"," "," "," "," "," ");
2288//drop
2289    addmssqlcmds(ESqlStatementType.sstmssqldropaggregate, TBaseType.rrw_drop,"aggregate"," "," "," "," "," ");
2290    addmssqlcmds(ESqlStatementType.sstmssqldropapplicationrole, TBaseType.rrw_drop,"application", "role"," "," "," "," ");
2291    addmssqlcmds(ESqlStatementType.sstmssqldropassembly, TBaseType.rrw_drop,"assembly"," "," "," "," "," ");
2292    addmssqlcmds(ESqlStatementType.sstmssqldropasymmetrickey, TBaseType.rrw_drop,"asymmetric", "key"," "," "," "," ");
2293    addmssqlcmds(ESqlStatementType.sstmssqldropcertificate, TBaseType.rrw_drop,"certificate"," "," "," "," "," ");
2294    addmssqlcmds(ESqlStatementType.sstmssqldropcontract, TBaseType.rrw_drop,"contract"," "," "," "," "," ");
2295    addmssqlcmds(ESqlStatementType.sstmssqldropsignature, TBaseType.rrw_drop,"counter", "signature"," "," "," "," ");
2296    addmssqlcmds(ESqlStatementType.sstmssqldropcredential, TBaseType.rrw_drop,"credential"," "," "," "," "," ");
2297    addmssqlcmds(ESqlStatementType.sstmssqldropdatabase, TBaseType.rrw_drop,"database"," "," "," "," "," ");
2298    addmssqlcmds(ESqlStatementType.sstmssqldropdefault, TBaseType.rrw_drop,"default"," "," "," "," "," ");
2299    addmssqlcmds(ESqlStatementType.sstmssqldropendpoint, TBaseType.rrw_drop,"endpoint"," "," "," "," "," ");
2300    addmssqlcmds(ESqlStatementType.sstmssqldropeventnotification, TBaseType.rrw_drop,"event", "notification"," "," "," "," ");
2301    addmssqlcmds(ESqlStatementType.sstmssqldropeventsession, TBaseType.rrw_drop,"event", "session"," "," "," "," ");
2302    addmssqlcmds(ESqlStatementType.sstmssqldropfulltextcatalog, TBaseType.rrw_drop,"fulltext", "catalog"," "," "," "," ");
2303    addmssqlcmds(ESqlStatementType.sstmssqldropfulltextindex, TBaseType.rrw_drop,"fulltext", "index"," "," "," "," ");
2304    addmssqlcmds(ESqlStatementType.sstmssqldropfunction, TBaseType.rrw_drop,"function"," "," "," "," "," ");
2305    addmssqlcmds(ESqlStatementType.sstmssqldropindex, TBaseType.rrw_drop,"index"," "," "," "," "," ");
2306    addmssqlcmds(ESqlStatementType.sstmssqldroplogin, TBaseType.rrw_drop,"login"," "," "," "," "," ");
2307    addmssqlcmds(ESqlStatementType.sstmssqldropmasterkey, TBaseType.rrw_drop,"master", "key"," "," "," "," ");
2308    addmssqlcmds(ESqlStatementType.sstmssqldropmessagetype, TBaseType.rrw_drop,"message", "type"," "," "," "," ");
2309    addmssqlcmds(ESqlStatementType.sstmssqldroppartitionfunction, TBaseType.rrw_drop,"partition", "function"," "," "," "," ");
2310    addmssqlcmds(ESqlStatementType.sstmssqldroppartitionscheme, TBaseType.rrw_drop,"partition", "scheme"," "," "," "," ");
2311    addmssqlcmds(ESqlStatementType.sstmssqldropprocedure, TBaseType.rrw_drop,"proc"," "," "," "," "," ");
2312    addmssqlcmds(ESqlStatementType.sstmssqldropprocedure, TBaseType.rrw_drop,"procedure"," "," "," "," "," ");
2313    addmssqlcmds(ESqlStatementType.sstmssqldropqueue, TBaseType.rrw_drop,"queue"," "," "," "," "," ");
2314    addmssqlcmds(ESqlStatementType.sstmssqldropremoteservicebinding, TBaseType.rrw_drop,"remote", "service", "binding"," "," "," ");
2315    addmssqlcmds(ESqlStatementType.sstmssqldroprole, TBaseType.rrw_drop,"role"," "," "," "," "," ");
2316    addmssqlcmds(ESqlStatementType.sstmssqldroproute, TBaseType.rrw_drop,"route"," "," "," "," "," ");
2317    addmssqlcmds(ESqlStatementType.sstmssqldroprule, TBaseType.rrw_drop,"rule"," "," "," "," "," ");
2318    addmssqlcmds(ESqlStatementType.sstmssqldropschema, TBaseType.rrw_drop,"schema"," "," "," "," "," ");
2319    addmssqlcmds(ESqlStatementType.sstmssqlDropSecurityPolicy, TBaseType.rrw_drop, "security", "policy", " ", " ", " ", " ");
2320    addmssqlcmds(ESqlStatementType.sstdropsequence, TBaseType.rrw_drop,"sequence"," "," "," "," "," ");
2321    addmssqlcmds(ESqlStatementType.sstmssqldropservice, TBaseType.rrw_drop,"service"," "," "," "," "," ");
2322    addmssqlcmds(ESqlStatementType.sstmssqldropsignature, TBaseType.rrw_drop,"signature"," "," "," "," "," ");
2323    addmssqlcmds(ESqlStatementType.sstmssqldropstatistics, TBaseType.rrw_drop,"statistics"," "," "," "," "," ");
2324    addmssqlcmds(ESqlStatementType.sstmssqldropsymmetrickey, TBaseType.rrw_drop,"symmetric", "key"," "," "," "," ");
2325    addmssqlcmds(ESqlStatementType.sstmssqldropsynonym, TBaseType.rrw_drop,"synonym"," "," "," "," "," ");
2326    addmssqlcmds(ESqlStatementType.sstmssqldroptable, TBaseType.rrw_drop,"table"," "," "," "," "," ");
2327    addmssqlcmds(ESqlStatementType.sstmssqldroptrigger, TBaseType.rrw_drop,"trigger"," "," "," "," "," ");
2328    addmssqlcmds(ESqlStatementType.sstmssqldroptype, TBaseType.rrw_drop,"type"," "," "," "," "," ");
2329    addmssqlcmds(ESqlStatementType.sstmssqldropuser, TBaseType.rrw_drop,"user"," "," "," "," "," ");
2330    addmssqlcmds(ESqlStatementType.sstmssqldropview, TBaseType.rrw_drop,"view"," "," "," "," "," ");
2331    addmssqlcmds(ESqlStatementType.sstmssqldropxmlschemacollection, TBaseType.rrw_drop,"xml", "schema", "collection"," "," "," ");
2332//enable trigger
2333    addmssqlcmds(ESqlStatementType.sstmssqlenabletrigger, TBaseType.rrw_enable,"trigger"," "," "," "," "," ");
2334//END CONVERSATION
2335// AddMssqlCmds(ESqlStatementType.sstMssqlEndCatch,TBaseType.rrw_end,'catch');
2336    addmssqlcmds(ESqlStatementType.sstmssqlendconversation, TBaseType.rrw_end,"conversation"," "," "," "," "," ");
2337// AddMssqlCmds(ESqlStatementType.sstMssqlEndTry,TBaseType.rrw_end,'try');
2338//exec
2339//exec as
2340    addmssqlcmds(ESqlStatementType.sstmssqlexec, TBaseType.rrw_exec," "," "," "," "," "," ");
2341    addmssqlcmds(ESqlStatementType.sstmssqlexecuteas, TBaseType.rrw_exec,"as","caller"," "," "," "," ");
2342    addmssqlcmds(ESqlStatementType.sstmssqlexecuteas, TBaseType.rrw_exec,"as","login"," "," "," "," ");
2343    addmssqlcmds(ESqlStatementType.sstmssqlexecuteas, TBaseType.rrw_exec,"as","user"," "," "," "," ");
2344    addmssqlcmds(ESqlStatementType.sstmssqlexec, TBaseType.rrw_execute, " "," "," "," "," "," ");
2345    addmssqlcmds(ESqlStatementType.sstmssqlexecuteas, TBaseType.rrw_execute,"as","caller"," "," "," "," ");
2346    addmssqlcmds(ESqlStatementType.sstmssqlexecuteas, TBaseType.rrw_execute,"as","login"," "," "," "," ");
2347    addmssqlcmds(ESqlStatementType.sstmssqlexecuteas, TBaseType.rrw_execute,"as","user"," "," "," "," ");
2348//fetch
2349    addmssqlcmds(ESqlStatementType.sstmssqlfetch, TBaseType.rrw_fetch," "," "," "," "," "," ");
2350//go
2351    addmssqlcmds(ESqlStatementType.sstmssqlgo, TBaseType.rrw_go," "," "," "," "," "," ");
2352//goto
2353    addmssqlcmds(ESqlStatementType.sstmssqlgoto, TBaseType.rrw_goto," "," "," "," "," "," ");
2354//GRANT
2355    addmssqlcmds(ESqlStatementType.sstmssqlgrant, TBaseType.rrw_grant," "," "," "," "," "," ");
2356
2357//if
2358    addmssqlcmds(ESqlStatementType.sstmssqlif, TBaseType.rrw_if," "," "," "," "," "," ");
2359
2360//GRANT
2361    addmssqlcmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert," "," "," "," "," "," ");
2362    addmssqlcmds(ESqlStatementType.sstmssqlinsertbulk, TBaseType.rrw_insert,"bulk"," "," "," "," "," ");
2363//KILL
2364    addmssqlcmds(ESqlStatementType.sstmssqlkill, TBaseType.rrw_kill," "," "," "," "," "," ");
2365//KILL
2366    addmssqlcmds(ESqlStatementType.sstmssqlkill, TBaseType.rrw_kill," "," "," "," "," "," ");
2367    addmssqlcmds(ESqlStatementType.sstmssqlkillquerynotificationsubscription, TBaseType.rrw_kill,"kill", "query", "notification", "subscription"," "," ");
2368    addmssqlcmds(ESqlStatementType.sstmssqlkillstats, TBaseType.rrw_kill,"stats"," "," "," "," "," ");
2369
2370//
2371 addmssqlcmds(ESqlStatementType.sstsybaselocktable,TBaseType.rw_locktable,"table"," "," "," "," "," ");
2372//MOVE CONVERSATION
2373    addmssqlcmds(ESqlStatementType.sstmssqlmoveconversation, TBaseType.rrw_move,"conversation"," "," "," "," "," ");
2374//merge
2375    addmssqlcmds(ESqlStatementType.sstmerge, TBaseType.rrw_merge," "," "," "," "," "," ");
2376//open
2377    addmssqlcmds(ESqlStatementType.sstmssqlopen, TBaseType.rrw_open," "," "," "," "," "," ");
2378    addmssqlcmds(ESqlStatementType.sstmssqlopenmasterkey, TBaseType.rrw_open,"master", "key"," "," "," "," ");
2379    addmssqlcmds(ESqlStatementType.sstmssqlopensymmetrickey, TBaseType.rrw_open,"symmetric", "key"," "," "," "," ");
2380//PRINT
2381    addmssqlcmds(ESqlStatementType.sstmssqlprint, TBaseType.rrw_print," "," "," "," "," "," ");
2382//RAISERROR
2383    addmssqlcmds(ESqlStatementType.sstmssqlraiserror, TBaseType.rrw_raiserror," "," "," "," "," "," ");
2384//READTEXT
2385    addmssqlcmds(ESqlStatementType.sstmssqlreadtext, TBaseType.rrw_readtext," "," "," "," "," "," ");
2386//RECEIVE
2387    addmssqlcmds(ESqlStatementType.sstmssqlreceive, TBaseType.rrw_receive," "," "," "," "," "," ");
2388//RECONFIGURE
2389    addmssqlcmds(ESqlStatementType.sstmssqlreconfigure, TBaseType.rrw_reconfigure," "," "," "," "," "," ");
2390//RESTORE
2391    addmssqlcmds(ESqlStatementType.sstmssqlrestoredatabase, TBaseType.rrw_restore,"database"," "," "," "," "," ");
2392    addmssqlcmds(ESqlStatementType.sstmssqlrestorefilelistonly, TBaseType.rrw_restore,"filelistonly"," "," "," "," "," ");
2393    addmssqlcmds(ESqlStatementType.sstmssqlrestoreheaderonly, TBaseType.rrw_restore,"headeronly"," "," "," "," "," ");
2394    addmssqlcmds(ESqlStatementType.sstmssqlrestorelabelonly, TBaseType.rrw_restore,"labelonly"," "," "," "," "," ");
2395    addmssqlcmds(ESqlStatementType.sstmssqlrestorelog, TBaseType.rrw_restore,"log"," "," "," "," "," ");
2396    addmssqlcmds(ESqlStatementType.sstmssqlrestoremasterkey, TBaseType.rrw_restore,"master","key"," "," "," "," ");
2397    addmssqlcmds(ESqlStatementType.sstmssqlrestorerewindonly, TBaseType.rrw_restore,"rewindonly"," "," "," "," "," ");
2398    addmssqlcmds(ESqlStatementType.sstmssqlrestoreservicemasterkey, TBaseType.rrw_restore,"service","master","key"," "," "," ");
2399    addmssqlcmds(ESqlStatementType.sstmssqlrestoreverifyonly, TBaseType.rrw_restore,"verifyonly"," "," "," "," "," ");
2400//RETURN
2401    addmssqlcmds(ESqlStatementType.sstmssqlreturn, TBaseType.rrw_return," "," "," "," "," "," ");
2402//REVERT
2403    addmssqlcmds(ESqlStatementType.sstmssqlrevert, TBaseType.rrw_revert," "," "," "," "," "," ");
2404//REVOKE
2405    addmssqlcmds(ESqlStatementType.sstmssqlrevoke, TBaseType.rrw_revoke," "," "," "," "," "," ");
2406//ROLLBACK
2407    addmssqlcmds(ESqlStatementType.sstmssqlrollback, TBaseType.rrw_rollback," "," "," "," "," "," ");
2408    addmssqlcmds(ESqlStatementType.sstmssqlrollback, TBaseType.rrw_rollback,"tran"," "," "," "," "," ");
2409    addmssqlcmds(ESqlStatementType.sstmssqlrollback, TBaseType.rrw_rollback,"transaction"," "," "," "," "," ");
2410    addmssqlcmds(ESqlStatementType.sstmssqlrollback, TBaseType.rrw_rollback,"work"," "," "," "," "," ");
2411//SAVE
2412    addmssqlcmds(ESqlStatementType.sstmssqlsavetran, TBaseType.rrw_save," "," "," "," "," "," ");
2413    addmssqlcmds(ESqlStatementType.sstmssqlsavetran, TBaseType.rrw_save,"tran"," "," "," "," "," ");
2414    addmssqlcmds(ESqlStatementType.sstmssqlsavetran, TBaseType.rrw_save,"transaction"," "," "," "," "," ");
2415//SELECT
2416    addmssqlcmds(ESqlStatementType.sstselect, TBaseType.rrw_select," "," "," "," "," "," ");
2417//SEND ON CONVERSATION
2418    addmssqlcmds(ESqlStatementType.sstmssqlsendonconversation, TBaseType.rrw_send,"on","conversation"," "," "," "," ");
2419//SET
2420    addmssqlcmds(ESqlStatementType.sstmssqlset, TBaseType.rrw_set," "," "," "," "," "," ");
2421//SET rowcount
2422    addmssqlcmds(ESqlStatementType.sstmssqlsetrowcount, TBaseType.rrw_set,"rowcount"," "," "," "," "," ");
2423//SET
2424    addmssqlcmds(ESqlStatementType.sstmssqlsetuser,TBaseType.rrw_setuser," "," "," "," "," "," ");
2425//SHUTDOWN
2426    addmssqlcmds(ESqlStatementType.sstmssqlshutdown, TBaseType.rrw_shutdown," "," "," "," "," "," ");
2427//SIGN
2428//    addmssqlcmds(ESqlStatementType.sstmssqlsign, rrw_sign," "," "," "," "," "," ");
2429
2430//throw
2431    addmssqlcmds(ESqlStatementType.sstmssqlthrow, TBaseType.rrw_sqlserver_throw," "," "," "," "," "," ");
2432
2433//TRUNCATE TABLE
2434    addmssqlcmds(ESqlStatementType.sstmssqltruncatetable, TBaseType.rrw_truncate,"table"," "," "," "," "," ");
2435//UPDATE
2436    addmssqlcmds(ESqlStatementType.sstupdate, TBaseType.rrw_update," "," "," "," "," "," ");
2437//UPDATE STATISTICS
2438    addmssqlcmds(ESqlStatementType.sstmssqlupdatestatistics, TBaseType.rrw_update,"statistics"," "," "," "," "," ");
2439//UPDATETEXT
2440    addmssqlcmds(ESqlStatementType.sstmssqlupdatetext, TBaseType.rrw_updatetext," "," "," "," "," "," ");
2441//USE
2442    addmssqlcmds(ESqlStatementType.sstmssqluse, TBaseType.rrw_use," "," "," "," "," "," ");
2443//WAITFOR
2444    addmssqlcmds(ESqlStatementType.sstmssqlwaitfor, TBaseType.rrw_waitfor," "," "," "," "," "," ");
2445//WHILE
2446    addmssqlcmds(ESqlStatementType.sstmssqlwhile, TBaseType.rrw_while," "," "," "," "," "," ");
2447//WITH, don't recongize here, let isMssqlSql do it
2448// AddMssqlCmds(ESqlStatementType.sstMssqlCTE,rrw_WITH,' ');
2449//WITH XMLNAMESPACES
2450  //  addmssqlcmds(ESqlStatementType.sstmssqlwithxmlnamespaces, TBaseType.rrw_with,"xmlnamespaces"," "," "," "," "," ");
2451//WRITETEXT
2452    addmssqlcmds(ESqlStatementType.sstmssqlwritetext, TBaseType.rrw_writetext," "," "," "," "," "," ");
2453
2454}
2455
2456void initdb2cmds(){
2457// cmd must be sort alphabetically
2458    adddb2cmds(ESqlStatementType.sstdb2allocatecursor, TBaseType.rrw_allocate,"cursor"," "," "," "," "," ");
2459    adddb2cmds(ESqlStatementType.sstdb2alterbufferpool, TBaseType.rrw_alter,"bufferpool"," "," "," "," "," ");
2460    adddb2cmds(ESqlStatementType.sstdb2alterdatabasepartitiongroup, TBaseType.rrw_alter,"database", "partition", "group"," "," "," ");
2461    adddb2cmds(ESqlStatementType.sstdb2alterfunction, TBaseType.rrw_alter,"function"," "," "," "," "," ");
2462    adddb2cmds(ESqlStatementType.sstdb2altermethod, TBaseType.rrw_alter,"method"," "," "," "," "," ");
2463    adddb2cmds(ESqlStatementType.sstdb2alternickname, TBaseType.rrw_alter,"nickname"," "," "," "," "," ");
2464    adddb2cmds(ESqlStatementType.sstdb2alterprocedure, TBaseType.rrw_alter,"procedure"," "," "," "," "," ");
2465    adddb2cmds(ESqlStatementType.sstdb2altersequence, TBaseType.rrw_alter,"sequence"," "," "," "," "," ");
2466    adddb2cmds(ESqlStatementType.sstdb2alterserver, TBaseType.rrw_alter,"server"," "," "," "," "," ");
2467    adddb2cmds(ESqlStatementType.sstaltertable, TBaseType.rrw_alter,"table"," "," "," "," "," ");
2468    adddb2cmds(ESqlStatementType.sstdb2altertablespace, TBaseType.rrw_alter,"tablespace"," "," "," "," "," ");
2469    adddb2cmds(ESqlStatementType.sstdb2altertype, TBaseType.rrw_alter,"type"," "," "," "," "," ");
2470    adddb2cmds(ESqlStatementType.sstdb2alterusermapping, TBaseType.rrw_alter,"user","mapping"," "," "," "," ");
2471    adddb2cmds(ESqlStatementType.sstdb2alterview, TBaseType.rrw_alter,"view"," "," "," "," "," ");
2472    adddb2cmds(ESqlStatementType.sstdb2alterwrapper, TBaseType.rrw_alter,"wrapper"," "," "," "," "," ");
2473    adddb2cmds(ESqlStatementType.sstdb2associatelocators, TBaseType.rrw_associate,"locators"," "," "," "," "," ");
2474    adddb2cmds(ESqlStatementType.sstdb2begindeclaresection, TBaseType.rrw_begin,"declare", "section"," "," "," "," ");
2475    adddb2cmds(ESqlStatementType.sstdb2call, TBaseType.rrw_call," "," "," "," "," "," ");
2476    adddb2cmds(ESqlStatementType.sstdb2case, TBaseType.rrw_case," "," "," "," "," "," ");
2477    adddb2cmds(ESqlStatementType.sstdb2close, TBaseType.rrw_close," "," "," "," "," "," ");
2478    adddb2cmds(ESqlStatementType.sstdb2comment, TBaseType.rrw_comment," "," "," "," "," "," ");
2479    adddb2cmds(ESqlStatementType.sstdb2commit, TBaseType.rrw_commit," "," "," "," "," "," ");
2480    adddb2cmds(ESqlStatementType.sstdb2connect, TBaseType.rrw_connect," "," "," "," "," "," ");
2481    adddb2cmds(ESqlStatementType.sstdb2createalias, TBaseType.rrw_create,"alias"," "," "," "," "," ");
2482    adddb2cmds(ESqlStatementType.sstcreateauditpolicy, TBaseType.rrw_create,"audit","policy"," "," "," "," ");
2483    adddb2cmds(ESqlStatementType.sstdb2createbufferpool, TBaseType.rrw_create,"bufferpool"," "," "," "," "," ");
2484    adddb2cmds(ESqlStatementType.sstcreatedatabase, TBaseType.rrw_create,"database", " ", " "," "," "," ");
2485    adddb2cmds(ESqlStatementType.sstdb2createdatabasepartitiongroup, TBaseType.rrw_create,"database", "partition", "group"," "," "," ");
2486    adddb2cmds(ESqlStatementType.sstdb2createdistincttype, TBaseType.rrw_create,"distinct", "type"," "," "," "," ");
2487    adddb2cmds(ESqlStatementType.sstdb2createeventmonitor, TBaseType.rrw_create,"eventmonitor"," "," "," "," "," ");
2488    adddb2cmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create,"function"," "," "," "," "," ");
2489    adddb2cmds(ESqlStatementType.sstdb2createfunctionmapping, TBaseType.rrw_create,"function", "mapping"," "," "," "," ");
2490    adddb2cmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"global","temporary","table"," "," "," ");
2491    adddb2cmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"index"," "," "," "," "," ");
2492    adddb2cmds(ESqlStatementType.sstdb2createindexextension, TBaseType.rrw_create,"index", "extension"," "," "," "," ");
2493    adddb2cmds(ESqlStatementType.sstcreateTablespace, TBaseType.rrw_create,"large","tablespace"," "," "," "," ");
2494    adddb2cmds(ESqlStatementType.sstdb2createmethod, TBaseType.rrw_create,"method"," "," "," "," "," ");
2495    adddb2cmds(ESqlStatementType.sstdb2createnickname, TBaseType.rrw_create,"nickname"," "," "," "," "," ");
2496    adddb2cmds(ESqlStatementType.sstdb2createalias, TBaseType.rrw_create,"or","replace","alias"," "," "," ");
2497    adddb2cmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create,"or","replace","function"," "," "," ");
2498    adddb2cmds(ESqlStatementType.sstcreateprocedure, TBaseType.rrw_create,"or","replace","procedure"," "," "," ");
2499    adddb2cmds(ESqlStatementType.sstdb2createalias, TBaseType.rrw_create,"or","replace","public","alias"," "," ");
2500    adddb2cmds(ESqlStatementType.sstdb2createtrigger, TBaseType.rrw_create,"or","replace","trigger"," "," "," ");
2501    adddb2cmds(ESqlStatementType.sstdb2createvariable, TBaseType.rrw_create,"or","replace","variable"," "," "," ");
2502    adddb2cmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,"or","replace","view"," "," "," ");
2503    adddb2cmds(ESqlStatementType.sstcreateprocedure, TBaseType.rrw_create,"procedure"," "," "," "," "," ");
2504    adddb2cmds(ESqlStatementType.sstdb2createalias, TBaseType.rrw_create,"public","alias"," "," "," "," ");
2505    adddb2cmds(ESqlStatementType.sstcreatesynonym, TBaseType.rrw_create,"public","synonym"," "," "," "," ");
2506    adddb2cmds(ESqlStatementType.sstcreaterole, TBaseType.rrw_create,"role"," "," "," "," "," ");
2507    adddb2cmds(ESqlStatementType.sstdb2createschema, TBaseType.rrw_create,"schema"," "," "," "," "," ");
2508    adddb2cmds(ESqlStatementType.sstdb2createsequence, TBaseType.rrw_create,"sequence"," "," "," "," "," ");
2509    adddb2cmds(ESqlStatementType.sstdb2createserver, TBaseType.rrw_create,"server"," "," "," "," "," ");
2510    adddb2cmds(ESqlStatementType.sstdb2createstogroup, TBaseType.rrw_create,"stogroup"," "," "," "," "," ");
2511    adddb2cmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"summary","table"," "," "," "," ");
2512    adddb2cmds(ESqlStatementType.sstcreatesynonym, TBaseType.rrw_create,"synonym"," "," "," "," "," ");
2513    adddb2cmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"table"," "," "," "," "," ");
2514    adddb2cmds(ESqlStatementType.sstcreateTablespace, TBaseType.rrw_create,"tablespace"," "," "," "," "," ");
2515    adddb2cmds(ESqlStatementType.sstdb2createtransform, TBaseType.rrw_create,"transform"," "," "," "," "," ");
2516    adddb2cmds(ESqlStatementType.sstdb2createtrigger, TBaseType.rrw_create,"trigger"," "," "," "," "," ");
2517    adddb2cmds(ESqlStatementType.sstdb2createtype, TBaseType.rrw_create,"type"," "," "," "," "," ");
2518    adddb2cmds(ESqlStatementType.sstdb2createtypemapping, TBaseType.rrw_create,"type", "mapping"," "," "," "," ");
2519    adddb2cmds(ESqlStatementType.sstdb2createusermapping, TBaseType.rrw_create,"user", "mapping"," "," "," "," ");
2520    adddb2cmds(ESqlStatementType.sstdb2createvariable, TBaseType.rrw_create,"variable"," "," "," "," "," ");
2521    adddb2cmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,"view"," "," "," "," "," ");
2522    adddb2cmds(ESqlStatementType.sstdb2createwrapper, TBaseType.rrw_create,"wrapper"," "," "," "," "," ");
2523    adddb2cmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"*","index"," "," "," "," ");
2524    adddb2cmds(ESqlStatementType.sstdb2declareglobaltemporarytable, TBaseType.rrw_declare, "global", "temporary", "table"," "," "," ");
2525    adddb2cmds(ESqlStatementType.sstdb2declarecursor, TBaseType.rrw_declare,"*","cursor"," "," "," "," ");
2526    adddb2cmds(ESqlStatementType.sstdelete, TBaseType.rrw_delete," "," "," "," "," "," ");
2527    adddb2cmds(ESqlStatementType.sstdb2describe, TBaseType.rrw_describe," "," "," "," "," "," ");
2528    adddb2cmds(ESqlStatementType.sstdb2disconnect, TBaseType.rrw_disconnect," "," "," "," "," "," ");
2529    adddb2cmds(ESqlStatementType.sstdb2drop, TBaseType.rrw_drop," "," "," "," "," "," ");
2530    adddb2cmds(ESqlStatementType.sstdropindex, TBaseType.rrw_drop,"index"," "," "," "," "," ");
2531    adddb2cmds(ESqlStatementType.sstdroptable, TBaseType.rrw_drop,"table"," "," "," "," "," ");
2532    adddb2cmds(ESqlStatementType.sstdropview, TBaseType.rrw_drop,"view"," "," "," "," "," ");
2533    adddb2cmds(ESqlStatementType.sstdb2enddeclaresection, TBaseType.rrw_end,"declare","section"," "," "," "," ");
2534    adddb2cmds(ESqlStatementType.sstdb2execute, TBaseType.rrw_execute," "," "," "," "," "," ");
2535    adddb2cmds(ESqlStatementType.sstdb2executeimmediate, TBaseType.rrw_execute,"immediate"," "," "," "," "," ");
2536    adddb2cmds(ESqlStatementType.sstdb2explain, TBaseType.rrw_explain," "," "," "," "," "," ");
2537    adddb2cmds(ESqlStatementType.sstdb2fetch, TBaseType.rrw_fetch," "," "," "," "," "," ");
2538    adddb2cmds(ESqlStatementType.sstdb2flusheventmonitor, TBaseType.rrw_flush, "event", "monitor"," "," "," "," ");
2539    adddb2cmds(ESqlStatementType.sstdb2flushpackagecache, TBaseType.rrw_flush,"package", "cache"," "," "," "," ");
2540    adddb2cmds(ESqlStatementType.sstdb2for, TBaseType.rrw_for," "," "," "," "," "," ");
2541    adddb2cmds(ESqlStatementType.sstdb2freelocator, TBaseType.rrw_free,"locator"," "," "," "," "," ");
2542    adddb2cmds(ESqlStatementType.sstgetdiagnostics, TBaseType.rrw_get,"diagnostics"," "," "," "," "," ");
2543    adddb2cmds(ESqlStatementType.sstdb2goto, TBaseType.rrw_goto," "," "," "," "," "," ");
2544    adddb2cmds(ESqlStatementType.sstdb2grant, TBaseType.rrw_grant," "," "," "," "," "," ");
2545    adddb2cmds(ESqlStatementType.sstdb2if, TBaseType.rrw_if," "," "," "," "," "," ");
2546    adddb2cmds(ESqlStatementType.sstdb2include, TBaseType.rrw_include," "," "," "," "," "," ");
2547    adddb2cmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert," "," "," "," "," "," ");
2548    adddb2cmds(ESqlStatementType.sstdb2iterate, TBaseType.rrw_iterate," "," "," "," "," "," ");
2549    adddb2cmds(ESqlStatementType.sstdb2labelOn, TBaseType.rrw_db2_label,"on"," "," "," "," "," ");
2550    adddb2cmds(ESqlStatementType.sstdb2leave, TBaseType.rrw_leave," "," "," "," "," "," ");
2551    adddb2cmds(ESqlStatementType.sstdb2locktable, TBaseType.rrw_lock,"table"," "," "," "," "," ");
2552    adddb2cmds(ESqlStatementType.sstdb2loop, TBaseType.rrw_loop," "," "," "," "," "," ");
2553    adddb2cmds(ESqlStatementType.sstmerge, TBaseType.rrw_merge," "," "," "," "," "," ");
2554    adddb2cmds(ESqlStatementType.sstdb2open, TBaseType.rrw_open," "," "," "," "," "," ");
2555    adddb2cmds(ESqlStatementType.sstdb2prepare, TBaseType.rrw_prepare," "," "," "," "," "," ");
2556    adddb2cmds(ESqlStatementType.sstdb2refreshtable, TBaseType.rrw_refresh,"table"," "," "," "," "," ");
2557    adddb2cmds(ESqlStatementType.sstdb2release, TBaseType.rrw_release," "," "," "," "," "," ");
2558    adddb2cmds(ESqlStatementType.sstdb2releasesavepoint, TBaseType.rrw_release,"savepoint"," "," "," "," "," ");
2559    adddb2cmds(ESqlStatementType.sstdb2rename, TBaseType.rrw_rename," "," "," "," "," "," ");
2560    adddb2cmds(ESqlStatementType.sstdb2renametablespace, TBaseType.rrw_rename,"tablespace"," "," "," "," "," ");
2561    adddb2cmds(ESqlStatementType.sstdb2repeat, TBaseType.rrw_repeat," "," "," "," "," "," ");
2562    adddb2cmds(ESqlStatementType.sstdb2resignal, TBaseType.rrw_resignal," "," "," "," "," "," ");
2563    adddb2cmds(ESqlStatementType.sstdb2return, TBaseType.rrw_return," "," "," "," "," "," ");
2564    adddb2cmds(ESqlStatementType.sstdb2revoke, TBaseType.rrw_revoke," "," "," "," "," "," ");
2565    adddb2cmds(ESqlStatementType.sstdb2rollback, TBaseType.rrw_rollback," "," "," "," "," "," ");
2566    adddb2cmds(ESqlStatementType.sstRunStats, TBaseType.rrw_db2_runstats," "," "," "," "," "," ");
2567    adddb2cmds(ESqlStatementType.sstdb2savepoint, TBaseType.rrw_savepoint," "," "," "," "," "," ");
2568    adddb2cmds(ESqlStatementType.sstselect, TBaseType.rrw_select," "," "," "," "," "," ");
2569    adddb2cmds(ESqlStatementType.sstdb2setconnection, TBaseType.rrw_set,"connection"," "," "," "," "," ");
2570    adddb2cmds(ESqlStatementType.sstdb2set, TBaseType.rrw_set," "," "," "," "," "," ");
2571    adddb2cmds(ESqlStatementType.sstdb2setconnection, TBaseType.rrw_set,"connection"," "," "," "," "," ");
2572    adddb2cmds(ESqlStatementType.sstdb2setcurrentdefaulttransformgroup, TBaseType.rrw_set,"current default transform group"," "," "," "," "," ");
2573    adddb2cmds(ESqlStatementType.sstdb2setcurrentdegree, TBaseType.rrw_set,"current", "degree"," "," "," "," ");
2574    adddb2cmds(ESqlStatementType.sstdb2setcurrentexplainmode, TBaseType.rrw_set,"current", "explain", "mode"," "," "," ");
2575    adddb2cmds(ESqlStatementType.sstdb2setcurrentexplainsnapshot, TBaseType.rrw_set,"current", "explain", "snapshot"," "," "," ");
2576    adddb2cmds(ESqlStatementType.sstdb2setcurrentisolation, TBaseType.rrw_set,"current", "isolation"," "," "," "," ");
2577    adddb2cmds(ESqlStatementType.sstdb2setcurrentlocktimeout, TBaseType.rrw_set,"current", "lock", "timeout"," "," "," ");
2578    adddb2cmds(ESqlStatementType.sstdb2setcurrentmaintainedtabletypesforoptimization, TBaseType.rrw_set,"current", "maintained", "table", "types"," "," ");
2579    adddb2cmds(ESqlStatementType.sstdb2setcurrentpackagepath, TBaseType.rrw_set,"current", "package", "path"," "," "," ");
2580    adddb2cmds(ESqlStatementType.sstdb2setcurrentpackageset, TBaseType.rrw_set,"current", "packageset"," "," "," "," ");
2581    adddb2cmds(ESqlStatementType.sstdb2setcurrentqueryoptimization, TBaseType.rrw_set,"current", "query", "optimization"," "," "," ");
2582    adddb2cmds(ESqlStatementType.sstdb2setcurrentrefreshage, TBaseType.rrw_set,"current", "refresh", "age"," "," "," ");
2583    adddb2cmds(ESqlStatementType.sstdb2setschema, TBaseType.rrw_set,"current","schema"," "," "," "," ");
2584    adddb2cmds(ESqlStatementType.sstdb2setencryptionpassword, TBaseType.rrw_set,"encryption", "password"," "," "," "," ");
2585    adddb2cmds(ESqlStatementType.sstdb2seteventmonitorstate, TBaseType.rrw_set,"event", "monitor", "state"," "," "," ");
2586    adddb2cmds(ESqlStatementType.sstdb2setintegrity, TBaseType.rrw_set,"integrity"," "," "," "," "," ");
2587    adddb2cmds(ESqlStatementType.sstdb2setpassthru, TBaseType.rrw_set,"passthru"," "," "," "," "," ");
2588    adddb2cmds(ESqlStatementType.sstdb2setpath, TBaseType.rrw_set,"path"," "," "," "," "," ");
2589    adddb2cmds(ESqlStatementType.sstdb2setschema, TBaseType.rrw_set,"schema"," "," "," "," "," ");
2590    adddb2cmds(ESqlStatementType.sstdb2setserveroption, TBaseType.rrw_set,"server", "option"," "," "," "," ");
2591    adddb2cmds(ESqlStatementType.sstdb2setsessionauthorization, TBaseType.rrw_set,"session", "authorization"," "," "," "," ");
2592    adddb2cmds(ESqlStatementType.sstdb2signal, TBaseType.rrw_signal," "," "," "," "," "," ");
2593    adddb2cmds(ESqlStatementType.sstdb2terminate, TBaseType.rrw_terminate," "," "," "," "," "," ");
2594//TRUNCATE TABLE
2595    adddb2cmds(ESqlStatementType.ssttruncatetable, TBaseType.rrw_truncate," "," "," "," "," "," ");
2596
2597    adddb2cmds(ESqlStatementType.sstupdate, TBaseType.rrw_update," "," "," "," "," "," ");
2598    adddb2cmds(ESqlStatementType.sstdb2updateCommand, TBaseType.rrw_update,"command"," "," "," "," "," ");
2599// AddDB2Cmds(sstDB2VALUES,rrw_VALUES);
2600// AddDB2Cmds(sstDB2WHENEVER,rrw_WHENEVER);
2601    adddb2cmds(ESqlStatementType.sstdb2while, TBaseType.rrw_while," "," "," "," "," "," ");
2602
2603}
2604
2605void initnetezzacmds(){
2606    addnetezzacmds(ESqlStatementType.sstAlterSchema, TBaseType.rrw_alter, "schema", " ", " ", " ", " ", " ");
2607    addnetezzacmds(ESqlStatementType.sstnetezzaAlterDatabase, TBaseType.rrw_alter, "database", " ", " ", " ", " ", " ");
2608    addnetezzacmds(ESqlStatementType.sstnetezzaAlterGroup, TBaseType.rrw_alter, "group", " ", " ", " ", " ", " ");
2609    addnetezzacmds(ESqlStatementType.sstnetezzaAlterHistoryConfiguration, TBaseType.rrw_alter, "history", " ", " ", " ", " ", " ");
2610    addnetezzacmds(ESqlStatementType.sstnetezzaAlterSequence, TBaseType.rrw_alter, "sequence", " ", " ", " ", " ", " ");
2611    addnetezzacmds(ESqlStatementType.sstaltersession, TBaseType.rrw_alter, "session", " ", " ", " ", " ", " ");
2612    addnetezzacmds(ESqlStatementType.sstAlterSynonym, TBaseType.rrw_alter, "synonym", " ", " ", " ", " ", " ");
2613    addnetezzacmds(ESqlStatementType.sstnetezzaAlterTable, TBaseType.rrw_alter, "table", " ", " ", " ", " ", " ");
2614    addnetezzacmds(ESqlStatementType.sstnetezzaAlterUser, TBaseType.rrw_alter, "user", " ", " ", " ", " ", " ");
2615    addnetezzacmds(ESqlStatementType.sstnetezzaAlterView, TBaseType.rrw_alter, "view", " ", " ", " ", " ", " ");
2616    addnetezzacmds(ESqlStatementType.sstnetezzaAlterView, TBaseType.rrw_alter, "views", " ", " ", " ", " ", " ");
2617    addnetezzacmds(ESqlStatementType.sstnetezzaBegin, TBaseType.rrw_begin, " ", " ", " ", " ", " ", " ");
2618    addnetezzacmds(ESqlStatementType.sstcall, TBaseType.rrw_call, " ", " ", " ", " ", " ", " ");
2619    addnetezzacmds(ESqlStatementType.sstnetezzaComment, TBaseType.rrw_comment, " ", " ", " ", " ", " ", " ");
2620    addnetezzacmds(ESqlStatementType.sstnetezzaCommit, TBaseType.rrw_commit, " ", " ", " ", " ", " ", " ");
2621    addnetezzacmds(ESqlStatementType.sstnetezzaCopy, TBaseType.rrw_netezza_copy, " ", " ", " ", " ", " ", " ");
2622    addnetezzacmds(ESqlStatementType.sstcreatedatabase, TBaseType.rrw_create, "database", " ", " ", " ", " ", " ");
2623    addnetezzacmds(ESqlStatementType.sstnetezzaCreateExternalTable, TBaseType.rrw_create, "external", "table", " ", " ", " ", " ");
2624    addnetezzacmds(ESqlStatementType.sstnetezzaCreateGruop, TBaseType.rrw_create, "group", " ", " ", " ", " ", " ");
2625    addnetezzacmds(ESqlStatementType.sstnetezzaCreateHistoryConfiguration, TBaseType.rrw_create, "history", "configuration", " ", " ", " ", " ");
2626    addnetezzacmds(ESqlStatementType.sstcreatematerializedview, TBaseType.rrw_create, "materialized", "view", " ", " ", " ", " ");
2627    addnetezzacmds(ESqlStatementType.sstcreatematerializedview, TBaseType.rrw_create, "or", "replace", "materialized", "view", " ", " ");
2628    addnetezzacmds(ESqlStatementType.sstcreateprocedure, TBaseType.rrw_create, "or", "replace", "procedure", " ", " ", " ");
2629    addnetezzacmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create, "or", "replace", "view", " ", " ", " ");
2630    addnetezzacmds(ESqlStatementType.sstcreateprocedure, TBaseType.rrw_create, "procedure", " ", " ", " ", " ", " ");
2631    addnetezzacmds(ESqlStatementType.sstcreatesequence, TBaseType.rrw_create, "sequence", " ", " ", " ", " ", " ");
2632    addnetezzacmds(ESqlStatementType.sstcreatesynonym, TBaseType.rrw_create, "synonym", " ", " ", " ", " ", " ");
2633    addnetezzacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "table", " ", " ", " ", " ", " ");
2634    addnetezzacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "temp", "table", " ", " ", " ", " ");
2635    addnetezzacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "temporary", "table", " ", " ", " ", " ");
2636    addnetezzacmds(ESqlStatementType.sstnetezzaCreateUser, TBaseType.rrw_create, "user", " ", " ", " ", " ", " ");
2637    addnetezzacmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create, "view", " ", " ", " ", " ", " ");
2638//    addnetezzacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "volatile", "table", " ", " ", " ", " ");
2639    addnetezzacmds(ESqlStatementType.sstdelete, TBaseType.rrw_delete , " ", " ", " ", " ", " ", " ");
2640    addnetezzacmds(ESqlStatementType.sstnetezzaDropConnection, TBaseType.rrw_drop, "connection", " ", " ", " ", " ", " ");
2641    addnetezzacmds(ESqlStatementType.sstdropdatabase, TBaseType.rrw_drop, "database", " ", " ", " ", " ", " ");
2642    addnetezzacmds(ESqlStatementType.sstnetezzaDropGroup, TBaseType.rrw_drop, "group", " ", " ", " ", " ", " ");
2643    addnetezzacmds(ESqlStatementType.sstnetezzaDropHistoryConfiguration, TBaseType.rrw_drop, "history", "configuration", " ", " ", " ", " ");
2644    addnetezzacmds(ESqlStatementType.sstdropprocedure, TBaseType.rrw_drop, "procedure", " ", " ", " ", " ", " ");
2645    addnetezzacmds(ESqlStatementType.sstnetezzaDropSchema, TBaseType.rrw_drop, "schema", " ", " ", " ", " ", " ");
2646    addnetezzacmds(ESqlStatementType.sstnetezzaDropSequence, TBaseType.rrw_drop, "sequence", " ", " ", " ", " ", " ");
2647    addnetezzacmds(ESqlStatementType.sstnetezzaDropSession, TBaseType.rrw_drop, "session", " ", " ", " ", " ", " ");
2648    addnetezzacmds(ESqlStatementType.sstdropsynonym, TBaseType.rrw_drop, "synonym", " ", " ", " ", " ", " ");
2649    addnetezzacmds(ESqlStatementType.sstnetezzaDropTable, TBaseType.rrw_drop, "table", " ", " ", " ", " ", " ");
2650    addnetezzacmds(ESqlStatementType.sstnetezzaDropUser, TBaseType.rrw_drop, "user", " ", " ", " ", " ", " ");
2651    addnetezzacmds(ESqlStatementType.sstnetezzaDropView, TBaseType.rrw_drop, "view", " ", " ", " ", " ", " ");
2652    addnetezzacmds(ESqlStatementType.sstexecutestmt, TBaseType.rrw_exec, " ", " ", " ", " ", " ", " ");
2653    addnetezzacmds(ESqlStatementType.sstexecutestmt, TBaseType.rrw_execute, " ", " ", " ", " ", " ", " ");
2654    addnetezzacmds(ESqlStatementType.sstExplain, TBaseType.rrw_explain, " ", " ", " ", " ", " ", " ");
2655    addnetezzacmds(ESqlStatementType.sstnetezzaGenerateStatistics, TBaseType.rrw_netezza_generate, "express", "statistics", " ", " ", " ", " ");
2656    addnetezzacmds(ESqlStatementType.sstnetezzaGenerateStatistics, TBaseType.rrw_netezza_generate, "statistics", " ", " ", " ", " ", " ");
2657    addnetezzacmds(ESqlStatementType.sstnetezzaGrant, TBaseType.rrw_grant, " ", " ", " ", " ", " ", " ");
2658    addnetezzacmds(ESqlStatementType.sstnetezzaGroomTable, TBaseType.rrw_netezza_groom, "table", " ", " ", " ", " ", " ");
2659    addnetezzacmds(ESqlStatementType.sstlocktable, TBaseType.rrw_lock, "table", " ", " ", " ", " ", " ");
2660    addnetezzacmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert, " ", " ", " ", " ", " ", " ");
2661    addnetezzacmds(ESqlStatementType.sstmerge, TBaseType.rrw_merge, " ", " ", " ", " ", " ", " ");
2662    addnetezzacmds(ESqlStatementType.sstnetezzaReset, TBaseType.rrw_reset, " ", " ", " ", " ", " ", " ");
2663    addnetezzacmds(ESqlStatementType.sstnetezzaRevoke, TBaseType.rrw_revoke, " ", " ", " ", " ", " ", " ");
2664    addnetezzacmds(ESqlStatementType.sstnetezzaRollback, TBaseType.rrw_rollback, " ", " ", " ", " ", " ", " ");
2665    addnetezzacmds(ESqlStatementType.sstselect, TBaseType.rrw_select, " ", " ", " ", " ", " ", " ");
2666    addnetezzacmds(ESqlStatementType.sstnetezzaSet, TBaseType.rrw_set, " ", " ", " ", " ", " ", " ");
2667    addnetezzacmds(ESqlStatementType.sstSetCatalog, TBaseType.rrw_set, "catalog", " ", " ", " ", " ", " ");
2668    addnetezzacmds(ESqlStatementType.sstSetSchema, TBaseType.rrw_set, "schema", " ", " ", " ", " ", " ");
2669    addnetezzacmds(ESqlStatementType.sstnetezzaShow, TBaseType.rrw_show, " ", " ", " ", " ", " ", " ");
2670    addnetezzacmds(ESqlStatementType.sstTruncate, TBaseType.rrw_truncate, " ", " ", " ", " ", " ", " ");
2671    addnetezzacmds(ESqlStatementType.sstupdate, TBaseType.rrw_update, " ", " ", " ", " ", " ", " ");
2672}
2673    void initgaussdbcmds(){
2674// cmd must be sorted alphabetically
2675        addgaussdbcmds(ESqlStatementType.sstpostgresqlabort, TBaseType.rrw_abort, " ", " ", " ", " ", " ", " ");
2676        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterAggregate, TBaseType.rrw_alter, "aggregate", " ", " ", " ", " ", " ");
2677        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterCollation, TBaseType.rrw_alter, "collation", " ", " ", " ", " ", " ");
2678        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterConversion, TBaseType.rrw_alter, "conversion", " ", " ", " ", " ", " ");
2679        addgaussdbcmds(ESqlStatementType.sstpostgresqlalterdatabase, TBaseType.rrw_alter, "database", " ", " ", " ", " ", " ");
2680        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterDefaultPrivileges, TBaseType.rrw_alter, "default", "privileges", " ", " ", " ", " ");
2681        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterDomain, TBaseType.rrw_alter, "domain", " ", " ", " ", " ", " ");
2682        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterEventTrigger, TBaseType.rrw_alter, "event", "trigger", " ", " ", " ", " ");
2683        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterExtension, TBaseType.rrw_alter, "extension", " ", " ", " ", " ", " ");
2684        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterForeignDataWrapper, TBaseType.rrw_alter, "foreign", "data", "wrapper", " ", " ", " ");
2685        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterForeignTable, TBaseType.rrw_alter, "foreign", "Table", " ", " ", " ", " ");
2686
2687        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterfunction, TBaseType.rrw_alter, "function", " ", " ", " ", " ", " ");
2688        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterGroup, TBaseType.rrw_alter, "group", " ", " ", " ", " ", " ");
2689        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterIndex, TBaseType.rrw_alter, "index", " ", " ", " ", " ", " ");
2690        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterLanguage, TBaseType.rrw_alter, "language", " ", " ", " ", " ", " ");
2691        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterLargeObject, TBaseType.rrw_alter, "large", "object", " ", " ", " ", " ");
2692        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterMaterializedView, TBaseType.rrw_alter, "materialized", "view", " ", " ", " ", " ");
2693        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterOperator, TBaseType.rrw_alter, "operator", " ", " ", " ", " ", " ");
2694        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterOperatorClass, TBaseType.rrw_alter, "operator", "class", " ", " ", " ", " ");
2695        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterOperatorFamily, TBaseType.rrw_alter, "operator", "family", " ", " ", " ", " ");
2696        addgaussdbcmds(ESqlStatementType.sstAlterPackage, TBaseType.rrw_alter, "package", " ", " ", " ", " ", " ");
2697        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterPolicy, TBaseType.rrw_alter, "policy", " ", " ", " ", " ", " ");
2698        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterLanguage, TBaseType.rrw_alter, "procedural", "language", " ", " ", " ", " ");
2699        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterProcedure, TBaseType.rrw_alter, "procedure", " ", " ", " ", " ", " ");
2700        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterPublication, TBaseType.rrw_alter, "publication", " ", " ", " ", " ", " ");
2701        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterRole, TBaseType.rrw_alter, "role", " ", " ", " ", " ", " ");
2702        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterRoutine, TBaseType.rrw_alter, "routine", " ", " ", " ", " ", " ");
2703        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterRule, TBaseType.rrw_alter, "rule", " ", " ", " ", " ", " ");
2704        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterSchema, TBaseType.rrw_alter, "schema", " ", " ", " ", " ", " ");
2705        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterSequence, TBaseType.rrw_alter, "sequence", " ", " ", " ", " ", " ");
2706        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterServer, TBaseType.rrw_alter, "server", " ", " ", " ", " ", " ");
2707        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterStatistics, TBaseType.rrw_alter, "statistics", " ", " ", " ", " ", " ");
2708        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterSubscription, TBaseType.rrw_alter, "subscription", " ", " ", " ", " ", " ");
2709        addgaussdbcmds(ESqlStatementType.sstAlterSynonym, TBaseType.rrw_alter, "synonym", " ", " ", " ", " ", " ");
2710        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterSystem, TBaseType.rrw_alter, "system", " ", " ", " ", " ", " ");
2711
2712        addgaussdbcmds(ESqlStatementType.sstaltertable, TBaseType.rrw_alter, "table", " ", " ", " ", " ", " ");
2713        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterTablespace, TBaseType.rrw_alter, "tablespace", " ", " ", " ", " ", " ");
2714
2715        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterTextSearchConfiguration, TBaseType.rrw_alter, "text", "search", "configuration", " ", " ", " ");
2716        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterTextSearchDictionary, TBaseType.rrw_alter, "text", "search", "dictionary", " ", " ", " ");
2717        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterTextSearchParser, TBaseType.rrw_alter, "text", "search", "parser", " ", " ", " ");
2718        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterTextSearchTemplate, TBaseType.rrw_alter, "text", "search", "template", " ", " ", " ");
2719        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterTrigger, TBaseType.rrw_alter, "trigger", " ", " ", " ", " ", " ");
2720        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterType, TBaseType.rrw_alter, "type", " ", " ", " ", " ", " ");
2721        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterUser, TBaseType.rrw_alter, "user", " ", " ", " ", " ", " ");
2722        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterUserMapping, TBaseType.rrw_alter, "user", "mapping", " ", " ", " ", " ");
2723        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterView, TBaseType.rrw_alter, "view", " ", " ", " ", " ", " ");
2724        addgaussdbcmds(ESqlStatementType.sstpostgresqlAnalyze, TBaseType.rrw_analyze, " ", " ", " ", " ", " ", " ");
2725
2726        // begin is recognized in isgaussdb() method.
2727      //  addgaussdbcmds(ESqlStatementType.sstpostgresqlBegin, TBaseType.rrw_begin, " ", " ", " ", " ", " ", " ");
2728
2729        addgaussdbcmds(ESqlStatementType.sstcall, TBaseType.rrw_call, " ", " ", " ", " ", " ", " ");
2730
2731        addgaussdbcmds(ESqlStatementType.sstpostgresqlCheckpoint, TBaseType.rrw_checkpoint, " ", " ", " ", " ", " ", " ");
2732        addgaussdbcmds(ESqlStatementType.sstpostgresqlClose, TBaseType.rrw_close, " ", " ", " ", " ", " ", " ");
2733
2734        addgaussdbcmds(ESqlStatementType.sstpostgresqlCluster, TBaseType.rrw_postgresql_cluster, " ", " ", " ", " ", " ", " ");
2735
2736        addgaussdbcmds(ESqlStatementType.sstpostgresqlComment, TBaseType.rrw_comment, " ", " ", " ", " ", " ", " ");
2737
2738        addgaussdbcmds(ESqlStatementType.sstpostgresqlCommit, TBaseType.rrw_commit, " ", " ", " ", " ", " ", " ");
2739        addgaussdbcmds(ESqlStatementType.sstpostgresqlCommitPrepared, TBaseType.rrw_commit, "prepared", " ", " ", " ", " ", " ");
2740        addgaussdbcmds(ESqlStatementType.sstpostgresqlCopy, TBaseType.rrw_postgresql_copy, " ", " ", " ", " ", " ", " ");
2741
2742        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateAccessMethod, TBaseType.rrw_create, "access", "method", " ", " ", " ", " ");
2743        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateAggregate, TBaseType.rrw_create, "aggregate", " ", " ", " ", " ", " ");
2744        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateAssertion, TBaseType.rrw_create, "assertion", " ", " ", " ", " ", " ");
2745        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateCast, TBaseType.rrw_create, "cast", " ", " ", " ", " ", " ");
2746        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateCollation, TBaseType.rrw_create, "collation", " ", " ", " ", " ", " ");
2747
2748        addgaussdbcmds(ESqlStatementType.sstcreatetrigger, TBaseType.rrw_create, "constraint", "trigger", " ", " ", " ", " ");
2749
2750        addgaussdbcmds(ESqlStatementType.sstpostgresqlConversion, TBaseType.rrw_create, "conversion", " ", " ", " ", " ", " ");
2751        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateDatabase, TBaseType.rrw_create, "database", " ", " ", " ", " ", " ");
2752        addgaussdbcmds(ESqlStatementType.sstpostgresqlConversion, TBaseType.rrw_create, "default", "conversion", " ", " ", " ", " ");
2753        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateDomain, TBaseType.rrw_create, "domain", " ", " ", " ", " ", " ");
2754        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateEventTrigger, TBaseType.rrw_create, "event", "trigger", " ", " ", " ", " ");
2755        addgaussdbcmds(ESqlStatementType.sstcreateExtension, TBaseType.rrw_create, "extension", " ", " ", " ", " ", " ");
2756
2757        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateForeignDataWrapper, TBaseType.rrw_create, "foreign", "data", "wrapper", " ", " ", " ");
2758        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateForeignTable, TBaseType.rrw_create, "foreign", "table", " ", " ", " ", " ");
2759        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateFunction, TBaseType.rrw_create, "function", " ", " ", " ", " ", " ");
2760
2761        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateIndex, TBaseType.rrw_create, "global", "index", " ", " ", " ", " ");
2762
2763        addgaussdbcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "global", "temp", "table", " ", " ", " ");
2764        addgaussdbcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "global", "temporary", "table", " ", " ", " ");
2765        addgaussdbcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "global", "unlocked", "table", " ", " ", " ");
2766        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateIndex, TBaseType.rrw_create, "global", "unique", "index", " ", " ", " ");
2767
2768        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateGroup, TBaseType.rrw_create, "group", " ", " ", " ", " ", " ");
2769
2770        addgaussdbcmds(ESqlStatementType.sstcreatematerializedview, TBaseType.rrw_create, "incremental", "materialized", "view", " ", " ", " ");
2771
2772        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateIndex, TBaseType.rrw_create, "index", " ", " ", " ", " ", " ");
2773        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateLanguage, TBaseType.rrw_create, "language", " ", " ", " ", " ", " ");
2774
2775        addgaussdbcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "local", "temp", "table", " ", " ", " ");
2776        addgaussdbcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "local", "temporary", "table", " ", " ", " ");
2777        addgaussdbcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "local", "unlocked", "table", " ", " ", " ");
2778
2779        addgaussdbcmds(ESqlStatementType.sstcreatematerializedview, TBaseType.rrw_create, "materialized", "view", " ", " ", " ", " ");
2780
2781        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateOperator, TBaseType.rrw_create, "operator", " ", " ", " ", " ", " ");
2782        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateOperatorClass, TBaseType.rrw_create, "operator", "class", " ", " ", " ", " ");
2783        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateOperatorFimaly, TBaseType.rrw_create, "operator", "family", " ", " ", " ", " ");
2784
2785        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateFunction, TBaseType.rrw_create, "or", "replace", "function", " ", " ", " ");
2786        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateLanguage, TBaseType.rrw_create, "or", "replace", "language", " ", " ", " ");
2787
2788        addgaussdbcmds(ESqlStatementType.sstplsql_createpackage, TBaseType.rrw_create,"or","replace","package"," "," "," ");
2789        addgaussdbcmds(ESqlStatementType.sstoraclecreatepackagebody, TBaseType.rrw_create,"or","replace","package","body"," "," ");
2790
2791
2792        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateLanguage, TBaseType.rrw_create, "or", "replace", "procedural", "language", " ", " ");
2793        addgaussdbcmds(ESqlStatementType.sstcreateprocedure, TBaseType.rrw_create, "or", "replace", "procedure", " ", " ", " ");
2794        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateRole, TBaseType.rrw_create, "or", "replace", "role ", " ", " ", " ");
2795        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateRule, TBaseType.rrw_create, "or", "replace", "rule ", " ", " ", " ");
2796        addgaussdbcmds(ESqlStatementType.sstcreatesynonym, TBaseType.rrw_create,"or","replace","synonym"," "," "," ");
2797
2798        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateView, TBaseType.rrw_create, "or", "replace", "temp", "view", " ", " ");
2799        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateView, TBaseType.rrw_create, "or", "replace", "temporary", "view", " ", " ");
2800        addgaussdbcmds(ESqlStatementType.sstcreatetrigger, TBaseType.rrw_create, "or", "replace", "trigger", " ", " ", " ");
2801        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateLanguage, TBaseType.rrw_create, "or", "replace", "trusted", "language", " ", " ");
2802        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateLanguage, TBaseType.rrw_create, "or", "replace", "trusted", "procedural", "language", " ");
2803        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateView, TBaseType.rrw_create, "or", "replace", "view", " ", " ", " ");
2804
2805        addgaussdbcmds(ESqlStatementType.sstplsql_createpackage, TBaseType.rrw_create,"package"," "," "," "," "," ");
2806        addgaussdbcmds(ESqlStatementType.sstoraclecreatepackagebody, TBaseType.rrw_create,"package","body"," "," "," "," ");
2807
2808        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreatePolicy, TBaseType.rrw_create, "policy", " ", " ", " ", " ", " ");
2809        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateLanguage, TBaseType.rrw_create, "procedural", "language", " ", " ", " ", " ");
2810        addgaussdbcmds(ESqlStatementType.sstcreateprocedure, TBaseType.rrw_create, "procedure", " ", " ", " ", " ", " ");
2811        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreatePublication, TBaseType.rrw_create, "publication", " ", " ", " ", " ", " ");
2812
2813        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateRole, TBaseType.rrw_create, "role", " ", " ", " ", " ", " ");
2814        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateRule, TBaseType.rrw_create, "rule", " ", " ", " ", " ", " ");
2815
2816
2817        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateSchema, TBaseType.rrw_create, "schema", " ", " ", " ", " ", " ");
2818
2819        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateSequence, TBaseType.rrw_create, "sequence", " ", " ", " ", " ", " ");
2820
2821
2822        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateServer, TBaseType.rrw_create, "server", " ", " ", " ", " ", " ");
2823        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateStatistics, TBaseType.rrw_create, "statistics", " ", " ", " ", " ", " ");
2824        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateSubscription, TBaseType.rrw_create, "subscription", " ", " ", " ", " ", " ");
2825        addgaussdbcmds(ESqlStatementType.sstcreatesynonym, TBaseType.rrw_create,"synonym"," "," "," "," "," ");
2826
2827        addgaussdbcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "table", " ", " ", " ", " ", " ");
2828
2829        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateTablespace, TBaseType.rrw_create, "tablespace", " ", " ", " ", " ", " ");
2830
2831        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateSequence, TBaseType.rrw_create, "temp", "sequence", " ", " ", " ", " ");
2832        addgaussdbcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "temp", "table", " ", " ", " ", " ");
2833        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateView, TBaseType.rrw_create, "temp", "view", " ", " ", " ", " ");
2834        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateSequence, TBaseType.rrw_create, "temporary", "sequence", " ", " ", " ", " ");
2835        addgaussdbcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "temporary", "table", " ", " ", " ", " ");
2836        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateView, TBaseType.rrw_create, "temporary", "view", " ", " ", " ", " ");
2837
2838        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateTextSearchConfiguration, TBaseType.rrw_create, "text", "search", "configuration", " ", " ", " ");
2839        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateTextSearchDictionary, TBaseType.rrw_create, "text", "search", "dictionary", " ", " ", " ");
2840        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateTextSearchParser, TBaseType.rrw_create, "text", "search", "parser", " ", " ", " ");
2841        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateTextSearchTemplate, TBaseType.rrw_create, "text", "search", "template", " ", " ", " ");
2842
2843        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateTransform, TBaseType.rrw_create, "transform", " ", " ", " ", " ", " ");
2844        addgaussdbcmds(ESqlStatementType.sstcreatetrigger, TBaseType.rrw_create, "trigger", " ", " ", " ", " ", " ");
2845
2846        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateLanguage, TBaseType.rrw_create, "trusted", "language", " ", " ", " ", " ");
2847        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateLanguage, TBaseType.rrw_create, "trusted", "procedural", "language", " ", " ", " ");
2848
2849        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateType, TBaseType.rrw_create, "type", " ", " ", " ", " ", " ");
2850
2851        addgaussdbcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "unlocked", "table", " ", " ", " ", " ");
2852        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateSequence, TBaseType.rrw_create, "unlogged", "sequence", " ", " ", " ", " ");
2853        addgaussdbcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "unlogged", "table", " ", " ", " ", " ");
2854
2855        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateUser, TBaseType.rrw_create, "user", " ", " ", " ", " ", " ");
2856
2857        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateUserMapping, TBaseType.rrw_create, "user", "mapping", " ", " ", " ", " ");
2858
2859        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateView, TBaseType.rrw_create, "view", " ", " ", " ", " ", " ");
2860
2861        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateIndex, TBaseType.rrw_create, "unique", "index", " ", " ", " ", " ");
2862
2863
2864        addgaussdbcmds(ESqlStatementType.sstpostgresqlDeallocate, TBaseType.rrw_deallocate, " ", " ", " ", " ", " ", " ");
2865
2866        addgaussdbcmds(ESqlStatementType.sstpostgresqlDeclare, TBaseType.rrw_declare, " ", " ", " ", " ", " ", " ");
2867
2868        addgaussdbcmds(ESqlStatementType.sstdelete, TBaseType.rrw_delete, " ", " ", " ", " ", " ", " ");
2869
2870        addgaussdbcmds(ESqlStatementType.sstpostgresqlDiscard, TBaseType.rrw_postgresql_discard, " ", " ", " ", " ", " ", " ");
2871
2872        addgaussdbcmds(ESqlStatementType.sstpostgresqlDo, TBaseType.rrw_do, " ", " ", " ", " ", " ", " ");
2873
2874        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropAccessMethod, TBaseType.rrw_drop, "access", "method", " ", " ", " ", " ");
2875        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropAggregate, TBaseType.rrw_drop, "aggregate", " ", " ", " ", " ", " ");
2876        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropAssertion, TBaseType.rrw_drop, "assertion", " ", " ", " ", " ", " ");
2877
2878        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropCast, TBaseType.rrw_drop, "cast", " ", " ", " ", " ", " ");
2879
2880        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropCollation, TBaseType.rrw_drop, "collation", " ", " ", " ", " ", " ");
2881
2882        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropConversion, TBaseType.rrw_drop, "conversion", " ", " ", " ", " ", " ");
2883
2884        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropDatabase, TBaseType.rrw_drop, "database", " ", " ", " ", " ", " ");
2885
2886        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropDomain, TBaseType.rrw_drop, "domain", " ", " ", " ", " ", " ");
2887        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropEventTrigger, TBaseType.rrw_drop, "event", "trigger", " ", " ", " ", " ");
2888        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropExtension, TBaseType.rrw_drop, "extension", " ", " ", " ", " ", " ");
2889
2890        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropForeignDataWrapper, TBaseType.rrw_drop, "foreign", "data", "wrapper", " ", " ", " ");
2891
2892        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropForeignTable, TBaseType.rrw_drop, "foreign", "table", " ", " ", " ", " ");
2893
2894        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropFunction, TBaseType.rrw_drop, "function", " ", " ", " ", " ", " ");
2895
2896        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropGroup, TBaseType.rrw_drop, "group", " ", " ", " ", " ", " ");
2897
2898        addgaussdbcmds(ESqlStatementType.sstdropindex, TBaseType.rrw_drop, "index", " ", " ", " ", " ", " ");
2899
2900        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropLanguage, TBaseType.rrw_drop, "language", " ", " ", " ", " ", " ");
2901
2902        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropMaterializedView, TBaseType.rrw_drop, "materialized", "view", " ", " ", " ", " ");
2903
2904        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropOperator, TBaseType.rrw_drop, "operator", " ", " ", " ", " ", " ");
2905        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropOperatorClass, TBaseType.rrw_drop, "operator", "class", " ", " ", " ", " ");
2906        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropOperatorFamily, TBaseType.rrw_drop, "operator", "family ", " ", " ", " ", " ");
2907
2908        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropOwned, TBaseType.rrw_drop, "owned", " ", " ", " ", " ", " ");
2909        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropPolicy, TBaseType.rrw_drop, "policy", " ", " ", " ", " ", " ");
2910        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropLanguage, TBaseType.rrw_drop, "procedural", "language", " ", " ", " ", " ");
2911        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropProcedure, TBaseType.rrw_drop, "procedure", " ", " ", " ", " ", " ");
2912        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropPublication, TBaseType.rrw_drop, "publication", " ", " ", " ", " ", " ");
2913
2914        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropRole, TBaseType.rrw_drop, "role", " ", " ", " ", " ", " ");
2915        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropRoutine, TBaseType.rrw_drop, "routine", " ", " ", " ", " ", " ");
2916        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropRule, TBaseType.rrw_drop, "rule", " ", " ", " ", " ", " ");
2917        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropSchema, TBaseType.rrw_drop, "schema", " ", " ", " ", " ", " ");
2918        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropSequence, TBaseType.rrw_drop, "sequence", " ", " ", " ", " ", " ");
2919        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropServer, TBaseType.rrw_drop, "server", " ", " ", " ", " ", " ");
2920        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropStatistics, TBaseType.rrw_drop, "statistics", " ", " ", " ", " ", " ");
2921        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropSubscription, TBaseType.rrw_drop, "subscription", " ", " ", " ", " ", " ");
2922        addgaussdbcmds(ESqlStatementType.sstdropsynonym, TBaseType.rrw_drop,"synonym"," "," "," "," "," ");
2923        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropTable, TBaseType.rrw_drop, "table", " ", " ", " ", " ", " ");
2924        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropTablespace, TBaseType.rrw_drop, "tablespace", " ", " ", " ", " ", " ");
2925
2926        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropTextSearchConfiguration, TBaseType.rrw_drop, "text", "search", "configuration", " ", " ", " ");
2927        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropTextSearchDictionary, TBaseType.rrw_drop, "text", "search", "dictionary", " ", " ", " ");
2928        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropTextSearchParser, TBaseType.rrw_drop, "text", "search", "parser", " ", " ", " ");
2929        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropTextSearchTemplate, TBaseType.rrw_drop, "text", "search", "template", " ", " ", " ");
2930        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropTransform, TBaseType.rrw_drop, "transform", " ", " ", " ", " ", " ");
2931        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropTrigger, TBaseType.rrw_drop, "trigger", " ", " ", " ", " ", " ");
2932        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropType, TBaseType.rrw_drop, "type", " ", " ", " ", " ", " ");
2933        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropUser, TBaseType.rrw_drop, "user", " ", " ", " ", " ", " ");
2934        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropUserMapping, TBaseType.rrw_drop, "user", "mapping", " ", " ", " ", " ");
2935        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropView, TBaseType.rrw_drop, "view", " ", " ", " ", " ", " ");
2936
2937        addgaussdbcmds(ESqlStatementType.sstpostgresqlEnd, TBaseType.rrw_end, " ", " ", " ", " ", " ", " ");
2938
2939        addgaussdbcmds(ESqlStatementType.sstpostgresqlExecute, TBaseType.rrw_execute, " ", " ", " ", " ", " ", " ");
2940
2941        addgaussdbcmds(ESqlStatementType.sstpostgresqlExplain, TBaseType.rrw_explain, " ", " ", " ", " ", " ", " ");
2942
2943        addgaussdbcmds(ESqlStatementType.sstFetchFrom, TBaseType.rrw_fetch, " ", " ", " ", " ", " ", " ");
2944
2945        addgaussdbcmds(ESqlStatementType.sstpostgresqlGrant, TBaseType.rrw_grant, " ", " ", " ", " ", " ", " ");
2946        addgaussdbcmds(ESqlStatementType.sstPostgresqlImport, TBaseType.rrw_postgresql_import, "foreign", "schema", " ", " ", " ", " ");
2947        addgaussdbcmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert, " ", " ", " ", " ", " ", " ");
2948
2949        addgaussdbcmds(ESqlStatementType.sstpostgresqlListen, TBaseType.rrw_postgresql_listen, " ", " ", " ", " ", " ", " ");
2950
2951        addgaussdbcmds(ESqlStatementType.sstpostgresqlLoad, TBaseType.rrw_load, " ", " ", " ", " ", " ", " ");
2952
2953        addgaussdbcmds(ESqlStatementType.sstpostgresqlLock, TBaseType.rrw_lock, " ", " ", " ", " ", " ", " ");
2954        addgaussdbcmds(ESqlStatementType.sstmerge, TBaseType.rrw_merge," "," "," "," "," "," ");
2955
2956        addgaussdbcmds(ESqlStatementType.sstpostgresqlMove, TBaseType.rrw_move, " ", " ", " ", " ", " ", " ");
2957
2958        addgaussdbcmds(ESqlStatementType.sstpostgresqlNotify, TBaseType.rrw_postgresql_notify, " ", " ", " ", " ", " ", " ");
2959
2960        addgaussdbcmds(ESqlStatementType.sstPostgresqlBlock, TBaseType.rrw_plpgsql_function_delimiter, " ", " ", " ", " ", " ", " ");
2961
2962
2963        addgaussdbcmds(ESqlStatementType.sstpostgresqlPrepare, TBaseType.rrw_prepare, " ", " ", " ", " ", " ", " ");
2964
2965        addgaussdbcmds(ESqlStatementType.sstpostgresqlPrepareTransaction, TBaseType.rrw_prepare, "transaction", " ", " ", " ", " ", " ");
2966
2967        addgaussdbcmds(ESqlStatementType.sstpostgresqlReassignOwned, TBaseType.rrw_postgresql_reassign, "owned", " ", " ", " ", " ", " ");
2968
2969        addgaussdbcmds(ESqlStatementType.sstpostgresqlRefreshMaterializedView, TBaseType.rrw_refresh, "incremental","materialized", "view",  " ", " ", " ");
2970        addgaussdbcmds(ESqlStatementType.sstpostgresqlRefreshMaterializedView, TBaseType.rrw_refresh, "materialized", "view", " ", " ", " ", " ");
2971
2972        addgaussdbcmds(ESqlStatementType.sstReindex, TBaseType.rrw_postgresql_reindex, " ", " ", " ", " ", " ", " ");
2973
2974        addgaussdbcmds(ESqlStatementType.sstpostgresqlReleaseSavepoint, TBaseType.rrw_release, " ", " ", " ", " ", " ", " ");
2975        addgaussdbcmds(ESqlStatementType.sstpostgresqlReleaseSavepoint, TBaseType.rrw_release, "savepoint", " ", " ", " ", " ", " ");
2976
2977        addgaussdbcmds(ESqlStatementType.sstpostgresqlReset, TBaseType.rrw_reset, " ", " ", " ", " ", " ", " ");
2978
2979        addgaussdbcmds(ESqlStatementType.sstpostgresqlRevoke, TBaseType.rrw_revoke, " ", " ", " ", " ", " ", " ");
2980
2981        addgaussdbcmds(ESqlStatementType.sstpostgresqlRollback, TBaseType.rrw_rollback, " ", " ", " ", " ", " ", " ");
2982        addgaussdbcmds(ESqlStatementType.sstpostgresqlRollbackPrepared, TBaseType.rrw_rollback, "prepared", " ", " ", " ", " ", " ");
2983        addgaussdbcmds(ESqlStatementType.sstpostgresqlRollbackToSavepoint, TBaseType.rrw_rollback, "to", "savepoint", " ", " ", " ", " ");
2984        addgaussdbcmds(ESqlStatementType.sstsavepoint, TBaseType.rrw_savepoint, " ", " ", " ", " ", " ", " ");
2985
2986        addgaussdbcmds(ESqlStatementType.sstpostgresqlSecurityLabel, TBaseType.rrw_postgresql_security, "label", " ", " ", " ", " ", " ");
2987
2988
2989        addgaussdbcmds(ESqlStatementType.sstselect, TBaseType.rrw_select, " ", " ", " ", " ", " ", " ");
2990
2991        addgaussdbcmds(ESqlStatementType.sstpostgresqlSet, TBaseType.rrw_set, " ", " ", " ", " ", " ", " ");
2992
2993        addgaussdbcmds(ESqlStatementType.sstpostgresqlSetConstraints, TBaseType.rrw_set, "constraints", " ", " ", " ", " ", " ");
2994        addgaussdbcmds(ESqlStatementType.sstpostgresqlSetRole, TBaseType.rrw_set, "local", "role", " ", " ", " ", " ");
2995        addgaussdbcmds(ESqlStatementType.sstpostgresqlSetSessionAuthorization, TBaseType.rrw_set, "local", "session", "authorization", " ", " ", " ");
2996        addgaussdbcmds(ESqlStatementType.sstpostgresqlSetRole, TBaseType.rrw_set, "role", " ", " ", " ", " ", " ");
2997        addgaussdbcmds(ESqlStatementType.sstpostgresqlSetSearchPath, TBaseType.rrw_set, "search_path", " ", " ", " ", " ", " ");
2998        addgaussdbcmds(ESqlStatementType.sstpostgresqlSetSessionAuthorization, TBaseType.rrw_set, "session", "authorization", " ", " ", " ", " ");
2999        addgaussdbcmds(ESqlStatementType.sstpostgresqlSetTransaction, TBaseType.rrw_set, "session", "characteristics", "as", "transaction", " ", " ");
3000        addgaussdbcmds(ESqlStatementType.sstpostgresqlSetRole, TBaseType.rrw_set, "session", "role", " ", " ", " ", " ");
3001        addgaussdbcmds(ESqlStatementType.sstpostgresqlSetSessionAuthorization, TBaseType.rrw_set, "session", "session", "authorization", " ", " ", " ");
3002
3003        addgaussdbcmds(ESqlStatementType.sstpostgresqlSetTransaction, TBaseType.rrw_set, "transaction", " ", " ", " ", " ", " ");
3004        addgaussdbcmds(ESqlStatementType.sstpostgresqlShow, TBaseType.rrw_show, " ", " ", " ", " ", " ", " ");
3005        addgaussdbcmds(ESqlStatementType.sstpostgresqlShowSearchPath, TBaseType.rrw_show, "search_path", " ", " ", " ", " ", " ");
3006        // addgaussdbcmds(ESqlStatementType.sstpostgresqlStartTransaction, TBaseType.rrw_start, "transaction", " ", " ", " ", " ", " ");
3007        addgaussdbcmds(ESqlStatementType.sstPostgresqlTable, TBaseType.rrw_table, " ", " ", " ", " ", " ", " ");
3008        addgaussdbcmds(ESqlStatementType.sstStartTransaction, TBaseType.rrw_start, "transaction", " ", " ", " ", " ", " ");
3009        addgaussdbcmds(ESqlStatementType.sstpostgresqlTruncate, TBaseType.rrw_truncate, " ", " ", " ", " ", " ", " ");
3010
3011        addgaussdbcmds(ESqlStatementType.sstpostgresqlUnlisten, TBaseType.rrw_postgresql_unlisten, " ", " ", " ", " ", " ", " ");
3012
3013        addgaussdbcmds(ESqlStatementType.sstupdate, TBaseType.rrw_update, " ", " ", " ", " ", " ", " ");
3014        addgaussdbcmds(ESqlStatementType.sstVacuum, TBaseType.rrw_postgresql_vacuum, " ", " ", " ", " ", " ", " ");
3015        addgaussdbcmds(ESqlStatementType.sstValues, TBaseType.rrw_values, " ", " ", " ", " ", " ", " ");
3016
3017    }
3018
3019    void initpostgresqlcmds(){
3020// cmd must be sorted alphabetically
3021        addpostgresqlcmds(ESqlStatementType.sstpostgresqlabort, TBaseType.rrw_abort, " ", " ", " ", " ", " ", " ");
3022        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterAggregate, TBaseType.rrw_alter, "aggregate", " ", " ", " ", " ", " ");
3023        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterCollation, TBaseType.rrw_alter, "collation", " ", " ", " ", " ", " ");
3024        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterConversion, TBaseType.rrw_alter, "conversion", " ", " ", " ", " ", " ");
3025        addpostgresqlcmds(ESqlStatementType.sstpostgresqlalterdatabase, TBaseType.rrw_alter, "database", " ", " ", " ", " ", " ");
3026        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterDefaultPrivileges, TBaseType.rrw_alter, "default", "privileges", " ", " ", " ", " ");
3027        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterDomain, TBaseType.rrw_alter, "domain", " ", " ", " ", " ", " ");
3028        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterEventTrigger, TBaseType.rrw_alter, "event", "trigger", " ", " ", " ", " ");
3029        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterExtension, TBaseType.rrw_alter, "extension", " ", " ", " ", " ", " ");
3030        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterForeignDataWrapper, TBaseType.rrw_alter, "foreign", "data", "wrapper", " ", " ", " ");
3031        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterForeignTable, TBaseType.rrw_alter, "foreign", "Table", " ", " ", " ", " ");
3032
3033        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterfunction, TBaseType.rrw_alter, "function", " ", " ", " ", " ", " ");
3034        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterGroup, TBaseType.rrw_alter, "group", " ", " ", " ", " ", " ");
3035        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterIndex, TBaseType.rrw_alter, "index", " ", " ", " ", " ", " ");
3036        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterLanguage, TBaseType.rrw_alter, "language", " ", " ", " ", " ", " ");
3037        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterLargeObject, TBaseType.rrw_alter, "large", "object", " ", " ", " ", " ");
3038        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterMaterializedView, TBaseType.rrw_alter, "materialized", "view", " ", " ", " ", " ");
3039        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterOperator, TBaseType.rrw_alter, "operator", " ", " ", " ", " ", " ");
3040        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterOperatorClass, TBaseType.rrw_alter, "operator", "class", " ", " ", " ", " ");
3041        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterOperatorFamily, TBaseType.rrw_alter, "operator", "family", " ", " ", " ", " ");
3042        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterPolicy, TBaseType.rrw_alter, "policy", " ", " ", " ", " ", " ");
3043        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterLanguage, TBaseType.rrw_alter, "procedural", "language", " ", " ", " ", " ");
3044        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterProcedure, TBaseType.rrw_alter, "procedure", " ", " ", " ", " ", " ");
3045        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterPublication, TBaseType.rrw_alter, "publication", " ", " ", " ", " ", " ");
3046        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterRole, TBaseType.rrw_alter, "role", " ", " ", " ", " ", " ");
3047        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterRoutine, TBaseType.rrw_alter, "routine", " ", " ", " ", " ", " ");
3048        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterRule, TBaseType.rrw_alter, "rule", " ", " ", " ", " ", " ");
3049        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterSchema, TBaseType.rrw_alter, "schema", " ", " ", " ", " ", " ");
3050        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterSequence, TBaseType.rrw_alter, "sequence", " ", " ", " ", " ", " ");
3051        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterServer, TBaseType.rrw_alter, "server", " ", " ", " ", " ", " ");
3052        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterStatistics, TBaseType.rrw_alter, "statistics", " ", " ", " ", " ", " ");
3053        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterSubscription, TBaseType.rrw_alter, "subscription", " ", " ", " ", " ", " ");
3054        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterSystem, TBaseType.rrw_alter, "system", " ", " ", " ", " ", " ");
3055
3056        addpostgresqlcmds(ESqlStatementType.sstaltertable, TBaseType.rrw_alter, "table", " ", " ", " ", " ", " ");
3057        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterTablespace, TBaseType.rrw_alter, "tablespace", " ", " ", " ", " ", " ");
3058
3059        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterTextSearchConfiguration, TBaseType.rrw_alter, "text", "search", "configuration", " ", " ", " ");
3060        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterTextSearchDictionary, TBaseType.rrw_alter, "text", "search", "dictionary", " ", " ", " ");
3061        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterTextSearchParser, TBaseType.rrw_alter, "text", "search", "parser", " ", " ", " ");
3062        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterTextSearchTemplate, TBaseType.rrw_alter, "text", "search", "template", " ", " ", " ");
3063        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterTrigger, TBaseType.rrw_alter, "trigger", " ", " ", " ", " ", " ");
3064        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterType, TBaseType.rrw_alter, "type", " ", " ", " ", " ", " ");
3065        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterUser, TBaseType.rrw_alter, "user", " ", " ", " ", " ", " ");
3066        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterUserMapping, TBaseType.rrw_alter, "user", "mapping", " ", " ", " ", " ");
3067        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterView, TBaseType.rrw_alter, "view", " ", " ", " ", " ", " ");
3068        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAnalyze, TBaseType.rrw_analyze, " ", " ", " ", " ", " ", " ");
3069
3070        addpostgresqlcmds(ESqlStatementType.sstpostgresqlBegin, TBaseType.rrw_begin, " ", " ", " ", " ", " ", " ");
3071
3072        addpostgresqlcmds(ESqlStatementType.sstcall, TBaseType.rrw_call, " ", " ", " ", " ", " ", " ");
3073
3074        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCheckpoint, TBaseType.rrw_checkpoint, " ", " ", " ", " ", " ", " ");
3075        addpostgresqlcmds(ESqlStatementType.sstpostgresqlClose, TBaseType.rrw_close, " ", " ", " ", " ", " ", " ");
3076
3077        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCluster, TBaseType.rrw_postgresql_cluster, " ", " ", " ", " ", " ", " ");
3078
3079        addpostgresqlcmds(ESqlStatementType.sstpostgresqlComment, TBaseType.rrw_comment, " ", " ", " ", " ", " ", " ");
3080
3081        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCommit, TBaseType.rrw_commit, " ", " ", " ", " ", " ", " ");
3082        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCommitPrepared, TBaseType.rrw_commit, "prepared", " ", " ", " ", " ", " ");
3083        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCopy, TBaseType.rrw_postgresql_copy, " ", " ", " ", " ", " ", " ");
3084
3085        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateAccessMethod, TBaseType.rrw_create, "access", "method", " ", " ", " ", " ");
3086        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateAggregate, TBaseType.rrw_create, "aggregate", " ", " ", " ", " ", " ");
3087        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateAssertion, TBaseType.rrw_create, "assertion", " ", " ", " ", " ", " ");
3088        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateCast, TBaseType.rrw_create, "cast", " ", " ", " ", " ", " ");
3089        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateCollation, TBaseType.rrw_create, "collation", " ", " ", " ", " ", " ");
3090
3091        addpostgresqlcmds(ESqlStatementType.sstcreatetrigger, TBaseType.rrw_create, "constraint", "trigger", " ", " ", " ", " ");
3092
3093        addpostgresqlcmds(ESqlStatementType.sstpostgresqlConversion, TBaseType.rrw_create, "conversion", " ", " ", " ", " ", " ");
3094        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateDatabase, TBaseType.rrw_create, "database", " ", " ", " ", " ", " ");
3095        addpostgresqlcmds(ESqlStatementType.sstpostgresqlConversion, TBaseType.rrw_create, "default", "conversion", " ", " ", " ", " ");
3096        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateDomain, TBaseType.rrw_create, "domain", " ", " ", " ", " ", " ");
3097        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateEventTrigger, TBaseType.rrw_create, "event", "trigger", " ", " ", " ", " ");
3098        addpostgresqlcmds(ESqlStatementType.sstcreateExtension, TBaseType.rrw_create, "extension", " ", " ", " ", " ", " ");
3099
3100        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateForeignDataWrapper, TBaseType.rrw_create, "foreign", "data", "wrapper", " ", " ", " ");
3101        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateForeignTable, TBaseType.rrw_create, "foreign", "table", " ", " ", " ", " ");
3102        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateFunction, TBaseType.rrw_create, "function", " ", " ", " ", " ", " ");
3103
3104        addpostgresqlcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "global", "temp", "table", " ", " ", " ");
3105        addpostgresqlcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "global", "temporary", "table", " ", " ", " ");
3106        addpostgresqlcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "global", "unlocked", "table", " ", " ", " ");
3107
3108        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateGroup, TBaseType.rrw_create, "group", " ", " ", " ", " ", " ");
3109
3110
3111        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateIndex, TBaseType.rrw_create, "index", " ", " ", " ", " ", " ");
3112        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateLanguage, TBaseType.rrw_create, "language", " ", " ", " ", " ", " ");
3113
3114        addpostgresqlcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "local", "temp", "table", " ", " ", " ");
3115        addpostgresqlcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "local", "temporary", "table", " ", " ", " ");
3116        addpostgresqlcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "local", "unlocked", "table", " ", " ", " ");
3117
3118        addpostgresqlcmds(ESqlStatementType.sstcreatematerializedview, TBaseType.rrw_create, "materialized", "view", " ", " ", " ", " ");
3119
3120        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateOperator, TBaseType.rrw_create, "operator", " ", " ", " ", " ", " ");
3121        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateOperatorClass, TBaseType.rrw_create, "operator", "class", " ", " ", " ", " ");
3122        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateOperatorFimaly, TBaseType.rrw_create, "operator", "family", " ", " ", " ", " ");
3123
3124        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateFunction, TBaseType.rrw_create, "or", "replace", "function", " ", " ", " ");
3125        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateLanguage, TBaseType.rrw_create, "or", "replace", "language", " ", " ", " ");
3126        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateLanguage, TBaseType.rrw_create, "or", "replace", "procedural", "language", " ", " ");
3127        addpostgresqlcmds(ESqlStatementType.sstcreateprocedure, TBaseType.rrw_create, "or", "replace", "procedure", " ", " ", " ");
3128        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateRole, TBaseType.rrw_create, "or", "replace", "role ", " ", " ", " ");
3129        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateRule, TBaseType.rrw_create, "or", "replace", "rule ", " ", " ", " ");
3130        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateView, TBaseType.rrw_create, "or", "replace", "temp", "view", " ", " ");
3131        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateView, TBaseType.rrw_create, "or", "replace", "temporary", "view", " ", " ");
3132        addpostgresqlcmds(ESqlStatementType.sstcreatetrigger, TBaseType.rrw_create, "or", "replace", "trigger", " ", " ", " ");
3133        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateLanguage, TBaseType.rrw_create, "or", "replace", "trusted", "language", " ", " ");
3134        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateLanguage, TBaseType.rrw_create, "or", "replace", "trusted", "procedural", "language", " ");
3135        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateView, TBaseType.rrw_create, "or", "replace", "view", " ", " ", " ");
3136        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreatePolicy, TBaseType.rrw_create, "policy", " ", " ", " ", " ", " ");
3137        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateLanguage, TBaseType.rrw_create, "procedural", "language", " ", " ", " ", " ");
3138        addpostgresqlcmds(ESqlStatementType.sstcreateprocedure, TBaseType.rrw_create, "procedure", " ", " ", " ", " ", " ");
3139        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreatePublication, TBaseType.rrw_create, "publication", " ", " ", " ", " ", " ");
3140
3141        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateView, TBaseType.rrw_create, "recursive", "view", " ", " ", " ", " ");
3142
3143        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateRole, TBaseType.rrw_create, "role", " ", " ", " ", " ", " ");
3144        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateRule, TBaseType.rrw_create, "rule", " ", " ", " ", " ", " ");
3145
3146
3147        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateSchema, TBaseType.rrw_create, "schema", " ", " ", " ", " ", " ");
3148
3149        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateSequence, TBaseType.rrw_create, "sequence", " ", " ", " ", " ", " ");
3150
3151
3152        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateServer, TBaseType.rrw_create, "server", " ", " ", " ", " ", " ");
3153        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateStatistics, TBaseType.rrw_create, "statistics", " ", " ", " ", " ", " ");
3154        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateSubscription, TBaseType.rrw_create, "subscription", " ", " ", " ", " ", " ");
3155
3156        addpostgresqlcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "table", " ", " ", " ", " ", " ");
3157
3158        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateTablespace, TBaseType.rrw_create, "tablespace", " ", " ", " ", " ", " ");
3159
3160        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateSequence, TBaseType.rrw_create, "temp", "sequence", " ", " ", " ", " ");
3161        addpostgresqlcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "temp", "table", " ", " ", " ", " ");
3162        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateView, TBaseType.rrw_create, "temp", "view", " ", " ", " ", " ");
3163        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateSequence, TBaseType.rrw_create, "temporary", "sequence", " ", " ", " ", " ");
3164        addpostgresqlcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "temporary", "table", " ", " ", " ", " ");
3165        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateView, TBaseType.rrw_create, "temporary", "view", " ", " ", " ", " ");
3166
3167        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateTextSearchConfiguration, TBaseType.rrw_create, "text", "search", "configuration", " ", " ", " ");
3168        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateTextSearchDictionary, TBaseType.rrw_create, "text", "search", "dictionary", " ", " ", " ");
3169        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateTextSearchParser, TBaseType.rrw_create, "text", "search", "parser", " ", " ", " ");
3170        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateTextSearchTemplate, TBaseType.rrw_create, "text", "search", "template", " ", " ", " ");
3171
3172        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateTransform, TBaseType.rrw_create, "transform", " ", " ", " ", " ", " ");
3173        addpostgresqlcmds(ESqlStatementType.sstcreatetrigger, TBaseType.rrw_create, "trigger", " ", " ", " ", " ", " ");
3174
3175        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateLanguage, TBaseType.rrw_create, "trusted", "language", " ", " ", " ", " ");
3176        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateLanguage, TBaseType.rrw_create, "trusted", "procedural", "language", " ", " ", " ");
3177
3178        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateType, TBaseType.rrw_create, "type", " ", " ", " ", " ", " ");
3179
3180        addpostgresqlcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "unlocked", "table", " ", " ", " ", " ");
3181        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateSequence, TBaseType.rrw_create, "unlogged", "sequence", " ", " ", " ", " ");
3182        addpostgresqlcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "unlogged", "table", " ", " ", " ", " ");
3183
3184        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateUser, TBaseType.rrw_create, "user", " ", " ", " ", " ", " ");
3185
3186        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateUserMapping, TBaseType.rrw_create, "user", "mapping", " ", " ", " ", " ");
3187
3188        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateView, TBaseType.rrw_create, "view", " ", " ", " ", " ", " ");
3189
3190        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateIndex, TBaseType.rrw_create, "unique", "index", " ", " ", " ", " ");
3191
3192
3193        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDeallocate, TBaseType.rrw_deallocate, " ", " ", " ", " ", " ", " ");
3194
3195        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDeclare, TBaseType.rrw_declare, " ", " ", " ", " ", " ", " ");
3196
3197        addpostgresqlcmds(ESqlStatementType.sstdelete, TBaseType.rrw_delete, " ", " ", " ", " ", " ", " ");
3198
3199        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDiscard, TBaseType.rrw_postgresql_discard, " ", " ", " ", " ", " ", " ");
3200
3201        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDo, TBaseType.rrw_do, " ", " ", " ", " ", " ", " ");
3202
3203        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropAccessMethod, TBaseType.rrw_drop, "access", "method", " ", " ", " ", " ");
3204        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropAggregate, TBaseType.rrw_drop, "aggregate", " ", " ", " ", " ", " ");
3205        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropAssertion, TBaseType.rrw_drop, "assertion", " ", " ", " ", " ", " ");
3206
3207        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropCast, TBaseType.rrw_drop, "cast", " ", " ", " ", " ", " ");
3208
3209        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropCollation, TBaseType.rrw_drop, "collation", " ", " ", " ", " ", " ");
3210
3211        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropConversion, TBaseType.rrw_drop, "conversion", " ", " ", " ", " ", " ");
3212
3213        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropDatabase, TBaseType.rrw_drop, "database", " ", " ", " ", " ", " ");
3214
3215        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropDomain, TBaseType.rrw_drop, "domain", " ", " ", " ", " ", " ");
3216        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropEventTrigger, TBaseType.rrw_drop, "event", "trigger", " ", " ", " ", " ");
3217        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropExtension, TBaseType.rrw_drop, "extension", " ", " ", " ", " ", " ");
3218
3219        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropTable, TBaseType.rrw_drop, "external", "table", " ", " ", " ", " ");
3220
3221        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropForeignDataWrapper, TBaseType.rrw_drop, "foreign", "data", "wrapper", " ", " ", " ");
3222
3223        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropForeignTable, TBaseType.rrw_drop, "foreign", "table", " ", " ", " ", " ");
3224
3225        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropFunction, TBaseType.rrw_drop, "function", " ", " ", " ", " ", " ");
3226
3227        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropGroup, TBaseType.rrw_drop, "group", " ", " ", " ", " ", " ");
3228
3229        addpostgresqlcmds(ESqlStatementType.sstdropindex, TBaseType.rrw_drop, "index", " ", " ", " ", " ", " ");
3230
3231        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropLanguage, TBaseType.rrw_drop, "language", " ", " ", " ", " ", " ");
3232
3233        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropMaterializedView, TBaseType.rrw_drop, "materialized", "view", " ", " ", " ", " ");
3234
3235        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropOperator, TBaseType.rrw_drop, "operator", " ", " ", " ", " ", " ");
3236        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropOperatorClass, TBaseType.rrw_drop, "operator", "class", " ", " ", " ", " ");
3237        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropOperatorFamily, TBaseType.rrw_drop, "operator", "family ", " ", " ", " ", " ");
3238
3239        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropOwned, TBaseType.rrw_drop, "owned", " ", " ", " ", " ", " ");
3240        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropPolicy, TBaseType.rrw_drop, "policy", " ", " ", " ", " ", " ");
3241        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropLanguage, TBaseType.rrw_drop, "procedural", "language", " ", " ", " ", " ");
3242        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropProcedure, TBaseType.rrw_drop, "procedure", " ", " ", " ", " ", " ");
3243        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropPublication, TBaseType.rrw_drop, "publication", " ", " ", " ", " ", " ");
3244
3245        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropRole, TBaseType.rrw_drop, "role", " ", " ", " ", " ", " ");
3246        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropRoutine, TBaseType.rrw_drop, "routine", " ", " ", " ", " ", " ");
3247        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropRule, TBaseType.rrw_drop, "rule", " ", " ", " ", " ", " ");
3248        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropSchema, TBaseType.rrw_drop, "schema", " ", " ", " ", " ", " ");
3249        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropSequence, TBaseType.rrw_drop, "sequence", " ", " ", " ", " ", " ");
3250        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropServer, TBaseType.rrw_drop, "server", " ", " ", " ", " ", " ");
3251        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropStatistics, TBaseType.rrw_drop, "statistics", " ", " ", " ", " ", " ");
3252        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropSubscription, TBaseType.rrw_drop, "subscription", " ", " ", " ", " ", " ");
3253        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropTable, TBaseType.rrw_drop, "table", " ", " ", " ", " ", " ");
3254        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropTablespace, TBaseType.rrw_drop, "tablespace", " ", " ", " ", " ", " ");
3255
3256        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropTextSearchConfiguration, TBaseType.rrw_drop, "text", "search", "configuration", " ", " ", " ");
3257        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropTextSearchDictionary, TBaseType.rrw_drop, "text", "search", "dictionary", " ", " ", " ");
3258        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropTextSearchParser, TBaseType.rrw_drop, "text", "search", "parser", " ", " ", " ");
3259        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropTextSearchTemplate, TBaseType.rrw_drop, "text", "search", "template", " ", " ", " ");
3260        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropTransform, TBaseType.rrw_drop, "transform", " ", " ", " ", " ", " ");
3261        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropTrigger, TBaseType.rrw_drop, "trigger", " ", " ", " ", " ", " ");
3262        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropType, TBaseType.rrw_drop, "type", " ", " ", " ", " ", " ");
3263        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropUser, TBaseType.rrw_drop, "user", " ", " ", " ", " ", " ");
3264        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropUserMapping, TBaseType.rrw_drop, "user", "mapping", " ", " ", " ", " ");
3265        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropView, TBaseType.rrw_drop, "view", " ", " ", " ", " ", " ");
3266
3267        addpostgresqlcmds(ESqlStatementType.sstpostgresqlEnd, TBaseType.rrw_end, " ", " ", " ", " ", " ", " ");
3268
3269        addpostgresqlcmds(ESqlStatementType.sstpostgresqlExecute, TBaseType.rrw_execute, " ", " ", " ", " ", " ", " ");
3270
3271        addpostgresqlcmds(ESqlStatementType.sstpostgresqlExplain, TBaseType.rrw_explain, " ", " ", " ", " ", " ", " ");
3272
3273        addpostgresqlcmds(ESqlStatementType.sstFetchFrom, TBaseType.rrw_fetch, " ", " ", " ", " ", " ", " ");
3274
3275        addpostgresqlcmds(ESqlStatementType.sstpostgresqlGrant, TBaseType.rrw_grant, " ", " ", " ", " ", " ", " ");
3276        addpostgresqlcmds(ESqlStatementType.sstPostgresqlImport, TBaseType.rrw_postgresql_import, "foreign", "schema", " ", " ", " ", " ");
3277        addpostgresqlcmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert, " ", " ", " ", " ", " ", " ");
3278
3279        addpostgresqlcmds(ESqlStatementType.sstpostgresqlListen, TBaseType.rrw_postgresql_listen, " ", " ", " ", " ", " ", " ");
3280
3281        addpostgresqlcmds(ESqlStatementType.sstpostgresqlLoad, TBaseType.rrw_load, " ", " ", " ", " ", " ", " ");
3282
3283        addpostgresqlcmds(ESqlStatementType.sstpostgresqlLock, TBaseType.rrw_lock, " ", " ", " ", " ", " ", " ");
3284
3285        addpostgresqlcmds(ESqlStatementType.sstmerge, TBaseType.rrw_merge," "," "," "," "," "," ");
3286
3287        addpostgresqlcmds(ESqlStatementType.sstpostgresqlMove, TBaseType.rrw_move, " ", " ", " ", " ", " ", " ");
3288
3289        addpostgresqlcmds(ESqlStatementType.sstpostgresqlNotify, TBaseType.rrw_postgresql_notify, " ", " ", " ", " ", " ", " ");
3290
3291        addpostgresqlcmds(ESqlStatementType.sstPostgresqlBlock, TBaseType.rrw_plpgsql_function_delimiter, " ", " ", " ", " ", " ", " ");
3292
3293
3294        addpostgresqlcmds(ESqlStatementType.sstpostgresqlPrepare, TBaseType.rrw_prepare, " ", " ", " ", " ", " ", " ");
3295
3296        addpostgresqlcmds(ESqlStatementType.sstpostgresqlPrepareTransaction, TBaseType.rrw_prepare, "transaction", " ", " ", " ", " ", " ");
3297
3298        addpostgresqlcmds(ESqlStatementType.sstpostgresqlReassignOwned, TBaseType.rrw_postgresql_reassign, "owned", " ", " ", " ", " ", " ");
3299
3300        addpostgresqlcmds(ESqlStatementType.sstpostgresqlRefreshMaterializedView, TBaseType.rrw_refresh, "materialized", "view", " ", " ", " ", " ");
3301
3302        addpostgresqlcmds(ESqlStatementType.sstReindex, TBaseType.rrw_postgresql_reindex, " ", " ", " ", " ", " ", " ");
3303
3304        addpostgresqlcmds(ESqlStatementType.sstpostgresqlReleaseSavepoint, TBaseType.rrw_release, " ", " ", " ", " ", " ", " ");
3305        addpostgresqlcmds(ESqlStatementType.sstpostgresqlReleaseSavepoint, TBaseType.rrw_release, "savepoint", " ", " ", " ", " ", " ");
3306
3307        addpostgresqlcmds(ESqlStatementType.sstpostgresqlReset, TBaseType.rrw_reset, " ", " ", " ", " ", " ", " ");
3308
3309        addpostgresqlcmds(ESqlStatementType.sstpostgresqlRevoke, TBaseType.rrw_revoke, " ", " ", " ", " ", " ", " ");
3310
3311        addpostgresqlcmds(ESqlStatementType.sstpostgresqlRollback, TBaseType.rrw_rollback, " ", " ", " ", " ", " ", " ");
3312        addpostgresqlcmds(ESqlStatementType.sstpostgresqlRollbackPrepared, TBaseType.rrw_rollback, "prepared", " ", " ", " ", " ", " ");
3313        addpostgresqlcmds(ESqlStatementType.sstpostgresqlRollbackToSavepoint, TBaseType.rrw_rollback, "to", "savepoint", " ", " ", " ", " ");
3314        addpostgresqlcmds(ESqlStatementType.sstpostgresqlSavepoint, TBaseType.rrw_savepoint, " ", " ", " ", " ", " ", " ");
3315
3316        addpostgresqlcmds(ESqlStatementType.sstpostgresqlSecurityLabel, TBaseType.rrw_postgresql_security, "label", " ", " ", " ", " ", " ");
3317
3318
3319        addpostgresqlcmds(ESqlStatementType.sstselect, TBaseType.rrw_select, " ", " ", " ", " ", " ", " ");
3320
3321        addpostgresqlcmds(ESqlStatementType.sstpostgresqlSet, TBaseType.rrw_set, " ", " ", " ", " ", " ", " ");
3322
3323        addpostgresqlcmds(ESqlStatementType.sstpostgresqlSetConstraints, TBaseType.rrw_set, "constraints", " ", " ", " ", " ", " ");
3324        addpostgresqlcmds(ESqlStatementType.sstpostgresqlSetRole, TBaseType.rrw_set, "local", "role", " ", " ", " ", " ");
3325        addpostgresqlcmds(ESqlStatementType.sstpostgresqlSetSessionAuthorization, TBaseType.rrw_set, "local", "session", "authorization", " ", " ", " ");
3326        addpostgresqlcmds(ESqlStatementType.sstpostgresqlSetRole, TBaseType.rrw_set, "role", " ", " ", " ", " ", " ");
3327        addpostgresqlcmds(ESqlStatementType.sstpostgresqlSetSearchPath, TBaseType.rrw_set, "search_path", " ", " ", " ", " ", " ");
3328        addpostgresqlcmds(ESqlStatementType.sstpostgresqlSetSessionAuthorization, TBaseType.rrw_set, "session", "authorization", " ", " ", " ", " ");
3329        addpostgresqlcmds(ESqlStatementType.sstpostgresqlSetTransaction, TBaseType.rrw_set, "session", "characteristics", "as", "transaction", " ", " ");
3330        addpostgresqlcmds(ESqlStatementType.sstpostgresqlSetRole, TBaseType.rrw_set, "session", "role", " ", " ", " ", " ");
3331        addpostgresqlcmds(ESqlStatementType.sstpostgresqlSetSessionAuthorization, TBaseType.rrw_set, "session", "session", "authorization", " ", " ", " ");
3332
3333        addpostgresqlcmds(ESqlStatementType.sstpostgresqlSetTransaction, TBaseType.rrw_set, "transaction", " ", " ", " ", " ", " ");
3334        addpostgresqlcmds(ESqlStatementType.sstpostgresqlShow, TBaseType.rrw_show, " ", " ", " ", " ", " ", " ");
3335        addpostgresqlcmds(ESqlStatementType.sstpostgresqlShowSearchPath, TBaseType.rrw_show, "search_path", " ", " ", " ", " ", " ");
3336       // addpostgresqlcmds(ESqlStatementType.sstpostgresqlStartTransaction, TBaseType.rrw_start, "transaction", " ", " ", " ", " ", " ");
3337        addpostgresqlcmds(ESqlStatementType.sstPostgresqlTable, TBaseType.rrw_table, " ", " ", " ", " ", " ", " ");
3338        addpostgresqlcmds(ESqlStatementType.sstStartTransaction, TBaseType.rrw_start, "transaction", " ", " ", " ", " ", " ");
3339        addpostgresqlcmds(ESqlStatementType.sstpostgresqlTruncate, TBaseType.rrw_truncate, " ", " ", " ", " ", " ", " ");
3340
3341        addpostgresqlcmds(ESqlStatementType.sstpostgresqlUnlisten, TBaseType.rrw_postgresql_unlisten, " ", " ", " ", " ", " ", " ");
3342
3343        addpostgresqlcmds(ESqlStatementType.sstupdate, TBaseType.rrw_update, " ", " ", " ", " ", " ", " ");
3344        addpostgresqlcmds(ESqlStatementType.sstVacuum, TBaseType.rrw_postgresql_vacuum, " ", " ", " ", " ", " ", " ");
3345        addpostgresqlcmds(ESqlStatementType.sstValues, TBaseType.rrw_values, " ", " ", " ", " ", " ", " ");
3346
3347    }
3348
3349    void initbigquerycmds() {
3350// cmd must be sorted alphabetically
3351        addbigquerycmds(ESqlStatementType.sstalterview, TBaseType.rrw_alter, "view", " ", " ", " ", " ", " ");
3352        addbigquerycmds(ESqlStatementType.sstaltertable, TBaseType.rrw_alter, "table", " ", " ", " ", " ", " ");
3353
3354        addbigquerycmds(ESqlStatementType.sstBegin, TBaseType.rrw_begin, " ", " ", " ", " ", " ", " ");
3355        addbigquerycmds(ESqlStatementType.sstbegintran, TBaseType.rrw_begin, "transaction", " ", " ", " ", " ", " ");
3356
3357        addbigquerycmds(ESqlStatementType.sstcall, TBaseType.rrw_call, " ", " ", " ", " ", " ", " ");
3358        addbigquerycmds(ESqlStatementType.sst_casestmt, TBaseType.rrw_case, " ", " ", " ", " ", " ", " ");
3359        addbigquerycmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "external", "table", " ", " ", " ", " ");
3360        addbigquerycmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create, "function", " ", " ", " ", " ", " ");
3361        addbigquerycmds(ESqlStatementType.sstcreatematerializedview, TBaseType.rrw_create, "materialized", "view", " ", " ", " ", " ");
3362        addbigquerycmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "or", "replace", "external", "table", " ", " ");
3363        addbigquerycmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "or", "replace", "temporary", "table", " ", " ");
3364        addbigquerycmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create, "or", "replace", "function", " ", " ", " ");
3365        addbigquerycmds(ESqlStatementType.sstcreatematerializedview, TBaseType.rrw_create, "or", "replace", "materialized", "view", " ", " ");
3366        addbigquerycmds(ESqlStatementType.sstcreateprocedure, TBaseType.rrw_create, "or", "replace", "procedure", " ", " ", " ");
3367        addbigquerycmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "or", "replace", "table", " ", " ", " ");
3368        addbigquerycmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create, "or", "replace", "table", "function", " ", " ");
3369        addbigquerycmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create, "or", "replace", "temp", "function", " ", " ");
3370        addbigquerycmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "or", "replace", "temp", "table", " ", " ");
3371        addbigquerycmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create, "or", "replace", "temporary", "function", " ", " ");
3372        addbigquerycmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create, "or", "replace", "view", " ", " ", " ");
3373        addbigquerycmds(ESqlStatementType.sstcreateprocedure, TBaseType.rrw_create, "procedure", " ", " ", " ", " ", " ");
3374        addbigquerycmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "table", " ", " ", " ", " ", " ");
3375        addbigquerycmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create, "table", "function", " ", " ", " ", " ");
3376        addbigquerycmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create, "temp", "function", " ", " ", " ", " ");
3377        addbigquerycmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "temp", "table", " ", " ", " ", " ");
3378        addbigquerycmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create, "temporary", "function", " ", " ", " ", " ");
3379        addbigquerycmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "temporary", "table", " ", " ", " ", " ");
3380        addbigquerycmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "snapshot", "table", " ", " ", " ", " ");
3381        addbigquerycmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create, "view", " ", " ", " ", " ", " ");
3382        addbigquerycmds(ESqlStatementType.sstBigQueryDeclare, TBaseType.rrw_declare," "," "," "," "," "," ");
3383        addbigquerycmds(ESqlStatementType.sstdelete, TBaseType.rrw_delete, " ", " ", " ", " ", " ", " ");
3384        addbigquerycmds(ESqlStatementType.sstDropRowAccessPolicy, TBaseType.rrw_drop, "all","row", "access", "policies", " ", " ");
3385        addbigquerycmds(ESqlStatementType.sstDropAssignment, TBaseType.rrw_drop, "assignment", " ", " ", " ", " ", " ");
3386        addbigquerycmds(ESqlStatementType.sstdroptable, TBaseType.rrw_drop, "external", "table", " ", " ", " ", " ");
3387        addbigquerycmds(ESqlStatementType.sstdropfunction, TBaseType.rrw_drop, "function", " ", " ", " ", " ", " ");
3388        addbigquerycmds(ESqlStatementType.sstDropMaterializedView, TBaseType.rrw_drop, "materialized", "view", " ", " ", " ", " ");
3389        addbigquerycmds(ESqlStatementType.sstdropprocedure, TBaseType.rrw_drop, "procedure", " ", " ", " ", " ", " ");
3390        addbigquerycmds(ESqlStatementType.sstDropReservation, TBaseType.rrw_drop, "reservation", " ", " ", " ", " ", " ");
3391        addbigquerycmds(ESqlStatementType.sstDropRowAccessPolicy, TBaseType.rrw_drop, "row", "access", "policy", " ", " ", " ");
3392        addbigquerycmds(ESqlStatementType.sstdroptable, TBaseType.rrw_drop, "table", " ", " ", " ", " ", " ");
3393        addbigquerycmds(ESqlStatementType.sstDropTableFunction, TBaseType.rrw_drop, "table", "function", " ", " ", " ", " ");
3394        addbigquerycmds(ESqlStatementType.sstdropschema, TBaseType.rrw_drop, "schema", " ", " ", " ", " ", " ");
3395        addbigquerycmds(ESqlStatementType.sstDropSnapshotTable, TBaseType.rrw_drop, "snapshot", "table", " ", " ", " ", " ");
3396        addbigquerycmds(ESqlStatementType.sstdropview, TBaseType.rrw_drop, "view", " ", " ", " ", " ", " ");
3397
3398        addbigquerycmds(ESqlStatementType.sstExecute, TBaseType.rrw_execute,  "immediate"," "," "," "," "," ");
3399
3400        addbigquerycmds(ESqlStatementType.sstBigQueryExportData, TBaseType.rrw_bigquery_export, "data", " ", " ", " ", " ", " ");
3401        addbigquerycmds(ESqlStatementType.sstForStmt, TBaseType.rrw_for, " ", " ", " ", " ", " ", " ");
3402        addbigquerycmds(ESqlStatementType.sst_ifstmt, TBaseType.rrw_if, " ", " ", " ", " ", " ", " ");
3403        addbigquerycmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert, " ", " ", " ", " ", " ", " ");
3404        addbigquerycmds(ESqlStatementType.sst_loopstmt, TBaseType.rrw_loop, " ", " ", " ", " ", " ", " ");
3405        addbigquerycmds(ESqlStatementType.sstmerge, TBaseType.rrw_merge, " ", " ", " ", " ", " ", " ");
3406        addbigquerycmds(ESqlStatementType.sstRepeat, TBaseType.rrw_repeat, " ", " ", " ", " ", " ", " ");
3407        addbigquerycmds(ESqlStatementType.sstselect, TBaseType.rrw_select, " ", " ", " ", " ", " ", " ");
3408        addbigquerycmds(ESqlStatementType.sstset, TBaseType.rrw_set, " ", " ", " ", " ", " ", " ");
3409        addbigquerycmds(ESqlStatementType.sstTruncate, TBaseType.rrw_truncate, " ", " ", " ", " ", " ", " ");
3410        addbigquerycmds(ESqlStatementType.sstupdate, TBaseType.rrw_update, " ", " ", " ", " ", " ", " ");
3411        addbigquerycmds(ESqlStatementType.sstWhilestmt, TBaseType.rrw_while, " ", " ", " ", " ", " ", " ");
3412    }
3413
3414void initsnowflakecmds(){
3415// cmd must be sorted alphabetically
3416    addsnowflakecmds(ESqlStatementType.sstAlterAccount, TBaseType.rrw_alter, "account", " ", " ", " ", " ", " ");
3417    addsnowflakecmds(ESqlStatementType.sstalterdatabase, TBaseType.rrw_alter, "database", " ", " ", " ", " ", " ");
3418    addsnowflakecmds(ESqlStatementType.sstaltertable, TBaseType.rrw_alter, "external", "table", " ", " ", " ", " ");
3419    addsnowflakecmds(ESqlStatementType.sstAlterFileFormat, TBaseType.rrw_alter, "file", "format", " ", " ", " ", " ");
3420    addsnowflakecmds(ESqlStatementType.sstalterfunction, TBaseType.rrw_alter, "function", " ", " ", " ", " ", " ");
3421    addsnowflakecmds(ESqlStatementType.sstAlterMaterializedView, TBaseType.rrw_alter,"materialized","view"," "," "," "," ");
3422    addsnowflakecmds(ESqlStatementType.sstAlterNetworkPolicy, TBaseType.rrw_alter, "network", "policy", " ", " ", " ", " ");
3423    addsnowflakecmds(ESqlStatementType.sstAlterPipe, TBaseType.rrw_alter, "pipe", " ", " ", " ", " ", " ");
3424    addsnowflakecmds(ESqlStatementType.sstAlterResourceMonitor, TBaseType.rrw_alter, "resource", "monitor", " ", " ", " ", " ");
3425    addsnowflakecmds(ESqlStatementType.sstAlterRole, TBaseType.rrw_alter, "role", " ", " ", " ", " ", " ");
3426    addsnowflakecmds(ESqlStatementType.sstAlterTask, TBaseType.rrw_alter, "task", " ", " ", " ", " ", " ");
3427    addsnowflakecmds(ESqlStatementType.sstAlterSchema, TBaseType.rrw_alter, "schema", " ", " ", " ", " ", " ");
3428    addsnowflakecmds(ESqlStatementType.sstaltersession, TBaseType.rrw_alter, "session", " ", " ", " ", " ", " ");
3429    addsnowflakecmds(ESqlStatementType.sstaltersequence, TBaseType.rrw_alter, "sequence", " ", " ", " ", " ", " ");
3430    addsnowflakecmds(ESqlStatementType.sstAlterShare, TBaseType.rrw_alter, "share", " ", " ", " ", " ", " ");
3431    addsnowflakecmds(ESqlStatementType.sstAlterStage, TBaseType.rrw_alter, "stage", " ", " ", " ", " ", " ");
3432    addsnowflakecmds(ESqlStatementType.sstaltertable, TBaseType.rrw_alter, "table", " ", " ", " ", " ", " ");
3433    addsnowflakecmds(ESqlStatementType.sstalteruser, TBaseType.rrw_alter, "user", " ", " ", " ", " ", " ");
3434    addsnowflakecmds(ESqlStatementType.sstalterview, TBaseType.rrw_alter, "view", " ", " ", " ", " ", " ");
3435    addsnowflakecmds(ESqlStatementType.sstAlterWarehouse, TBaseType.rrw_alter, "warehouse", " ", " ", " ", " ", " ");
3436
3437    addsnowflakecmds(ESqlStatementType.sstBegin, TBaseType.rrw_begin, " ", " ", " ", " ", " ", " ");
3438    addsnowflakecmds(ESqlStatementType.sstbegintran, TBaseType.rrw_snowflake_begin_transaction, " ", " ", " ", " ", " ", " ");
3439
3440    addsnowflakecmds(ESqlStatementType.sstbegintran, TBaseType.rrw_begin, "work", " ", " ", " ", " ", " ");
3441    addsnowflakecmds(ESqlStatementType.sstbegintran, TBaseType.rrw_begin, "transaction", " ", " ", " ", " ", " ");
3442
3443    addsnowflakecmds(ESqlStatementType.sstcall, TBaseType.rrw_call, " ", " ", " ", " ", " ", " ");
3444    addsnowflakecmds(ESqlStatementType.sstcomment, TBaseType.rrw_comment, " ", " ", " ", " ", " ", " ");
3445
3446    addsnowflakecmds(ESqlStatementType.sstcommit, TBaseType.rrw_commit, " ", " ", " ", " ", " ", " ");
3447    addsnowflakecmds(ESqlStatementType.sstCopyInto, TBaseType.rrw_snowflake_copy, "into", " ", " ", " ", " ", " ");
3448
3449    addsnowflakecmds(ESqlStatementType.sstcreatedatabase, TBaseType.rrw_create, "database", " ", " ", " ", " ", " ");
3450    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "dynamic", "table", " ", " ", " ", " ");
3451    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "external", "table", " ", " ", " ", " ");
3452    addsnowflakecmds(ESqlStatementType.sstCreateFileFormat, TBaseType.rrw_create, "file", "format", " ", " ", " ", " ");
3453    addsnowflakecmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create, "function", " ", " ", " ", " ", " ");
3454    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "global", "table", " ", " ", " ", " ");
3455    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "global", "temp", "table", " ", " ", " ");
3456    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "global", "temporary", "table", " ", " ", " ");
3457    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "hybrid", "table", " ", " ", " ", " ");
3458    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "local", "table", " ", " ", " ", " ");
3459    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "local", "temp", "table", " ", " ", " ");
3460    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "local", "temporary", "table", " ", " ", " ");
3461    addsnowflakecmds(ESqlStatementType.sstcreatematerializedview, TBaseType.rrw_create,"materialized","view"," "," "," "," ");
3462    addsnowflakecmds(ESqlStatementType.sstCreateNetworkPolicy, TBaseType.rrw_create, "network", "policy", " ", " ", " ", " ");
3463    addsnowflakecmds(ESqlStatementType.sstCreatePipe, TBaseType.rrw_create, "or", "replace", "pipe", " ", " ", " ");
3464    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "or", "replace", "external", "table", " ", " ");
3465    addsnowflakecmds(ESqlStatementType.sstcreatedatabase, TBaseType.rrw_create, "or", "replace", "database", " ", " ", " ");
3466    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "or", "replace", "dynamic", "table", " ", " ");
3467    addsnowflakecmds(ESqlStatementType.sstCreateFileFormat, TBaseType.rrw_create, "or", "replace", "file", "format", " ", " ");
3468    addsnowflakecmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create, "or", "replace", "function", " ", " ", " ");
3469    addsnowflakecmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create, "or", "replace", "force", "view", " ", " ");
3470    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "or", "replace", "global","temporary", "table",  " ");
3471    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "or", "replace", "hybrid", "table", " ", " ");
3472    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "or", "replace", "local","temporary", "table",  " ");
3473    addsnowflakecmds(ESqlStatementType.sstcreatematerializedview, TBaseType.rrw_create,"or", "replace","materialized","view"," "," ");
3474    addsnowflakecmds(ESqlStatementType.sstCreateNetworkPolicy, TBaseType.rrw_create, "or", "replace", "network", "policy", " ", " ");
3475    addsnowflakecmds(ESqlStatementType.sstcreateprocedure, TBaseType.rrw_create,"or", "replace", "procedure", " ", " ", " ");
3476    addsnowflakecmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create, "or", "replace", "recursive", "view", " ", " ");
3477
3478    addsnowflakecmds(ESqlStatementType.sstCreateResourceMonitor, TBaseType.rrw_create, "or", "replace","resource", "monitor",  " ", " ");
3479    addsnowflakecmds(ESqlStatementType.sstcreaterole,             TBaseType.rrw_create, "or", "replace","role",  " ", " ", " ");
3480    addsnowflakecmds(ESqlStatementType.sstcreateschema, TBaseType.rrw_create, "or", "replace","schema", " ", " ", " ");
3481    addsnowflakecmds(ESqlStatementType.sstcreatematerializedview, TBaseType.rrw_create,"or", "replace","secure","materialized","view"," ");
3482    addsnowflakecmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create, "or", "replace", "secure", "view", " ", " ");
3483    addsnowflakecmds(ESqlStatementType.sstcreatesequence, TBaseType.rrw_create, "or", "replace","sequence", " ", " ", " ");
3484    addsnowflakecmds(ESqlStatementType.sstCreateShare, TBaseType.rrw_create, "or", "replace","share", " ", " ", " ");
3485    addsnowflakecmds(ESqlStatementType.sstCreateStage, TBaseType.rrw_create, "or", "replace","stage", " ", " ", " ");
3486    addsnowflakecmds(ESqlStatementType.sstCreateStream, TBaseType.rrw_create, "or", "replace","stream", " ", " ", " ");
3487    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "or", "replace", "table", " ", " ", " ");
3488    addsnowflakecmds(ESqlStatementType.sstCreateTask, TBaseType.rrw_create, "or", "replace", "task", " ", " ", " ");
3489    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "or", "replace", "temp", "table", " ", " ");
3490    addsnowflakecmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create, "or", "replace", "temp", "view", " ", " ");
3491    addsnowflakecmds(ESqlStatementType.sstCreateStage, TBaseType.rrw_create, "or", "replace","temporary", "stage", " ", " ");
3492    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "or", "replace", "temporary", "table", " ", " ");
3493    addsnowflakecmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create, "or", "replace", "temporary", "view", " ", " ");
3494    addsnowflakecmds(ESqlStatementType.sstcreatedatabase, TBaseType.rrw_create, "or", "replace", "transient", "database", " ", " ");
3495    addsnowflakecmds(ESqlStatementType.sstcreateschema, TBaseType.rrw_create, "or", "replace", "transient", "schema", " ", " ");
3496    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "or", "replace", "transient", "table", " ", " ");
3497    addsnowflakecmds(ESqlStatementType.sstcreateuser, TBaseType.rrw_create, "or", "replace","user", " ", " ", " ");
3498    addsnowflakecmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create, "or", "replace", "view", " ", " ", " ");
3499    addsnowflakecmds(ESqlStatementType.sstCreateWarehouse, TBaseType.rrw_create, "or", "replace", "warehouse", " ", " ", " ");
3500    addsnowflakecmds(ESqlStatementType.sstCreatePipe, TBaseType.rrw_create, "pipe", " ", " ", " ", " ", " ");
3501    addsnowflakecmds(ESqlStatementType.sstcreateprocedure, TBaseType.rrw_create, "procedure", " ", " ", " ", " ", " ");
3502    addsnowflakecmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create, "recursive", "view", " ", " ", " ", " ");
3503    addsnowflakecmds(ESqlStatementType.sstCreateResourceMonitor, TBaseType.rrw_create, "resource", "monitor", " ", " ", " ", " ");
3504    addsnowflakecmds(ESqlStatementType.sstcreaterole, TBaseType.rrw_create, "role", " ", " ", " ", " ", " ");
3505    addsnowflakecmds(ESqlStatementType.sstcreateschema, TBaseType.rrw_create, "schema", " ", " ", " ", " ", " ");
3506    addsnowflakecmds(ESqlStatementType.sstcreatematerializedview, TBaseType.rrw_create,"secure","materialized","view"," "," "," ");
3507    addsnowflakecmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create, "secure", "view", " ", " ", " ", " ");
3508    addsnowflakecmds(ESqlStatementType.sstcreatesequence, TBaseType.rrw_create, "sequence", " ", " ", " ", " ", " ");
3509    addsnowflakecmds(ESqlStatementType.sstCreateShare, TBaseType.rrw_create, "share", " ", " ", " ", " ", " ");
3510    addsnowflakecmds(ESqlStatementType.sstCreateStage, TBaseType.rrw_create, "stage", " ", " ", " ", " ", " ");
3511    addsnowflakecmds(ESqlStatementType.sstCreateStream, TBaseType.rrw_create, "stream", " ", " ", " ", " ", " ");
3512    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "table", " ", " ", " ", " ", " ");
3513    addsnowflakecmds(ESqlStatementType.sstCreateTask, TBaseType.rrw_create, "task", " ", " ", " ", " ", " ");
3514    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "temp", "table", " ", " ", " ", " ");
3515    addsnowflakecmds(ESqlStatementType.sstCreateStage, TBaseType.rrw_create,"temporary", "stage", " ", " ", " ", " ");
3516    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "temporary", "table", " ", " ", " ", " ");
3517    addsnowflakecmds(ESqlStatementType.sstcreatedatabase, TBaseType.rrw_create, "transient", "database", " ", " ", " ", " ");
3518    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "transient", "dynamic", "table", " ", " ", " ");
3519    addsnowflakecmds(ESqlStatementType.sstcreateschema, TBaseType.rrw_create, "transient","schema", " ", " ", " ", " ");
3520    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "transient", "table", " ", " "," "," ");
3521    addsnowflakecmds(ESqlStatementType.sstcreateuser, TBaseType.rrw_create, "user", " ", " ", " ", " ", " ");
3522    addsnowflakecmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create, "view", " ", " ", " ", " ", " ");
3523    addsnowflakecmds(ESqlStatementType.sstCreateWarehouse, TBaseType.rrw_create, "warehouse", " ", " ", " ", " ", " ");
3524
3525    addsnowflakecmds(ESqlStatementType.sstdelete, TBaseType.rrw_delete, " ", " ", " ", " ", " ", " ");
3526
3527    addsnowflakecmds(ESqlStatementType.sstDescFileFormat, TBaseType.rrw_snowflake_desc, "file", "format", " ", " ", " ", " ");
3528    addsnowflakecmds(ESqlStatementType.sstDescFunction, TBaseType.rrw_snowflake_desc, "function", " ", " ", " ", " ", " ");
3529    addsnowflakecmds(ESqlStatementType.sstDescNetworkPolicy, TBaseType.rrw_snowflake_desc, "network", "policy", " ", " ", " ", " ");
3530    addsnowflakecmds(ESqlStatementType.sstDescPipe, TBaseType.rrw_snowflake_desc, "pipe", " ", " ", " ", " ", " ");
3531    addsnowflakecmds(ESqlStatementType.sstDescResult, TBaseType.rrw_snowflake_desc, "result", " ", " ", " ", " ", " ");
3532    addsnowflakecmds(ESqlStatementType.sstDescShare, TBaseType.rrw_snowflake_desc, "share", " ", " ", " ", " ", " ");
3533    addsnowflakecmds(ESqlStatementType.sstDescStage, TBaseType.rrw_snowflake_desc, "stage", " ", " ", " ", " ", " ");
3534    addsnowflakecmds(ESqlStatementType.sstDescStorage, TBaseType.rrw_snowflake_desc, "storage", " ", " ", " ", " ", " ");
3535    addsnowflakecmds(ESqlStatementType.sstDescTable, TBaseType.rrw_snowflake_desc, "table", " ", " ", " ", " ", " ");
3536    addsnowflakecmds(ESqlStatementType.sstDescUser, TBaseType.rrw_snowflake_desc, "user", " ", " ", " ", " ", " ");
3537    addsnowflakecmds(ESqlStatementType.sstDescView, TBaseType.rrw_snowflake_desc, "view", " ", " ", " ", " ", " ");
3538
3539    addsnowflakecmds(ESqlStatementType.sstDescFileFormat, TBaseType.rrw_describe, "file", "format", " ", " ", " ", " ");
3540    addsnowflakecmds(ESqlStatementType.sstDescFunction, TBaseType.rrw_describe, "function", " ", " ", " ", " ", " ");
3541    addsnowflakecmds(ESqlStatementType.sstDescNetworkPolicy, TBaseType.rrw_describe, "network", "policy", " ", " ", " ", " ");
3542    addsnowflakecmds(ESqlStatementType.sstDescPipe, TBaseType.rrw_describe, "pipe", " ", " ", " ", " ", " ");
3543    addsnowflakecmds(ESqlStatementType.sstDescResult, TBaseType.rrw_describe, "result", " ", " ", " ", " ", " ");
3544    addsnowflakecmds(ESqlStatementType.sstDescShare, TBaseType.rrw_describe, "share", " ", " ", " ", " ", " ");
3545    addsnowflakecmds(ESqlStatementType.sstDescStage, TBaseType.rrw_describe, "stage", " ", " ", " ", " ", " ");
3546    addsnowflakecmds(ESqlStatementType.sstDescStorage, TBaseType.rrw_describe, "storage", " ", " ", " ", " ", " ");
3547    addsnowflakecmds(ESqlStatementType.sstDescTable, TBaseType.rrw_describe, "table", " ", " ", " ", " ", " ");
3548    addsnowflakecmds(ESqlStatementType.sstDescUser, TBaseType.rrw_describe, "user", " ", " ", " ", " ", " ");
3549    addsnowflakecmds(ESqlStatementType.sstDescView, TBaseType.rrw_describe, "view", " ", " ", " ", " ", " ");
3550
3551    addsnowflakecmds(ESqlStatementType.sstdropdatabase, TBaseType.rrw_drop, "database", " ", " ", " ", " ", " ");
3552    addsnowflakecmds(ESqlStatementType.sstDropFileFormat, TBaseType.rrw_drop, "file", "format", " ", " ", " ", " ");
3553    addsnowflakecmds(ESqlStatementType.sstdropfunction, TBaseType.rrw_drop, "function", " ", " ", " ", " ", " ");
3554    addsnowflakecmds(ESqlStatementType.sstDropMaterializedView, TBaseType.rrw_drop, "materialized", "view", " ", " ", " ", " ");
3555    addsnowflakecmds(ESqlStatementType.sstDropNetworkPolicy, TBaseType.rrw_drop, "network", "policy", " ", " ", " ", " ");
3556    addsnowflakecmds(ESqlStatementType.sstDropPipe, TBaseType.rrw_drop, "pipe", " ", " ", " ", " ", " ");
3557    addsnowflakecmds(ESqlStatementType.sstdropprocedure, TBaseType.rrw_drop, "procedure", " ", " ", " ", " ", " ");
3558    addsnowflakecmds(ESqlStatementType.sstDropResourceMonitor, TBaseType.rrw_drop, "resource", "monitor", " ", " ", " ", " ");
3559    addsnowflakecmds(ESqlStatementType.sstdroprole, TBaseType.rrw_drop, "role", " ", " ", " ", " ", " ");
3560    addsnowflakecmds(ESqlStatementType.sstdropschema, TBaseType.rrw_drop, "schema", " ", " ", " ", " ", " ");
3561    addsnowflakecmds(ESqlStatementType.sstDropShare, TBaseType.rrw_drop, "share", " ", " ", " ", " ", " ");
3562    addsnowflakecmds(ESqlStatementType.sstDropStage, TBaseType.rrw_drop, "stage", " ", " ", " ", " ", " ");
3563    addsnowflakecmds(ESqlStatementType.sstDropStream, TBaseType.rrw_drop, "stream", " ", " ", " ", " ", " ");
3564    addsnowflakecmds(ESqlStatementType.sstDropStreamlit, TBaseType.rrw_drop, "streamlit", " ", " ", " ", " ", " ");
3565    addsnowflakecmds(ESqlStatementType.sstdroptable, TBaseType.rrw_drop, "table", " ", " ", " ", " ", " ");
3566
3567    addsnowflakecmds(ESqlStatementType.sstdropuser, TBaseType.rrw_drop, "user", " ", " ", " ", " ", " ");
3568    addsnowflakecmds(ESqlStatementType.sstdropview, TBaseType.rrw_drop, "view", " ", " ", " ", " ", " ");
3569    addsnowflakecmds(ESqlStatementType.sstDropWarehouse, TBaseType.rrw_drop, "warehouse", " ", " ", " ", " ", " ");
3570
3571    addsnowflakecmds(ESqlStatementType.sstExecute, TBaseType.rrw_execute,  "immediate"," "," "," "," "," ");
3572
3573    addsnowflakecmds(ESqlStatementType.sstGet, TBaseType.rrw_get, " ", " ", " ", " ", " ", " ");
3574
3575    addsnowflakecmds(ESqlStatementType.sstGrant, TBaseType.rrw_grant, " ", " ", " ", " ", " ", " ");
3576
3577    addsnowflakecmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert, " ", " ", " ", " ", " ", " ");
3578
3579    addsnowflakecmds(ESqlStatementType.sstList, TBaseType.rrw_snowflake_list, " ", " ", " ", " ", " ", " ");
3580    addsnowflakecmds(ESqlStatementType.sstList, TBaseType.rrw_snowflake_ls, " ", " ", " ", " ", " ", " ");
3581
3582    addsnowflakecmds(ESqlStatementType.sstmerge, TBaseType.rrw_merge, " ", " ", " ", " ", " ", " ");
3583
3584    addsnowflakecmds(ESqlStatementType.sstSnowflakePseudoExprStmt, TBaseType.rrw_snowflake_pseudo_stmt_sign, " ", " ", " ", " ", " ", " ");
3585    addsnowflakecmds(ESqlStatementType.sstPut, TBaseType.rrw_snowflake_put, " ", " ", " ", " ", " ", " ");
3586
3587    addsnowflakecmds(ESqlStatementType.sstRemove, TBaseType.rrw_snowflake_remove, " ", " ", " ", " ", " ", " ");
3588
3589    addsnowflakecmds(ESqlStatementType.sstRevoke, TBaseType.rrw_revoke, " ", " ", " ", " ", " ", " ");
3590    addsnowflakecmds(ESqlStatementType.sstRemove, TBaseType.rrw_snowflake_rm, " ", " ", " ", " ", " ", " ");
3591    addsnowflakecmds(ESqlStatementType.sstrollback, TBaseType.rrw_rollback, " ", " ", " ", " ", " ", " ");
3592
3593
3594    addsnowflakecmds(ESqlStatementType.sstselect, TBaseType.rrw_select, " ", " ", " ", " ", " ", " ");
3595
3596    addsnowflakecmds(ESqlStatementType.sstset, TBaseType.rrw_set, " ", " ", " ", " ", " ", " ");
3597
3598    addsnowflakecmds(ESqlStatementType.sstShowColumns, TBaseType.rrw_show, "columns", " ", " ", " ", " ", " ");
3599    addsnowflakecmds(ESqlStatementType.sstShowDatabases, TBaseType.rrw_show, "databases", " ", " ", " ", " ", " ");
3600    addsnowflakecmds(ESqlStatementType.sstShowFileFormats, TBaseType.rrw_show, "file", "formats", " ", " ", " ", " ");
3601    addsnowflakecmds(ESqlStatementType.sstShowFunctions, TBaseType.rrw_show, "functions", " ", " ", " ", " ", " ");
3602    addsnowflakecmds(ESqlStatementType.sstShowGrants, TBaseType.rrw_show, "grants", " ", " ", " ", " ", " ");
3603    addsnowflakecmds(ESqlStatementType.sstShowLocks, TBaseType.rrw_show, "locks", " ", " ", " ", " ", " ");
3604    addsnowflakecmds(ESqlStatementType.sstShowNetworkPolicies, TBaseType.rrw_show, "network", "policies", " ", " ", " ", " ");
3605    addsnowflakecmds(ESqlStatementType.sstShowObjects, TBaseType.rrw_show, "objects", " ", " ", " ", " ", " ");
3606    addsnowflakecmds(ESqlStatementType.sstShowParameters, TBaseType.rrw_show, "parameters", " ", " ", " ", " ", " ");
3607    addsnowflakecmds(ESqlStatementType.sstShowPipes, TBaseType.rrw_show, "pipes", " ", " ", " ", " ", " ");
3608    addsnowflakecmds(ESqlStatementType.sstShowProcedures, TBaseType.rrw_show, "procedures", " ", " ", " ", " ", " ");
3609    addsnowflakecmds(ESqlStatementType.sstShowResourceMonitors, TBaseType.rrw_show, "resource", "monitors", " ", " ", " ", " ");
3610    addsnowflakecmds(ESqlStatementType.sstShowRoles, TBaseType.rrw_show, "roles", " ", " ", " ", " ", " ");
3611    addsnowflakecmds(ESqlStatementType.sstShowSchemas, TBaseType.rrw_show, "schemas", " ", " ", " ", " ", " ");
3612    addsnowflakecmds(ESqlStatementType.sstShowSequences, TBaseType.rrw_show, "sequences", " ", " ", " ", " ", " ");
3613    addsnowflakecmds(ESqlStatementType.sstShowShares, TBaseType.rrw_show, "shares", " ", " ", " ", " ", " ");
3614    addsnowflakecmds(ESqlStatementType.sstShowStages, TBaseType.rrw_show, "stages", " ", " ", " ", " ", " ");
3615    addsnowflakecmds(ESqlStatementType.sstShowStreams, TBaseType.rrw_show, "streams", " ", " ", " ", " ", " ");
3616    addsnowflakecmds(ESqlStatementType.sstShowTables, TBaseType.rrw_show, "tables", " ", " ", " ", " ", " ");
3617    addsnowflakecmds(ESqlStatementType.sstShowTasks, TBaseType.rrw_show, "tasks", " ", " ", " ", " ", " ");
3618    addsnowflakecmds(ESqlStatementType.sstShowDatabases, TBaseType.rrw_show, "terse", "databases", " ", " ", " ", " ");
3619    addsnowflakecmds(ESqlStatementType.sstShowStreams, TBaseType.rrw_show, "terse", "streams", " ", " ", " ", " ");
3620    addsnowflakecmds(ESqlStatementType.sstShowTasks, TBaseType.rrw_show, "terse", "tasks", " ", " ", " ", " ");
3621    addsnowflakecmds(ESqlStatementType.sstShowTransactions, TBaseType.rrw_show, "transactions", " ", " ", " ", " ", " ");
3622    addsnowflakecmds(ESqlStatementType.sstShowUserFunctions, TBaseType.rrw_show, "user", "functions", " ", " ", " ", " ");
3623    addsnowflakecmds(ESqlStatementType.sstShowUsers, TBaseType.rrw_show, "users", " ", " ", " ", " ", " ");
3624    addsnowflakecmds(ESqlStatementType.sstShowVariables, TBaseType.rrw_show, "variables", " ", " ", " ", " ", " ");
3625    addsnowflakecmds(ESqlStatementType.sstShowViews, TBaseType.rrw_show, "views", " ", " ", " ", " ", " ");
3626    addsnowflakecmds(ESqlStatementType.sstShowWarehouses, TBaseType.rrw_show, "warehouses", " ", " ", " ", " ", " ");
3627    addsnowflakecmds(ESqlStatementType.sstbegintran, TBaseType.rrw_start, "transaction", " ", " ", " ", " ", " ");
3628    addsnowflakecmds(ESqlStatementType.sstpostgresqlTruncate, TBaseType.rrw_truncate, " ", " ", " ", " ", " ", " ");
3629
3630    addsnowflakecmds(ESqlStatementType.sstUndropDatabase, TBaseType.rrw_snowflake_undrop, "database", " ", " ", " ", " ", " ");
3631    addsnowflakecmds(ESqlStatementType.sstUndropSchema, TBaseType.rrw_snowflake_undrop, "schema", " ", " ", " ", " ", " ");
3632    addsnowflakecmds(ESqlStatementType.sstUndropTable, TBaseType.rrw_snowflake_undrop, "table", " ", " ", " ", " ", " ");
3633
3634    addsnowflakecmds(ESqlStatementType.sstunset, TBaseType.rrw_snowflake_unset, " ", " ", " ", " ", " ", " ");
3635    addsnowflakecmds(ESqlStatementType.sstupdate, TBaseType.rrw_update, " ", " ", " ", " ", " ", " ");
3636    addsnowflakecmds(ESqlStatementType.sstUse, TBaseType.rrw_use, " ", " ", " ", " ", " ", " ");
3637    addsnowflakecmds(ESqlStatementType.sstUseSecondaryRoles, TBaseType.rrw_use, "secondary", "roles", " ", " ", " ", " ");
3638}
3639
3640void initredshiftcmds() {
3641// cmd must be sorted alphabetically
3642    addredshiftcmds(ESqlStatementType.sstredshiftAbort, TBaseType.rrw_abort, " ", " ", " ", " ", " ", " ");
3643    addredshiftcmds(ESqlStatementType.sstredshiftAbort, TBaseType.rrw_abort, "transaction", " ", " ", " ", " ", " ");
3644    addredshiftcmds(ESqlStatementType.sstredshiftAbort, TBaseType.rrw_abort, "work", " ", " ", " ", " ", " ");
3645    addredshiftcmds(ESqlStatementType.sstalterdatabase, TBaseType.rrw_alter, "database", " ", " ", " ", " ", " ");
3646    addredshiftcmds(ESqlStatementType.sstredshiftAlterGroup, TBaseType.rrw_alter, "group", " ", " ", " ", " ", " ");
3647    addredshiftcmds(ESqlStatementType.sstredshiftAlterSchema, TBaseType.rrw_alter, "schema", " ", " ", " ", " ", " ");
3648    addredshiftcmds(ESqlStatementType.sstaltertable, TBaseType.rrw_alter, "table", " ", " ", " ", " ", " ");
3649    addredshiftcmds(ESqlStatementType.sstredshiftAlterUser, TBaseType.rrw_alter, "user", " ", " ", " ", " ", " ");
3650    addredshiftcmds(ESqlStatementType.sstredshiftAnalyze, TBaseType.rrw_analyze, " ", " ", " ", " ", " ", " ");
3651    addredshiftcmds(ESqlStatementType.sstredshiftAnalyzeCompression, TBaseType.rrw_analyze, "Compression", " ", " ", " ", " ", " ");
3652    addredshiftcmds(ESqlStatementType.sstredshiftBegin, TBaseType.rrw_begin, " ", " ", " ", " ", " ", " ");
3653    addredshiftcmds(ESqlStatementType.sstredshiftCancel, TBaseType.rrw_redshift_cancel, " ", " ", " ", " ", " ", " ");
3654    addredshiftcmds(ESqlStatementType.sstcall, TBaseType.rrw_call, " ", " ", " ", " ", " ", " ");
3655
3656    addredshiftcmds(ESqlStatementType.sstredshiftClose, TBaseType.rrw_close, " ", " ", " ", " ", " ", " ");
3657    addredshiftcmds(ESqlStatementType.sstredshiftComment, TBaseType.rrw_comment, "on", " ", " ", " ", " ", " ");
3658    addredshiftcmds(ESqlStatementType.sstredshiftCommit, TBaseType.rrw_commit, " ", " ", " ", " ", " ", " ");
3659    addredshiftcmds(ESqlStatementType.sstredshiftCopy, TBaseType.rrw_redshift_copy, " ", " ", " ", " ", " ", " ");
3660    addredshiftcmds(ESqlStatementType.sstredshiftCreateSchema, TBaseType.rrw_create, "external", "schema", " ", " ", " ", " ");
3661    addredshiftcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "external", "table", " ", " ", " ", " ");
3662    addredshiftcmds(ESqlStatementType.sstcreatedatabase, TBaseType.rrw_create, "database", " ", " ", " ", " ", " ");
3663    addredshiftcmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create, "function", " ", " ", " ", " ", " ");
3664    addredshiftcmds(ESqlStatementType.sstredshiftCreateGroup, TBaseType.rrw_create, "group", " ", " ", " ", " ", " ");
3665    addredshiftcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "local", "table", " ", " ", " ", " ");
3666    addredshiftcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "local","temp", "table", " ", " ", " ");
3667    addredshiftcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "local","temporary", "table", " ", " ", " ");
3668    addredshiftcmds(ESqlStatementType.sstcreatematerializedview, TBaseType.rrw_create,"materialized","view"," "," "," "," ");
3669    addredshiftcmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create, "or", "replace","function", " ", " ", " ");
3670    addredshiftcmds(ESqlStatementType.sstcreatematerializedview, TBaseType.rrw_create,"or", "replace","materialized","view"," "," ");
3671    addredshiftcmds(ESqlStatementType.sstcreateprocedure, TBaseType.rrw_create, "or", "replace","procedure", " ", " ", " ");
3672    addredshiftcmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create, "or", "replace", "view", " ", " ", " ");
3673    addredshiftcmds(ESqlStatementType.sstcreateprocedure, TBaseType.rrw_create, "procedure", " ", " ", " ", " ", " ");
3674    addredshiftcmds(ESqlStatementType.sstredshiftCreateSchema, TBaseType.rrw_create, "schema", " ", " ", " ", " ", " ");
3675    addredshiftcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "table", " ", " ", " ", " ", " ");
3676    addredshiftcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "temp", "table", " ", " ", " ", " ");
3677    addredshiftcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "temporary", "table", " ", " ", " ", " ");
3678    addredshiftcmds(ESqlStatementType.sstredshiftCreateUser, TBaseType.rrw_create, "user", " ", " ", " ", " ", " ");
3679    addredshiftcmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create, "view", " ", " ", " ", " ", " ");
3680    addredshiftcmds(ESqlStatementType.sstredshiftDeallocate, TBaseType.rrw_deallocate, " ", " ", " ", " ", " ", " ");
3681    addredshiftcmds(ESqlStatementType.sstredshiftDeclare, TBaseType.rrw_declare, " ", " ", " ", " ", " ", " ");
3682    addredshiftcmds(ESqlStatementType.sstdelete, TBaseType.rrw_delete, " ", " ", " ", " ", " ", " ");
3683    addredshiftcmds(ESqlStatementType.sstredshiftDropDatabase, TBaseType.rrw_drop, "database", " ", " ", " ", " ", " ");
3684    addredshiftcmds(ESqlStatementType.sstredshiftDropGroup, TBaseType.rrw_drop, "group", " ", " ", " ", " ", " ");
3685    addredshiftcmds(ESqlStatementType.sstredshiftDropSchema, TBaseType.rrw_drop, "schema", " ", " ", " ", " ", " ");
3686    addredshiftcmds(ESqlStatementType.sstdroptable, TBaseType.rrw_drop, "table", " ", " ", " ", " ", " ");
3687    addredshiftcmds(ESqlStatementType.sstredshiftDropUser, TBaseType.rrw_drop, "user", " ", " ", " ", " ", " ");
3688    addredshiftcmds(ESqlStatementType.sstdropview, TBaseType.rrw_drop, "view", " ", " ", " ", " ", " ");
3689    addredshiftcmds(ESqlStatementType.sstredshiftEnd, TBaseType.rrw_end, " ", " ", " ", " ", " ", " ");
3690    addredshiftcmds(ESqlStatementType.sstExecutePreparedStmt, TBaseType.rrw_execute, " ", " ", " ", " ", " ", " ");
3691    addredshiftcmds(ESqlStatementType.sstExplain, TBaseType.rrw_explain, " ", " ", " ", " ", " ", " ");
3692    addredshiftcmds(ESqlStatementType.sstFetchFrom, TBaseType.rrw_fetch, " ", " ", " ", " ", " ", " ");
3693    addredshiftcmds(ESqlStatementType.sstGrant, TBaseType.rrw_grant, " ", " ", " ", " ", " ", " ");
3694    addredshiftcmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert, "into", " ", " ", " ", " ", " ");
3695    addredshiftcmds(ESqlStatementType.sstredshiftLock, TBaseType.rrw_lock, " ", " ", " ", " ", " ", " ");
3696    addredshiftcmds(ESqlStatementType.sstmerge, TBaseType.rrw_merge," "," "," "," "," "," ");
3697
3698    addredshiftcmds(ESqlStatementType.sstredshiftPrepare, TBaseType.rrw_prepare, " ", " ", " ", " ", " ", " ");
3699    addredshiftcmds(ESqlStatementType.sstredshiftReset, TBaseType.rrw_reset, " ", " ", " ", " ", " ", " ");
3700    addredshiftcmds(ESqlStatementType.sstRevoke, TBaseType.rrw_revoke, " ", " ", " ", " ", " ", " ");
3701    addredshiftcmds(ESqlStatementType.sstredshiftRollback, TBaseType.rrw_rollback, " ", " ", " ", " ", " ", " ");
3702    addredshiftcmds(ESqlStatementType.sstselect, TBaseType.rrw_select, " ", " ", " ", " ", " ", " ");
3703    addredshiftcmds(ESqlStatementType.sstredshiftSet, TBaseType.rrw_set, " ", " ", " ", " ", " ", " ");
3704    addredshiftcmds(ESqlStatementType.sstredshiftSetSessionAuthorization, TBaseType.rrw_set, "Authorization", " ", " ", " ", " ", " ");
3705    addredshiftcmds(ESqlStatementType.sstredshiftSetSessionCharacteristics, TBaseType.rrw_set, "Characteristics", " ", " ", " ", " ", " ");
3706    addredshiftcmds(ESqlStatementType.sstredshiftSetSessionAuthorization, TBaseType.rrw_set, "local", "Authorization", " ", " ", " ", " ");
3707    addredshiftcmds(ESqlStatementType.sstredshiftShow, TBaseType.rrw_show, " ", " ", " ", " ", " ", " ");
3708    addredshiftcmds(ESqlStatementType.sstStartTransaction, TBaseType.rrw_start, "Transaction", " ", " ", " ", " ", " ");
3709    addredshiftcmds(ESqlStatementType.sstTruncate, TBaseType.rrw_truncate, " ", " ", " ", " ", " ", " ");
3710    addredshiftcmds(ESqlStatementType.sstredshiftUnload, TBaseType.rrw_redshift_unload, " ", " ", " ", " ", " ", " ");
3711    addredshiftcmds(ESqlStatementType.sstupdate, TBaseType.rrw_update, " ", " ", " ", " ", " ", " ");
3712    addredshiftcmds(ESqlStatementType.sstredshiftVacuum, TBaseType.rrw_redshift_vacuum, " ", " ", " ", " ", " ", " ");
3713}
3714
3715void initgreenplumcmds(){
3716// cmd must be sorted alphabetically
3717    addgreenplumcmds(ESqlStatementType.sstpostgresqlabort, TBaseType.rrw_abort, " ", " ", " ", " ", " ", " ");
3718    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterAggregate, TBaseType.rrw_alter, "aggregate", " ", " ", " ", " ", " ");
3719    //addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterCollation, TBaseType.rrw_alter, "collation", " ", " ", " ", " ", " ");
3720    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterConversion, TBaseType.rrw_alter, "conversion", " ", " ", " ", " ", " ");
3721    addgreenplumcmds(ESqlStatementType.sstpostgresqlalterdatabase, TBaseType.rrw_alter, "database", " ", " ", " ", " ", " ");
3722    //addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterDefaultPrivileges, TBaseType.rrw_alter, "default", "privileges", " ", " ", " ", " ");
3723    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterDomain, TBaseType.rrw_alter, "domain", " ", " ", " ", " ", " ");
3724
3725    addgreenplumcmds(ESqlStatementType.sstgreenplumAlterExternalTable, TBaseType.rrw_alter, "external", "table", " ", " ", " ", " ");
3726    addgreenplumcmds(ESqlStatementType.sstgreenplumAlterFilespace, TBaseType.rrw_alter, "filespace", " ", " ", " ", " ", " ");
3727
3728//    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterEventTrigger, TBaseType.rrw_alter, "event", "trigger", " ", " ", " ", " ");
3729//    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterExtension, TBaseType.rrw_alter, "extension", " ", " ", " ", " ", " ");
3730//    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterForeignDataWrapper, TBaseType.rrw_alter, "foreign", "data", "wrapper", " ", " ", " ");
3731//    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterForeignTable, TBaseType.rrw_alter, "foreign", "Table", " ", " ", " ", " ");
3732
3733    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterfunction, TBaseType.rrw_alter, "function", " ", " ", " ", " ", " ");
3734    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterGroup, TBaseType.rrw_alter, "group", " ", " ", " ", " ", " ");
3735    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterIndex, TBaseType.rrw_alter, "index", " ", " ", " ", " ", " ");
3736    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterLanguage, TBaseType.rrw_alter, "language", " ", " ", " ", " ", " ");
3737//    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterLargeObject, TBaseType.rrw_alter, "large", "object", " ", " ", " ", " ");
3738    //addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterMaterializedView, TBaseType.rrw_alter, "materialized", "view", " ", " ", " ", " ");
3739    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterOperator, TBaseType.rrw_alter, "operator", " ", " ", " ", " ", " ");
3740    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterOperatorClass, TBaseType.rrw_alter, "operator", "class", " ", " ", " ", " ");
3741    //addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterOperatorFamily, TBaseType.rrw_alter, "operator", "family", " ", " ", " ", " ");
3742    //addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterLanguage, TBaseType.rrw_alter, "procedural", "language", " ", " ", " ", " ");
3743    addgreenplumcmds(ESqlStatementType.sstgreenplumAlterProtocol, TBaseType.rrw_alter, "protocol", " ", " ", " ", " ", " ");
3744    addgreenplumcmds(ESqlStatementType.sstgreenplumAlterResourceQueue, TBaseType.rrw_alter, "resource", "queue", " ", " ", " ", " ");
3745    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterRole, TBaseType.rrw_alter, "role", " ", " ", " ", " ", " ");
3746    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterSchema, TBaseType.rrw_alter, "schema", " ", " ", " ", " ", " ");
3747    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterSequence, TBaseType.rrw_alter, "sequence", " ", " ", " ", " ", " ");
3748    //addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterServer, TBaseType.rrw_alter, "server", " ", " ", " ", " ", " ");
3749    addgreenplumcmds(ESqlStatementType.sstaltertable, TBaseType.rrw_alter, "table", " ", " ", " ", " ", " ");
3750    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterTablespace, TBaseType.rrw_alter, "tablespace", " ", " ", " ", " ", " ");
3751
3752//    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterTextSearchConfiguration, TBaseType.rrw_alter, "text", "search", "configuration", " ", " ", " ");
3753//    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterTextSearchDictionary, TBaseType.rrw_alter, "text", "search", "dictionary", " ", " ", " ");
3754//    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterTextSearchParser, TBaseType.rrw_alter, "text", "search", "parser", " ", " ", " ");
3755//    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterTextSearchTemplate, TBaseType.rrw_alter, "text", "search", "template", " ", " ", " ");
3756    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterTrigger, TBaseType.rrw_alter, "trigger", " ", " ", " ", " ", " ");
3757
3758    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterType, TBaseType.rrw_alter, "type", " ", " ", " ", " ", " ");
3759    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterUser, TBaseType.rrw_alter, "user", " ", " ", " ", " ", " ");
3760//    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterUserMapping, TBaseType.rrw_alter, "user", "mapping", " ", " ", " ", " ");
3761//    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterView, TBaseType.rrw_alter, "view", " ", " ", " ", " ", " ");
3762    addgreenplumcmds(ESqlStatementType.sstpostgresqlAnalyze, TBaseType.rrw_greenplum_analyse, " ", " ", " ", " ", " ", " ");
3763    addgreenplumcmds(ESqlStatementType.sstpostgresqlAnalyze, TBaseType.rrw_analyze, " ", " ", " ", " ", " ", " ");
3764
3765    addgreenplumcmds(ESqlStatementType.sstpostgresqlBegin, TBaseType.rrw_begin, " ", " ", " ", " ", " ", " ");
3766    addgreenplumcmds(ESqlStatementType.sstcall, TBaseType.rrw_call, " ", " ", " ", " ", " ", " ");
3767
3768    addgreenplumcmds(ESqlStatementType.sstpostgresqlCheckpoint, TBaseType.rrw_checkpoint, " ", " ", " ", " ", " ", " ");
3769    addgreenplumcmds(ESqlStatementType.sstpostgresqlClose, TBaseType.rrw_close, " ", " ", " ", " ", " ", " ");
3770
3771    addgreenplumcmds(ESqlStatementType.sstpostgresqlCluster, TBaseType.rrw_greenplum_cluster, " ", " ", " ", " ", " ", " ");
3772
3773    addgreenplumcmds(ESqlStatementType.sstpostgresqlComment, TBaseType.rrw_comment, "on", " ", " ", " ", " ", " ");
3774
3775    addgreenplumcmds(ESqlStatementType.sstpostgresqlCommit, TBaseType.rrw_commit, " ", " ", " ", " ", " ", " ");
3776    //addgreenplumcmds(ESqlStatementType.sstpostgresqlCommitPrepared, TBaseType.rrw_commit, "prepared", " ", " ", " ", " ", " ");
3777    addgreenplumcmds(ESqlStatementType.sstpostgresqlCopy, TBaseType.rrw_greenplum_copy, " ", " ", " ", " ", " ", " ");
3778
3779    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateAggregate, TBaseType.rrw_create, "aggregate", " ", " ", " ", " ", " ");
3780    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateCast, TBaseType.rrw_create, "cast", " ", " ", " ", " ", " ");
3781
3782    //addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateCollation, TBaseType.rrw_create, "collation", " ", " ", " ", " ", " ");
3783
3784    addgreenplumcmds(ESqlStatementType.sstcreatetrigger, TBaseType.rrw_create, "constraint", "trigger", " ", " ", " ", " ");
3785
3786    addgreenplumcmds(ESqlStatementType.sstpostgresqlConversion, TBaseType.rrw_create, "conversion", " ", " ", " ", " ", " ");
3787    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateDatabase, TBaseType.rrw_create, "database", " ", " ", " ", " ", " ");
3788    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateDomain, TBaseType.rrw_create, "domain", " ", " ", " ", " ", " ");
3789    //addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateEventTrigger, TBaseType.rrw_create, "event", "trigger", " ", " ", " ", " ");
3790    addgreenplumcmds(ESqlStatementType.sstcreateExtension, TBaseType.rrw_create, "extension", " ", " ", " ", " ", " ");
3791
3792//    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateForeignDataWrapper, TBaseType.rrw_create, "foreign", "data", "wrapper", " ", " ", " ");
3793//    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateForeignTable, TBaseType.rrw_create, "foreign", "table", " ", " ", " ", " ");
3794    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateExternalTable, TBaseType.rrw_create, "external", "table", " ", " ", " ", " ");
3795    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateExternalTable, TBaseType.rrw_create, "external", "temp", "table", " ", " ", " ");
3796    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateExternalTable, TBaseType.rrw_create, "external", "temporary", "table", " ", " ", " ");
3797    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateExternalTable, TBaseType.rrw_create, "external", "web", "table", " ", " ", " ");
3798    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateExternalTable, TBaseType.rrw_create, "external", "web", "temp", "table", " ", " ");
3799    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateExternalTable, TBaseType.rrw_create, "external", "web", "temporary", "table", " ", " ");
3800    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateFilespace, TBaseType.rrw_create, "filespace", " ", " ", " ", " ", " ");
3801
3802    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateFunction, TBaseType.rrw_create, "function", " ", " ", " ", " ", " ");
3803
3804    addgreenplumcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "global", "temp", "table", " ", " ", " ");
3805    addgreenplumcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "global", "temporary", "table", " ", " ", " ");
3806    addgreenplumcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "global", "unlocked", "table", " ", " ", " ");
3807
3808    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateGroup, TBaseType.rrw_create, "group", " ", " ", " ", " ", " ");
3809
3810
3811    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateIndex, TBaseType.rrw_create, "index", " ", " ", " ", " ", " ");
3812    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateLanguage, TBaseType.rrw_create, "language", " ", " ", " ", " ", " ");
3813
3814    addgreenplumcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "local", "temp", "table", " ", " ", " ");
3815    addgreenplumcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "local", "temporary", "table", " ", " ", " ");
3816    addgreenplumcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "local", "unlocked", "table", " ", " ", " ");
3817
3818    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateMaterializedView, TBaseType.rrw_create, "materialized", "view", " ", " ", " ", " ");
3819
3820    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateOperator, TBaseType.rrw_create, "operator", " ", " ", " ", " ", " ");
3821//    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateOperatorClass, TBaseType.rrw_create, "operator", "class", " ", " ", " ", " ");
3822//    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateOperatorFimaly, TBaseType.rrw_create, "operator", "family", " ", " ", " ", " ");
3823
3824    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateExternalTable, TBaseType.rrw_create, "readable", "external", "table", " ", " ", " ");
3825    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateExternalTable, TBaseType.rrw_create, "readable", "external", "temp", "table", " ", " ");
3826    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateExternalTable, TBaseType.rrw_create, "readable", "external", "temporary", "table", " ", " ");
3827    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateExternalTable, TBaseType.rrw_create, "readable","external", "web", "table", " ", " ");
3828    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateExternalTable, TBaseType.rrw_create, "readable","external", "web", "temp", "table", " ");
3829    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateExternalTable, TBaseType.rrw_create, "readable","external", "web", "temporary", "table", " ");
3830    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateExternalTable, TBaseType.rrw_create, "writable", "external", "table", " ", " ", " ");
3831    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateExternalTable, TBaseType.rrw_create, "writable", "external", "temp", "table", " ", " ");
3832    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateExternalTable, TBaseType.rrw_create, "writable", "external", "temporary", "table", " ", " ");
3833    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateExternalTable, TBaseType.rrw_create, "writable","external", "web", "table", " ", " ");
3834    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateExternalTable, TBaseType.rrw_create, "writable","external", "web", "temp", "table", " ");
3835    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateExternalTable, TBaseType.rrw_create, "writable","external", "web", "temporary", "table", " ");
3836
3837    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateResourceQueue, TBaseType.rrw_create, "resource", "queue", " ", " ", " ", " ");
3838
3839    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateFunction, TBaseType.rrw_create, "or", "replace", "function", " ", " ", " ");
3840    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateLanguage, TBaseType.rrw_create, "or", "replace", "language", " ", " ", " ");
3841    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateRole, TBaseType.rrw_create, "or", "replace", "role ", " ", " ", " ");
3842    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateView, TBaseType.rrw_create, "or", "replace", "temp", "view", " ", " ");
3843    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateView, TBaseType.rrw_create, "or", "replace", "temporary", "view", " ", " ");
3844    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateLanguage, TBaseType.rrw_create, "or", "replace", "trusted", "language", " ", " ");
3845    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateView, TBaseType.rrw_create, "or", "replace", "view", " ", " ", " ");
3846
3847    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateRole, TBaseType.rrw_create, "role", " ", " ", " ", " ", " ");
3848    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateRule, TBaseType.rrw_create, "rule", " ", " ", " ", " ", " ");
3849
3850
3851    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateSchema, TBaseType.rrw_create, "schema", " ", " ", " ", " ", " ");
3852
3853    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateSequence, TBaseType.rrw_create, "sequence", " ", " ", " ", " ", " ");
3854
3855
3856    //addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateServer, TBaseType.rrw_create, "server", " ", " ", " ", " ", " ");
3857
3858    addgreenplumcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "table", " ", " ", " ", " ", " ");
3859
3860    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateTablespace, TBaseType.rrw_create, "tablespace", " ", " ", " ", " ", " ");
3861
3862    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateSequence, TBaseType.rrw_create, "temp", "sequence", " ", " ", " ", " ");
3863    addgreenplumcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "temp", "table", " ", " ", " ", " ");
3864    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateView, TBaseType.rrw_create, "temp", "view", " ", " ", " ", " ");
3865    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateSequence, TBaseType.rrw_create, "temporary", "sequence", " ", " ", " ", " ");
3866    addgreenplumcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "temporary", "table", " ", " ", " ", " ");
3867    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateView, TBaseType.rrw_create, "temporary", "view", " ", " ", " ", " ");
3868
3869//    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateTextSearchConfiguration, TBaseType.rrw_create, "text", "search", "configuration", " ", " ", " ");
3870//    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateTextSearchDictionary, TBaseType.rrw_create, "text", "search", "dictionary", " ", " ", " ");
3871//    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateTextSearchParser, TBaseType.rrw_create, "text", "search", "parser", " ", " ", " ");
3872//    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateTextSearchTemplate, TBaseType.rrw_create, "text", "search", "template", " ", " ", " ");
3873
3874    addgreenplumcmds(ESqlStatementType.sstcreatetrigger, TBaseType.rrw_create, "trigger", " ", " ", " ", " ", " ");
3875
3876    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateLanguage, TBaseType.rrw_create, "trusted", "language", " ", " ", " ", " ");
3877
3878    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateType, TBaseType.rrw_create, "type", " ", " ", " ", " ", " ");
3879
3880    addgreenplumcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "unlocked", "table", " ", " ", " ", " ");
3881
3882    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateUser, TBaseType.rrw_create, "user", " ", " ", " ", " ", " ");
3883
3884//    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateUserMapping, TBaseType.rrw_create, "user", "mapping", " ", " ", " ", " ");
3885
3886    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateView, TBaseType.rrw_create, "view", " ", " ", " ", " ", " ");
3887
3888    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateIndex, TBaseType.rrw_create, "unique", "index", " ", " ", " ", " ");
3889
3890    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateExternalTable, TBaseType.rrw_create, "writable", "external", "table", " ", " ", " ");
3891    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateExternalTable, TBaseType.rrw_create, "writable", "external", "web", "table", " ", " ");
3892
3893    addgreenplumcmds(ESqlStatementType.sstpostgresqlDeallocate, TBaseType.rrw_deallocate, " ", " ", " ", " ", " ", " ");
3894
3895    addgreenplumcmds(ESqlStatementType.sstpostgresqlDeclare, TBaseType.rrw_declare, " ", " ", " ", " ", " ", " ");
3896
3897    addgreenplumcmds(ESqlStatementType.sstdelete, TBaseType.rrw_delete, " ", " ", " ", " ", " ", " ");
3898
3899//    addgreenplumcmds(ESqlStatementType.sstpostgresqlDiscard, TBaseType.rrw_discard, " ", " ", " ", " ", " ", " ");
3900    addgreenplumcmds(ESqlStatementType.sstpostgresqlDo, TBaseType.rrw_do, " ", " ", " ", " ", " ", " ");
3901
3902    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropAggregate, TBaseType.rrw_drop, "aggregate", " ", " ", " ", " ", " ");
3903
3904    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropCast, TBaseType.rrw_drop, "cast", " ", " ", " ", " ", " ");
3905
3906//    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropCollation, TBaseType.rrw_drop, "collation", " ", " ", " ", " ", " ");
3907
3908    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropConversion, TBaseType.rrw_drop, "conversion", " ", " ", " ", " ", " ");
3909
3910    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropDatabase, TBaseType.rrw_drop, "database", " ", " ", " ", " ", " ");
3911
3912    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropDomain, TBaseType.rrw_drop, "domain", " ", " ", " ", " ", " ");
3913
3914    addgreenplumcmds(ESqlStatementType.sstgreenplumDropExternalTable, TBaseType.rrw_drop, "external", "table", " ", " ", " ", " ");
3915
3916    addgreenplumcmds(ESqlStatementType.sstgreenplumDropExternalTable, TBaseType.rrw_drop, "external", "web", "table", " ", " ", " ");
3917
3918    addgreenplumcmds(ESqlStatementType.sstgreenplumDropFilespace, TBaseType.rrw_drop, "filespace", " ", " ", " ", " ", " ");
3919
3920//    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropExtension, TBaseType.rrw_drop, "extension", " ", " ", " ", " ", " ");
3921//    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropForeignDataWrapper, TBaseType.rrw_drop, "foreign", "data", "wrapper", " ", " ", " ");
3922//    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropForeignTable, TBaseType.rrw_drop, "foreign", "table", " ", " ", " ", " ");
3923
3924    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropFunction, TBaseType.rrw_drop, "function", " ", " ", " ", " ", " ");
3925
3926    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropGroup, TBaseType.rrw_drop, "group", " ", " ", " ", " ", " ");
3927
3928    addgreenplumcmds(ESqlStatementType.sstdropindex, TBaseType.rrw_drop, "index", " ", " ", " ", " ", " ");
3929
3930    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropLanguage, TBaseType.rrw_drop, "language", " ", " ", " ", " ", " ");
3931
3932    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropMaterializedView, TBaseType.rrw_drop, "materialized", "view", " ", " ", " ", " ");
3933
3934    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropOperator, TBaseType.rrw_drop, "operator", " ", " ", " ", " ", " ");
3935//    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropOperatorClass, TBaseType.rrw_drop, "operator", "class", " ", " ", " ", " ");
3936//    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropOperatorFamily, TBaseType.rrw_drop, "operator", "family ", " ", " ", " ", " ");
3937
3938    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropOwned, TBaseType.rrw_drop, "owned", " ", " ", " ", " ", " ");
3939
3940
3941    addgreenplumcmds(ESqlStatementType.sstgreenplumDropResourceQueue, TBaseType.rrw_drop, "resource", "queue", " ", " ", " ", " ");
3942    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropLanguage, TBaseType.rrw_drop, "procedural", "language", " ", " ", " ", " ");
3943
3944    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropRole, TBaseType.rrw_drop, "role", " ", " ", " ", " ", " ");
3945    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropRule, TBaseType.rrw_drop, "rule", " ", " ", " ", " ", " ");
3946    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropSchema, TBaseType.rrw_drop, "schema", " ", " ", " ", " ", " ");
3947    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropSequence, TBaseType.rrw_drop, "sequence", " ", " ", " ", " ", " ");
3948    //addgreenplumcmds(ESqlStatementType.sstpostgresqlDropServer, TBaseType.rrw_drop, "server", " ", " ", " ", " ", " ");
3949    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropTable, TBaseType.rrw_drop, "table", " ", " ", " ", " ", " ");
3950    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropTablespace, TBaseType.rrw_drop, "tablespace", " ", " ", " ", " ", " ");
3951
3952//    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropTextSearchConfiguration, TBaseType.rrw_drop, "text", "search", "configuration", " ", " ", " ");
3953//    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropTextSearchDictionary, TBaseType.rrw_drop, "text", "search", "dictionary", " ", " ", " ");
3954//    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropTextSearchParser, TBaseType.rrw_drop, "text", "search", "parser", " ", " ", " ");
3955//    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropTextSearchTemplate, TBaseType.rrw_drop, "text", "search", "template", " ", " ", " ");
3956
3957    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropTrigger, TBaseType.rrw_drop, "trigger", " ", " ", " ", " ", " ");
3958    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropType, TBaseType.rrw_drop, "type", " ", " ", " ", " ", " ");
3959    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropUser, TBaseType.rrw_drop, "user", " ", " ", " ", " ", " ");
3960    //addgreenplumcmds(ESqlStatementType.sstpostgresqlDropUserMapping, TBaseType.rrw_drop, "user", "mapping", " ", " ", " ", " ");
3961    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropView, TBaseType.rrw_drop, "view", " ", " ", " ", " ", " ");
3962
3963    addgreenplumcmds(ESqlStatementType.sstpostgresqlEnd, TBaseType.rrw_end, " ", " ", " ", " ", " ", " ");
3964
3965    addgreenplumcmds(ESqlStatementType.sstpostgresqlExecute, TBaseType.rrw_execute, " ", " ", " ", " ", " ", " ");
3966
3967    addgreenplumcmds(ESqlStatementType.sstpostgresqlExplain, TBaseType.rrw_explain, " ", " ", " ", " ", " ", " ");
3968
3969    addgreenplumcmds(ESqlStatementType.sstFetchFrom, TBaseType.rrw_fetch, " ", " ", " ", " ", " ", " ");
3970
3971    addgreenplumcmds(ESqlStatementType.sstpostgresqlGrant, TBaseType.rrw_grant, " ", " ", " ", " ", " ", " ");
3972
3973    addgreenplumcmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert, " ", " ", " ", " ", " ", " ");
3974
3975//    addgreenplumcmds(ESqlStatementType.sstpostgresqlListen, TBaseType.rrw_listen, " ", " ", " ", " ", " ", " ");
3976
3977    addgreenplumcmds(ESqlStatementType.sstpostgresqlLoad, TBaseType.rrw_load, " ", " ", " ", " ", " ", " ");
3978
3979    addgreenplumcmds(ESqlStatementType.sstpostgresqlLock, TBaseType.rrw_lock, " ", " ", " ", " ", " ", " ");
3980
3981    addgreenplumcmds(ESqlStatementType.sstpostgresqlMove, TBaseType.rrw_move, " ", " ", " ", " ", " ", " ");
3982
3983    //addgreenplumcmds(ESqlStatementType.sstpostgresqlNotify, TBaseType.rrw_notify, " ", " ", " ", " ", " ", " ");
3984
3985    addgreenplumcmds(ESqlStatementType.sstpostgresqlPrepare, TBaseType.rrw_prepare, " ", " ", " ", " ", " ", " ");
3986
3987//    addgreenplumcmds(ESqlStatementType.sstpostgresqlPrepareTransaction, TBaseType.rrw_prepare, "transaction", " ", " ", " ", " ", " ");
3988
3989    addgreenplumcmds(ESqlStatementType.sstpostgresqlReassignOwned, TBaseType.rrw_greenplum_reassign, "owned", " ", " ", " ", " ", " ");
3990
3991    addgreenplumcmds(ESqlStatementType.sstpostgresqlRefreshMaterializedView, TBaseType.rrw_refresh, "materialized", "view", " ", " ", " ", " ");
3992
3993    addgreenplumcmds(ESqlStatementType.sstpostgresqlReindex, TBaseType.rrw_greenplum_reindex, " ", " ", " ", " ", " ", " ");
3994
3995    addgreenplumcmds(ESqlStatementType.sstpostgresqlReleaseSavepoint, TBaseType.rrw_release, " ", " ", " ", " ", " ", " ");
3996    addgreenplumcmds(ESqlStatementType.sstpostgresqlReleaseSavepoint, TBaseType.rrw_release, "savepoint", " ", " ", " ", " ", " ");
3997
3998    addgreenplumcmds(ESqlStatementType.sstpostgresqlReset, TBaseType.rrw_reset, " ", " ", " ", " ", " ", " ");
3999
4000    addgreenplumcmds(ESqlStatementType.sstpostgresqlRevoke, TBaseType.rrw_revoke, " ", " ", " ", " ", " ", " ");
4001
4002    addgreenplumcmds(ESqlStatementType.sstpostgresqlRollback, TBaseType.rrw_rollback, " ", " ", " ", " ", " ", " ");
4003//    addgreenplumcmds(ESqlStatementType.sstpostgresqlRollbackPrepared, TBaseType.rrw_rollback, "prepared", " ", " ", " ", " ", " ");
4004
4005    addgreenplumcmds(ESqlStatementType.sstpostgresqlSavepoint, TBaseType.rrw_savepoint, " ", " ", " ", " ", " ", " ");
4006
4007//    addgreenplumcmds(ESqlStatementType.sstpostgresqlSecurityLabel, TBaseType.rrw_security, "label", " ", " ", " ", " ", " ");
4008
4009    addgreenplumcmds(ESqlStatementType.sstselect, TBaseType.rrw_select, " ", " ", " ", " ", " ", " ");
4010
4011    addgreenplumcmds(ESqlStatementType.sstpostgresqlSet, TBaseType.rrw_set, " ", " ", " ", " ", " ", " ");
4012
4013//    addgreenplumcmds(ESqlStatementType.sstpostgresqlSetConstraints, TBaseType.rrw_set, "constraints", " ", " ", " ", " ", " ");
4014    addgreenplumcmds(ESqlStatementType.sstpostgresqlSetRole, TBaseType.rrw_set, "local", "role", " ", " ", " ", " ");
4015    addgreenplumcmds(ESqlStatementType.sstpostgresqlSetSessionAuthorization, TBaseType.rrw_set, "local", "session", "authorization", " ", " ", " ");
4016    addgreenplumcmds(ESqlStatementType.sstpostgresqlSetRole, TBaseType.rrw_set, "role", " ", " ", " ", " ", " ");
4017
4018    addgreenplumcmds(ESqlStatementType.sstpostgresqlSetSessionAuthorization, TBaseType.rrw_set, "session", "authorization", " ", " ", " ", " ");
4019    addgreenplumcmds(ESqlStatementType.sstpostgresqlSetTransaction, TBaseType.rrw_set, "session", "characteristics", "as", "transaction", " ", " ");
4020    addgreenplumcmds(ESqlStatementType.sstpostgresqlSetRole, TBaseType.rrw_set, "session", "role", " ", " ", " ", " ");
4021    addgreenplumcmds(ESqlStatementType.sstpostgresqlSetSessionAuthorization, TBaseType.rrw_set, "session", "session", "authorization", " ", " ", " ");
4022
4023    addgreenplumcmds(ESqlStatementType.sstpostgresqlSetTransaction, TBaseType.rrw_set, "transaction", " ", " ", " ", " ", " ");
4024
4025    addgreenplumcmds(ESqlStatementType.sstgreenplumShow, TBaseType.rrw_show, " ", " ", " ", " ", " ", " ");
4026
4027    addgreenplumcmds(ESqlStatementType.sstgreenplumStartTransaction, TBaseType.rrw_start, "transaction", " ", " ", " ", " ", " ");
4028
4029    addgreenplumcmds(ESqlStatementType.sstpostgresqlTruncate, TBaseType.rrw_truncate, " ", " ", " ", " ", " ", " ");
4030
4031    //addgreenplumcmds(ESqlStatementType.sstpostgresqlUnlisten, TBaseType.rrw_unlisten, " ", " ", " ", " ", " ", " ");
4032
4033    addgreenplumcmds(ESqlStatementType.sstupdate, TBaseType.rrw_update, " ", " ", " ", " ", " ", " ");
4034
4035    addgreenplumcmds(ESqlStatementType.sstgreenplumVacuum, TBaseType.rrw_greenplum_vacuum, " ", " ", " ", " ", " ", " ");
4036    addgreenplumcmds(ESqlStatementType.sstValues, TBaseType.rrw_values, " ", " ", " ", " ", " ", " ");
4037
4038}
4039
4040
4041void initoraclecmds(){
4042// cmd must be sort alphabetically
4043    addoraclecmds(ESqlStatementType.sstoraclealtercluster, TBaseType.rrw_alter,"cluster"," "," "," "," "," ");
4044    addoraclecmds(ESqlStatementType.sstoraclealterdatabase, TBaseType.rrw_alter,"database"," "," "," "," "," ");
4045    addoraclecmds(ESqlStatementType.sstoraclealterdimension, TBaseType.rrw_alter,"dimension"," "," "," "," "," ");
4046    addoraclecmds(ESqlStatementType.sstoraclealterdiskgroup, TBaseType.rrw_alter,"diskgroup"," "," "," "," "," ");
4047    addoraclecmds(ESqlStatementType.sstoraclealterfunction, TBaseType.rrw_alter,"function"," "," "," "," "," ");
4048    addoraclecmds(ESqlStatementType.sstoraclealterindex, TBaseType.rrw_alter,"index"," "," "," "," "," ");
4049    addoraclecmds(ESqlStatementType.sstoraclealterindextype, TBaseType.rrw_alter,"indextype"," "," "," "," "," ");
4050    addoraclecmds(ESqlStatementType.sstoraclealterjava, TBaseType.rrw_alter,"java"," "," "," "," "," ");
4051    addoraclecmds(ESqlStatementType.sstAlterMaterializedView, TBaseType.rrw_alter,"materialized","view"," "," "," "," ");
4052    addoraclecmds(ESqlStatementType.sstoraclealtermaterializedviewlog, TBaseType.rrw_alter,"materialized","view","log"," "," "," ");
4053    addoraclecmds(ESqlStatementType.sstoraclealteroperator, TBaseType.rrw_alter,"operator"," "," "," "," "," ");
4054    addoraclecmds(ESqlStatementType.sstoraclealteroutline, TBaseType.rrw_alter,"outline"," "," "," "," "," ");
4055    addoraclecmds(ESqlStatementType.sstoraclealterpackage, TBaseType.rrw_alter,"package"," "," "," "," "," ");
4056    addoraclecmds(ESqlStatementType.sstoraclealterprocedure, TBaseType.rrw_alter,"procedure"," "," "," "," "," ");
4057    addoraclecmds(ESqlStatementType.sstoraclealterprofile, TBaseType.rrw_alter,"profile"," "," "," "," "," ");
4058    addoraclecmds(ESqlStatementType.sstoraclealterresourcecost, TBaseType.rrw_alter,"resource","cost"," "," "," "," ");
4059    addoraclecmds(ESqlStatementType.sstoraclealterrole, TBaseType.rrw_alter,"role"," "," "," "," "," ");
4060    addoraclecmds(ESqlStatementType.sstoraclealterrollbacksegment, TBaseType.rrw_alter,"rollback","segment"," "," "," "," ");
4061    addoraclecmds(ESqlStatementType.sstoraclealtersequence, TBaseType.rrw_alter,"sequence"," "," "," "," "," ");
4062    addoraclecmds(ESqlStatementType.sstoraclealtersession, TBaseType.rrw_alter,"session"," "," "," "," "," ");
4063    addoraclecmds(ESqlStatementType.sstoraclealtersystem, TBaseType.rrw_alter,"system"," "," "," "," "," ");
4064    addoraclecmds(ESqlStatementType.sstaltertable, TBaseType.rrw_alter,"table"," "," "," "," "," ");
4065    addoraclecmds(ESqlStatementType.sstoraclealtertablespace, TBaseType.rrw_alter,"tablespace"," "," "," "," "," ");
4066    addoraclecmds(ESqlStatementType.sstaltertrigger, TBaseType.rrw_alter,"trigger"," "," "," "," "," ");
4067    addoraclecmds(ESqlStatementType.sstoraclealtertype, TBaseType.rrw_alter,"type"," "," "," "," "," ");
4068    addoraclecmds(ESqlStatementType.sstoraclealteruser, TBaseType.rrw_alter,"user"," "," "," "," "," ");
4069    addoraclecmds(ESqlStatementType.sstoraclealterview, TBaseType.rrw_alter,"view"," "," "," "," "," ");
4070    addoraclecmds(ESqlStatementType.sstoracleanalyze, TBaseType.rrw_analyze," "," "," "," "," "," ");
4071    addoraclecmds(ESqlStatementType.sstoracleassociatestatistics, TBaseType.rrw_associate,"statistics"," "," "," "," "," ");
4072    addoraclecmds(ESqlStatementType.sstoracleaudit, TBaseType.rrw_audit," "," "," "," "," "," ");
4073    addoraclecmds(ESqlStatementType.sstoraclecall, TBaseType.rrw_call," "," "," "," "," "," ");
4074    addoraclecmds(ESqlStatementType.sstCommentOn, TBaseType.rrw_comment," "," "," "," "," "," ");
4075    addoraclecmds(ESqlStatementType.sstoraclecommit, TBaseType.rrw_commit," "," "," "," "," "," ");
4076    addoraclecmds(ESqlStatementType.sstoraclecreatetablespace, TBaseType.rrw_create,"bigfile","tablespace"," "," "," "," ");
4077    addoraclecmds(ESqlStatementType.sstoraclecreateindex, TBaseType.rrw_create,"bitmap","index"," "," "," "," ");
4078    addoraclecmds(ESqlStatementType.sstoraclecreatecluster, TBaseType.rrw_create,"cluster"," "," "," "," "," ");
4079    addoraclecmds(ESqlStatementType.sstoraclecreatecontext, TBaseType.rrw_create,"context"," "," "," "," "," ");
4080    addoraclecmds(ESqlStatementType.sstoraclecreatecontrolfile, TBaseType.rrw_create,"controlfile"," "," "," "," "," ");
4081    addoraclecmds(ESqlStatementType.sstplsql_createfunction, TBaseType.rrw_create,"editionable","function"," "," "," "," ");
4082    addoraclecmds(ESqlStatementType.sstplsql_createpackage, TBaseType.rrw_create,"editionable","package"," "," "," "," ");
4083    addoraclecmds(ESqlStatementType.sstoraclecreatepackagebody, TBaseType.rrw_create,"editionable","package","body"," "," "," ");
4084    addoraclecmds(ESqlStatementType.sstplsql_createprocedure, TBaseType.rrw_create,"editionable","procedure"," "," "," "," ");
4085    addoraclecmds(ESqlStatementType.sstoraclecreateview, TBaseType.rrw_create,"editioning","view"," "," "," "," ");
4086    addoraclecmds(ESqlStatementType.sstoraclecreatedatabase, TBaseType.rrw_create,"database"," "," "," "," "," ");
4087    addoraclecmds(ESqlStatementType.sstoraclecreatedatabaselink, TBaseType.rrw_create,"database","link"," "," "," "," ");
4088    addoraclecmds(ESqlStatementType.sstoraclecreatedimension, TBaseType.rrw_create,"dimension"," "," "," "," "," ");
4089    addoraclecmds(ESqlStatementType.sstoraclecreatedirectory, TBaseType.rrw_create,"directory"," "," "," "," "," ");
4090    addoraclecmds(ESqlStatementType.sstoraclecreatediskgroup, TBaseType.rrw_create,"diskgroup"," "," "," "," "," ");
4091    addoraclecmds(ESqlStatementType.sstoraclecreateview, TBaseType.rrw_create,"force","view"," "," "," "," ");
4092    addoraclecmds(ESqlStatementType.sstplsql_createfunction, TBaseType.rrw_create,"function"," "," "," "," "," ");
4093    addoraclecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"global","temp","table"," "," "," ");
4094    addoraclecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"global","temporary","table"," "," "," ");
4095    addoraclecmds(ESqlStatementType.sstoraclecreateindex, TBaseType.rrw_create,"index"," "," "," "," "," ");
4096    addoraclecmds(ESqlStatementType.sstoraclecreateindextype, TBaseType.rrw_create,"indextype"," "," "," "," "," ");
4097    addoraclecmds(ESqlStatementType.sstoraclecreatejava, TBaseType.rrw_create,"java"," "," "," "," "," ");
4098    addoraclecmds(ESqlStatementType.sstoraclecreatelibrary, TBaseType.rrw_create,"library"," "," "," "," "," ");
4099    addoraclecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"local","temp","table"," "," "," ");
4100    addoraclecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"local","temporary","table"," "," "," ");
4101    addoraclecmds(ESqlStatementType.sstcreatematerializedview, TBaseType.rrw_create,"materialized","view"," "," "," "," ");
4102    addoraclecmds(ESqlStatementType.sstoraclecreatematerializedviewlog, TBaseType.rrw_create, "materialized","view","log"," "," "," ");
4103    addoraclecmds(ESqlStatementType.sstoraclecreateview, TBaseType.rrw_create,"noforce","view"," "," "," "," ");
4104    addoraclecmds(ESqlStatementType.sstplsql_createfunction, TBaseType.rrw_create,"noneditionable","function"," "," "," "," ");
4105    addoraclecmds(ESqlStatementType.sstplsql_createpackage, TBaseType.rrw_create,"noneditionable","package"," "," "," "," ");
4106    addoraclecmds(ESqlStatementType.sstoraclecreatepackagebody, TBaseType.rrw_create,"noneditionable","package","body"," "," "," ");
4107    addoraclecmds(ESqlStatementType.sstplsql_createprocedure, TBaseType.rrw_create,"noneditionable","procedure"," "," "," "," ");
4108    addoraclecmds(ESqlStatementType.sstoraclecreateoperator, TBaseType.rrw_create,"operator"," "," "," "," "," ");
4109    addoraclecmds(ESqlStatementType.sstoraclecreatecontext, TBaseType.rrw_create,"or","replace","context"," "," "," ");
4110    addoraclecmds(ESqlStatementType.sstoraclecreateview, TBaseType.rrw_create,"or","replace","editionable","editioning","view"," ");
4111    addoraclecmds(ESqlStatementType.sstplsql_createfunction, TBaseType.rrw_create,"or","replace","editionable","function"," "," ");
4112    addoraclecmds(ESqlStatementType.sstplsql_createpackage, TBaseType.rrw_create,"or","replace","editionable","package"," "," ");
4113    addoraclecmds(ESqlStatementType.sstoraclecreatepackagebody, TBaseType.rrw_create,"or","replace","editionable","package","body"," ");
4114    addoraclecmds(ESqlStatementType.sstplsql_createprocedure, TBaseType.rrw_create,"or","replace","editionable","procedure"," "," ");
4115    addoraclecmds(ESqlStatementType.sstplsql_createtrigger, TBaseType.rrw_create,"or","replace","editionable","trigger"," "," ");
4116    addoraclecmds(ESqlStatementType.sstoraclecreateview, TBaseType.rrw_create,"or","replace","editionable","view"," "," ");
4117    addoraclecmds(ESqlStatementType.sstoraclecreateview, TBaseType.rrw_create,"or","replace","editioning","view"," "," ");
4118    addoraclecmds(ESqlStatementType.sstoraclecreatedirectory, TBaseType.rrw_create,"or","replace","directory"," "," "," ");
4119    addoraclecmds(ESqlStatementType.sstoraclecreateview, TBaseType.rrw_create,"or","replace","force","view"," "," ");
4120    addoraclecmds(ESqlStatementType.sstoraclecreateview, TBaseType.rrw_create,"or","replace","force","editionable","view"," ");
4121    addoraclecmds(ESqlStatementType.sstoraclecreateview, TBaseType.rrw_create,"or","replace","force","editionable","editioning","view");
4122    addoraclecmds(ESqlStatementType.sstoraclecreateview, TBaseType.rrw_create,"or","replace","force","editioning","view"," ");
4123    addoraclecmds(ESqlStatementType.sstoraclecreateview, TBaseType.rrw_create,"or","replace","force","noneditionable","view"," ");
4124    addoraclecmds(ESqlStatementType.sstplsql_createfunction, TBaseType.rrw_create,"or","replace","function"," "," "," ");
4125    addoraclecmds(ESqlStatementType.sstoraclecreatelibrary, TBaseType.rrw_create,"or","replace","library"," "," "," ");
4126    addoraclecmds(ESqlStatementType.sstoraclecreateview, TBaseType.rrw_create,"or","replace","noforce","view"," "," ");
4127    addoraclecmds(ESqlStatementType.sstplsql_createfunction, TBaseType.rrw_create,"or","replace","noneditionable","function"," "," ");
4128    addoraclecmds(ESqlStatementType.sstplsql_createpackage, TBaseType.rrw_create,"or","replace","noneditionable","package"," "," ");
4129    addoraclecmds(ESqlStatementType.sstoraclecreatepackagebody, TBaseType.rrw_create,"or","replace","noneditionable","package","body"," ");
4130    addoraclecmds(ESqlStatementType.sstplsql_createprocedure, TBaseType.rrw_create,"or","replace","noneditionable","procedure"," "," ");
4131    addoraclecmds(ESqlStatementType.sstoraclecreatesynonym, TBaseType.rrw_create,"or","replace","noneditionable","public","synonym"," ");
4132    addoraclecmds(ESqlStatementType.sstplsql_createtrigger, TBaseType.rrw_create,"or","replace","noneditionable","trigger"," "," ");
4133    addoraclecmds(ESqlStatementType.sstoraclecreateview, TBaseType.rrw_create,"or","replace","noneditionable","view"," "," ");
4134    addoraclecmds(ESqlStatementType.sstplsql_createpackage, TBaseType.rrw_create,"or","replace","package"," "," "," ");
4135    addoraclecmds(ESqlStatementType.sstoraclecreatepackagebody, TBaseType.rrw_create,"or","replace","package","body"," "," ");
4136    addoraclecmds(ESqlStatementType.sstplsql_createprocedure, TBaseType.rrw_create,"or","replace","procedure"," "," "," ");
4137    addoraclecmds(ESqlStatementType.sstoraclecreatesynonym, TBaseType.rrw_create,"or","replace","public","synonym"," "," ");
4138    addoraclecmds(ESqlStatementType.sstoraclecreatesynonym, TBaseType.rrw_create,"or","replace","synonym"," "," "," ");
4139    addoraclecmds(ESqlStatementType.sstplsql_createtrigger, TBaseType.rrw_create,"or","replace","trigger"," "," "," ");
4140    addoraclecmds(ESqlStatementType.sstplsql_createtype_placeholder, TBaseType.rrw_create,"or","replace","type"," "," "," ");
4141    addoraclecmds(ESqlStatementType.sstplsql_createtypebody, TBaseType.rrw_create,"or","replace","type","body"," "," ");
4142    addoraclecmds(ESqlStatementType.sstoraclecreateview, TBaseType.rrw_create,"or","replace","view"," "," "," ");
4143    addoraclecmds(ESqlStatementType.sstoraclecreateoutline, TBaseType.rrw_create,"outline"," "," "," "," "," ");
4144    addoraclecmds(ESqlStatementType.sstplsql_createpackage, TBaseType.rrw_create,"package"," "," "," "," "," ");
4145    addoraclecmds(ESqlStatementType.sstoraclecreatepackagebody, TBaseType.rrw_create,"package","body"," "," "," "," ");
4146    addoraclecmds(ESqlStatementType.sstoraclecreatepfile, TBaseType.rrw_create,"pfile"," "," "," "," "," ");
4147    addoraclecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"private","temporary","table"," "," "," ");
4148    addoraclecmds(ESqlStatementType.sstplsql_createprocedure, TBaseType.rrw_create,"procedure"," "," "," "," "," ");
4149    addoraclecmds(ESqlStatementType.sstoraclecreateprofile, TBaseType.rrw_create,"profile"," "," "," "," "," ");
4150    addoraclecmds(ESqlStatementType.sstoraclecreatedatabaselink, TBaseType.rrw_create,"public","database","link"," "," "," ");
4151    addoraclecmds(ESqlStatementType.sstoraclecreatesynonym, TBaseType.rrw_create,"public","synonym"," "," "," "," ");
4152    addoraclecmds(ESqlStatementType.sstoraclecreaterestorepoint, TBaseType.rrw_create,"resotre","point"," "," "," "," ");
4153    addoraclecmds(ESqlStatementType.sstoraclecreaterole, TBaseType.rrw_create,"role"," "," "," "," "," ");
4154    addoraclecmds(ESqlStatementType.sstoraclecreaterollbacksegment, TBaseType.rrw_create,"rollback","segment"," "," "," "," ");
4155    addoraclecmds(ESqlStatementType.sstoraclecreatedatabaselink, TBaseType.rrw_create,"shared","database","link"," "," "," ");
4156    addoraclecmds(ESqlStatementType.sstoraclecreatedatabaselink, TBaseType.rrw_create,"shared","public","database","link"," "," ");
4157    addoraclecmds(ESqlStatementType.sstoraclecreateschema, TBaseType.rrw_create,"schema"," "," "," "," "," ");
4158    addoraclecmds(ESqlStatementType.sstoraclecreatesequence, TBaseType.rrw_create,"sequence"," "," "," "," "," ");
4159    addoraclecmds(ESqlStatementType.sstoraclecreatetablespace, TBaseType.rrw_create,"smallfile","tablespace"," "," "," "," ");
4160    addoraclecmds(ESqlStatementType.sstoraclecreatespfile, TBaseType.rrw_create,"spfile"," "," "," "," "," ");
4161    addoraclecmds(ESqlStatementType.sstoraclecreatesynonym, TBaseType.rrw_create,"synonym"," "," "," "," "," ");
4162    addoraclecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"table"," "," "," "," "," ");
4163    addoraclecmds(ESqlStatementType.sstoraclecreatetablespace, TBaseType.rrw_create,"tablespace"," "," "," "," "," ");
4164    addoraclecmds(ESqlStatementType.sstoraclecreatetablespace, TBaseType.rrw_create,"temporary","tablespace"," "," "," "," ");
4165    addoraclecmds(ESqlStatementType.sstplsql_createtrigger, TBaseType.rrw_create,"trigger"," "," "," "," "," ");
4166    addoraclecmds(ESqlStatementType.sstplsql_createtype_placeholder, TBaseType.rrw_create,"type"," "," "," "," "," ");
4167    addoraclecmds(ESqlStatementType.sstplsql_createtypebody, TBaseType.rrw_create,"type","body"," "," "," "," ");
4168    addoraclecmds(ESqlStatementType.sstoraclecreatetablespace, TBaseType.rrw_create,"undo","tablespace"," "," "," "," ");
4169    addoraclecmds(ESqlStatementType.sstoraclecreateindex, TBaseType.rrw_create,"unique","index"," "," "," "," ");
4170    addoraclecmds(ESqlStatementType.sstoraclecreateuser, TBaseType.rrw_create,"user"," "," "," "," "," ");
4171    addoraclecmds(ESqlStatementType.sstoraclecreateview, TBaseType.rrw_create,"view"," "," "," "," "," ");
4172    addoraclecmds(ESqlStatementType.sstplsql_createpackage, TBaseType.rrw_custom,"package"," "," "," "," "," ");
4173    addoraclecmds(ESqlStatementType.sstoraclecreatepackagebody, TBaseType.rrw_custom,"package","body"," "," "," "," ");
4174    addoraclecmds(ESqlStatementType.sstdelete, TBaseType.rrw_delete," "," "," "," "," "," ");
4175    addoraclecmds(ESqlStatementType.sstoracledisassociatestatistics, TBaseType.rrw_disassociate, "statistics"," "," "," "," "," ");
4176    addoraclecmds(ESqlStatementType.sstoracledropcluster, TBaseType.rrw_drop,"cluster"," "," "," "," "," ");
4177    addoraclecmds(ESqlStatementType.sstoracledropcontext, TBaseType.rrw_drop,"context"," "," "," "," "," ");
4178    addoraclecmds(ESqlStatementType.sstoracledropdatabase, TBaseType.rrw_drop,"database"," "," "," "," "," ");
4179    addoraclecmds(ESqlStatementType.sstoracledropdatabaselink, TBaseType.rrw_drop,"database","link"," "," "," "," ");
4180    addoraclecmds(ESqlStatementType.sstoracledropdimension, TBaseType.rrw_drop,"dimension"," "," "," "," "," ");
4181    addoraclecmds(ESqlStatementType.sstoracledropdirectory, TBaseType.rrw_drop,"directory"," "," "," "," "," ");
4182    addoraclecmds(ESqlStatementType.sstoracledropdiskgroup, TBaseType.rrw_drop,"diskgroup"," "," "," "," "," ");
4183    addoraclecmds(ESqlStatementType.sstoracledropfunction, TBaseType.rrw_drop,"function"," "," "," "," "," ");
4184    addoraclecmds(ESqlStatementType.sstoracledropindex, TBaseType.rrw_drop,"index"," "," "," "," "," ");
4185    addoraclecmds(ESqlStatementType.sstoracledropindextype, TBaseType.rrw_drop,"indextype"," "," "," "," "," ");
4186    addoraclecmds(ESqlStatementType.sstoracledropjava, TBaseType.rrw_drop,"java"," "," "," "," "," ");
4187    addoraclecmds(ESqlStatementType.sstoracledroplibrary, TBaseType.rrw_drop,"library"," "," "," "," "," ");
4188    addoraclecmds(ESqlStatementType.sstoracledropmaterializedview, TBaseType.rrw_drop,"materialized","view"," "," "," "," ");
4189    addoraclecmds(ESqlStatementType.sstoracledropmaterializedviewlog, TBaseType.rrw_drop,"materialized","view","log"," "," "," ");
4190    addoraclecmds(ESqlStatementType.sstoracledropoperator, TBaseType.rrw_drop,"operator"," "," "," "," "," ");
4191    addoraclecmds(ESqlStatementType.sstoracledropoutline, TBaseType.rrw_drop,"outline"," "," "," "," "," ");
4192    addoraclecmds(ESqlStatementType.sstoracledroppackage, TBaseType.rrw_drop,"package"," "," "," "," "," ");
4193    addoraclecmds(ESqlStatementType.sstoracledropprocedure, TBaseType.rrw_drop,"procedure"," "," "," "," "," ");
4194    addoraclecmds(ESqlStatementType.sstoracledropprofile, TBaseType.rrw_drop,"profile"," "," "," "," "," ");
4195    addoraclecmds(ESqlStatementType.sstoracledropdatabaselink, TBaseType.rrw_drop,"public","database","link"," "," "," ");
4196    addoraclecmds(ESqlStatementType.sstoracledropsynonym, TBaseType.rrw_drop,"public","synonym"," "," "," "," ");
4197    addoraclecmds(ESqlStatementType.sstoracledroprestorepoint, TBaseType.rrw_drop,"restore","point"," "," "," "," ");
4198    addoraclecmds(ESqlStatementType.sstoracledroprole, TBaseType.rrw_drop,"role"," "," "," "," "," ");
4199    addoraclecmds(ESqlStatementType.sstoracledroprollbacksegment, TBaseType.rrw_drop,"rollback","segment"," "," "," "," ");
4200    addoraclecmds(ESqlStatementType.sstoracledropsequence, TBaseType.rrw_drop,"sequence"," "," "," "," "," ");
4201    addoraclecmds(ESqlStatementType.sstoracledropsynonym, TBaseType.rrw_drop,"synonym"," "," "," "," "," ");
4202    addoraclecmds(ESqlStatementType.sstoracledroptable, TBaseType.rrw_drop,"table"," "," "," "," "," ");
4203    addoraclecmds(ESqlStatementType.sstoracledroptablespace, TBaseType.rrw_drop,"tablespace"," "," "," "," "," ");
4204    addoraclecmds(ESqlStatementType.sstoracledroptrigger, TBaseType.rrw_drop,"trigger"," "," "," "," "," ");
4205    addoraclecmds(ESqlStatementType.sstoracledroptype, TBaseType.rrw_drop,"type"," "," "," "," "," ");
4206    addoraclecmds(ESqlStatementType.sstoracledroptypebody, TBaseType.rrw_drop,"type","body"," "," "," "," ");
4207    addoraclecmds(ESqlStatementType.sstoracledropuser, TBaseType.rrw_drop,"user"," "," "," "," "," ");
4208    addoraclecmds(ESqlStatementType.sstoracledropview, TBaseType.rrw_drop,"view"," "," "," "," "," ");
4209    addoraclecmds(ESqlStatementType.sstoracleexecuteprocedure, TBaseType.rrw_execute," "," "," "," "," "," ");
4210    addoraclecmds(ESqlStatementType.sstplsql_execimmestmt, TBaseType.rrw_execute,"immediate"," "," "," "," "," ");
4211    addoraclecmds(ESqlStatementType.sstExplain, TBaseType.rrw_explain,"plan"," "," "," "," "," ");
4212    addoraclecmds(ESqlStatementType.sstoracleflashbackdatabase, TBaseType.rrw_flashback,"database"," "," "," "," "," ");
4213    addoraclecmds(ESqlStatementType.sstoracleflashbacktable, TBaseType.rrw_flashback,"table"," "," "," "," "," ");
4214    addoraclecmds(ESqlStatementType.sstoraclegrant, TBaseType.rrw_grant," "," "," "," "," "," ");
4215    addoraclecmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert," "," "," "," "," "," ");
4216    addoraclecmds(ESqlStatementType.sstoraclelocktable, TBaseType.rrw_lock,"table"," "," "," "," "," ");
4217    addoraclecmds(ESqlStatementType.sstmerge, TBaseType.rrw_merge," "," "," "," "," "," ");
4218    addoraclecmds(ESqlStatementType.sstoraclenoaudit, TBaseType.rrw_noaudit," "," "," "," "," "," ");
4219    addoraclecmds(ESqlStatementType.sstoraclepurge, TBaseType.rrw_purge," "," "," "," "," "," ");
4220    addoraclecmds(ESqlStatementType.sstoraclerename, TBaseType.rrw_rename," "," "," "," "," "," ");
4221    addoraclecmds(ESqlStatementType.sstoraclerevoke, TBaseType.rrw_revoke," "," "," "," "," "," ");
4222    addoraclecmds(ESqlStatementType.sstoraclerollback, TBaseType.rrw_rollback," "," "," "," "," "," ");
4223    addoraclecmds(ESqlStatementType.sstoraclesavepoint, TBaseType.rrw_savepoint," "," "," "," "," "," ");
4224    addoraclecmds(ESqlStatementType.sstselect, TBaseType.rrw_select," "," "," "," "," "," ");
4225    addoraclecmds(ESqlStatementType.sstoraclesetconstraint, TBaseType.rrw_set,"constraint"," "," "," "," "," ");
4226    addoraclecmds(ESqlStatementType.sstoraclesetconstraint, TBaseType.rrw_set,"constraints"," "," "," "," "," ");
4227    addoraclecmds(ESqlStatementType.sstoraclesetrole, TBaseType.rrw_set,"role"," "," "," "," "," ");
4228    addoraclecmds(ESqlStatementType.sstoraclesettransaction, TBaseType.rrw_set,"transaction"," "," "," "," "," ");
4229    addoraclecmds(ESqlStatementType.sstTruncate, TBaseType.rrw_truncate," "," "," "," "," "," ");
4230    addoraclecmds(ESqlStatementType.sstplsql_createtype_placeholder, TBaseType.rrw_type2," "," "," "," "," "," ");
4231    addoraclecmds(ESqlStatementType.sstupdate, TBaseType.rrw_update," "," "," "," "," "," ");
4232
4233}
4234
4235void initinformixcmds(){
4236// cmd must be sort alphabetically
4237    addinformixcmds(ESqlStatementType.sstinformixAllocateCollection, TBaseType.rrw_allocate,"collection"," "," "," "," "," ");
4238    addinformixcmds(ESqlStatementType.sstinformixAllocateDescriptor, TBaseType.rrw_allocate,"descriptor"," "," "," "," "," ");
4239    addinformixcmds(ESqlStatementType.sstinformixAlterAccess_Method, TBaseType.rrw_alter,"access_method"," "," "," "," "," ");
4240    addinformixcmds(ESqlStatementType.sstinformixAlterFragment, TBaseType.rrw_alter,"fragment"," "," "," "," "," ");
4241    addinformixcmds(ESqlStatementType.sstinformixAlterFunction, TBaseType.rrw_alter,"function"," "," "," "," "," ");
4242    addinformixcmds(ESqlStatementType.sstinformixAlterIndex, TBaseType.rrw_alter,"index"," "," "," "," "," ");
4243    addinformixcmds(ESqlStatementType.sstinformixAlterProcedure, TBaseType.rrw_alter,"procedure"," "," "," "," "," ");
4244    addinformixcmds(ESqlStatementType.sstinformixAlterRoutine, TBaseType.rrw_alter,"routine"," "," "," "," "," ");
4245    addinformixcmds(ESqlStatementType.sstinformixAlterSecurityLabelComponent, TBaseType.rrw_alter,"security","label","component"," "," "," ");
4246    addinformixcmds(ESqlStatementType.sstinformixAlterSequence, TBaseType.rrw_alter,"sequence"," "," "," "," "," ");
4247    addinformixcmds(ESqlStatementType.sstinformixAlterTable, TBaseType.rrw_alter,"table"," "," "," "," "," ");
4248    addinformixcmds(ESqlStatementType.sstinformixAlterTrustedContext, TBaseType.rrw_alter,"trusted","context"," "," "," "," ");
4249    addinformixcmds(ESqlStatementType.sstinformixAlterUser, TBaseType.rrw_alter,"user"," "," "," "," "," ");
4250    addinformixcmds(ESqlStatementType.sstinformixBegin, TBaseType.rrw_begin," "," "," "," "," "," ");
4251    addinformixcmds(ESqlStatementType.sstinformixClose, TBaseType.rrw_close," "," "," "," "," "," ");
4252    addinformixcmds(ESqlStatementType.sstinformixCloseDatabase, TBaseType.rrw_close,"database"," "," "," "," "," ");
4253    addinformixcmds(ESqlStatementType.sstinformixCommit, TBaseType.rrw_commit," "," "," "," "," "," ");
4254    addinformixcmds(ESqlStatementType.sstinformixConnect, TBaseType.rrw_informix_connect_to," "," "," "," "," "," ");
4255    addinformixcmds(ESqlStatementType.sstinformixCreateAccess_Method, TBaseType.rrw_create,"access_method"," "," "," "," "," ");
4256    addinformixcmds(ESqlStatementType.sstinformixCreateAggregate, TBaseType.rrw_create,"aggregate"," "," "," "," "," ");
4257    addinformixcmds(ESqlStatementType.sstinformixCreateCast, TBaseType.rrw_create,"cast"," "," "," "," "," ");
4258    addinformixcmds(ESqlStatementType.sstinformixCreateIndex, TBaseType.rrw_create,"cluster","index"," "," "," "," ");
4259    addinformixcmds(ESqlStatementType.sstinformixCreateDatabase, TBaseType.rrw_create,"database"," "," "," "," "," ");
4260    addinformixcmds(ESqlStatementType.sstinformixCreateFunction, TBaseType.rrw_create,"dba","function"," "," "," "," ");
4261    addinformixcmds(ESqlStatementType.sstinformixCreateProcedure, TBaseType.rrw_create,"dba","procedure"," "," "," "," ");
4262    addinformixcmds(ESqlStatementType.sstinformixCreateDefaultUser, TBaseType.rrw_create,"default","user"," "," "," "," ");
4263    addinformixcmds(ESqlStatementType.sstinformixCreateIndex, TBaseType.rrw_create,"distinct","cluster","index"," "," "," ");
4264    addinformixcmds(ESqlStatementType.sstinformixCreateIndex, TBaseType.rrw_create,"distinct","index"," "," "," "," ");
4265    addinformixcmds(ESqlStatementType.sstinformixCreateDistinctType, TBaseType.rrw_create,"distinct","type"," "," "," "," ");
4266    addinformixcmds(ESqlStatementType.sstinformixCreateExternalTable, TBaseType.rrw_create,"external","table"," "," "," "," ");
4267    addinformixcmds(ESqlStatementType.sstinformixCreateFunction, TBaseType.rrw_create,"function"," "," "," "," "," ");
4268    addinformixcmds(ESqlStatementType.sstinformixCreateFunctionFrom, TBaseType.rrw_create,"function","from"," "," "," "," ");
4269    addinformixcmds(ESqlStatementType.sstinformixCreateIndex, TBaseType.rrw_create,"index"," "," "," "," "," ");
4270    addinformixcmds(ESqlStatementType.sstinformixCreateOpaqueType, TBaseType.rrw_create,"opaque","type"," "," "," "," ");
4271    addinformixcmds(ESqlStatementType.sstinformixCreateOpclass, TBaseType.rrw_create,"opclass"," "," "," "," "," ");
4272    addinformixcmds(ESqlStatementType.sstinformixCreateSynonym, TBaseType.rrw_create,"private","synonym"," "," "," "," ");
4273    addinformixcmds(ESqlStatementType.sstinformixCreateProcedure, TBaseType.rrw_create,"procedure"," "," "," "," "," ");
4274    addinformixcmds(ESqlStatementType.sstinformixCreateProcedureFrom, TBaseType.rrw_create,"procedure","from"," "," "," "," ");
4275    addinformixcmds(ESqlStatementType.sstinformixCreateSynonym, TBaseType.rrw_create,"public","synonym"," "," "," "," ");
4276    addinformixcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"raw","table"," "," "," "," ");
4277    addinformixcmds(ESqlStatementType.sstinformixCreateRole, TBaseType.rrw_create,"role"," "," "," "," "," ");
4278    addinformixcmds(ESqlStatementType.sstinformixCreateRoutineFrom, TBaseType.rrw_create,"routine","from"," "," "," "," ");
4279    addinformixcmds(ESqlStatementType.sstinformixCreateRowType, TBaseType.rrw_create,"row","type"," "," "," "," ");
4280    addinformixcmds(ESqlStatementType.sstinformixCreateSchema, TBaseType.rrw_create,"schema"," "," "," "," "," ");
4281    addinformixcmds(ESqlStatementType.sstinformixCreateSecurityLabel, TBaseType.rrw_create,"security","label"," "," "," "," ");
4282    addinformixcmds(ESqlStatementType.sstinformixCreateSecurityLabelComponent, TBaseType.rrw_create,"security","label","component"," "," "," ");
4283    addinformixcmds(ESqlStatementType.sstinformixCreateSecurityPolicy, TBaseType.rrw_create,"security","policy"," "," "," "," ");
4284    addinformixcmds(ESqlStatementType.sstinformixCreateSequence, TBaseType.rrw_create,"sequence"," "," "," "," "," ");
4285    addinformixcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"standard","table"," "," "," "," ");
4286    addinformixcmds(ESqlStatementType.sstinformixCreateSynonym, TBaseType.rrw_create,"synonym"," "," "," "," "," ");
4287    addinformixcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"table"," "," "," "," "," ");
4288    addinformixcmds(ESqlStatementType.sstinformixCreateTempTable, TBaseType.rrw_create,"temp","table"," "," "," "," ");
4289    addinformixcmds(ESqlStatementType.sstcreatetrigger, TBaseType.rrw_create,"trigger"," "," "," "," "," ");
4290    addinformixcmds(ESqlStatementType.sstinformixCreateTrustedContext, TBaseType.rrw_create,"trusted","context"," "," "," "," ");
4291    addinformixcmds(ESqlStatementType.sstinformixCreateIndex, TBaseType.rrw_create,"unique","cluster","index"," "," "," ");
4292    addinformixcmds(ESqlStatementType.sstinformixCreateIndex, TBaseType.rrw_create,"unique","index"," "," "," "," ");
4293    addinformixcmds(ESqlStatementType.sstinformixCreateUser, TBaseType.rrw_create,"user"," "," "," "," "," ");
4294    addinformixcmds(ESqlStatementType.sstinformixCreateView, TBaseType.rrw_create,"view"," "," "," "," "," ");
4295    addinformixcmds(ESqlStatementType.sstinformixCreateXaDatasource, TBaseType.rrw_create,"xadatasource"," "," "," "," "," ");
4296    addinformixcmds(ESqlStatementType.sstinformixCreateXaDatasourceType, TBaseType.rrw_create,"xadatasource","type"," "," "," "," ");
4297    //addinformixcmds(ESqlStatementType.sstinformixDatabase, TBaseType.rrw_database," "," "," "," "," "," ");
4298    addinformixcmds(ESqlStatementType.sstinformixDeallocateCollection, TBaseType.rrw_deallocate,"collection"," "," "," "," "," ");
4299    addinformixcmds(ESqlStatementType.sstinformixDeallocateDescriptor, TBaseType.rrw_deallocate, "descriptor"," "," "," "," "," ");
4300    addinformixcmds(ESqlStatementType.sstinformixDeallocateRow, TBaseType.rrw_deallocate,"row"," "," "," "," "," ");
4301    addinformixcmds(ESqlStatementType.sstinformixDeclare, TBaseType.rrw_declare," "," "," "," "," "," ");
4302    addinformixcmds(ESqlStatementType.sstdelete, TBaseType.rrw_delete," "," "," "," "," "," ");
4303    addinformixcmds(ESqlStatementType.sstinformixDescribe, TBaseType.rrw_describe," "," "," "," "," "," ");
4304    addinformixcmds(ESqlStatementType.sstinformixDescribeInput, TBaseType.rrw_describe,"input"," "," "," "," "," ");
4305    addinformixcmds(ESqlStatementType.sstinformixDisconnect, TBaseType.rrw_disconnect," "," "," "," "," "," ");
4306    addinformixcmds(ESqlStatementType.sstinformixDropAccess_Method, TBaseType.rrw_drop,"access_method"," "," "," "," "," ");
4307    addinformixcmds(ESqlStatementType.sstinformixDropAggregate, TBaseType.rrw_drop,"aggregate"," "," "," "," "," ");
4308    addinformixcmds(ESqlStatementType.sstinformixDropCast, TBaseType.rrw_drop,"cast"," "," "," "," "," ");
4309    addinformixcmds(ESqlStatementType.sstdropdatabase, TBaseType.rrw_drop,"database"," "," "," "," "," ");
4310    addinformixcmds(ESqlStatementType.sstinformixDropFunction, TBaseType.rrw_drop,"function"," "," "," "," "," ");
4311    addinformixcmds(ESqlStatementType.sstinformixDropIndex, TBaseType.rrw_drop,"index"," "," "," "," "," ");
4312    addinformixcmds(ESqlStatementType.sstinformixDropOpclass, TBaseType.rrw_drop,"opclass"," "," "," "," "," ");
4313    addinformixcmds(ESqlStatementType.sstinformixDropProcedure, TBaseType.rrw_drop,"procedure"," "," "," "," "," ");
4314    addinformixcmds(ESqlStatementType.sstinformixDropRole, TBaseType.rrw_drop,"role"," "," "," "," "," ");
4315    addinformixcmds(ESqlStatementType.sstinformixDropRoutine, TBaseType.rrw_drop,"routine"," "," "," "," "," ");
4316    addinformixcmds(ESqlStatementType.sstinformixDropRowType, TBaseType.rrw_drop,"row","type"," "," "," "," ");
4317    addinformixcmds(ESqlStatementType.sstinformixDropSecurity, TBaseType.rrw_drop,"security"," "," "," "," "," ");
4318    addinformixcmds(ESqlStatementType.sstinformixDropSequence, TBaseType.rrw_drop,"sequence"," "," "," "," "," ");
4319    addinformixcmds(ESqlStatementType.sstinformixDropSynonym, TBaseType.rrw_drop,"synonym"," "," "," "," "," ");
4320    addinformixcmds(ESqlStatementType.sstinformixDropTable, TBaseType.rrw_drop,"table"," "," "," "," "," ");
4321    addinformixcmds(ESqlStatementType.sstinformixDropTrigger, TBaseType.rrw_drop,"trigger"," "," "," "," "," ");
4322    addinformixcmds(ESqlStatementType.sstinformixDropTrustedContext, TBaseType.rrw_drop,"trusted","context"," "," "," "," ");
4323    addinformixcmds(ESqlStatementType.sstinformixDropType, TBaseType.rrw_drop,"type"," "," "," "," "," ");
4324    addinformixcmds(ESqlStatementType.sstinformixDropUser, TBaseType.rrw_drop,"user"," "," "," "," "," ");
4325    addinformixcmds(ESqlStatementType.sstinformixDropView, TBaseType.rrw_drop,"view"," "," "," "," "," ");
4326    addinformixcmds(ESqlStatementType.sstinformixDropXaDatasource, TBaseType.rrw_drop,"xadatasource"," "," "," "," "," ");
4327    addinformixcmds(ESqlStatementType.sstinformixDropXaDatasourceType, TBaseType.rrw_drop,"xadatasource","type"," "," "," "," ");
4328    addinformixcmds(ESqlStatementType.sstinformixExecute, TBaseType.rrw_exec," "," "," "," "," "," ");
4329    addinformixcmds(ESqlStatementType.sstinformixExecute, TBaseType.rrw_execute," "," "," "," "," "," ");
4330    addinformixcmds(ESqlStatementType.sstinformixExecuteFunction, TBaseType.rrw_execute,"function"," "," "," "," "," ");
4331    addinformixcmds(ESqlStatementType.sstinformixExecuteImmediate, TBaseType.rrw_execute,"immediate"," "," "," "," "," ");
4332    addinformixcmds(ESqlStatementType.sstinformixExecuteProcedure, TBaseType.rrw_execute,"procedure"," "," "," "," "," ");
4333    addinformixcmds(ESqlStatementType.sstinformixFetch, TBaseType.rrw_fetch," "," "," "," "," "," ");
4334    addinformixcmds(ESqlStatementType.sstinformixFlush, TBaseType.rrw_flush," "," "," "," "," "," ");
4335    addinformixcmds(ESqlStatementType.sstinformixFree, TBaseType.rrw_free," "," "," "," "," "," ");
4336    addinformixcmds(ESqlStatementType.sstinformixGetDescriptor, TBaseType.rrw_get,"descriptor"," "," "," "," "," ");
4337    addinformixcmds(ESqlStatementType.sstinformixGetDiagnostics, TBaseType.rrw_get,"diagnostics"," "," "," "," "," ");
4338    addinformixcmds(ESqlStatementType.sstinformixGrant, TBaseType.rrw_grant," "," "," "," "," "," ");
4339    addinformixcmds(ESqlStatementType.sstinformixGrantFragment, TBaseType.rrw_grant,"fragment"," "," "," "," "," ");
4340    addinformixcmds(ESqlStatementType.sstinformixInfo, TBaseType.rrw_informix_info," "," "," "," "," "," ");
4341    addinformixcmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert, " "," "," "," "," "," ");
4342    addinformixcmds(ESqlStatementType.sstinformixLoad, TBaseType.rrw_load," "," "," "," "," "," ");
4343    addinformixcmds(ESqlStatementType.sstinformixLockTable, TBaseType.rrw_lock,"table"," "," "," "," "," ");
4344    addinformixcmds(ESqlStatementType.sstmerge, TBaseType.rrw_merge," "," "," "," "," "," ");
4345    addinformixcmds(ESqlStatementType.sstinformixOpen, TBaseType.rrw_open," "," "," "," "," "," ");
4346    addinformixcmds(ESqlStatementType.sstinformixOutput, TBaseType.rrw_informix_output," "," "," "," "," "," ");
4347    addinformixcmds(ESqlStatementType.sstinformixPrepare, TBaseType.rrw_prepare," "," "," "," "," "," ");
4348    addinformixcmds(ESqlStatementType.sstinformixPut, TBaseType.rrw_informix_put," "," "," "," "," "," ");
4349    addinformixcmds(ESqlStatementType.sstinformixReleaseSavepoint, TBaseType.rrw_release,"savepoint"," "," "," "," "," ");
4350    addinformixcmds(ESqlStatementType.sstinformixRenameColumn, TBaseType.rrw_rename,"column"," "," "," "," "," ");
4351    addinformixcmds(ESqlStatementType.sstinformixRenameDatabase, TBaseType.rrw_rename,"database"," "," "," "," "," ");
4352    addinformixcmds(ESqlStatementType.sstinformixRenameIndex, TBaseType.rrw_rename,"index"," "," "," "," "," ");
4353    addinformixcmds(ESqlStatementType.sstinformixRenameSecurity, TBaseType.rrw_rename,"security"," "," "," "," "," ");
4354    addinformixcmds(ESqlStatementType.sstinformixRenameSequence, TBaseType.rrw_rename,"sequence"," "," "," "," "," ");
4355    addinformixcmds(ESqlStatementType.sstinformixRenameTable, TBaseType.rrw_rename,"table"," "," "," "," "," ");
4356    addinformixcmds(ESqlStatementType.sstinformixRenameTrustedContext, TBaseType.rrw_rename,"trusted","context"," "," "," "," ");
4357    addinformixcmds(ESqlStatementType.sstinformixRenameUser, TBaseType.rrw_rename,"user"," "," "," "," "," ");
4358    addinformixcmds(ESqlStatementType.sstinformixRevoke, TBaseType.rrw_revoke," "," "," "," "," "," ");
4359    addinformixcmds(ESqlStatementType.sstinformixRevokeFragment, TBaseType.rrw_revoke,"fragment"," "," "," "," "," ");
4360    addinformixcmds(ESqlStatementType.sstinformixRollbackWork, TBaseType.rrw_rollback," "," "," "," "," "," ");
4361    addinformixcmds(ESqlStatementType.sstinformixRollbackWork, TBaseType.rrw_rollback,"work"," "," "," "," "," ");
4362    addinformixcmds(ESqlStatementType.sstinformixSaveExternalDirectives, TBaseType.rrw_save,"external","directives"," "," "," "," ");
4363    addinformixcmds(ESqlStatementType.sstinformixSavepoint, TBaseType.rrw_savepoint," "," "," "," "," "," ");
4364    addinformixcmds(ESqlStatementType.sstselect, TBaseType.rrw_select," "," "," "," "," "," ");
4365    addinformixcmds(ESqlStatementType.sstinformixSetAutofree, TBaseType.rrw_set,"autofree"," "," "," "," "," ");
4366    addinformixcmds(ESqlStatementType.sstinformixSetCollation, TBaseType.rrw_set,"collation"," "," "," "," "," ");
4367    addinformixcmds(ESqlStatementType.sstinformixSetConnection, TBaseType.rrw_set,"connection"," "," "," "," "," ");
4368    addinformixcmds(ESqlStatementType.sstinformixSetConstraints, TBaseType.rrw_set,"constraints"," "," "," "," "," ");
4369    addinformixcmds(ESqlStatementType.sstinformixSetDatabaseObject, TBaseType.rrw_set,"database","object"," "," "," "," ");
4370    addinformixcmds(ESqlStatementType.sstinformixSetDataskip, TBaseType.rrw_set,"dataskip"," "," "," "," "," ");
4371    addinformixcmds(ESqlStatementType.sstinformixSetDebugFile, TBaseType.rrw_set,"debug","file"," "," "," "," ");
4372    addinformixcmds(ESqlStatementType.sstinformixSetDeferred_Prepare, TBaseType.rrw_set,"defferred_prepare"," "," "," "," "," ");
4373    addinformixcmds(ESqlStatementType.sstinformixSetDescriptor, TBaseType.rrw_set,"descriptor"," "," "," "," "," ");
4374    addinformixcmds(ESqlStatementType.sstinformixSetEncryptionPassword, TBaseType.rrw_set,"encryption","password"," "," "," "," ");
4375    addinformixcmds(ESqlStatementType.sstinformixSetEnvironment, TBaseType.rrw_set,"environment"," "," "," "," "," ");
4376    addinformixcmds(ESqlStatementType.sstinformixSetExplain, TBaseType.rrw_set,"explain"," "," "," "," "," ");
4377    addinformixcmds(ESqlStatementType.sstinformixSetIndexes, TBaseType.rrw_set,"indexes"," "," "," "," "," ");
4378    addinformixcmds(ESqlStatementType.sstinformixSetIsolation, TBaseType.rrw_set,"isolation"," "," "," "," "," ");
4379    addinformixcmds(ESqlStatementType.sstinformixSetLockMode, TBaseType.rrw_set,"lock","mode"," "," "," "," ");
4380    addinformixcmds(ESqlStatementType.sstinformixSetLog, TBaseType.rrw_set,"log"," "," "," "," "," ");
4381    addinformixcmds(ESqlStatementType.sstinformixSetOptimization, TBaseType.rrw_set,"optimization"," "," "," "," "," ");
4382    addinformixcmds(ESqlStatementType.sstinformixSetPDQPriority, TBaseType.rrw_set,"pdqpriority"," "," "," "," "," ");
4383    addinformixcmds(ESqlStatementType.sstinformixSetRole, TBaseType.rrw_set,"role"," "," "," "," "," ");
4384    addinformixcmds(ESqlStatementType.sstinformixSetSessionAuthorization, TBaseType.rrw_set,"session","authorization"," "," "," "," ");
4385    addinformixcmds(ESqlStatementType.sstinformixSetStatementCache, TBaseType.rrw_set,"statement","cache"," "," "," "," ");
4386    addinformixcmds(ESqlStatementType.sstinformixSetTransaction, TBaseType.rrw_set,"transaction"," "," "," "," "," ");
4387    addinformixcmds(ESqlStatementType.sstinformixSetTransactionMode, TBaseType.rrw_set,"transaction","mode"," "," "," "," ");
4388    addinformixcmds(ESqlStatementType.sstinformixSetTriggers, TBaseType.rrw_set,"triggers"," "," "," "," "," ");
4389    addinformixcmds(ESqlStatementType.sstinformixSetUserPassword, TBaseType.rrw_set,"user","password"," "," "," "," ");
4390    addinformixcmds(ESqlStatementType.sstinformixStartViolationsTable, TBaseType.rrw_start,"violations","table"," "," "," "," ");
4391    addinformixcmds(ESqlStatementType.sstinformixStopViolationsTable, TBaseType.rrw_stop,"violations","table"," "," "," "," ");
4392    addinformixcmds(ESqlStatementType.sstTruncate, TBaseType.rrw_truncate," "," "," "," "," "," ");
4393    addinformixcmds(ESqlStatementType.sstinformixUnload, TBaseType.rrw_informix_unload," "," "," "," "," "," ");
4394    addinformixcmds(ESqlStatementType.sstinformixUnlockTable, TBaseType.rrw_unlock,"table"," "," "," "," "," ");
4395    addinformixcmds(ESqlStatementType.sstupdate, TBaseType.rrw_update," "," "," "," "," "," ");
4396    addinformixcmds(ESqlStatementType.sstinformixUpdateStatistics, TBaseType.rrw_update,"statistics"," "," "," "," "," ");
4397    addinformixcmds(ESqlStatementType.sstinformixWhenever, TBaseType.rrw_informix_whenever," "," "," "," "," "," ");
4398}
4399    public void initcouchbasecmds() {
4400        addcouchbasecmds(ESqlStatementType.sstBuildIndex,   TBaseType.rrw_couchbase_build, "index"," ", " ", " ", " ", " ");
4401        addcouchbasecmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create, "index", " ", " ", " ", " ", " ");
4402        addcouchbasecmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create, "primary", "index", " ", " ", " ", " ");
4403        addcouchbasecmds(ESqlStatementType.sstdelete, TBaseType.rrw_delete, " ", " ", " ", " ", " ", " ");
4404        addcouchbasecmds(ESqlStatementType.sstdropindex, TBaseType.rrw_drop, "index", " ", " ", " ", " ", " ");
4405        addcouchbasecmds(ESqlStatementType.sstdropindex, TBaseType.rrw_drop, "primary", "index", " ", " ", " ", " ");
4406        addcouchbasecmds(ESqlStatementType.sstExecutePreparedStmt, TBaseType.rrw_execute, " ", " ", " ", " ", " ", " ");
4407        addcouchbasecmds(ESqlStatementType.sstExplain, TBaseType.rrw_explain, " ", " ", " ", " ", " ", " ");
4408        addcouchbasecmds(ESqlStatementType.sstinfer, TBaseType.rrw_couchbase_infer, " ", " ", " ", " ", " ", " ");
4409        addcouchbasecmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert, " ", " ", " ", " ", " ", " ");
4410        addcouchbasecmds(ESqlStatementType.sstmerge, TBaseType.rrw_merge, " ", " ", " ", " ", " ", " ");
4411        addcouchbasecmds(ESqlStatementType.sstprepare, TBaseType.rrw_prepare, " ", " ", " ", " ", " ", " ");
4412        addcouchbasecmds(ESqlStatementType.sstselect, TBaseType.rrw_select, " ", " ", " ", " ", " ", " ");
4413        addcouchbasecmds(ESqlStatementType.sstupdate, TBaseType.rrw_update, " ", " ", " ", " ", " ", " ");
4414        addcouchbasecmds(ESqlStatementType.sstupsert, TBaseType.rrw_couchbase_upsert, " ", " ", " ", " ", " ", " ");
4415    }
4416
4417    void initverticacmds(){
4418
4419        addverticacmds(ESqlStatementType.sstActivateDirectedQuery, TBaseType.rrw_vertica_activate, "directed", "query",      " ", " ", " ", " ");
4420
4421        addverticacmds(ESqlStatementType.sstAlterAccessPolicy,   TBaseType.rrw_alter, "access",          "policy", " ", " ", " ", " ");
4422        addverticacmds(ESqlStatementType.sstAlterAuthentication, TBaseType.rrw_alter, "authentication", " ",      " ", " ", " ", " ");
4423        addverticacmds(ESqlStatementType.sstalterdatabase, TBaseType.rrw_alter, "database", " ", " ", " ", " ", " ");
4424        addverticacmds(ESqlStatementType.sstAlterFaultGroup, TBaseType.rrw_alter, "fault", "group", " ", " ", " ", " ");
4425        addverticacmds(ESqlStatementType.sstalterfunction, TBaseType.rrw_alter, "function", " ", " ", " ", " ", " ");
4426        addverticacmds(ESqlStatementType.sstAlterLibrary, TBaseType.rrw_alter, "library", " ", " ", " ", " ", " ");
4427        addverticacmds(ESqlStatementType.sstAlterNode, TBaseType.rrw_alter, "node", " ", " ", " ", " ", " ");
4428        addverticacmds(ESqlStatementType.sstAlterNetworkInterface, TBaseType.rrw_alter, "network", "interface", " ", " ", " ", " ");
4429        addverticacmds(ESqlStatementType.sstAlterProjection, TBaseType.rrw_alter, "projection", " ", " ", " ", " ", " ");
4430        addverticacmds(ESqlStatementType.sstAlterProfile, TBaseType.rrw_alter, "profile", " ", " ", " ", " ", " ");
4431        addverticacmds(ESqlStatementType.sstAlterResourcePool, TBaseType.rrw_alter, "resource", "pool", " ", " ", " ", " ");
4432        addverticacmds(ESqlStatementType.sstAlterRole, TBaseType.rrw_alter, "role", " ", " ", " ", " ", " ");
4433        addverticacmds(ESqlStatementType.sstAlterSchema, TBaseType.rrw_alter, "schema", " ", " ", " ", " ", " ");
4434        addverticacmds(ESqlStatementType.sstaltersequence, TBaseType.rrw_alter, "sequence", " ", " ", " ", " ", " ");
4435        addverticacmds(ESqlStatementType.sstaltersession, TBaseType.rrw_alter, "session", " ", " ", " ", " ", " ");
4436        addverticacmds(ESqlStatementType.sstAlterSubnet, TBaseType.rrw_alter, "subnet", " ", " ", " ", " ", " ");
4437        addverticacmds(ESqlStatementType.sstaltertable, TBaseType.rrw_alter, "table", " ", " ", " ", " ", " ");
4438        addverticacmds(ESqlStatementType.sstalteruser, TBaseType.rrw_alter, "user", " ", " ", " ", " ", " ");
4439        addverticacmds(ESqlStatementType.sstalterview, TBaseType.rrw_alter, "view", " ", " ", " ", " ", " ");
4440
4441        addverticacmds(ESqlStatementType.sstBegin, TBaseType.rrw_begin, " ", " ", " ", " ", " ", " ");
4442        addverticacmds(ESqlStatementType.sstcall, TBaseType.rrw_call, " ", " ", " ", " ", " ", " ");
4443
4444        addverticacmds(ESqlStatementType.sstCommentOn, TBaseType.rrw_comment, "on", " ", " ", " ", " ", " ");
4445        addverticacmds(ESqlStatementType.sstcommit, TBaseType.rrw_commit, " ", " ", " ", " ", " ", " ");
4446        addverticacmds(ESqlStatementType.sstconnect, TBaseType.rrw_connect, "to", " ", " ", " ", " ", " ");
4447        addverticacmds(ESqlStatementType.sstCopy, TBaseType.rrw_vertica_copy, " ", " ", " ", " ", " ", " ");
4448
4449        addverticacmds(ESqlStatementType.sstCreateAccessPolicy,   TBaseType.rrw_create, "access",          "policy", " ", " ", " ", " ");
4450        addverticacmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create , "aggregate", "function", " ", " ", " ", " ");
4451        addverticacmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create , "analytic", "function", " ", " ", " ", " ");
4452        addverticacmds(ESqlStatementType.sstCreateAuthentication, TBaseType.rrw_create, "authentication", " ",      " ", " ", " ", " ");
4453        addverticacmds(ESqlStatementType.sstCreateDirectedQuery, TBaseType.rrw_create, "directed", "query",      " ", " ", " ", " ");
4454        addverticacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "external", "table",      " ", " ", " ", " ");
4455        addverticacmds(ESqlStatementType.sstCreateFaultGroup, TBaseType.rrw_create , "fault", "group", " ", " ", " ", " ");
4456        addverticacmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create , "filter", " ", " ", " ", " ", " ");
4457        addverticacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create , "flex", "table", " ", " ", " ", " ");
4458        addverticacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create , "flex", "local", "temp", "table", " ", " ");
4459        addverticacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create , "flex", "local", "temporary", "table", " ", " ");
4460        addverticacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create , "flexible", "table", " ", " ", " ", " ");
4461        addverticacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create , "flexible", "local", "temp", "table", " ", " ");
4462        addverticacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create , "flexible", "local", "temporary", "table", " ", " ");
4463
4464        addverticacmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create , "function", " ", " ", " ", " ", " ");
4465        addverticacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create , "global", "temp", "table", " ", " ", " ");
4466        addverticacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create , "global", "temporary", "table", " ", " ", " ");
4467        addverticacmds(ESqlStatementType.sstCreateHCatalogSchema, TBaseType.rrw_create , "hcatalog", "schema", " ", " ", " ", " ");
4468        addverticacmds(ESqlStatementType.sstCreateLibrary, TBaseType.rrw_create, "library", " ", " ", " ", " ", " ");
4469        addverticacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create , "local", "temp", "table", " ", " ", " ");
4470        addverticacmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create , "local", "temp", "view", " ", " ", " ");
4471        addverticacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create , "local", "temporary", "table", " ", " ", " ");
4472        addverticacmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create , "local", "temporary", "view", " ", " ", " ");
4473        addverticacmds(ESqlStatementType.sstCreateLocation, TBaseType.rrw_create , "location", " ", " ", " ", " ", " ");
4474        addverticacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create , "managed", "external", "table", " ", " ", " ");
4475        addverticacmds(ESqlStatementType.sstCreateNetworkInterface, TBaseType.rrw_create, "network", "interface", " ", " ", " ", " ");
4476        addverticacmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create , "or", "replace", "aggregate", "function", " ", " ");
4477        addverticacmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create , "or", "replace", "function", " ", " ", " ");
4478        addverticacmds(ESqlStatementType.sstCreateLibrary, TBaseType.rrw_create , "or", "replace", "library", " ", " ", " ");
4479        addverticacmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create , "or", "replace", "local", "temp", "view", " ");
4480        addverticacmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create , "or", "replace", "local", "temporary", "view", " ");
4481        addverticacmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create , "or", "replace", "view", " ", " ", " ");
4482        addverticacmds(ESqlStatementType.sstcreateprocedure, TBaseType.rrw_create , "or", "replace", "procedure", " ", " ", " ");
4483
4484        addverticacmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create , "parser", " ", " ", " ", " ", " ");
4485        addverticacmds(ESqlStatementType.sstcreateprocedure, TBaseType.rrw_create , "procedure", " ", " ", " ", " ", " ");
4486        addverticacmds(ESqlStatementType.sstCreateProfile, TBaseType.rrw_create , "profile", " ", " ", " ", " ", " ");
4487        addverticacmds(ESqlStatementType.sstCreateProjection, TBaseType.rrw_create , "projection", " ", " ", " ", " ", " ");
4488        addverticacmds(ESqlStatementType.sstCreateResourcePool, TBaseType.rrw_create , "resource", "pool", " ", " ", " ", " ");
4489        addverticacmds(ESqlStatementType.sstcreaterole, TBaseType.rrw_create , "role", " ", " ", " ", " ", " ");
4490        addverticacmds(ESqlStatementType.sstcreateschema, TBaseType.rrw_create , "schema", " ", " ", " ", " ", " ");
4491        addverticacmds(ESqlStatementType.sstcreatesequence, TBaseType.rrw_create , "sequence", " ", " ", " ", " ", " ");
4492        addverticacmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create , "source", " ", " ", " ", " ", " ");
4493        addverticacmds(ESqlStatementType.sstCreateSubnet, TBaseType.rrw_create , "subnet", " ", " ", " ", " ", " ");
4494
4495        addverticacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create , "table", " ", " ", " ", " ", " ");
4496        addverticacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create , "temp", "table", " ", " ", " ", " ");
4497        addverticacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create , "temporary", "table", " ", " ", " ", " ");
4498        addverticacmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create , "text", "index", " ", " ", " ", " ");
4499        addverticacmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create , "transform", "function", " ", " ", " ", " ");
4500        addverticacmds(ESqlStatementType.sstcreateuser, TBaseType.rrw_create , "user", " ", " ", " ", " ", " ");
4501        addverticacmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create , "view", " ", " ", " ", " ", " ");
4502
4503        addverticacmds(ESqlStatementType.sstDeActivateDirectedQuery, TBaseType.rrw_vertica_deactivate, "directed", "query",      " ", " ", " ", " ");
4504
4505        addverticacmds(ESqlStatementType.sstdelete, TBaseType.rrw_delete , " ", " ", " ", " ", " ", " ");
4506        addverticacmds(ESqlStatementType.sstDisconnect, TBaseType.rrw_disconnect , " ", " ", " ", " ", " ", " ");
4507
4508        addverticacmds(ESqlStatementType.sstDeActivateDirectedQuery, TBaseType.rrw_drop, "directed", "query",      " ", " ", " ", " ");
4509        addverticacmds(ESqlStatementType.sstDropAccessPolicy,   TBaseType.rrw_drop, "access","policy", " ", " ", " ", " ");
4510        addverticacmds(ESqlStatementType.sstDropAggregateFunction, TBaseType.rrw_drop, "aggregate","function", " ", " ", " ", " ");
4511        addverticacmds(ESqlStatementType.sstDropAuthentication, TBaseType.rrw_drop, "authentication"," ", " ", " ", " ", " ");
4512
4513        addverticacmds(ESqlStatementType.sstDropFaultGroup, TBaseType.rrw_drop, "fault","group", " ", " ", " ", " ");
4514
4515        addverticacmds(ESqlStatementType.sstdropfunction, TBaseType.rrw_drop, "function"," ", " ", " ", " ", " ");
4516        addverticacmds(ESqlStatementType.sstDropLibrary, TBaseType.rrw_drop, "library"," ", " ", " ", " ", " ");
4517        addverticacmds(ESqlStatementType.sstDropNetworkInterface, TBaseType.rrw_drop, "network","interface", " ", " ", " ", " ");
4518        addverticacmds(ESqlStatementType.sstdropprocedure, TBaseType.rrw_drop, "procedure"," ", " ", " ", " ", " ");
4519        addverticacmds(ESqlStatementType.sstDropProfile, TBaseType.rrw_drop, "profile"," ", " ", " ", " ", " ");
4520        addverticacmds(ESqlStatementType.sstDropProjection, TBaseType.rrw_drop, "projection"," ", " ", " ", " ", " ");
4521        addverticacmds(ESqlStatementType.sstDropResourcePool, TBaseType.rrw_drop, "resource","pool", " ", " ", " ", " ");
4522        addverticacmds(ESqlStatementType.sstdroprole, TBaseType.rrw_drop, "role"," ", " ", " ", " ", " ");
4523        addverticacmds(ESqlStatementType.sstdropschema, TBaseType.rrw_drop, "schema"," ", " ", " ", " ", " ");
4524        addverticacmds(ESqlStatementType.sstdropsequence, TBaseType.rrw_drop, "sequence"," ", " ", " ", " ", " ");
4525        addverticacmds(ESqlStatementType.sstDropSubnet, TBaseType.rrw_drop, "subnet"," ", " ", " ", " ", " ");
4526        addverticacmds(ESqlStatementType.sstdroptable, TBaseType.rrw_drop, "table"," ", " ", " ", " ", " ");
4527        addverticacmds(ESqlStatementType.sstDropTextIndex, TBaseType.rrw_drop, "text","index", " ", " ", " ", " ");
4528        addverticacmds(ESqlStatementType.sstDropTransformFunction, TBaseType.rrw_drop, "transform","function", " ", " ", " ", " ");
4529        addverticacmds(ESqlStatementType.sstdropuser, TBaseType.rrw_drop, "user"," ", " ", " ", " ", " ");
4530        addverticacmds(ESqlStatementType.sstdropview, TBaseType.rrw_drop, "view"," ", " ", " ", " ", " ");
4531
4532        addverticacmds(ESqlStatementType.sstEnd, TBaseType.rrw_end, " ", " "," ", " ", " ", " ");
4533        addverticacmds(ESqlStatementType.sstExplain, TBaseType.rrw_explain, " ", " "," ", " ", " ", " ");
4534        addverticacmds(ESqlStatementType.sstExportToVertica, TBaseType.rrw_vertica_export, "to", "vertica"," ", " ", " ", " ");
4535        addverticacmds(ESqlStatementType.sstGrant, TBaseType.rrw_grant, " ", " "," ", " ", " ", " ");
4536        addverticacmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert, " ", " "," ", " ", " ", " ");
4537        addverticacmds(ESqlStatementType.sstmerge, TBaseType.rrw_merge, " ", " "," ", " ", " ", " ");
4538        addverticacmds(ESqlStatementType.sstProfile, TBaseType.rrw_vertica_profile, " ", " "," ", " ", " ", " ");
4539        addverticacmds(ESqlStatementType.sstReleaseSavepoint, TBaseType.rrw_release, " ", " "," ", " ", " ", " ");
4540        addverticacmds(ESqlStatementType.sstRevoke, TBaseType.rrw_revoke, " ", " "," ", " ", " ", " ");
4541        addverticacmds(ESqlStatementType.sstrollback, TBaseType.rrw_rollback, " ", " "," ", " ", " ", " ");
4542        addverticacmds(ESqlStatementType.sstsavepoint, TBaseType.rrw_savepoint, " ", " "," ", " ", " ", " ");
4543        addverticacmds(ESqlStatementType.sstselect, TBaseType.rrw_select, " ", " "," ", " ", " ", " ");
4544        addverticacmds(ESqlStatementType.sstset, TBaseType.rrw_set, "datestyle", "to"," ", " ", " ", " ");
4545        addverticacmds(ESqlStatementType.sstset, TBaseType.rrw_set, "escape_string_warning", "to"," ", " ", " ", " ");
4546        addverticacmds(ESqlStatementType.sstset, TBaseType.rrw_set, "intervalstyle", "to"," ", " ", " ", " ");
4547        addverticacmds(ESqlStatementType.sstset, TBaseType.rrw_set, "locale", " "," ", " ", " ", " ");
4548        addverticacmds(ESqlStatementType.sstset, TBaseType.rrw_set, "role", " "," ", " ", " ", " ");
4549        addverticacmds(ESqlStatementType.sstset, TBaseType.rrw_set, "search_path", " "," ", " ", " ", " ");
4550        addverticacmds(ESqlStatementType.sstset, TBaseType.rrw_set, "session", " "," ", " ", " ", " ");
4551        addverticacmds(ESqlStatementType.sstset, TBaseType.rrw_set, "standard_conforming_strings", " "," ", " ", " ", " ");
4552        addverticacmds(ESqlStatementType.sstset, TBaseType.rrw_set, "time", "zone"," ", " ", " ", " ");
4553        addverticacmds(ESqlStatementType.sstShow, TBaseType.rrw_show, " ", " "," ", " ", " ", " ");
4554        addverticacmds(ESqlStatementType.sstStartTransaction, TBaseType.rrw_start, " ", " "," ", " ", " ", " ");
4555        addverticacmds(ESqlStatementType.sstTruncate, TBaseType.rrw_truncate, "table", " "," ", " ", " ", " ");
4556        addverticacmds(ESqlStatementType.sstupdate, TBaseType.rrw_update, " ", " "," ", " ", " ", " ");
4557
4558
4559       // addverticacmds(ESqlStatementType.sstGetDirectedQuery, TBaseType.rrw_get, "directed", "query",      " ", " ", " ", " ");
4560       // addverticacmds(ESqlStatementType.sstSaveQuery, TBaseType.rrw_save, "query", " "," ", " ", " ", " ");
4561
4562    }
4563
4564    void inithanacmds(){
4565//alter
4566        addhanacmds(ESqlStatementType.sstalterauditpolicy, TBaseType.rrw_alter, "audit", "policy", " ", " ", " ", " ");
4567        addhanacmds(ESqlStatementType.sstaltercredential, TBaseType.rrw_alter, "credential", " ", " ", " ", " ", " ");
4568        addhanacmds(ESqlStatementType.sstalterdatabase, TBaseType.rrw_alter, "database", " ", " ", " ", " ", " ");
4569        addhanacmds(ESqlStatementType.sstalterfulltextindex, TBaseType.rrw_alter, "fulltext", "index", " ", " ", " ", " ");
4570        addhanacmds(ESqlStatementType.sstalterfunction, TBaseType.rrw_alter, "function", " ", " ", " ", " ", " ");
4571        addhanacmds(ESqlStatementType.sstalterindex, TBaseType.rrw_alter, "index", " ", " ", " ", " ", " ");
4572        addhanacmds(ESqlStatementType.sstalterldapprovider, TBaseType.rrw_alter, "ldap", "provider", " ", " ", " ", " ");
4573        addhanacmds(ESqlStatementType.sstalterjwtprovider, TBaseType.rrw_alter, "jwt", "provider", " ", " ", " ", " ");
4574        addhanacmds(ESqlStatementType.sstalterpse, TBaseType.rrw_alter, "pse", " ", " ", " ", " ", " ");
4575        addhanacmds(ESqlStatementType.sstalterprocedure, TBaseType.rrw_alter, "procedure", " ", " ", " ", " ", " ");
4576        addhanacmds(ESqlStatementType.sstalterremotesource, TBaseType.rrw_alter, "remote", "source", " ", " ", " ", " ");
4577        addhanacmds(ESqlStatementType.sstAlterRole, TBaseType.rrw_alter, "role", " ", " ", " ", " ", " ");
4578        addhanacmds(ESqlStatementType.sstaltersamlprovider, TBaseType.rrw_alter, "saml", "provider", " ", " ", " ", " ");
4579        addhanacmds(ESqlStatementType.sstaltersequence, TBaseType.rrw_alter, "sequence", " ", " ", " ", " ", " ");
4580        addhanacmds(ESqlStatementType.sstalterstatistics, TBaseType.rrw_alter, "statistics", " ", " ", " ", " ", " ");
4581        addhanacmds(ESqlStatementType.sstalterstructuredprivilege, TBaseType.rrw_alter, "structured", "privilege", " ", " ", " ", " ");
4582        addhanacmds(ESqlStatementType.sstaltersystem, TBaseType.rrw_alter, "system", " ", " ", " ", " ", " ");
4583        addhanacmds(ESqlStatementType.sstaltertable, TBaseType.rrw_alter, "table", " ", " ", " ", " ", " ");
4584        addhanacmds(ESqlStatementType.sstalteruser, TBaseType.rrw_alter, "user", " ", " ", " ", " ", " ");
4585        addhanacmds(ESqlStatementType.sstalterusergroup, TBaseType.rrw_alter, "usergroup", " ", " ", " ", " ", " ");
4586        addhanacmds(ESqlStatementType.sstalterview, TBaseType.rrw_alter, "view", " ", " ", " ", " ", " ");
4587        addhanacmds(ESqlStatementType.sstalterviewcache, TBaseType.rrw_alter, "view", "cache", " ", " ", " ", " ");
4588        addhanacmds(ESqlStatementType.sstaltervirtualtable, TBaseType.rrw_alter, "virtual", "table", " ", " ", " ", " ");
4589        addhanacmds(ESqlStatementType.sstalterworkloadclass, TBaseType.rrw_alter, "workload", "class", " ", " ", " ", " ");
4590        addhanacmds(ESqlStatementType.sstalterworkloadmapping, TBaseType.rrw_alter, "workload", "mapping", " ", " ", " ", " ");
4591
4592//backup
4593        addhanacmds(ESqlStatementType.sstbackupcancel, TBaseType.rrw_backup,"cancel"," "," "," "," "," ");
4594        addhanacmds(ESqlStatementType.sstbackupcatalogdelete, TBaseType.rrw_backup, "catalog", "delete", " ", " ", " ", " ");
4595        addhanacmds(ESqlStatementType.sstbackupcheck, TBaseType.rrw_backup,"check"," "," "," "," "," ");
4596        addhanacmds(ESqlStatementType.sstbackupcheckaccess, TBaseType.rrw_backup, "check", "access", " ", " ", " ", " ");
4597        addhanacmds(ESqlStatementType.sstbackupdata, TBaseType.rrw_backup, "data", " ", " ", " ", " ", " ");
4598        addhanacmds(ESqlStatementType.sstbackuplistdata, TBaseType.rrw_backup, "list", "data", " ", " ", " ", " ");
4599
4600        addhanacmds(ESqlStatementType.sstcall, TBaseType.rrw_call, " ", " ", " ", " ", " ", " ");
4601
4602//commit
4603        addhanacmds(ESqlStatementType.sstcomment, TBaseType.rrw_comment, "on", " ", " ", " ", " ", " ");
4604        addhanacmds(ESqlStatementType.sstcommit, TBaseType.rrw_commit, " ", " ", " ", " ", " ", " ");
4605        addhanacmds(ESqlStatementType.sstconnect, TBaseType.rrw_connect, " ", " ", " ", " ", " ", " ");
4606
4607//create
4608        addhanacmds(ESqlStatementType.sstcreateauditpolicy, TBaseType.rrw_create, "audit", "policy", " ", " ", " ", " ");
4609        addhanacmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create, "btree", "index", " ", " ", " ", " ");
4610        addhanacmds(ESqlStatementType.sstcreatecertificate, TBaseType.rrw_create, "certificate", " ", " ", " ", " ", " ");
4611        addhanacmds(ESqlStatementType.sstcreatecollection, TBaseType.rrw_create, "collection", " ", " ", " ", " ", " ");
4612        addhanacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "column", "table", " ", " ", " ", " ");
4613        addhanacmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create, "cpbtree", "index", " ", " ", " ", " ");
4614        addhanacmds(ESqlStatementType.sstcreatecredential, TBaseType.rrw_create, "credential", " ", " ", " ", " ", " ");
4615        addhanacmds(ESqlStatementType.sstcreatedatabase, TBaseType.rrw_create, "database", " ", " ", " ", " ", " ");
4616        addhanacmds(ESqlStatementType.sstcreatefulltextindex, TBaseType.rrw_create, "fulltext", "index", " ", " ", " ", " ");
4617        addhanacmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create, "function", " ", " ", " ", " ", " ");
4618        addhanacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "global", "temporary", "column", "table", " ", " ");
4619        addhanacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"global","temporary","table"," "," "," ");
4620        addhanacmds(ESqlStatementType.sstcreategraphworkspace, TBaseType.rrw_create, "graph", "workspace", " ", " ", " ", " ");
4621        addhanacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"history","column","table"," "," "," ");
4622        addhanacmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create, "index", " ", " ", " ", " ", " ");
4623        addhanacmds(ESqlStatementType.sstcreateJWTProvider, TBaseType.rrw_create, "jwt", "provider", " ", " ", " ", " ");
4624        addhanacmds(ESqlStatementType.sstcreateLDAPProvider, TBaseType.rrw_create, "ldap", "provider", " ", " ", " ", " ");
4625        addhanacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"local","temporary","column","table"," "," ");
4626        addhanacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "local", "temporary", "table", " ", " ", " ");
4627        addhanacmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create, "or", "replace", "force", "editionable", "view", " ");
4628        addhanacmds(ESqlStatementType.sstcreatesynonym, TBaseType.rrw_create, "or", "replace", "public", "synonym", " ", " ");
4629        addhanacmds(ESqlStatementType.sstcreatesynonym, TBaseType.rrw_create, "or", "replace", "synonym", " ", " ", " ");
4630        addhanacmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create, "or", "replace", "view", " ", " ", " ");
4631        addhanacmds(ESqlStatementType.sstcreateprocedure, TBaseType.rrw_create, "procedure", " ", " ", " ", " ", " ");
4632        addhanacmds(ESqlStatementType.sstcreatepse, TBaseType.rrw_create, "pse", " ", " ", " ", " ", " ");
4633        addhanacmds(ESqlStatementType.sstcreatesynonym, TBaseType.rrw_create, "public", "synonym", " ", " ", " ", " ");
4634        addhanacmds(ESqlStatementType.sstcreateremotesource, TBaseType.rrw_create, "remote", "source", " ", " ", " ", " ");
4635        addhanacmds(ESqlStatementType.sstcreateuser, TBaseType.rrw_create, "restricted", "user", " ", " ", " ", " ");
4636        addhanacmds(ESqlStatementType.sstcreaterole, TBaseType.rrw_create, "role", " ", " ", " ", " ", " ");
4637        addhanacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "row", "table", " ", " ", " ", " ");
4638        addhanacmds(ESqlStatementType.sstcreatesamlprovider, TBaseType.rrw_create, "saml", "provider", " ", " ", " ", " ");
4639        addhanacmds(ESqlStatementType.sstcreateschema, TBaseType.rrw_create, "schema", " ", " ", " ", " ", " ");
4640        addhanacmds(ESqlStatementType.sstcreatesequence, TBaseType.rrw_create, "sequence", " ", " ", " ", " ", " ");
4641        addhanacmds(ESqlStatementType.sstcreatestatistics, TBaseType.rrw_create, "statistics", " ", " ", " ", " ", " ");
4642        addhanacmds(ESqlStatementType.sstcreatestructuredprivilege, TBaseType.rrw_create, "structured", "privilege", " ", " ", " ", " ");
4643        addhanacmds(ESqlStatementType.sstcreatesynonym, TBaseType.rrw_create, "synonym", " ", " ", " ", " ", " ");
4644        addhanacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "table", " ", " ", " ", " ", " ");
4645        addhanacmds(ESqlStatementType.sstcreatetrigger, TBaseType.rrw_create, "trigger", " ", " ", " ", " ", " ");
4646        addhanacmds(ESqlStatementType.sstcreatetype, TBaseType.rrw_create, "type", " ", " ", " ", " ", " ");
4647        addhanacmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create, "unique", "index", " ", " ", " ", " ");
4648        addhanacmds(ESqlStatementType.sstcreateuser, TBaseType.rrw_create, "user", " ", " ", " ", " ", " ");
4649        addhanacmds(ESqlStatementType.sstcreateusergroup, TBaseType.rrw_create, "usergroup", " ", " ", " ", " ", " ");
4650        addhanacmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create, "view", " ", " ", " ", " ", " ");
4651        addhanacmds(ESqlStatementType.sstcreatevirtualfunction, TBaseType.rrw_create, "virtual", "function", " ", " ", " ", " ");
4652        addhanacmds(ESqlStatementType.sstcreatevirtualtable, TBaseType.rrw_create, "virtual", "table", " ", " ", " ", " ");
4653        addhanacmds(ESqlStatementType.sstcreateworkloadclass, TBaseType.rrw_create, "workload", "class", " ", " ", " ", " ");
4654        addhanacmds(ESqlStatementType.sstcreateworkloadmapping, TBaseType.rrw_create, "workload", "mapping", " ", " ", " ", " ");
4655
4656//DELETE
4657        addhanacmds(ESqlStatementType.sstdelete, TBaseType.rrw_delete, " ", " ", " ", " ", " ", " ");
4658
4659        addhanacmds(ESqlStatementType.sstdobeginend, TBaseType.rrw_do, "begin", " ", " ", " ", " ", " ");
4660
4661//drop
4662        addhanacmds(ESqlStatementType.sstdropauditpolicy, TBaseType.rrw_drop, "audit", "policy", " ", " ", " ", " ");
4663        addhanacmds(ESqlStatementType.sstdropcertificate, TBaseType.rrw_drop, "certificate", " ", " ", " ", " ", " ");
4664        addhanacmds(ESqlStatementType.sstdropcollection, TBaseType.rrw_drop, "collection", " ", " ", " ", " ", " ");
4665        addhanacmds(ESqlStatementType.sstdropcredential, TBaseType.rrw_drop, "credential", " ", " ", " ", " ", " ");
4666        addhanacmds(ESqlStatementType.sstdropdatabase, TBaseType.rrw_drop, "database", " ", " ", " ", " ", " ");
4667        addhanacmds(ESqlStatementType.sstdropfulltextindex, TBaseType.rrw_drop, "fulltext", "index", " ", " ", " ", " ");
4668        addhanacmds(ESqlStatementType.sstdropfunction, TBaseType.rrw_drop, "function", " ", " ", " ", " ", " ");
4669        addhanacmds(ESqlStatementType.sstdropgraphworkspace, TBaseType.rrw_drop, "graph", "workspace", " ", " ", " ", " ");
4670        addhanacmds(ESqlStatementType.sstdropindex, TBaseType.rrw_drop, "index", " ", " ", " ", " ", " ");
4671        addhanacmds(ESqlStatementType.sstdropJWTProvider, TBaseType.rrw_drop, "jwt", "provider", " ", " ", " ", " ");
4672        addhanacmds(ESqlStatementType.sstdropLDAPProvider, TBaseType.rrw_drop, "ldap", "provider", " ", " ", " ", " ");
4673        addhanacmds(ESqlStatementType.sstdropprocedure, TBaseType.rrw_drop, "procedure", " ", " ", " ", " ", " ");
4674        addhanacmds(ESqlStatementType.sstdroppse, TBaseType.rrw_drop, "pse", " ", " ", " ", " ", " ");
4675        addhanacmds(ESqlStatementType.sstdropsynonym, TBaseType.rrw_drop, "public", "synonym", " ", " ", " ", " ");
4676        addhanacmds(ESqlStatementType.sstdropremotesource, TBaseType.rrw_drop, "remote", "source", " ", " ", " ", " ");
4677        addhanacmds(ESqlStatementType.sstdroprole, TBaseType.rrw_drop, "role", " ", " ", " ", " ", " ");
4678        addhanacmds(ESqlStatementType.sstdropsamlprovider, TBaseType.rrw_drop, "saml", "provider", " ", " ", " ", " ");
4679        addhanacmds(ESqlStatementType.sstdropschema, TBaseType.rrw_drop, "schema", " ", " ", " ", " ", " ");
4680        addhanacmds(ESqlStatementType.sstdropsequence, TBaseType.rrw_drop, "sequence", " ", " ", " ", " ", " ");
4681        addhanacmds(ESqlStatementType.sstdropstatistics, TBaseType.rrw_drop, "statistics", " ", " ", " ", " ", " ");
4682        addhanacmds(ESqlStatementType.sstdropstructuredprivilege, TBaseType.rrw_drop, "structured", "privilege", " ", " ", " ", " ");
4683        addhanacmds(ESqlStatementType.sstdropsynonym, TBaseType.rrw_drop, "synonym", " ", " ", " ", " ", " ");
4684        addhanacmds(ESqlStatementType.sstdroptable, TBaseType.rrw_drop, "table", " ", " ", " ", " ", " ");
4685        addhanacmds(ESqlStatementType.sstdroptrigger, TBaseType.rrw_drop, "trigger", " ", " ", " ", " ", " ");
4686        addhanacmds(ESqlStatementType.sstdroptype, TBaseType.rrw_drop, "type", " ", " ", " ", " ", " ");
4687        addhanacmds(ESqlStatementType.sstdropuser, TBaseType.rrw_drop, "user", " ", " ", " ", " ", " ");
4688        addhanacmds(ESqlStatementType.sstdropusergroup, TBaseType.rrw_drop, "usergroup", " ", " ", " ", " ", " ");
4689        addhanacmds(ESqlStatementType.sstdropview, TBaseType.rrw_drop, "view", " ", " ", " ", " ", " ");
4690        addhanacmds(ESqlStatementType.sstdropworkloadclass, TBaseType.rrw_drop, "workload", "class", " ", " ", " ", " ");
4691        addhanacmds(ESqlStatementType.sstdropworkloadmapping, TBaseType.rrw_drop, "workload", "mapping", " ", " ", " ", " ");
4692
4693        addhanacmds(ESqlStatementType.sstExplain, TBaseType.rrw_explain, "plan", " ", " ", " ", " ", " ");
4694        addhanacmds(ESqlStatementType.sstexport, TBaseType.rrw_hana_export, " ", " ", " ", " ", " ", " ");
4695
4696//GRANT
4697        addhanacmds(ESqlStatementType.sstGrant, TBaseType.rrw_grant, " ", " ", " ", " ", " ", " ");
4698
4699        addhanacmds(ESqlStatementType.sstimport, TBaseType.rrw_hana_import, " ", " ", " ", " ", " ", " ");
4700        addhanacmds(ESqlStatementType.sstimportfrom, TBaseType.rrw_hana_import, "from", " ", " ", " ", " ", " ");
4701        addhanacmds(ESqlStatementType.sstimportscan, TBaseType.rrw_hana_import, "scan", " ", " ", " ", " ", " ");
4702
4703//insert
4704        addhanacmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert, " ", " ", " ", " ", " ", " ");
4705
4706//
4707        addhanacmds(ESqlStatementType.sstload, TBaseType.rrw_load, " ", " ", " ", " ", " ", " ");
4708        addhanacmds(ESqlStatementType.sstlocktable, TBaseType.rrw_lock, "table", " ", " ", " ", " ", " ");
4709
4710        addhanacmds(ESqlStatementType.sstmerge, TBaseType.rrw_merge, "into", " ", " ", " ", " ", " ");
4711
4712        addhanacmds(ESqlStatementType.sstmergedelta, TBaseType.rrw_merge, "delta", " ", " ", " ", " ", " ");
4713        addhanacmds(ESqlStatementType.sstmergedelta, TBaseType.rrw_merge,"history","delta"," "," "," "," ");
4714
4715        addhanacmds(ESqlStatementType.sstrecoverdata, TBaseType.rrw_hana_recover,"data"," "," "," "," "," ");
4716        addhanacmds(ESqlStatementType.sstrecoverdatabase, TBaseType.rrw_hana_recover, "database", " ", " ", " ", " ", " ");
4717        addhanacmds(ESqlStatementType.sstrefreshstatistics, TBaseType.rrw_refresh, "statistics", " ", " ", " ", " ", " ");
4718        addhanacmds(ESqlStatementType.sstrenamecollection, TBaseType.rrw_rename,"collection"," "," "," "," "," ");
4719        addhanacmds(ESqlStatementType.sstrenamecolumn, TBaseType.rrw_rename,"column"," "," "," "," "," ");
4720        addhanacmds(ESqlStatementType.sstrenamedatabase, TBaseType.rrw_rename,"database"," "," "," "," "," ");
4721        addhanacmds(ESqlStatementType.sstrenameindex, TBaseType.rrw_rename,"index"," "," "," "," "," ");
4722        addhanacmds(ESqlStatementType.sstrenametable, TBaseType.rrw_rename,"table"," "," "," "," "," ");
4723        addhanacmds(ESqlStatementType.sstreplace, TBaseType.rrw_replace, " ", " ", " ", " ", " ", " ");
4724
4725        addhanacmds(ESqlStatementType.sstRevoke, TBaseType.rrw_revoke, " ", " ", " ", " ", " ", " ");
4726
4727        addhanacmds(ESqlStatementType.sstrollback, TBaseType.rrw_rollback, " ", " ", " ", " ", " ", " ");
4728
4729        addhanacmds(ESqlStatementType.sstsavepoint, TBaseType.rrw_savepoint, " ", " ", " ", " ", " ", " ");
4730//SELECT
4731        addhanacmds(ESqlStatementType.sstselect, TBaseType.rrw_select, " ", " ", " ", " ", " ", " ");
4732
4733//SET
4734        addhanacmds(ESqlStatementType.sstset, TBaseType.rrw_set, " ", " ", " ", " ", " ", " ");
4735        addhanacmds(ESqlStatementType.sssethistorysession, TBaseType.rrw_set, "history", "session", " ", " ", " ", " ");
4736        addhanacmds(ESqlStatementType.sstsetpse, TBaseType.rrw_set, "pse", " ", " ", " ", " ", " ");
4737        addhanacmds(ESqlStatementType.sstsetschema, TBaseType.rrw_set, "schema", " ", " ", " ", " ", " ");
4738        addhanacmds(ESqlStatementType.sstsetsystemlicense, TBaseType.rrw_set, "system", "license", " ", " ", " ", " ");
4739        addhanacmds(ESqlStatementType.sstsettransaction, TBaseType.rrw_set, "transaction", " ", " ", " ", " ", " ");
4740        addhanacmds(ESqlStatementType.sstsettransactionautocommit, TBaseType.rrw_set, "transaction", "autocommit", " ", " ", " ", " ");
4741
4742        addhanacmds(ESqlStatementType.sstStartTransaction, TBaseType.rrw_start, "transaction", " ", " ", " ", " ", " ");
4743
4744
4745//TRUNCATE TABLE
4746        addhanacmds(ESqlStatementType.ssttruncatecollection, TBaseType.rrw_truncate, "collection", " ", " ", " ", " ", " ");
4747        addhanacmds(ESqlStatementType.ssttruncatetable, TBaseType.rrw_truncate, "table", " ", " ", " ", " ", " ");
4748        addhanacmds(ESqlStatementType.sstunload, TBaseType.rrw_hana_unload, " ", " ", " ", " ", " ", " ");
4749        addhanacmds(ESqlStatementType.sstunset, TBaseType.rrw_hana_unset, " ", " ", " ", " ", " ", " ");
4750        addhanacmds(ESqlStatementType.sstunsetpse, TBaseType.rrw_hana_unset, "pse", " ", " ", " ", " ", " ");
4751        addhanacmds(ESqlStatementType.sstunsetsystemlicense, TBaseType.rrw_hana_unset, "system", "license", " ", " ", " ", " ");
4752
4753//UPDATE
4754        addhanacmds(ESqlStatementType.sstupdate, TBaseType.rrw_update, " ", " ", " ", " ", " ", " ");
4755
4756        addhanacmds(ESqlStatementType.sstupsert, TBaseType.rrw_hana_upsert, " ", " ", " ", " ", " ", " ");
4757        addhanacmds(ESqlStatementType.sstvalidateLDAPProvider, TBaseType.rrw_hana_validate, "ldap", "provider", " ", " ", " ", " ");
4758        addhanacmds(ESqlStatementType.sstvalidateUser, TBaseType.rrw_hana_validate, "user", " ", " ", " ", " ", " ");
4759
4760    }
4761
4762ESqlStatementType findsybasecmd(TSourceToken ptoken){
4763    if (sybasecmds.size() == 0) {initsybasecmds();}
4764    return finddbcmd(ptoken,sybasecmds);
4765}
4766
4767    ESqlStatementType findmssqlcmd(TSourceToken ptoken){
4768        if (mssqlcmds.size() == 0) {initmssqlcmds();}
4769        return finddbcmd(ptoken,mssqlcmds);
4770    }
4771
4772    ESqlStatementType findteradatacmd(TSourceToken ptoken){
4773    if (teradatacmds.size() == 0) {initteradatacmds();}
4774    return finddbcmd(ptoken,teradatacmds);
4775}
4776
4777ESqlStatementType findpostgresqlcmd(TSourceToken ptoken){
4778    if (postgresqlcmds.size() == 0) {initpostgresqlcmds();}
4779    return finddbcmd(ptoken,postgresqlcmds);
4780}
4781
4782    ESqlStatementType findredshiftcmd(TSourceToken ptoken){
4783        if (redshiftcmds.size() == 0) {initredshiftcmds();}
4784        return finddbcmd(ptoken,redshiftcmds);
4785    }
4786
4787
4788    ESqlStatementType findgreenplumcmd(TSourceToken ptoken){
4789    if (greenplumcmds.size() == 0) {initgreenplumcmds();}
4790    return finddbcmd(ptoken,greenplumcmds);
4791}
4792
4793
4794ESqlStatementType findnetezzacmd(TSourceToken ptoken){
4795    if (netezzacmds.size() == 0) {initnetezzacmds();}
4796    return finddbcmd(ptoken,netezzacmds);
4797}
4798
4799ESqlStatementType findsparksqlcmd(TSourceToken ptoken){
4800        if (sparksqlcmds.size() == 0) {initsparksqlcmds();}
4801        return finddbcmd(ptoken,sparksqlcmds);
4802    }
4803
4804ESqlStatementType finddatabrickscmd(TSourceToken ptoken){
4805    if (databrickscmds.size() == 0) {initdatabrickscmds();}
4806    return finddbcmd(ptoken,databrickscmds);
4807}
4808    ESqlStatementType findgaussdbcmd(TSourceToken ptoken){
4809        if (gaussdbcmds.size() == 0) {initgaussdbcmds();}
4810        return finddbcmd(ptoken,gaussdbcmds);
4811    }
4812ESqlStatementType findprestocmd(TSourceToken ptoken){
4813    if (prestocmds.size() == 0) {initprestocmds();}
4814    return finddbcmd(ptoken,prestocmds);
4815}
4816
4817ESqlStatementType findathenacmd(TSourceToken ptoken){
4818    if (athenacmds.size() == 0) {initathenacmds();}
4819    return finddbcmd(ptoken,athenacmds);
4820}
4821
4822ESqlStatementType findmysqlcmd(TSourceToken ptoken){
4823    if (mysqlcmds.size() == 0) {initmysqlcmds();}
4824    return finddbcmd(ptoken,mysqlcmds);
4825}
4826
4827ESqlStatementType findhivecmd(TSourceToken ptoken){
4828        if (hivecmds.size() == 0) {inithivecmds();}
4829        return finddbcmd(ptoken,hivecmds);
4830    }
4831
4832ESqlStatementType finddb2cmd(TSourceToken ptoken){
4833            if (db2cmds.size() == 0) {initdb2cmds();}
4834            return finddbcmd(ptoken,db2cmds);
4835        }
4836
4837
4838ESqlStatementType findoraclecmd(TSourceToken ptoken){
4839            if (oraclecmds.size() == 0) {initoraclecmds();}
4840            return finddbcmd(ptoken,oraclecmds);
4841        }
4842
4843ESqlStatementType findmdxcmd(TSourceToken ptoken){
4844                    if (mdxcmds.size() == 0) {initmdxcmds();}
4845                    return finddbcmd(ptoken,mdxcmds);
4846                }
4847
4848ESqlStatementType findinformixcmd(TSourceToken ptoken){
4849                    if (informixcmds.size() == 0) {initinformixcmds();}
4850                    return finddbcmd(ptoken,informixcmds);
4851                }
4852
4853ESqlStatementType findhanacmd(TSourceToken ptoken){
4854    if (hanacmds.size() == 0) {inithanacmds();}
4855    return finddbcmd(ptoken,hanacmds);
4856}
4857
4858ESqlStatementType findverticacmd(TSourceToken ptoken){
4859    if (verticacmds.size() == 0) {initverticacmds();}
4860    return finddbcmd(ptoken,verticacmds);
4861}
4862
4863ESqlStatementType findcouchbasecmd(TSourceToken ptoken){
4864    if (couchbasecmds.size() == 0) {initcouchbasecmds();}
4865    return finddbcmd(ptoken,couchbasecmds);
4866}
4867
4868ESqlStatementType findsnowflakecmd(TSourceToken ptoken){
4869    if (snowflakecmds.size() == 0) {initsnowflakecmds();}
4870    return finddbcmd(ptoken,snowflakecmds);
4871}
4872
4873ESqlStatementType findbigquerycmd(TSourceToken ptoken){
4874    if (bigquerycmds.size() == 0) {initbigquerycmds();}
4875    return finddbcmd(ptoken,bigquerycmds);
4876}
4877
4878TCustomSqlStatement isnetezza(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
4879    TCustomSqlStatement ret = null;
4880
4881    gnewsqlstatementtype = ESqlStatementType.sstinvalid;
4882
4883    if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
4884       || (pcst.tokencode  == TBaseType.cmtslashstar)
4885       || (pcst.tokencode  == TBaseType.lexspace)
4886       || (pcst.tokencode  == TBaseType.lexnewline)
4887        || (pcst.tokentype == ETokenType.ttsemicolon) )
4888    {
4889      return null;
4890    }
4891
4892    int lcpos = pcst.posinlist;
4893    TSourceTokenList lcsourcetokenlist = pcst.container;
4894    TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
4895
4896    //subquery after semicolon or at first line
4897    if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
4898      {
4899        int k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
4900        if ( k >0 )
4901          {
4902            ret = new TSelectSqlStatement(pdbvendor);
4903          }
4904
4905          k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_with,1,"("); // ( with
4906          if ( k >0 )
4907          {
4908              ret = new TSelectSqlStatement(pdbvendor);
4909          }
4910
4911        return ret;
4912      }
4913
4914    //cte
4915    if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
4916      {
4917        ret = findcte(pcst,pdbvendor);
4918        if ( (ret != null) )  return ret;
4919      }
4920
4921    gnewsqlstatementtype = findnetezzacmd(pcst);
4922
4923    TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
4924    switch (gnewsqlstatementtype) {    //
4925        case sstinvalid:
4926          {
4927            ret = null;
4928
4929            if ( pstate == EFindSqlStateType.stnormal )
4930              {
4931              }
4932              break;
4933          }
4934        case sstselect:
4935          {
4936            boolean lcisnewsql = true;
4937
4938            if ( pstate != EFindSqlStateType.stnormal )
4939              {
4940                // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
4941                if ( (lcprevsolidtoken != null) )
4942                  {
4943                    if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
4944                      lcisnewsql = false; //subqery
4945                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
4946                      lcisnewsql = false;
4947                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
4948                      lcisnewsql = false;
4949                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
4950                      lcisnewsql = false;
4951                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
4952                      lcisnewsql = false;
4953                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
4954                      lcisnewsql = false;
4955                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
4956                      {
4957                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
4958                          lcisnewsql = false;
4959                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
4960                          lcisnewsql = false;
4961                      }
4962
4963                    if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
4964                      {
4965                        TSourceToken lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
4966                        if ( (lcpprevsolidtoken != null) )
4967                          {
4968                            if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
4969                              lcisnewsql = false;
4970                          }
4971                      }
4972
4973                  }
4974
4975
4976                if ( (lccurrentsqlstatement != null) )
4977                  {
4978                    if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
4979                      lcisnewsql = false;
4980                  }
4981
4982              }
4983
4984            if ( lcisnewsql )
4985              ret = new TSelectSqlStatement(pdbvendor);
4986
4987            break;
4988          }
4989        case sstinsert:
4990          {
4991            boolean lcisnewsql = true;
4992            if ( pstate != EFindSqlStateType.stnormal )
4993              {
4994                if ( (lccurrentsqlstatement != null) )
4995                  {
4996
4997                  }
4998              }
4999
5000            if ( lcisnewsql )
5001              ret = new TInsertSqlStatement(pdbvendor);
5002
5003            break;
5004          }
5005        case sstupdate:
5006          {
5007            boolean lcisnewsql = true;
5008            if ( pstate != EFindSqlStateType.stnormal )
5009              {
5010                lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
5011                if ( (lcprevsolidtoken != null) )
5012                  { //
5013                    if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
5014                      lcisnewsql = false;
5015                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
5016                      lcisnewsql = false;
5017                  }
5018
5019                TSourceToken lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
5020                if ( (lcnextsolidtoken != null) )
5021                  {
5022                    if ( lcnextsolidtoken.tokentype == ETokenType.ttleftparenthesis)
5023                      {
5024                        int k = lcsourcetokenlist.solidtokenafterpos(lcnextsolidtoken.posinlist,TBaseType.rrw_select,1,"(");
5025                        if ( k  == 0 ) lcisnewsql = false;
5026                      }
5027                  }
5028
5029
5030                if ( (lccurrentsqlstatement != null) )
5031                  {
5032                  }
5033              }
5034
5035            if ( lcisnewsql )
5036              {
5037                ret = new TUpdateSqlStatement(pdbvendor);
5038                ret.dummytag = 1; // means set clause in update is not found yet, used to seperate set clause from set statement
5039              }
5040            break;
5041          }
5042        case sstdelete:
5043          {
5044            boolean lcisnewsql = true;
5045
5046            if ( pstate != EFindSqlStateType.stnormal )
5047              {
5048                lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
5049                if ( (lcprevsolidtoken != null) )
5050                  {
5051                    if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
5052                      lcisnewsql = false;
5053                  }
5054
5055                if ( (lccurrentsqlstatement != null) )
5056                  {
5057                  }
5058              }
5059
5060            if ( lcisnewsql )
5061              ret = new TDeleteSqlStatement(pdbvendor);
5062
5063            break;
5064          }
5065        case sstTruncate:
5066          {
5067            ret = new TTruncateStatement(pdbvendor);
5068            ret.sqlstatementtype = gnewsqlstatementtype;
5069            break;
5070          }
5071        case sstcreatetable:
5072        case sstnetezzaCreateExternalTable:
5073          {
5074            ret = new TCreateTableSqlStatement(pdbvendor);
5075            break;
5076          }
5077        case sstcreateview:
5078          {
5079            ret = new TCreateViewSqlStatement(pdbvendor);
5080              break;
5081          }
5082        case sstcreatematerializedview:{
5083            ret = new TCreateMaterializedSqlStatement(pdbvendor);
5084            break;
5085        }
5086        case sstcreatedatabase:
5087          {
5088            ret = new TCreateDatabaseSqlStatement(pdbvendor);
5089              break;
5090          }
5091        case sstdroptable:
5092          {
5093            ret = new TDropTableSqlStatement(pdbvendor);
5094              break;
5095          }
5096        case sstdropview:
5097          {
5098           ret = new TDropViewSqlStatement(pdbvendor);
5099              break;
5100          }
5101        case sstaltertable:
5102          {
5103            ret = new TAlterTableStatement(pdbvendor);
5104              break;
5105          }
5106        case sstaltersession:
5107          {
5108            ret = new TAlterSessionStatement(pdbvendor);
5109              break;
5110          }
5111        case sstnetezzaGroomTable:
5112        {
5113            ret = new TNetezzaGroomTable(pdbvendor);
5114            break;
5115        }
5116        case sstnetezzaGenerateStatistics:
5117        {
5118            ret = new TNetezzaGenerateStatistics(pdbvendor);
5119            break;
5120        }
5121        case sstnetezzaAlterTable:
5122        {
5123            ret = new TAlterTableStatement(pdbvendor);
5124            break;
5125        }
5126        case sstnetezzaDropSchema:
5127        {
5128            ret = new TDropSchemaSqlStatement(pdbvendor);
5129            break;
5130        }
5131        case sstnetezzaCreateUser:
5132        {
5133            ret = new TCreateUserStmt(pdbvendor);
5134            break;
5135        }
5136        case sstnetezzaAlterView:
5137        {
5138            ret = new TAlterViewStatement(pdbvendor);
5139            break;
5140        }
5141        case sstnetezzaAlterDatabase:
5142        {
5143            ret = new TAlterDatabaseStmt(pdbvendor);
5144            break;
5145        }
5146        case sstAlterSchema:
5147        {
5148            ret = new TAlterSchemaStmt(pdbvendor);
5149            break;
5150        }
5151        case sstAlterSynonym:
5152        {
5153            ret = new TAlterSynonymStmt(pdbvendor);
5154            break;
5155        }
5156        case sstnetezzaDropTable:
5157        {
5158            ret = new TDropTableSqlStatement(pdbvendor);
5159            break;
5160        }
5161        case sstnetezzaDropView:
5162        {
5163            ret = new TDropViewSqlStatement(pdbvendor);
5164            break;
5165        }
5166        case sstmerge:
5167        {
5168            ret = new TMergeSqlStatement(pdbvendor);
5169            break;
5170        }
5171        case sstdropprocedure:
5172        {
5173            ret = new TDropProcedureStmt(pdbvendor);
5174            break;
5175        }
5176        case sstdropsynonym:
5177            ret = new TDropSynonymStmt(pdbvendor);
5178            break;
5179        case sstdropdatabase:
5180            ret = new TDropDatabaseStmt(pdbvendor);
5181            break;
5182        case sstcall:
5183            ret = new TCallStatement(pdbvendor);
5184            break;
5185        case sstcreatesynonym:
5186            ret = new TCreateSynonymStmt(pdbvendor);
5187            break;
5188        case sstcreatesequence:
5189            ret = new TCreateSequenceStmt(pdbvendor);
5190            break;
5191        case sstnetezzaDropSequence:
5192            ret = new TDropSequenceStmt(pdbvendor);
5193            break;
5194        case sstnetezzaGrant:
5195            ret = new TGrantStmt(pdbvendor);
5196            break;
5197        case sstexecutestmt:
5198            ret = new TExecuteSqlStatement(pdbvendor);
5199            break;
5200        case sstlocktable:
5201            ret = new TLockTableStmt(pdbvendor);
5202            break;
5203        case sstnetezzaComment:
5204            ret = new TCommentOnSqlStmt(pdbvendor);
5205            break;
5206        case sstcreateprocedure:
5207            ret = new TCreateProcedureStmt(pdbvendor);
5208            break;
5209        case sstnetezzaCopy:
5210            ret = new TCopyStmt(pdbvendor);
5211            break;
5212        case sstExplain:
5213            ret = new TExplainPlan(pdbvendor);
5214            break;
5215        case sstSetCatalog:
5216            ret = new TSetCatalogStmt(pdbvendor);
5217            break;
5218        case sstSetSchema:
5219            ret = new TSetSchemaStmt(pdbvendor);
5220            break;
5221        case sstnetezzaCommit:
5222        case sstnetezzaRollback:
5223        case sstnetezzaRevoke:
5224        default:
5225          {
5226            ret = new TUnknownSqlStatement(pdbvendor);
5227            ret.sqlstatementtype = gnewsqlstatementtype;
5228            break;
5229          }
5230    }    // case
5231
5232    return ret;
5233}
5234
5235    TCustomSqlStatement isredshift(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
5236        TCustomSqlStatement ret = null;
5237
5238        gnewsqlstatementtype = ESqlStatementType.sstinvalid;
5239
5240        if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
5241                || (pcst.tokencode  == TBaseType.cmtslashstar)
5242                || (pcst.tokencode  == TBaseType.lexspace)
5243                || (pcst.tokencode  == TBaseType.lexnewline)
5244                || (pcst.tokentype == ETokenType.ttsemicolon) )
5245        {
5246            return null;
5247        }
5248
5249        int lcpos = pcst.posinlist;
5250        TSourceTokenList lcsourcetokenlist = pcst.container;
5251        TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
5252
5253        //subquery after semicolon or at first line
5254        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
5255        {
5256            int k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
5257            if ( k >0 )
5258            {
5259                ret = new TSelectSqlStatement(pdbvendor);
5260            }
5261
5262            return ret;
5263        }
5264
5265        //cte
5266        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
5267        {
5268            ret = findcte(pcst,pdbvendor);
5269            if ( (ret != null) )  return ret;
5270        }
5271
5272        gnewsqlstatementtype = findredshiftcmd(pcst);
5273
5274        TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
5275        switch (gnewsqlstatementtype) {    //
5276            case sstinvalid:
5277            {
5278                ret = null;
5279                break;
5280            }
5281            case sstselect:
5282            {
5283                boolean lcisnewsql = true;
5284
5285                if ( pstate != EFindSqlStateType.stnormal )
5286                {
5287                    // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
5288                    if ( (lcprevsolidtoken != null) )
5289                    {
5290                        if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
5291                            lcisnewsql = false; //subqery
5292                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
5293                            lcisnewsql = false;
5294                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
5295                            lcisnewsql = false;
5296                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
5297                            lcisnewsql = false;
5298                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
5299                            lcisnewsql = false;
5300                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
5301                            lcisnewsql = false;
5302                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
5303                        {
5304                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
5305                                lcisnewsql = false;
5306                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
5307                                lcisnewsql = false;
5308                        }
5309
5310                        if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
5311                        {
5312                            TSourceToken lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
5313                            if ( (lcpprevsolidtoken != null) )
5314                            {
5315                                if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
5316                                    lcisnewsql = false;
5317                            }
5318                        }
5319
5320                    }
5321
5322
5323                    if ( (lccurrentsqlstatement != null) )
5324                    {
5325                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
5326                            lcisnewsql = false;
5327                    }
5328
5329                }
5330
5331                if ( lcisnewsql )
5332                    ret = new TSelectSqlStatement(pdbvendor);
5333
5334                break;
5335            }
5336            case sstinsert:
5337            {
5338                boolean lcisnewsql = true;
5339                if ( pstate != EFindSqlStateType.stnormal )
5340                {
5341                    if ( (lccurrentsqlstatement != null) )
5342                    {
5343
5344                    }
5345                }
5346
5347                if ( lcisnewsql )
5348                    ret = new TInsertSqlStatement(pdbvendor);
5349
5350                break;
5351            }
5352            case sstupdate:
5353            {
5354                boolean lcisnewsql = true;
5355                if ( pstate != EFindSqlStateType.stnormal )
5356                {
5357                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
5358                    if ( (lcprevsolidtoken != null) )
5359                    { //
5360                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
5361                            lcisnewsql = false;
5362                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
5363                            lcisnewsql = false;
5364                    }
5365
5366                    TSourceToken lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
5367                    if ( (lcnextsolidtoken != null) )
5368                    {
5369                        if ( lcnextsolidtoken.tokentype == ETokenType.ttleftparenthesis)
5370                        {
5371                            int k = lcsourcetokenlist.solidtokenafterpos(lcnextsolidtoken.posinlist,TBaseType.rrw_select,1,"(");
5372                            if ( k  == 0 ) lcisnewsql = false;
5373                        }
5374                    }
5375
5376
5377                    if ( (lccurrentsqlstatement != null) )
5378                    {
5379                    }
5380                }
5381
5382                if ( lcisnewsql )
5383                {
5384                    ret = new TUpdateSqlStatement(pdbvendor);
5385                    ret.dummytag = 1; // means set clause in update is not found yet, used to seperate set clause from set statement
5386                }
5387                break;
5388            }
5389            case sstdelete:
5390            {
5391                boolean lcisnewsql = true;
5392
5393                if ( pstate != EFindSqlStateType.stnormal )
5394                {
5395                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
5396                    if ( (lcprevsolidtoken != null) )
5397                    {
5398                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
5399                            lcisnewsql = false;
5400                    }
5401
5402                    if ( (lccurrentsqlstatement != null) )
5403                    {
5404                    }
5405                }
5406
5407                if ( lcisnewsql )
5408                    ret = new TDeleteSqlStatement(pdbvendor);
5409
5410                break;
5411            }
5412            case sstredshiftAbort:
5413            {
5414                ret = new TRedshiftAbort(pdbvendor);
5415                ret.sqlstatementtype = gnewsqlstatementtype;
5416                break;
5417            }
5418            case sstalterdatabase:
5419            {
5420                ret = new TAlterDatabaseStmt(pdbvendor);
5421                break;
5422            }
5423            case sstredshiftAlterGroup:
5424            {
5425                ret = new TAlterGroup(pdbvendor);
5426                break;
5427            }
5428            case sstredshiftAlterSchema:
5429            {
5430                ret = new TRedshiftAlterSchema(pdbvendor);
5431                break;
5432            }
5433            case sstaltertable:
5434            {
5435                ret = new TAlterTableStatement(pdbvendor);
5436                break;
5437            }
5438            case sstredshiftAlterUser:
5439            {
5440                ret = new TRedshiftAlterUser(pdbvendor);
5441                break;
5442            }
5443            case sstredshiftAnalyze:
5444            {
5445                ret = new TRedshiftAnalyze(pdbvendor);
5446                break;
5447            }
5448            case sstredshiftAnalyzeCompression:
5449            {
5450                ret = new TRedshiftAnalyzeCompression(pdbvendor);
5451                break;
5452            }
5453            case sstredshiftBegin:
5454            {
5455                ret = new TRedshiftBegin(pdbvendor);
5456                break;
5457            }
5458            case sstredshiftCancel:
5459            {
5460                ret = new TRedshiftCancel(pdbvendor);
5461                break;
5462            }
5463            case sstredshiftClose:
5464            {
5465                ret = new TCloseStmt(pdbvendor);
5466                break;
5467            }
5468            case sstredshiftComment:
5469            {
5470                ret = new TRedshiftComment(pdbvendor);
5471                break;
5472            }
5473            case sstredshiftCommit:
5474            {
5475                ret = new TRedshiftCommit(pdbvendor);
5476                break;
5477            }
5478            case sstredshiftCopy:
5479            {
5480                ret = new TRedshiftCopy(pdbvendor);
5481                break;
5482            }
5483            case sstcreatedatabase:
5484            {
5485                ret = new TCreateDatabaseSqlStatement(pdbvendor);
5486                break;
5487            }
5488            case sstredshiftCreateGroup:
5489            {
5490                ret = new TCreateGroup(pdbvendor);
5491                break;
5492            }
5493            case sstredshiftCreateSchema:
5494            {
5495                ret = new TCreateSchemaSqlStatement(pdbvendor);
5496                break;
5497            }
5498            case sstcreatetable:
5499            {
5500                ret = new TCreateTableSqlStatement(pdbvendor);
5501                break;
5502            }
5503            case sstredshiftCreateUser:
5504            {
5505                ret = new TRedshiftCreateUser(pdbvendor);
5506                break;
5507            }
5508            case sstcreateview:
5509            {
5510                ret = new TCreateViewSqlStatement(pdbvendor);
5511                break;
5512            }
5513            case sstredshiftDeallocate:
5514            {
5515                ret = new TRedshiftDeallocate(pdbvendor);
5516                break;
5517            }
5518            case sstredshiftDeclare:
5519            {
5520                ret = new TRedshiftDeclare(pdbvendor);
5521                break;
5522            }
5523            case sstredshiftDropDatabase:
5524            {
5525                ret = new TDropDatabaseStmt(pdbvendor);
5526                break;
5527            }
5528            case sstredshiftDropGroup:
5529            {
5530                ret = new TDropGroup(pdbvendor);
5531                break;
5532            }
5533            case sstredshiftDropSchema:
5534            {
5535                ret = new TRedshiftDropSchema(pdbvendor);
5536                break;
5537            }
5538            case sstdroptable:
5539            {
5540                ret = new TDropTableSqlStatement(pdbvendor);
5541                break;
5542            }
5543            case sstredshiftDropUser:
5544            {
5545                ret = new TRedshiftDropUser(pdbvendor);
5546                break;
5547            }
5548            case sstdropview:
5549            {
5550                ret = new TDropViewSqlStatement(pdbvendor);
5551                break;
5552            }
5553            case sstredshiftEnd:
5554            {
5555                ret = new TRedshiftEnd(pdbvendor);
5556                break;
5557            }
5558            case sstExecutePreparedStmt:
5559            {
5560                ret = new TExecuteSqlStatement(pdbvendor);
5561                break;
5562            }
5563            case sstExplain:
5564            {
5565                ret = new TExplainPlan(pdbvendor);
5566                break;
5567            }
5568            case sstFetchFrom:
5569            {
5570                ret = new TFetchFromStmt(pdbvendor);
5571                break;
5572            }
5573            case sstGrant:
5574            {
5575                ret = new TGrantStmt(pdbvendor);
5576                break;
5577            }
5578            case sstredshiftLock:
5579            {
5580                ret = new TLockTableStmt(pdbvendor);
5581                break;
5582            }
5583            case sstredshiftPrepare:
5584            {
5585                ret = new TRedshiftPrepare(pdbvendor);
5586                break;
5587            }
5588            case sstredshiftReset:
5589            {
5590                ret = new TRedshiftReset(pdbvendor);
5591                break;
5592            }
5593            case sstRevoke:
5594            {
5595                ret = new TRevokeStmt(pdbvendor);
5596                break;
5597            }
5598            case sstredshiftRollback:
5599            {
5600                ret = new TRedshiftRollback(pdbvendor);
5601                break;
5602            }
5603            case sstredshiftSet:
5604            {
5605                ret = new TSetStmt(pdbvendor);
5606                break;
5607            }
5608            case sstredshiftSetSessionAuthorization:
5609            {
5610                ret = new TRedshiftSessionAuthorization(pdbvendor);
5611                break;
5612            }
5613            case sstredshiftShow:
5614            {
5615                ret = new TShowStmt(pdbvendor);
5616                break;
5617            }
5618            case sstStartTransaction:
5619            {
5620                ret = new TStartTransactionStmt(pdbvendor);
5621                break;
5622            }
5623            case sstTruncate:
5624            {
5625                ret = new TTruncateStatement(pdbvendor);
5626                break;
5627            }
5628            case sstredshiftUnload:
5629            {
5630                ret = new TUnloadStmt(pdbvendor);
5631                break;
5632            }
5633            case sstredshiftVacuum:
5634            {
5635                ret = new TRedshiftVacuum(pdbvendor);
5636                break;
5637            }
5638            case sstcreatefunction:
5639                ret = new TCreateFunctionStmt(pdbvendor);
5640                break;
5641            case sstcreateprocedure:
5642                ret = new TCreateProcedureStmt(pdbvendor);
5643                break;
5644            case sstcreatematerializedview:{
5645                ret = new TCreateMaterializedSqlStatement(pdbvendor);
5646                break;
5647            }
5648            case sstcall:
5649                ret = new TCallStatement(pdbvendor);
5650                break;
5651            case sstmerge:
5652            {
5653                ret = new TMergeSqlStatement(pdbvendor);
5654                break;
5655            }
5656            default:
5657            {
5658                ret = new TUnknownSqlStatement(pdbvendor);
5659                ret.sqlstatementtype = gnewsqlstatementtype;
5660                break;
5661            }
5662        }    // case
5663
5664        return ret;
5665    }
5666    TCustomSqlStatement isgaussdb(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
5667        TCustomSqlStatement ret = null;
5668
5669        gnewsqlstatementtype = ESqlStatementType.sstinvalid;
5670
5671        if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
5672                || (pcst.tokencode  == TBaseType.cmtslashstar)
5673                || (pcst.tokencode  == TBaseType.lexspace)
5674                || (pcst.tokencode  == TBaseType.lexnewline)
5675                || (pcst.tokentype == ETokenType.ttsemicolon) )
5676        {
5677            return null;
5678        }
5679
5680        int lcpos = pcst.posinlist;
5681        TSourceTokenList lcsourcetokenlist = pcst.container;
5682        TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
5683
5684        //subquery after semicolon or at first line
5685        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
5686        {
5687            int k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
5688            if ( k >0 )
5689            {
5690                ret = new TSelectSqlStatement(pdbvendor);
5691            }else{
5692                k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_with,1,"(");
5693                if ( k >0 )
5694                { // syntax like: (with ... )
5695                    ret = new TSelectSqlStatement(pdbvendor);
5696                }
5697            }
5698
5699            return ret;
5700        }
5701
5702        //cte
5703        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
5704        {
5705            ret = findcte(pcst,pdbvendor);
5706            if ( (ret != null) )  return ret;
5707        }
5708
5709        gnewsqlstatementtype = findgaussdbcmd(pcst);
5710
5711        TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
5712        switch (gnewsqlstatementtype) {    //
5713            case sstinvalid:
5714            {
5715                ret = null;
5716
5717                if ( pstate == EFindSqlStateType.stnormal )
5718                {
5719                    if ( pcst.tokencode == TBaseType.label_begin )
5720                    {
5721                        ret = new TCommonBlock(pdbvendor);
5722                        gnewsqlstatementtype = ret.sqlstatementtype;
5723
5724                    }
5725                    else if ( pcst.tokencode == TBaseType.rrw_declare )
5726                    {
5727                        ret = new TCommonBlock(pdbvendor);
5728                        gnewsqlstatementtype = ret.sqlstatementtype;
5729                    }
5730                    else if ( pcst.tokencode == TBaseType.rrw_begin )
5731                    {
5732                        // https://support.huaweicloud.com/distributed-devg-v3-opengauss/gaussdb-12-0498.html
5733                        // 有两种可能 1:开启匿名块,或 2:开启事务
5734                        boolean isBlock = true;
5735                        TSourceToken st = pcst.nextSolidToken();
5736                        if (st != null){
5737                            if ((st.tokencode == ';')
5738                                    ||(st.toString().equalsIgnoreCase("work"))
5739                                    ||(st.toString().equalsIgnoreCase("transaction"))
5740                            ){
5741                                isBlock = false;
5742                            }
5743                        }
5744                        if (isBlock){
5745                            ret = new TCommonBlock(pdbvendor);
5746                            gnewsqlstatementtype = ret.sqlstatementtype;
5747                        }else{
5748                            ret = new TStartTransactionStmt(pdbvendor);
5749                            gnewsqlstatementtype = ret.sqlstatementtype;
5750                            pcst.tokencode = TBaseType.GAUSSDB_BEGIN_TRANSACTION;
5751                        }
5752
5753                    }
5754                    else if ( pcst.tokencode == TBaseType.rrw_procedure )
5755                    {
5756                        ret = new TCreateProcedureStmt(pdbvendor);
5757                        // ret.sqlstatementtype = ESqlStatementType.sstplsql_createprocedure;
5758                        gnewsqlstatementtype = ret.sqlstatementtype;
5759                    }
5760                    else if ( pcst.tokencode == TBaseType.rrw_function )
5761                    {
5762                        ret = new TPlsqlCreateFunction(pdbvendor);
5763                        // ret.sqlstatementtype = ESqlStatementType.sstplsql_createfunction;
5764                        gnewsqlstatementtype = ret.sqlstatementtype;
5765                    }
5766                    else if ( pcst.tokencode == TBaseType.rrw_package )
5767                    {
5768                        ret = new TPlsqlCreatePackage(pdbvendor);
5769                        // ret.sqlstatementtype = ESqlStatementType.sstplsql_createpackage;
5770                        gnewsqlstatementtype = ret.sqlstatementtype;
5771                    }
5772                }
5773                break;
5774            }
5775            case sstpostgresqlDeclare:{
5776                // https://support.huaweicloud.com/distributed-devg-v3-opengauss/gaussdb-12-0554.html
5777                // declare cursor_name [ BINARY ] [ NO SCROLL ] CURSOR ..., 这是单个的定义游标语句
5778                // 下面这种类型的定义才是开始一个 匿名块
5779                // [DECLARE [declare_statements]]
5780                //BEGIN
5781                //execution_statements
5782                //END;
5783
5784                // 判断逻辑如下:
5785                // 1. 如果 declare 后直接跟 CURSOR, 那就是开启一个 匿名块
5786                // 2. 如果 declare 后直接跟的是一个 identifier, 那再检查之后的第2或3或4个token是否为 CURSOR,
5787                // 如果是,该语句为 单个的定义游标语句,否则为  匿名块
5788
5789                boolean isBlock = true;
5790                TSourceToken st = pcst.nextSolidToken();
5791                if (st != null){
5792                    if (st.tokencode == TBaseType.GAUSSDB_CURSOR){
5793                        isBlock = true;
5794                    }else if (st.tokencode == TBaseType.ident){
5795                        st = st.nextSolidToken();
5796                        if (st != null){
5797                            if ((st.tokencode == TBaseType.GAUSSDB_CURSOR)
5798                                    ||(st.tokencode == TBaseType.rrw_binary)
5799                                    ||(st.toString().equalsIgnoreCase("no"))
5800                            ){
5801                                isBlock = false;
5802                            }
5803                        }
5804                    }
5805                }
5806                if (isBlock){
5807                    ret = new TCommonBlock(pdbvendor);
5808                    gnewsqlstatementtype = ret.sqlstatementtype;
5809                }else{
5810                    ret = new TDeclareCursorStmt(pdbvendor);
5811                    gnewsqlstatementtype = ret.sqlstatementtype;
5812                    pcst.tokencode = TBaseType.GAUSSDB_DECLARE_SINGLE_STMT;
5813                }
5814
5815                break;
5816            }
5817            case sstmerge:
5818            {
5819                ret = new TMergeSqlStatement(pdbvendor);
5820                ret.sqlstatementtype = gnewsqlstatementtype;
5821                break;
5822            }
5823            case sstcreatesynonym:
5824                ret = new TCreateSynonymStmt(pdbvendor);
5825                break;
5826            case sstdropsynonym:
5827                ret = new TDropSynonymStmt(pdbvendor);
5828                break;
5829            case sstAlterPackage:
5830                ret = new TAlterPackageStmt(pdbvendor);
5831                break;
5832            case sstpostgresqlRefreshMaterializedView:
5833                ret = new TRefreshMaterializedViewStmt(pdbvendor);
5834                break;
5835            case sstAlterSynonym:
5836                ret = new TAlterSynonymStmt(pdbvendor);
5837                break;
5838            case sstsavepoint:
5839            {
5840                ret = new TSavepointStmt(pdbvendor);
5841                ret.sqlstatementtype = gnewsqlstatementtype;
5842                break;
5843            }
5844            case sstselect:
5845            {
5846                boolean lcisnewsql = true;
5847
5848                if ( pstate != EFindSqlStateType.stnormal )
5849                {
5850                    // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
5851                    if ( (lcprevsolidtoken != null) )
5852                    {
5853                        if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
5854                            lcisnewsql = false; //subqery
5855                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
5856                            lcisnewsql = false;
5857                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
5858                            lcisnewsql = false;
5859                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
5860                            lcisnewsql = false;
5861                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
5862                            lcisnewsql = false;
5863                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
5864                            lcisnewsql = false;
5865                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
5866                        {
5867                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
5868                                lcisnewsql = false;
5869                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
5870                                lcisnewsql = false;
5871                        }
5872
5873                        if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
5874                        {
5875                            TSourceToken lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
5876                            if ( (lcpprevsolidtoken != null) )
5877                            {
5878                                if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
5879                                    lcisnewsql = false;
5880                            }
5881                        }
5882
5883                    }
5884
5885
5886                    if ( (lccurrentsqlstatement != null) )
5887                    {
5888                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
5889                            lcisnewsql = false;
5890                    }
5891
5892                }
5893
5894                if ( lcisnewsql )
5895                    ret = new TSelectSqlStatement(pdbvendor);
5896
5897                break;
5898            }
5899            case sstinsert:
5900            {
5901                boolean lcisnewsql = true;
5902                if ( pstate != EFindSqlStateType.stnormal )
5903                {
5904                    if ( (lccurrentsqlstatement != null) )
5905                    {
5906
5907                    }
5908                }
5909
5910                if ( lcisnewsql )
5911                    ret = new TInsertSqlStatement(pdbvendor);
5912
5913                break;
5914            }
5915            case sstupdate:
5916            {
5917                boolean lcisnewsql = true;
5918                if ( pstate != EFindSqlStateType.stnormal )
5919                {
5920                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
5921                    if ( (lcprevsolidtoken != null) )
5922                    { //
5923                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
5924                            lcisnewsql = false;
5925                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
5926                            lcisnewsql = false;
5927                    }
5928
5929                    TSourceToken lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
5930                    if ( (lcnextsolidtoken != null) )
5931                    {
5932                        if ( lcnextsolidtoken.tokentype == ETokenType.ttleftparenthesis)
5933                        {
5934                            int k = lcsourcetokenlist.solidtokenafterpos(lcnextsolidtoken.posinlist,TBaseType.rrw_select,1,"(");
5935                            if ( k  == 0 ) lcisnewsql = false;
5936                        }
5937                    }
5938
5939
5940                    if ( (lccurrentsqlstatement != null) )
5941                    {
5942                    }
5943                }
5944
5945                if ( lcisnewsql )
5946                {
5947                    ret = new TUpdateSqlStatement(pdbvendor);
5948                    ret.dummytag = 1; // means set clause in update is not found yet, used to seperate set clause from set statement
5949                }
5950                break;
5951            }
5952            case sstdelete:
5953            {
5954                boolean lcisnewsql = true;
5955
5956                if ( pstate != EFindSqlStateType.stnormal )
5957                {
5958                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
5959                    if ( (lcprevsolidtoken != null) )
5960                    {
5961                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
5962                            lcisnewsql = false;
5963                    }
5964
5965                    if ( (lccurrentsqlstatement != null) )
5966                    {
5967                    }
5968                }
5969
5970                if ( lcisnewsql )
5971                    ret = new TDeleteSqlStatement(pdbvendor);
5972
5973                break;
5974            }
5975            case sstoraclecommit:
5976            {
5977                ret = new TUnknownSqlStatement(pdbvendor);
5978                ret.sqlstatementtype = gnewsqlstatementtype;
5979                break;
5980            }
5981            case sstoraclerollback:
5982            {
5983                ret = new TUnknownSqlStatement(pdbvendor);
5984                ret.sqlstatementtype = gnewsqlstatementtype;
5985                break;
5986            }
5987            case sstoraclesavepoint:
5988            {
5989                ret = new TUnknownSqlStatement(pdbvendor);
5990                ret.sqlstatementtype = gnewsqlstatementtype;
5991                break;
5992            }
5993            case sstoraclerevoke:
5994            {
5995                ret = new TUnknownSqlStatement(pdbvendor);
5996                ret.sqlstatementtype = gnewsqlstatementtype;
5997                break;
5998            }
5999            case sstoraclegrant:
6000            {
6001                ret = new TUnknownSqlStatement(pdbvendor);
6002                //ret = new TGrantStmt(pdbvendor);
6003                ret.sqlstatementtype = gnewsqlstatementtype;
6004                break;
6005            }
6006            case sstoracleanalyze:
6007            {
6008                ret = new TUnknownSqlStatement(pdbvendor);
6009                ret.sqlstatementtype = gnewsqlstatementtype;
6010                break;
6011            }
6012            case sstoracletruncate:
6013            {
6014                ret = new TUnknownSqlStatement(pdbvendor);
6015                ret.sqlstatementtype = gnewsqlstatementtype;
6016                break;
6017            }
6018            case sstcreatetable:
6019            {
6020                ret = new TCreateTableSqlStatement(pdbvendor);
6021                break;
6022            }
6023            case sstoraclecreateview:
6024            {
6025                ret = new TCreateViewSqlStatement(pdbvendor);
6026                break;
6027            }
6028            case sstcreatematerializedview:{
6029                ret = new TCreateMaterializedSqlStatement(pdbvendor);
6030                break;
6031            }
6032            case sstoraclecreateindex:
6033            {
6034                ret = new TCreateIndexSqlStatement(pdbvendor);
6035                break;
6036            }
6037            case sstoraclecreatedatabase:
6038            {
6039                ret = new TCreateDatabaseSqlStatement(pdbvendor);
6040                break;
6041            }
6042            case sstoracledroptable:
6043            {
6044                ret = new TDropTableSqlStatement(pdbvendor);
6045                break;
6046            }
6047            case sstoracledropview:
6048            {
6049                ret = new TDropViewSqlStatement(pdbvendor);
6050                break;
6051            }
6052            case sstoracledropindex:
6053            {
6054                ret = new TDropIndexSqlStatement(pdbvendor);
6055                break;
6056            }
6057            case sstaltertable:
6058            {
6059                ret = new TAlterTableStatement(pdbvendor);
6060                break;
6061            }
6062            case sstoraclealtersession:
6063            {
6064                ret = new TAlterSessionStatement(pdbvendor);
6065                break;
6066            }
6067            case sstplsql_createprocedure:
6068            {
6069                ret = new TPlsqlCreateProcedure(pdbvendor);
6070                ret.sqlstatementtype = gnewsqlstatementtype;
6071                // System.out.println(gnewsqlstatementtype);
6072                break;
6073            }
6074            case sstplsql_createfunction:
6075            {
6076                ret = new TPlsqlCreateFunction(pdbvendor);
6077                ret.sqlstatementtype = gnewsqlstatementtype;
6078                // System.out.println(gnewsqlstatementtype);
6079                break;
6080            }
6081            case sstplsql_createpackage:
6082            {
6083                ret = new TPlsqlCreatePackage(pdbvendor);
6084                ret.sqlstatementtype = gnewsqlstatementtype;
6085                // System.out.println(gnewsqlstatementtype);
6086                break;
6087            }
6088            case sstoraclecreatepackagebody:
6089            {
6090                ret = new TPlsqlCreatePackage(pdbvendor);
6091                ret.sqlstatementtype = gnewsqlstatementtype;
6092                //ret.sqlstatementtype = ESqlStatementType.sstplsql_createpackage;
6093                break;
6094            }
6095            case sstplsql_createtrigger:
6096            {
6097                ret = new TPlsqlCreateTrigger(pdbvendor);
6098                ret.sqlstatementtype = gnewsqlstatementtype;
6099                // System.out.println(gnewsqlstatementtype);
6100                break;
6101            }
6102            case sstplsql_execimmestmt:
6103            {
6104                ret = new TExecImmeStmt(pdbvendor);
6105                // ret.sqlstatementtype = gnewsqlstatementtype;
6106                // System.out.println(gnewsqlstatementtype);
6107                break;
6108            }
6109            case sstplsql_createtype_placeholder:
6110            {
6111                ret = new TPlsqlCreateType_Placeholder(pdbvendor);
6112                ret.sqlstatementtype = gnewsqlstatementtype;
6113                // System.out.println(gnewsqlstatementtype);
6114                break;
6115            }
6116            case sstplsql_createtypebody:
6117            {
6118                ret = new TPlsqlCreateTypeBody(pdbvendor);
6119                ret.sqlstatementtype = gnewsqlstatementtype;
6120                break;
6121            }
6122            case sstCommentOn:
6123            {
6124                ret = new TCommentOnSqlStmt(pdbvendor);
6125                break;
6126            }
6127            case sstoraclecreatesequence:
6128            {
6129                ret = new TCreateSequenceStmt(pdbvendor);
6130                break;
6131            }
6132            case sstoraclecreatesynonym:
6133            {
6134                ret = new TCreateSynonymStmt(pdbvendor);
6135                break;
6136            }
6137            case sstoraclecreatedirectory:
6138            {
6139                ret = new TOracleCreateDirectoryStmt(pdbvendor);
6140                break;
6141            }
6142            case sstpostgresqlCreateIndex:
6143                ret = new TCreateIndexSqlStatement(pdbvendor);
6144                break;
6145            case sstpostgresqlCreateView:
6146                ret = new TCreateViewSqlStatement(pdbvendor);
6147                break;
6148            case sstpostgresqlCreateFunction:
6149                ret = new TCreateFunctionStmt(pdbvendor);
6150                break;
6151            case sstcreatetrigger:
6152                ret = new TCreateTriggerStmt(pdbvendor);
6153                break;
6154            case sstpostgresqlMove:
6155                ret = new TMoveStmt(pdbvendor);
6156                break;
6157            case sstpostgresqlTruncate:
6158                ret = new TTruncateStatement(pdbvendor);
6159                break;
6160            case sstpostgresqlExecute:
6161                ret = new TExecuteSqlStatement(pdbvendor);
6162                break;
6163            case sstpostgresqlDropTable:
6164                ret = new TDropTableSqlStatement(pdbvendor);
6165                break;
6166            case sstPostgresqlBlock:
6167                ret = new TCommonBlock(pdbvendor);
6168                break;
6169            case sstVacuum:
6170                ret = new TVacuumStmt(pdbvendor);
6171                break;
6172            case sstReindex:
6173                ret = new TReindexStmt(pdbvendor);
6174                break;
6175            case sstcreateprocedure:
6176                ret = new TCreateProcedureStmt(pdbvendor);
6177                break;
6178            case sstpostgresqlCommit:
6179                ret = new TCommitStmt(pdbvendor);
6180                break;
6181            case sstpostgresqlCreateSchema:
6182                ret = new TCreateSchemaSqlStatement(pdbvendor);
6183                break;
6184            case sstpostgresqlDropSchema:
6185                ret = new TDropSchemaSqlStatement(pdbvendor);
6186                break;
6187            case sstpostgresqlShowSearchPath:
6188                ret = new TShowSearchPathStmt(pdbvendor);
6189                break;
6190            case sstpostgresqlCopy:
6191                ret = new TCopyStmt(pdbvendor);
6192                break;
6193            case sstcall:
6194                ret = new TCallStatement(pdbvendor);
6195                break;
6196            case sstpostgresqlAlterSchema:
6197                ret = new TAlterSchemaStmt(pdbvendor);
6198                break;
6199            case sstpostgresqlAlterfunction:
6200                ret = new TAlterFunctionStmt(pdbvendor);
6201                break;
6202            case sstStartTransaction:
6203            {
6204                ret = new TStartTransactionStmt(pdbvendor);
6205                break;
6206            }
6207            case sstpostgresqlComment:
6208                ret = new TCommentOnSqlStmt(pdbvendor);
6209                break;
6210            case sstpostgresqlShow:
6211                ret = new TShowStmt(pdbvendor);
6212                break;
6213            case sstpostgresqlSetSearchPath:
6214            case sstpostgresqlSet:
6215                ret = new TSetStmt(pdbvendor);
6216                break;
6217            case sstpostgresqlDropFunction:
6218                ret = new TDropFunctionStmt(pdbvendor);
6219                break;
6220            case sstpostgresqlDropTrigger:
6221                ret = new TDropTriggerSqlStatement(pdbvendor);
6222                break;
6223            case sstpostgresqlDropProcedure:
6224                ret = new TDropProcedureStmt(pdbvendor);
6225                break;
6226            case sstdropindex:
6227                ret = new TDropIndexSqlStatement(pdbvendor);
6228                break;
6229            case sstpostgresqlDropSequence:
6230                ret = new TDropSequenceStmt(pdbvendor);
6231                break;
6232            case sstpostgresqlDropView:
6233                ret = new TDropViewSqlStatement(pdbvendor);
6234                break;
6235            case sstpostgresqlCreateSequence:
6236                ret = new TCreateSequenceStmt(pdbvendor);
6237                break;
6238            case sstpostgresqlAlterSequence:
6239                ret = new TAlterSequenceStatement(pdbvendor);
6240                break;
6241            case sstpostgresqlCreateType:
6242                ret = new TCreateTypeStmt(pdbvendor);
6243                break;
6244            case sstcreateExtension:
6245                ret = new TCreateExtensionStmt(pdbvendor);
6246                break;
6247            case sstPostgresqlTable:
6248                ret = new TPostgresqlTableStmt(pdbvendor);
6249                break;
6250            case sstpostgresqlEnd:
6251                ret = new TEndTran(pdbvendor);
6252                break;
6253            case sstpostgresqlDo:
6254                boolean lcisnewsql = false;
6255
6256                if ( pstate == EFindSqlStateType.stnormal )
6257                {
6258                    TSourceToken lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
6259                    if ( (lcnextsolidtoken != null) )
6260                    {
6261                        if ( lcnextsolidtoken.tokencode == TBaseType.rrw_postgresql_function_delimiter )
6262                            lcisnewsql = true;
6263                        else if ( lcnextsolidtoken.tokencode == TBaseType.rrw_postgresql_language )
6264                            lcisnewsql = true;
6265                    }
6266                }
6267
6268                if ( lcisnewsql )
6269                    ret = new TDoExecuteBlockStmt(pdbvendor);
6270
6271                break;
6272            default:
6273            {
6274                ret = new TUnknownSqlStatement(pdbvendor);
6275                ret.sqlstatementtype = gnewsqlstatementtype;
6276                break;
6277            }
6278        }    // case
6279
6280        return ret;
6281    }
6282
6283    TCustomSqlStatement ispostgresql(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
6284        TCustomSqlStatement ret = null;
6285
6286        gnewsqlstatementtype = ESqlStatementType.sstinvalid;
6287
6288        if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
6289                || (pcst.tokencode  == TBaseType.cmtslashstar)
6290                || (pcst.tokencode  == TBaseType.lexspace)
6291                || (pcst.tokencode  == TBaseType.lexnewline)
6292                || (pcst.tokentype == ETokenType.ttsemicolon) )
6293        {
6294            return null;
6295        }
6296
6297        int lcpos = pcst.posinlist;
6298        TSourceTokenList lcsourcetokenlist = pcst.container;
6299        TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
6300
6301        //subquery after semicolon or at first line
6302        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
6303        {
6304            int k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
6305            if ( k >0 )
6306            {
6307                ret = new TSelectSqlStatement(pdbvendor);
6308            }
6309
6310            return ret;
6311        }
6312
6313        //cte
6314        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
6315        {
6316            ret = findcte(pcst,pdbvendor);
6317            if ( (ret != null) )  return ret;
6318        }
6319
6320        gnewsqlstatementtype = findpostgresqlcmd(pcst);
6321
6322        TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
6323        switch (gnewsqlstatementtype) {    //
6324            case sstinvalid:
6325            {
6326                ret = null;
6327
6328                if ( pstate == EFindSqlStateType.stnormal )
6329                {
6330                    if ( pcst.tokencode == TBaseType.label_begin )
6331                    {
6332                        ret = new TCommonBlock(pdbvendor);
6333                        gnewsqlstatementtype = ret.sqlstatementtype;
6334                    }
6335                    else if ( pcst.tokencode == TBaseType.rrw_declare )
6336                    {
6337                        ret = new TCommonBlock(pdbvendor);
6338                        gnewsqlstatementtype = ret.sqlstatementtype;
6339                    }
6340                    else if ( pcst.tokencode == TBaseType.rrw_begin )
6341                    {
6342                        ret = new TCommonBlock(pdbvendor);
6343                        gnewsqlstatementtype = ret.sqlstatementtype;
6344                    }
6345                    else if ( pcst.tokencode == TBaseType.rrw_procedure )
6346                    {
6347                        ret = new TCreateProcedureStmt(pdbvendor);
6348                        // ret.sqlstatementtype = ESqlStatementType.sstplsql_createprocedure;
6349                        gnewsqlstatementtype = ret.sqlstatementtype;
6350                    }
6351                    else if ( pcst.tokencode == TBaseType.rrw_function )
6352                    {
6353                        ret = new TPlsqlCreateFunction(pdbvendor);
6354                        // ret.sqlstatementtype = ESqlStatementType.sstplsql_createfunction;
6355                        gnewsqlstatementtype = ret.sqlstatementtype;
6356                    }
6357                    else if ( pcst.tokencode == TBaseType.rrw_package )
6358                    {
6359                        ret = new TPlsqlCreatePackage(pdbvendor);
6360                        // ret.sqlstatementtype = ESqlStatementType.sstplsql_createpackage;
6361                        gnewsqlstatementtype = ret.sqlstatementtype;
6362                    }
6363                }
6364                break;
6365            }
6366            case sstselect:
6367            {
6368                boolean lcisnewsql = true;
6369
6370                if ( pstate != EFindSqlStateType.stnormal )
6371                {
6372                    // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
6373                    if ( (lcprevsolidtoken != null) )
6374                    {
6375                        if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
6376                            lcisnewsql = false; //subqery
6377                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
6378                            lcisnewsql = false;
6379                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
6380                            lcisnewsql = false;
6381                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
6382                            lcisnewsql = false;
6383                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
6384                            lcisnewsql = false;
6385                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
6386                            lcisnewsql = false;
6387                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
6388                        {
6389                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
6390                                lcisnewsql = false;
6391                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
6392                                lcisnewsql = false;
6393                        }
6394
6395
6396                        if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
6397                        {
6398                            TSourceToken lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
6399                            if ( (lcpprevsolidtoken != null) )
6400                            {
6401                                if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
6402                                    lcisnewsql = false;
6403                            }
6404                        }
6405
6406                    }
6407
6408
6409                    if ( (lccurrentsqlstatement != null) )
6410                    {
6411                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
6412                            lcisnewsql = false;
6413                    }
6414
6415                }
6416
6417                if ( lcisnewsql )
6418                    ret = new TSelectSqlStatement(pdbvendor);
6419
6420                break;
6421            }
6422            case sstinsert:
6423            {
6424                boolean lcisnewsql = true;
6425                if ( pstate != EFindSqlStateType.stnormal )
6426                {
6427                    if ( (lccurrentsqlstatement != null) )
6428                    {
6429
6430                    }
6431                }
6432
6433                if ( lcisnewsql )
6434                    ret = new TInsertSqlStatement(pdbvendor);
6435
6436                break;
6437            }
6438            case sstupdate:
6439            {
6440                boolean lcisnewsql = true;
6441                if ( pstate != EFindSqlStateType.stnormal )
6442                {
6443                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
6444                    if ( (lcprevsolidtoken != null) )
6445                    { //
6446                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
6447                            lcisnewsql = false;
6448                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
6449                            lcisnewsql = false;
6450                    }
6451
6452                    TSourceToken lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
6453                    if ( (lcnextsolidtoken != null) )
6454                    {
6455                        if ( lcnextsolidtoken.tokentype == ETokenType.ttleftparenthesis)
6456                        {
6457                            int k = lcsourcetokenlist.solidtokenafterpos(lcnextsolidtoken.posinlist,TBaseType.rrw_select,1,"(");
6458                            if ( k  == 0 ) lcisnewsql = false;
6459                        }
6460                    }
6461
6462
6463                    if ( (lccurrentsqlstatement != null) )
6464                    {
6465                    }
6466                }
6467
6468                if ( lcisnewsql )
6469                {
6470                    ret = new TUpdateSqlStatement(pdbvendor);
6471                    ret.dummytag = 1; // means set clause in update is not found yet, used to seperate set clause from set statement
6472                }
6473                break;
6474            }
6475            case sstdelete:
6476            {
6477                boolean lcisnewsql = true;
6478
6479                if ( pstate != EFindSqlStateType.stnormal )
6480                {
6481                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
6482                    if ( (lcprevsolidtoken != null) )
6483                    {
6484                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
6485                            lcisnewsql = false;
6486                    }
6487
6488                    if ( (lccurrentsqlstatement != null) )
6489                    {
6490                    }
6491                }
6492
6493                if ( lcisnewsql )
6494                    ret = new TDeleteSqlStatement(pdbvendor);
6495
6496                break;
6497            }
6498            case sstmerge:
6499            {
6500                ret = new TMergeSqlStatement(pdbvendor);
6501                ret.sqlstatementtype = gnewsqlstatementtype;
6502                break;
6503            }
6504            case sstoraclecommit:
6505            {
6506                ret = new TUnknownSqlStatement(pdbvendor);
6507                ret.sqlstatementtype = gnewsqlstatementtype;
6508                break;
6509            }
6510            case sstoraclerollback:
6511            {
6512                ret = new TUnknownSqlStatement(pdbvendor);
6513                ret.sqlstatementtype = gnewsqlstatementtype;
6514                break;
6515            }
6516            case sstoraclesavepoint:
6517            {
6518                ret = new TUnknownSqlStatement(pdbvendor);
6519                ret.sqlstatementtype = gnewsqlstatementtype;
6520                break;
6521            }
6522            case sstoraclerevoke:
6523            {
6524                ret = new TUnknownSqlStatement(pdbvendor);
6525                ret.sqlstatementtype = gnewsqlstatementtype;
6526                break;
6527            }
6528            case sstoraclegrant:
6529            {
6530                ret = new TUnknownSqlStatement(pdbvendor);
6531                //ret = new TGrantStmt(pdbvendor);
6532                ret.sqlstatementtype = gnewsqlstatementtype;
6533                break;
6534            }
6535            case sstoracleanalyze:
6536            {
6537                ret = new TUnknownSqlStatement(pdbvendor);
6538                ret.sqlstatementtype = gnewsqlstatementtype;
6539                break;
6540            }
6541            case sstoracletruncate:
6542            {
6543                ret = new TUnknownSqlStatement(pdbvendor);
6544                ret.sqlstatementtype = gnewsqlstatementtype;
6545                break;
6546            }
6547            case sstcreatetable:
6548            {
6549                ret = new TCreateTableSqlStatement(pdbvendor);
6550                break;
6551            }
6552            case sstoraclecreateview:
6553            {
6554                ret = new TCreateViewSqlStatement(pdbvendor);
6555                break;
6556            }
6557            case sstcreatematerializedview:{
6558                ret = new TCreateMaterializedSqlStatement(pdbvendor);
6559                break;
6560            }
6561            case sstoraclecreateindex:
6562            {
6563                ret = new TCreateIndexSqlStatement(pdbvendor);
6564                break;
6565            }
6566            case sstoraclecreatedatabase:
6567            {
6568                ret = new TCreateDatabaseSqlStatement(pdbvendor);
6569                break;
6570            }
6571            case sstoracledroptable:
6572            {
6573                ret = new TDropTableSqlStatement(pdbvendor);
6574                break;
6575            }
6576            case sstoracledropview:
6577            {
6578                ret = new TDropViewSqlStatement(pdbvendor);
6579                break;
6580            }
6581            case sstoracledropindex:
6582            {
6583                ret = new TDropIndexSqlStatement(pdbvendor);
6584                break;
6585            }
6586            case sstaltertable:
6587            {
6588                ret = new TAlterTableStatement(pdbvendor);
6589                break;
6590            }
6591            case sstoraclealtersession:
6592            {
6593                ret = new TAlterSessionStatement(pdbvendor);
6594                break;
6595            }
6596            case sstplsql_createprocedure:
6597            {
6598                ret = new TPlsqlCreateProcedure(pdbvendor);
6599                ret.sqlstatementtype = gnewsqlstatementtype;
6600                // System.out.println(gnewsqlstatementtype);
6601                break;
6602            }
6603            case sstplsql_createfunction:
6604            {
6605                ret = new TPlsqlCreateFunction(pdbvendor);
6606                ret.sqlstatementtype = gnewsqlstatementtype;
6607                // System.out.println(gnewsqlstatementtype);
6608                break;
6609            }
6610            case sstplsql_createpackage:
6611            {
6612                ret = new TPlsqlCreatePackage(pdbvendor);
6613                ret.sqlstatementtype = gnewsqlstatementtype;
6614                // System.out.println(gnewsqlstatementtype);
6615                break;
6616            }
6617            case sstplsql_createtrigger:
6618            {
6619                ret = new TPlsqlCreateTrigger(pdbvendor);
6620                ret.sqlstatementtype = gnewsqlstatementtype;
6621                // System.out.println(gnewsqlstatementtype);
6622                break;
6623            }
6624            case sstplsql_execimmestmt:
6625            {
6626                ret = new TExecImmeStmt(pdbvendor);
6627                // ret.sqlstatementtype = gnewsqlstatementtype;
6628                // System.out.println(gnewsqlstatementtype);
6629                break;
6630            }
6631            case sstoraclecreatepackagebody:
6632            {
6633                ret = new TPlsqlCreatePackage(pdbvendor);
6634                ret.sqlstatementtype = ESqlStatementType.sstplsql_createpackage;
6635                break;
6636            }
6637            case sstplsql_createtype_placeholder:
6638            {
6639                ret = new TPlsqlCreateType_Placeholder(pdbvendor);
6640                ret.sqlstatementtype = gnewsqlstatementtype;
6641                // System.out.println(gnewsqlstatementtype);
6642                break;
6643            }
6644            case sstplsql_createtypebody:
6645            {
6646                ret = new TPlsqlCreateTypeBody(pdbvendor);
6647                ret.sqlstatementtype = gnewsqlstatementtype;
6648                break;
6649            }
6650            case sstCommentOn:
6651            {
6652                ret = new TCommentOnSqlStmt(pdbvendor);
6653                break;
6654            }
6655            case sstoraclecreatesequence:
6656            {
6657                ret = new TCreateSequenceStmt(pdbvendor);
6658                break;
6659            }
6660            case sstoraclecreatesynonym:
6661            {
6662                ret = new TCreateSynonymStmt(pdbvendor);
6663                break;
6664            }
6665            case sstoraclecreatedirectory:
6666            {
6667                ret = new TOracleCreateDirectoryStmt(pdbvendor);
6668                break;
6669            }
6670            case sstpostgresqlCreateIndex:
6671                ret = new TCreateIndexSqlStatement(pdbvendor);
6672                break;
6673            case sstpostgresqlCreateView:
6674                ret = new TCreateViewSqlStatement(pdbvendor);
6675                break;
6676            case sstpostgresqlCreateFunction:
6677                ret = new TCreateFunctionStmt(pdbvendor);
6678                break;
6679            case sstcreatetrigger:
6680                ret = new TCreateTriggerStmt(pdbvendor);
6681                break;
6682            case sstpostgresqlMove:
6683                ret = new TMoveStmt(pdbvendor);
6684                break;
6685            case sstpostgresqlTruncate:
6686                ret = new TTruncateStatement(pdbvendor);
6687                break;
6688            case sstpostgresqlExecute:
6689                ret = new TExecuteSqlStatement(pdbvendor);
6690                break;
6691            case sstpostgresqlDropTable:
6692                ret = new TDropTableSqlStatement(pdbvendor);
6693                break;
6694            case sstPostgresqlBlock:
6695                ret = new TCommonBlock(pdbvendor);
6696                break;
6697            case sstVacuum:
6698                ret = new TVacuumStmt(pdbvendor);
6699                break;
6700            case sstReindex:
6701                ret = new TReindexStmt(pdbvendor);
6702                break;
6703            case sstcreateprocedure:
6704                ret = new TCreateProcedureStmt(pdbvendor);
6705                break;
6706            case sstpostgresqlCommit:
6707                ret = new TCommitStmt(pdbvendor);
6708                break;
6709            case sstpostgresqlCreateSchema:
6710                ret = new TCreateSchemaSqlStatement(pdbvendor);
6711                break;
6712            case sstpostgresqlDropSchema:
6713                ret = new TDropSchemaSqlStatement(pdbvendor);
6714                break;
6715            case sstpostgresqlShowSearchPath:
6716                ret = new TShowSearchPathStmt(pdbvendor);
6717                break;
6718            case sstpostgresqlCopy:
6719                ret = new TCopyStmt(pdbvendor);
6720                break;
6721            case sstcall:
6722                ret = new TCallStatement(pdbvendor);
6723                break;
6724            case sstpostgresqlAlterSchema:
6725                ret = new TAlterSchemaStmt(pdbvendor);
6726                break;
6727            case sstpostgresqlAlterfunction:
6728                ret = new TAlterFunctionStmt(pdbvendor);
6729                break;
6730            case sstStartTransaction:
6731            {
6732                ret = new TStartTransactionStmt(pdbvendor);
6733                break;
6734            }
6735            case sstpostgresqlComment:
6736                ret = new TCommentOnSqlStmt(pdbvendor);
6737                break;
6738            case sstpostgresqlShow:
6739                ret = new TShowStmt(pdbvendor);
6740                break;
6741            case sstpostgresqlSetSearchPath:
6742            case sstpostgresqlSet:
6743                ret = new TSetStmt(pdbvendor);
6744                break;
6745            case sstpostgresqlDropFunction:
6746                ret = new TDropFunctionStmt(pdbvendor);
6747                break;
6748            case sstpostgresqlDropTrigger:
6749                ret = new TDropTriggerSqlStatement(pdbvendor);
6750                break;
6751            case sstpostgresqlDropProcedure:
6752                ret = new TDropProcedureStmt(pdbvendor);
6753                break;
6754            case sstdropindex:
6755                ret = new TDropIndexSqlStatement(pdbvendor);
6756                break;
6757            case sstpostgresqlDropSequence:
6758                ret = new TDropSequenceStmt(pdbvendor);
6759                break;
6760            case sstpostgresqlDropView:
6761                ret = new TDropViewSqlStatement(pdbvendor);
6762                break;
6763            case sstpostgresqlCreateSequence:
6764                ret = new TCreateSequenceStmt(pdbvendor);
6765                break;
6766            case sstpostgresqlAlterSequence:
6767                ret = new TAlterSequenceStatement(pdbvendor);
6768                break;
6769            case sstpostgresqlCreateType:
6770                ret = new TCreateTypeStmt(pdbvendor);
6771                break;
6772            case sstcreateExtension:
6773                ret = new TCreateExtensionStmt(pdbvendor);
6774                break;
6775            case sstPostgresqlTable:
6776                ret = new TPostgresqlTableStmt(pdbvendor);
6777                break;
6778            case sstpostgresqlDropMaterializedView:
6779                ret = new TDropMaterializedViewStmt(pdbvendor);
6780                break;
6781            case sstpostgresqlDo:
6782                boolean lcisnewsql = false;
6783
6784                if ( pstate == EFindSqlStateType.stnormal )
6785                {
6786                    TSourceToken lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
6787                    if ( (lcnextsolidtoken != null) )
6788                    {
6789                        if ( lcnextsolidtoken.tokencode == TBaseType.rrw_postgresql_function_delimiter )
6790                            lcisnewsql = true;
6791                        else if ( lcnextsolidtoken.tokencode == TBaseType.rrw_postgresql_language )
6792                            lcisnewsql = true;
6793                    }
6794                }
6795
6796                if ( lcisnewsql )
6797                    ret = new TDoExecuteBlockStmt(pdbvendor);
6798
6799                break;
6800            case sstpostgresqlDeclare:
6801                ret = new TCommonBlock(pdbvendor);
6802                gnewsqlstatementtype = ret.sqlstatementtype;
6803                break;
6804            case sstpostgresqlExplain:
6805                ret = new TExplainPlan(pdbvendor);
6806                gnewsqlstatementtype = ret.sqlstatementtype;
6807                break;
6808            case sstpostgresqlCreateRole:
6809                ret = new TCreateRoleStmt(pdbvendor);
6810                break;
6811            case sstpostgresqlAlterRole:
6812                ret = new TAlterRoleStmt(pdbvendor);
6813                break;
6814            case sstpostgresqlAlterIndex:
6815                ret = new TAlterIndexStmt(pdbvendor);
6816                break;
6817            default:
6818            {
6819                ret = new TUnknownSqlStatement(pdbvendor);
6820                ret.sqlstatementtype = gnewsqlstatementtype;
6821                break;
6822            }
6823        }    // case
6824
6825        return ret;
6826    }
6827
6828
6829
6830TCustomSqlStatement isbigquery(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
6831        TCustomSqlStatement ret = null;
6832
6833        gnewsqlstatementtype = ESqlStatementType.sstinvalid;
6834
6835        if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
6836                || (pcst.tokencode  == TBaseType.cmtslashstar)
6837                || (pcst.tokencode  == TBaseType.lexspace)
6838                || (pcst.tokencode  == TBaseType.lexnewline)
6839                || (pcst.tokentype == ETokenType.ttsemicolon) )
6840        {
6841            return null;
6842        }
6843
6844        int lcpos = pcst.posinlist;
6845        TSourceTokenList lcsourcetokenlist = pcst.container;
6846        TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
6847
6848        //subquery after semicolon or at first line
6849        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
6850        {
6851            int k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
6852            if ( k >0 )
6853            {
6854                ret = new TSelectSqlStatement(pdbvendor);
6855            }
6856
6857            return ret;
6858        }
6859
6860        //cte
6861        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
6862        {
6863            ret = findcte(pcst,pdbvendor);
6864            if ( (ret != null) )  return ret;
6865        }
6866
6867        gnewsqlstatementtype = findbigquerycmd(pcst);
6868
6869        TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
6870        switch (gnewsqlstatementtype) {    //
6871            case sstinvalid:
6872            {
6873                ret = null;
6874
6875                if ( pstate == EFindSqlStateType.stnormal )
6876                {
6877                    if ( pcst.tokencode == TBaseType.rrw_begin )
6878                    {
6879
6880                        ret = new TCommonBlock(pdbvendor);
6881                        gnewsqlstatementtype = ret.sqlstatementtype;
6882                    }
6883
6884                }
6885                break;
6886            }
6887            case sstselect:
6888            {
6889                boolean lcisnewsql = true;
6890
6891                if ( pstate != EFindSqlStateType.stnormal )
6892                {
6893                    // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
6894                    if ( (lcprevsolidtoken != null) )
6895                    {
6896                        if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
6897                            lcisnewsql = false; //subqery
6898                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
6899                            lcisnewsql = false;
6900                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
6901                            lcisnewsql = false;
6902                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
6903                            lcisnewsql = false;
6904                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
6905                            lcisnewsql = false;
6906                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
6907                            lcisnewsql = false;
6908                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
6909                        {
6910                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
6911                                lcisnewsql = false;
6912                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
6913                                lcisnewsql = false;
6914                        }
6915
6916                        if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
6917                        {
6918                            TSourceToken lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
6919                            if ( (lcpprevsolidtoken != null) )
6920                            {
6921                                if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
6922                                    lcisnewsql = false;
6923                            }
6924                        }
6925
6926                    }
6927
6928
6929                    if ( (lccurrentsqlstatement != null) )
6930                    {
6931                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
6932                            lcisnewsql = false;
6933                    }
6934
6935                }
6936
6937                if ( lcisnewsql )
6938                    ret = new TSelectSqlStatement(pdbvendor);
6939
6940                break;
6941            }
6942            case sstinsert:
6943            {
6944                boolean lcisnewsql = true;
6945                if ( pstate != EFindSqlStateType.stnormal )
6946                {
6947                    if ( (lccurrentsqlstatement != null) )
6948                    {
6949
6950                    }
6951                }
6952
6953                if ( lcisnewsql )
6954                    ret = new TInsertSqlStatement(pdbvendor);
6955
6956                break;
6957            }
6958            case sstupdate:
6959            {
6960                boolean lcisnewsql = true;
6961                if ( pstate != EFindSqlStateType.stnormal )
6962                {
6963                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
6964                    if ( (lcprevsolidtoken != null) )
6965                    { //
6966                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
6967                            lcisnewsql = false;
6968                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
6969                            lcisnewsql = false;
6970                    }
6971
6972                    TSourceToken lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
6973                    if ( (lcnextsolidtoken != null) )
6974                    {
6975                        if ( lcnextsolidtoken.tokentype == ETokenType.ttleftparenthesis)
6976                        {
6977                            int k = lcsourcetokenlist.solidtokenafterpos(lcnextsolidtoken.posinlist,TBaseType.rrw_select,1,"(");
6978                            if ( k  == 0 ) lcisnewsql = false;
6979                        }
6980                    }
6981
6982
6983                    if ( (lccurrentsqlstatement != null) )
6984                    {
6985                    }
6986                }
6987
6988                if ( lcisnewsql )
6989                {
6990                    ret = new TUpdateSqlStatement(pdbvendor);
6991                    ret.dummytag = 1; // means set clause in update is not found yet, used to seperate set clause from set statement
6992                }
6993                break;
6994            }
6995            case sstdelete:
6996            {
6997                boolean lcisnewsql = true;
6998
6999                if ( pstate != EFindSqlStateType.stnormal )
7000                {
7001                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
7002                    if ( (lcprevsolidtoken != null) )
7003                    {
7004                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
7005                            lcisnewsql = false;
7006                    }
7007
7008                    if ( (lccurrentsqlstatement != null) )
7009                    {
7010                    }
7011                }
7012
7013                if ( lcisnewsql )
7014                    ret = new TDeleteSqlStatement(pdbvendor);
7015
7016                break;
7017            }
7018            case sstmerge:
7019            {
7020                ret = new TMergeSqlStatement(pdbvendor);
7021                ret.sqlstatementtype = gnewsqlstatementtype;
7022                break;
7023            }
7024            case sstcreatetable:
7025            {
7026                ret = new TCreateTableSqlStatement(pdbvendor);
7027                break;
7028            }
7029            case sstcreateview:{
7030                ret = new TCreateViewSqlStatement(pdbvendor);
7031                break;
7032            }
7033            case sstaltertable:
7034            {
7035                ret = new TAlterTableStatement(pdbvendor);
7036                break;
7037            }
7038            case sstalterview:
7039            {
7040                ret = new TAlterViewStatement(pdbvendor);
7041                break;
7042            }
7043            case sstdroptable:
7044            {
7045                ret = new TDropTableSqlStatement(pdbvendor);
7046                break;
7047            }
7048            case sstdropview:
7049            {
7050                ret = new TDropViewSqlStatement(pdbvendor);
7051                break;
7052            }
7053            case sstcreatefunction:
7054            {
7055                ret = new TCreateFunctionStmt(pdbvendor);
7056                break;
7057            }
7058            case sstcreateprocedure:
7059            {
7060                ret = new TCreateProcedureStmt(pdbvendor);
7061                break;
7062            }
7063            case sstBigQueryDeclare:
7064                ret = new TMssqlDeclare(pdbvendor);
7065                break;
7066            case sstTruncate:
7067            {
7068                ret = new TTruncateStatement(pdbvendor);
7069                break;
7070            }
7071            case sstset:
7072            {
7073                boolean lcisnewsql = true;
7074                if ( pstate != EFindSqlStateType.stnormal )
7075                {
7076                    if ( TBaseType.assigned(lccurrentsqlstatement) )
7077                    {
7078                        lcisnewsql = false;
7079                    }
7080                }
7081
7082                if ( lcisnewsql )
7083                {
7084                    ret =  new TSetStmt(pdbvendor);
7085                }
7086                break;
7087            }
7088            case sstcreatematerializedview:{
7089                ret = new TCreateMaterializedSqlStatement(pdbvendor);
7090                break;
7091            }
7092            case sstdropprocedure:
7093            {
7094                ret = new TDropProcedureStmt(pdbvendor);
7095                break;
7096            }
7097            case sstdropfunction:
7098            {
7099                ret = new TDropFunctionStmt(pdbvendor);
7100                break;
7101            }
7102            case sstDropMaterializedView:
7103                ret = new TDropMaterializedViewStmt(pdbvendor);
7104                break;
7105            case sstcall:
7106                ret = new TCallStatement(pdbvendor);
7107                break;
7108            case sstBigQueryExportData:
7109                ret = new TExportDataStmt(pdbvendor);
7110                break;
7111            case sstBegin:
7112            {
7113                boolean isblock = false;
7114                int numOfSolidToken = 0;
7115                // if linebreak appears before the ;, then it a block, else it a
7116                TSourceToken st ;
7117                if (lcpos == lcsourcetokenlist.size() - 1){
7118                    // this is the last token
7119                }else{
7120                    for(int i=lcpos+1;i<lcsourcetokenlist.size();i++){
7121                        st = lcsourcetokenlist.get(i);
7122                        if (st.issolidtoken()){
7123                            numOfSolidToken++;
7124                        }
7125                        
7126
7127                        
7128                        if (st.tokencode == ';') {
7129                            if (numOfSolidToken<=3){
7130
7131                            }else{
7132                                isblock = true;
7133                            }
7134                            break;
7135                        }
7136
7137                        if (numOfSolidToken > 3){
7138                            isblock = true;
7139                            break;
7140                        }
7141                    }
7142                }
7143
7144                if (isblock){
7145                    ret = new TCommonBlock(pdbvendor);
7146                    gnewsqlstatementtype = ret.sqlstatementtype;
7147                }else{
7148                    ret = new TBeginTran(pdbvendor);
7149                    pcst.tokencode = TBaseType.rrw_bigquery_begin_transaction;
7150                }
7151
7152
7153                break;
7154            }
7155            case sstbegintran:
7156            {
7157                ret = new TBeginTran(pdbvendor);
7158                if (pcst.tokencode == TBaseType.rrw_begin){
7159                    pcst.tokencode = TBaseType.rrw_bigquery_begin_transaction;
7160                }
7161
7162                break;
7163            }
7164            case sstExecute:
7165            {
7166                ret =  new TExecImmeStmt(pdbvendor);
7167                break;
7168            }
7169            case sst_ifstmt:
7170                ret = new TIfStmt(pdbvendor);
7171                break;
7172            case sst_loopstmt:
7173                ret = new TLoopStmt(pdbvendor);
7174                break;
7175            case sstRepeat:
7176                ret = new TRepeatStmt(pdbvendor);
7177                break;
7178            case sstWhilestmt:
7179                ret = new TWhileStmt(pdbvendor);
7180                break;
7181            case sstForStmt:
7182                ret = new TForStmt(pdbvendor);
7183                break;
7184            case sst_casestmt:
7185                ret = new TCaseStmt(pdbvendor);
7186                break;
7187            case sstDropAssignment:
7188                ret = new TDropStmt(pdbvendor);
7189                break;
7190            case sstdropschema:
7191                ret = new TDropSchemaSqlStatement(pdbvendor);
7192                break;
7193            case sstDropReservation:
7194                ret = new TDropStmt(pdbvendor);
7195                break;
7196            case sstDropRowAccessPolicy:
7197                ret = new TDropStmt(pdbvendor);
7198                break;
7199            case sstDropSnapshotTable:
7200                ret = new TDropStmt(pdbvendor);
7201                break;
7202            case sstDropTableFunction:
7203                ret = new TDropStmt(pdbvendor);
7204                break;
7205            default:
7206            {
7207                ret = new TUnknownSqlStatement(pdbvendor);
7208                ret.sqlstatementtype = gnewsqlstatementtype;
7209                break;
7210            }
7211        }    // case
7212
7213        return ret;
7214    }
7215
7216TCustomSqlStatement issnowflake(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
7217    TCustomSqlStatement ret = null;
7218
7219    gnewsqlstatementtype = ESqlStatementType.sstinvalid;
7220
7221    if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
7222       || (pcst.tokencode  == TBaseType.cmtslashstar)
7223       || (pcst.tokencode  == TBaseType.lexspace)
7224       || (pcst.tokencode  == TBaseType.lexnewline)
7225        || (pcst.tokentype == ETokenType.ttsemicolon) )
7226    {
7227      return null;
7228    }
7229
7230    int lcpos = pcst.posinlist;
7231    TSourceTokenList lcsourcetokenlist = pcst.container;
7232    TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
7233
7234    //subquery after semicolon or at first line
7235    if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
7236      {
7237        int k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
7238        if ( k >0 )
7239          {
7240            ret = new TSelectSqlStatement(pdbvendor);
7241          }
7242        else{
7243            k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_with,1,"(");
7244            int k2 = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_as,3,"(");
7245            if (( k >0 ) && (k2 > 2))
7246            {
7247                ret = new TSelectSqlStatement(pdbvendor);
7248            }
7249
7250        }
7251
7252        return ret;
7253      }
7254
7255    //cte
7256    if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
7257      {
7258        ret = findcte(pcst,pdbvendor);
7259        if ( (ret != null) )  return ret;
7260      }
7261
7262    gnewsqlstatementtype = findsnowflakecmd(pcst);
7263
7264    TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
7265    switch (gnewsqlstatementtype) {    //
7266        case sstinvalid:
7267          {
7268            ret = null;
7269
7270            if ( pstate == EFindSqlStateType.stnormal )
7271              {
7272                if ( pcst.tokencode == TBaseType.label_begin )
7273                  {
7274                    ret = new TCommonBlock(pdbvendor);
7275                    gnewsqlstatementtype = ret.sqlstatementtype;
7276                  }
7277                else if ( pcst.tokencode == TBaseType.rrw_declare )
7278                  {
7279                    ret = new TCommonBlock(pdbvendor);
7280                    gnewsqlstatementtype = ret.sqlstatementtype;
7281                  }
7282                else if ( pcst.tokencode == TBaseType.rrw_begin )
7283                  {
7284                    ret = new TCommonBlock(pdbvendor);
7285                    gnewsqlstatementtype = ret.sqlstatementtype;
7286                  }
7287                else if ( pcst.tokencode == TBaseType.rrw_procedure )
7288                  {
7289                    ret = new TPlsqlCreateProcedure(pdbvendor);
7290                    // ret.sqlstatementtype = ESqlStatementType.sstplsql_createprocedure;
7291                    gnewsqlstatementtype = ret.sqlstatementtype;
7292                  }
7293                else if ( pcst.tokencode == TBaseType.rrw_function )
7294                  {
7295                    ret = new TPlsqlCreateFunction(pdbvendor);
7296                    // ret.sqlstatementtype = ESqlStatementType.sstplsql_createfunction;
7297                    gnewsqlstatementtype = ret.sqlstatementtype;
7298                  }
7299                else if ( pcst.tokencode == TBaseType.rrw_package )
7300                  {
7301                    ret = new TPlsqlCreatePackage(pdbvendor);
7302                   // ret.sqlstatementtype = ESqlStatementType.sstplsql_createpackage;
7303                    gnewsqlstatementtype = ret.sqlstatementtype;
7304                  }
7305              }
7306              break;
7307          }
7308        case sstselect:
7309          {
7310            boolean lcisnewsql = true;
7311
7312            if ( pstate != EFindSqlStateType.stnormal )
7313              {
7314                // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
7315                if ( (lcprevsolidtoken != null) )
7316                  {
7317                    if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
7318                      lcisnewsql = false; //subqery
7319                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
7320                      lcisnewsql = false;
7321                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
7322                      lcisnewsql = false;
7323                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
7324                      lcisnewsql = false;
7325                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
7326                      lcisnewsql = false;
7327                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
7328                      lcisnewsql = false;
7329                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
7330                      {
7331                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
7332                          lcisnewsql = false;
7333                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
7334                          lcisnewsql = false;
7335                      }
7336
7337                    if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
7338                      {
7339                        TSourceToken lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
7340                        if ( (lcpprevsolidtoken != null) )
7341                          {
7342                            if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
7343                              lcisnewsql = false;
7344                          }
7345                      }
7346
7347                  }
7348
7349
7350                if ( (lccurrentsqlstatement != null) )
7351                  {
7352                    if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
7353                      lcisnewsql = false;
7354                  }
7355
7356              }
7357
7358            if ( lcisnewsql )
7359              ret = new TSelectSqlStatement(pdbvendor);
7360
7361            break;
7362          }
7363        case sstinsert:
7364          {
7365            boolean lcisnewsql = true;
7366            if ( pstate != EFindSqlStateType.stnormal )
7367              {
7368                if ( (lccurrentsqlstatement != null) )
7369                  {
7370
7371                  }
7372              }
7373
7374            if ( lcisnewsql )
7375              ret = new TInsertSqlStatement(pdbvendor);
7376
7377            break;
7378          }
7379        case sstupdate:
7380          {
7381            boolean lcisnewsql = true;
7382            if ( pstate != EFindSqlStateType.stnormal )
7383              {
7384                lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
7385                if ( (lcprevsolidtoken != null) )
7386                  { //
7387                    if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
7388                      lcisnewsql = false;
7389                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
7390                      lcisnewsql = false;
7391                  }
7392
7393                TSourceToken lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
7394                if ( (lcnextsolidtoken != null) )
7395                  {
7396                    if ( lcnextsolidtoken.tokentype == ETokenType.ttleftparenthesis)
7397                      {
7398                        int k = lcsourcetokenlist.solidtokenafterpos(lcnextsolidtoken.posinlist,TBaseType.rrw_select,1,"(");
7399                        if ( k  == 0 ) lcisnewsql = false;
7400                      }
7401                  }
7402
7403
7404                if ( (lccurrentsqlstatement != null) )
7405                  {
7406                  }
7407              }
7408
7409            if ( lcisnewsql )
7410              {
7411                ret = new TUpdateSqlStatement(pdbvendor);
7412                ret.dummytag = 1; // means set clause in update is not found yet, used to seperate set clause from set statement
7413              }
7414            break;
7415          }
7416        case sstdelete:
7417          {
7418            boolean lcisnewsql = true;
7419
7420            if ( pstate != EFindSqlStateType.stnormal )
7421              {
7422                lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
7423                if ( (lcprevsolidtoken != null) )
7424                  {
7425                    if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
7426                      lcisnewsql = false;
7427                  }
7428
7429                if ( (lccurrentsqlstatement != null) )
7430                  {
7431                  }
7432              }
7433
7434            if ( lcisnewsql )
7435              ret = new TDeleteSqlStatement(pdbvendor);
7436
7437            break;
7438          }
7439        case sstmerge:
7440          {
7441            ret = new TMergeSqlStatement(pdbvendor);
7442            ret.sqlstatementtype = gnewsqlstatementtype;
7443            break;
7444          }
7445        case sstoraclecommit:
7446          {
7447            ret = new TUnknownSqlStatement(pdbvendor);
7448            ret.sqlstatementtype = gnewsqlstatementtype;
7449            break;
7450          }
7451        case sstoraclerollback:
7452          {
7453            ret = new TUnknownSqlStatement(pdbvendor);
7454            ret.sqlstatementtype = gnewsqlstatementtype;
7455            break;
7456          }
7457        case sstoraclerevoke:
7458          {
7459            ret = new TUnknownSqlStatement(pdbvendor);
7460            ret.sqlstatementtype = gnewsqlstatementtype;
7461              break;
7462          }
7463        case sstoraclegrant:
7464          {
7465            ret = new TUnknownSqlStatement(pdbvendor);
7466            ret.sqlstatementtype = gnewsqlstatementtype;
7467              break;
7468          }
7469        case sstcreatetable:
7470          {
7471            ret = new TCreateTableSqlStatement(pdbvendor);
7472              break;
7473          }
7474        case sstoraclecreateview:
7475          {
7476            ret = new TCreateViewSqlStatement(pdbvendor);
7477              break;
7478          }
7479        case sstAlterAccount:
7480        {
7481            ret = new TAlterAccountStmt(pdbvendor);
7482            break;
7483        }
7484        case sstalterdatabase:
7485        {
7486            ret = new TAlterDatabaseStmt(pdbvendor);
7487            break;
7488        }
7489        case sstAlterFileFormat:
7490        {
7491            ret = new TAlterFileFormatStmt(pdbvendor);
7492            break;
7493        }
7494        case sstalterfunction:
7495        {
7496            ret = new TAlterFunctionStmt(pdbvendor);
7497            break;
7498        }
7499        case sstAlterNetworkPolicy:
7500        {
7501            ret = new TAlterNetworkPolicyStmt(pdbvendor);
7502            break;
7503        }
7504        case sstAlterPipe:
7505        {
7506            ret = new TAlterPipeStmt(pdbvendor);
7507            break;
7508        }
7509        case sstAlterResourceMonitor:
7510        {
7511            ret = new TAlterResourceMonitorStmt(pdbvendor);
7512            break;
7513        }
7514        case sstAlterRole:
7515        {
7516            ret = new TAlterRoleStmt(pdbvendor);
7517            break;
7518        }
7519        case sstAlterSchema:
7520        {
7521            ret = new TAlterSchemaStmt(pdbvendor);
7522            break;
7523        }
7524        case sstaltersequence:
7525        {
7526            ret = new TAlterSequenceStatement(pdbvendor);
7527            break;
7528        }
7529        case sstaltersession:
7530        {
7531            ret = new TAlterSessionStatement(pdbvendor);
7532            break;
7533        }
7534        case sstAlterStage:
7535        {
7536            ret = new TAlterStageStmt(pdbvendor);
7537            break;
7538        }
7539        case sstalteruser:
7540        {
7541            ret = new TAlterUserStmt(pdbvendor);
7542            break;
7543        }
7544        case sstAlterShare:
7545        {
7546            ret = new TAlterShareStmt(pdbvendor);
7547            break;
7548        }
7549        case sstalterview:
7550        {
7551            ret = new TAlterViewStatement(pdbvendor);
7552            break;
7553        }
7554        case sstAlterWarehouse:
7555        {
7556            ret = new TAlterWarehouseStmt(pdbvendor);
7557            break;
7558        }
7559        case sstBegin:
7560        {
7561            boolean isblock = false;
7562            int numOfSolidToken = 0;
7563            // if linebreak appears before the ;, then it a block, else it a
7564            TSourceToken st ;
7565            if (lcpos == lcsourcetokenlist.size() - 1){
7566                // this is the last token
7567            }else{
7568                for(int i=lcpos+1;i<lcsourcetokenlist.size();i++){
7569                    st = lcsourcetokenlist.get(i);
7570                    if (st.issolidtoken()){
7571                        numOfSolidToken++;
7572                    }
7573                    // Check for newline before semicolon - if found, must be a block
7574                    if (st.tokencode == TBaseType.lexnewline) {
7575                        isblock = true;
7576                        // Continue to look for semicolon to complete the check
7577                    }
7578
7579                    if (st.tokencode == ';') {
7580                        if (numOfSolidToken<=3){
7581
7582                        }else{
7583                            isblock = true;
7584                        }
7585                        break;
7586                    }
7587
7588                    if (numOfSolidToken > 3){
7589                        isblock = true;
7590                        break;
7591                    }
7592                }
7593            }
7594
7595            if (isblock){
7596                ret = new TCommonBlock(pdbvendor);
7597                gnewsqlstatementtype = ret.sqlstatementtype;
7598            }else{
7599                ret = new TBeginTran(pdbvendor);
7600                pcst.tokencode = TBaseType.rrw_snowflake_begin_transaction;
7601            }
7602
7603
7604            break;
7605        }
7606        case sstbegintran:
7607        {
7608            ret = new TBeginTran(pdbvendor);
7609            if (pcst.tokencode == TBaseType.rrw_begin){
7610                pcst.tokencode = TBaseType.rrw_snowflake_begin_transaction;
7611            }
7612
7613            break;
7614        }
7615        case sstcomment:
7616        {
7617            ret = new TCommentOnSqlStmt(pdbvendor);
7618            break;
7619        }
7620        case sstcommit:
7621        {
7622            ret = new TCommitStmt(pdbvendor);
7623            break;
7624        }
7625        case sstCopyInto:
7626        {
7627            ret = new TSnowflakeCopyIntoStmt(pdbvendor);
7628            break;
7629        }
7630        case sstcreatedatabase:
7631        {
7632            ret = new TCreateDatabaseSqlStatement(pdbvendor);
7633            break;
7634        }
7635        case sstCreateFileFormat:
7636        {
7637            ret = new TCreateFileFormatStmt(pdbvendor);
7638            break;
7639        }
7640        case sstcreatefunction:
7641        {
7642            ret = new TCreateFunctionStmt(pdbvendor);
7643            break;
7644        }
7645        case sstCreateNetworkPolicy:
7646        {
7647            ret = new TCreateNetworkPolicyStmt(pdbvendor);
7648            break;
7649        }
7650        case sstCreatePipe:
7651        {
7652            ret = new TCreatePipeStmt(pdbvendor);
7653            break;
7654        }
7655        case sstCreateResourceMonitor:
7656        {
7657            ret = new TCreateResourceMonitorStmt(pdbvendor);
7658            break;
7659        }
7660        case sstcreaterole:
7661        {
7662            ret = new TCreateRoleStmt(pdbvendor);
7663            break;
7664        }
7665        case sstcreateschema:
7666        {
7667            ret = new TCreateSchemaSqlStatement(pdbvendor);
7668            break;
7669        }
7670        case sstcreatesequence:
7671        {
7672            ret = new TCreateSequenceStmt(pdbvendor);
7673            break;
7674        }
7675        case sstCreateShare:
7676        {
7677            ret = new TCreateShareStmt(pdbvendor);
7678            break;
7679        }
7680        case sstCreateStage:
7681        {
7682            ret = new TCreateStageStmt(pdbvendor);
7683            break;
7684        }
7685        case sstcreateuser:
7686        {
7687            ret = new TCreateUserStmt(pdbvendor);
7688            break;
7689        }
7690        case sstCreateWarehouse:
7691        {
7692            ret = new TCreateWarehouseStmt(pdbvendor);
7693            break;
7694        }
7695        case sstDescFileFormat:
7696        case sstDescFunction:
7697        case sstDescNetworkPolicy:
7698        case sstDescPipe:
7699        case sstDescResult:
7700        case sstDescShare:
7701        case sstDescStage:
7702        case sstDescTable:
7703        case sstDescUser:
7704        case sstDescView:
7705        case sstDescStorage:
7706        {
7707            ret = new TDescribeStmt(pdbvendor);
7708            break;
7709        }
7710        case sstdropfunction:
7711        {
7712            ret = new TDropFunctionStmt(pdbvendor);
7713            break;
7714        }
7715        case sstdropdatabase:
7716        {
7717            ret = new TDropDatabaseStmt(pdbvendor);
7718            break;
7719        }
7720        case sstDropFileFormat:
7721        {
7722            ret = new TDropStmt(pdbvendor);
7723            ret.sqlstatementtype = gnewsqlstatementtype;
7724            break;
7725        }
7726        case sstDropNetworkPolicy:
7727        {
7728            ret = new TDropStmt(pdbvendor);
7729            ret.sqlstatementtype = gnewsqlstatementtype;
7730            break;
7731        }
7732        case sstDropPipe:
7733        {
7734            ret = new TDropStmt(pdbvendor);
7735            ret.sqlstatementtype = gnewsqlstatementtype;
7736            break;
7737        }
7738        case sstDropResourceMonitor:
7739        {
7740            ret = new TDropStmt(pdbvendor);
7741            ret.sqlstatementtype = gnewsqlstatementtype;
7742            break;
7743        }
7744        case sstdroprole:
7745        {
7746            ret = new TDropRoleStmt(pdbvendor);
7747            break;
7748        }
7749        case sstdropschema:
7750        {
7751            ret = new TDropSchemaSqlStatement(pdbvendor);
7752            break;
7753        }
7754        case sstDropShare:
7755        {
7756            ret = new TDropStmt(pdbvendor);
7757            ret.sqlstatementtype = gnewsqlstatementtype;
7758            break;
7759        }
7760        case sstDropStage:
7761        {
7762            ret = new TDropStmt(pdbvendor);
7763            ret.sqlstatementtype = gnewsqlstatementtype;
7764            break;
7765        }
7766        case sstdroptable:
7767        {
7768            ret = new TDropTableSqlStatement(pdbvendor);
7769            break;
7770        }
7771        case sstdropuser:
7772        {
7773            ret = new TDropUserStmt(pdbvendor);
7774            break;
7775        }
7776        case sstdropview:
7777        {
7778            ret = new TDropViewSqlStatement(pdbvendor);
7779            break;
7780        }
7781        case sstDropWarehouse:
7782        {
7783            ret = new TDropStmt(pdbvendor);
7784            ret.sqlstatementtype = gnewsqlstatementtype;
7785            break;
7786        }
7787        case sstGet:
7788        {
7789            ret = new TGetStmt(pdbvendor);
7790            break;
7791        }
7792        case sstGrant:
7793        {
7794            ret = new TGrantStmt(pdbvendor);
7795            break;
7796        }
7797        case sstList:
7798        {
7799            ret = new TListStmt(pdbvendor);
7800            break;
7801        }
7802        case sstPut:
7803        {
7804            ret = new TPutStmt(pdbvendor);
7805            break;
7806        }
7807        case sstRemove:
7808        {
7809            ret = new TRemoveStmt(pdbvendor);
7810            break;
7811        }
7812        case sstRevoke:
7813        {
7814            ret = new TRevokeStmt(pdbvendor);
7815            break;
7816        }
7817        case sstrollback:
7818        {
7819            ret = new TRollbackStmt(pdbvendor);
7820            break;
7821        }
7822        case sstset:
7823        {
7824            ret = new TSetStmt(pdbvendor);
7825            break;
7826        }
7827        case sstShowColumns:
7828        case sstShowDatabases:
7829        case sstShowFileFormats:
7830        case sstShowFunctions:
7831        case sstShowGrants:
7832        case sstShowNetworkPolicies:
7833        case sstShowObjects:
7834        case sstShowParameters:
7835        case sstShowPipes:
7836        case sstShowResourceMonitors:
7837        case sstShowRoles:
7838        case sstShowSchemas:
7839        case sstShowSequences:
7840        case sstShowShares:
7841        case sstShowStages:
7842        case sstShowTables:
7843        case sstShowTransactions:
7844        case sstShowUserFunctions:
7845        case sstShowUsers:
7846        case sstShowVariables:
7847        case sstShowViews:
7848        case sstShowWarehouses:
7849        case sstShowProcedures:
7850        case sstShowTasks:
7851        case sstShowStreams:
7852        {
7853            ret = new TShowStmt(pdbvendor);
7854            ret.sqlstatementtype = gnewsqlstatementtype;
7855            break;
7856        }
7857        case sstTruncate:
7858        {
7859            ret = new TTruncateStatement(pdbvendor);
7860
7861            break;
7862        }
7863        case sstUndropDatabase:
7864        case sstUndropSchema:
7865        case sstUndropTable:
7866        {
7867            ret = new TUndropStmt(pdbvendor);
7868            ret.sqlstatementtype = gnewsqlstatementtype;
7869            break;
7870        }
7871        case sstunset:
7872        {
7873            ret = new TUnsetStmt(pdbvendor);
7874            break;
7875        }
7876        case sstcreatematerializedview:{
7877            ret = new TCreateMaterializedSqlStatement(pdbvendor);
7878            break;
7879        }
7880        case sstoraclecreateindex:
7881          {
7882            ret = new TCreateIndexSqlStatement(pdbvendor);
7883              break;
7884          }
7885        case sstoracledroptable:
7886          {
7887            ret = new TDropTableSqlStatement(pdbvendor);
7888              break;
7889          }
7890        case sstoracledropview:
7891          {
7892           ret = new TDropViewSqlStatement(pdbvendor);
7893              break;
7894          }
7895        case sstoracledropindex:
7896          {
7897            ret = new TDropIndexSqlStatement(pdbvendor);
7898              break;
7899          }
7900        case sstaltertable:
7901          {
7902            ret = new TAlterTableStatement(pdbvendor);
7903              break;
7904          }
7905        case sstoraclealtersession:
7906          {
7907            ret = new TAlterSessionStatement(pdbvendor);
7908              break;
7909          }
7910        case sstplsql_createfunction:
7911        {
7912          ret = new TPlsqlCreateFunction(pdbvendor);
7913          ret.sqlstatementtype = gnewsqlstatementtype;
7914          // System.out.println(gnewsqlstatementtype);
7915            break;
7916        }
7917        case sstCommentOn:
7918          {
7919            ret = new TCommentOnSqlStmt(pdbvendor);
7920              break;
7921          }
7922        case sstoraclecreatesequence:
7923          {
7924            ret = new TCreateSequenceStmt(pdbvendor);
7925              break;
7926          }
7927        case sstpostgresqlCreateIndex:
7928            ret = new TCreateIndexSqlStatement(pdbvendor);
7929            break;
7930        case sstpostgresqlCreateView:
7931            ret = new TCreateViewSqlStatement(pdbvendor);
7932            break;
7933        case sstpostgresqlCreateFunction:
7934            ret = new TCreateFunctionStmt(pdbvendor);
7935            break;
7936//        case sstcreatetrigger:
7937//            ret = new TCreateTriggerStmt(pdbvendor);
7938//            break;
7939        case sstpostgresqlTruncate:
7940            ret = new TTruncateStatement(pdbvendor);
7941            break;
7942        case sstpostgresqlDropTable:
7943            ret = new TDropTableSqlStatement(pdbvendor);
7944            break;
7945        case sstcreateview:
7946            ret = new TCreateViewSqlStatement(pdbvendor);
7947            break;
7948        case sstcall:
7949            ret = new TCallStatement(pdbvendor);
7950            break;
7951        case sstSnowflakePseudoExprStmt:
7952            ret = new TPseudoExprStmt(pdbvendor);
7953            break;
7954        case sstcreateprocedure:
7955            ret = new TCreateProcedureStmt(pdbvendor);
7956            break;
7957        case sstCreateStream:
7958            ret = new TCreateStreamStmt(pdbvendor);
7959            break;
7960        case sstUse:
7961            TSourceToken lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
7962            if (lcnextsolidtoken != null){
7963                if (lcnextsolidtoken.toString().equalsIgnoreCase("database")){
7964                    ret = new TUseDatabase(pdbvendor);
7965                }else if (lcnextsolidtoken.toString().equalsIgnoreCase("role")){
7966                    ret = new TUseRole(pdbvendor);
7967                }else if (lcnextsolidtoken.toString().equalsIgnoreCase("warehouse")){
7968                    ret = new TUseWarehouse(pdbvendor);
7969                }else{
7970                    ret = new TUseSchema(pdbvendor);
7971                }
7972
7973            }else{
7974                ret = new TUnknownSqlStatement(pdbvendor);
7975                ret.sqlstatementtype = gnewsqlstatementtype;
7976            }
7977            break;
7978        case sstExecute:
7979        {
7980            ret =  new TExecuteSqlStatement(pdbvendor);
7981            break;
7982        }
7983        case sstAlterTask:
7984            ret =  new TAlterTaskStmt(pdbvendor);
7985            break;
7986        case sstCreateTask:
7987            ret = new TCreateTaskStmt(pdbvendor);
7988            break;
7989        case sstAlterMaterializedView:
7990            ret = new TAlterMaterializedViewStmt(pdbvendor);
7991            break;
7992        case sstDropMaterializedView:
7993            ret = new TDropMaterializedViewStmt(pdbvendor);
7994            break;
7995        case sstdropprocedure:
7996            ret = new TDropProcedureStmt(pdbvendor);
7997            break;
7998        case sstUseSecondaryRoles:
7999            ret = new TUseSecondaryRolesStmt(pdbvendor);
8000            break;
8001        case sstDropStreamlit:
8002            ret = new TDropStmt(pdbvendor);
8003            break;
8004        case sstDropStream:
8005            ret = new TDropStreamStmt(pdbvendor);
8006            break;
8007        default:
8008          {
8009            ret = new TUnknownSqlStatement(pdbvendor);
8010            ret.sqlstatementtype = gnewsqlstatementtype;
8011            break;
8012          }
8013    }    // case
8014
8015    return ret;
8016}
8017
8018TCustomSqlStatement isgreenplum(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
8019        TCustomSqlStatement ret = null;
8020
8021        gnewsqlstatementtype = ESqlStatementType.sstinvalid;
8022
8023        if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
8024           || (pcst.tokencode  == TBaseType.cmtslashstar)
8025           || (pcst.tokencode  == TBaseType.lexspace)
8026           || (pcst.tokencode  == TBaseType.lexnewline)
8027            || (pcst.tokentype == ETokenType.ttsemicolon) )
8028        {
8029          return null;
8030        }
8031
8032        int lcpos = pcst.posinlist;
8033        TSourceTokenList lcsourcetokenlist = pcst.container;
8034        TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
8035
8036        //subquery after semicolon or at first line
8037        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
8038          {
8039            int k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
8040            if ( k >0 )
8041              {
8042                ret = new TSelectSqlStatement(pdbvendor);
8043              }
8044
8045            return ret;
8046          }
8047
8048        //cte
8049        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
8050          {
8051            ret = findcte(pcst,pdbvendor);
8052            if ( (ret != null) )  return ret;
8053          }
8054
8055        gnewsqlstatementtype = findgreenplumcmd(pcst);
8056
8057        TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
8058        switch (gnewsqlstatementtype) {    //
8059            case sstinvalid:
8060              {
8061                ret = null;
8062
8063                if ( pstate == EFindSqlStateType.stnormal )
8064                  {
8065                    if ( pcst.tokencode == TBaseType.label_begin )
8066                      {
8067                        ret = new TCommonBlock(pdbvendor);
8068                        gnewsqlstatementtype = ret.sqlstatementtype;
8069                      }
8070                    else if ( pcst.tokencode == TBaseType.rrw_declare )
8071                      {
8072                        ret = new TCommonBlock(pdbvendor);
8073                        gnewsqlstatementtype = ret.sqlstatementtype;
8074                      }
8075                    else if ( pcst.tokencode == TBaseType.rrw_begin )
8076                      {
8077                        ret = new TCommonBlock(pdbvendor);
8078                        gnewsqlstatementtype = ret.sqlstatementtype;
8079                      }
8080                    else if ( pcst.tokencode == TBaseType.rrw_procedure )
8081                      {
8082                        ret = new TPlsqlCreateProcedure(pdbvendor);
8083                        // ret.sqlstatementtype = ESqlStatementType.sstplsql_createprocedure;
8084                        gnewsqlstatementtype = ret.sqlstatementtype;
8085                      }
8086                    else if ( pcst.tokencode == TBaseType.rrw_function )
8087                      {
8088                        ret = new TPlsqlCreateFunction(pdbvendor);
8089                        // ret.sqlstatementtype = ESqlStatementType.sstplsql_createfunction;
8090                        gnewsqlstatementtype = ret.sqlstatementtype;
8091                      }
8092                    else if ( pcst.tokencode == TBaseType.rrw_package )
8093                      {
8094                        ret = new TPlsqlCreatePackage(pdbvendor);
8095                       // ret.sqlstatementtype = ESqlStatementType.sstplsql_createpackage;
8096                        gnewsqlstatementtype = ret.sqlstatementtype;
8097                      }
8098                  }
8099                  break;
8100              }
8101            case sstselect:
8102              {
8103                boolean lcisnewsql = true;
8104
8105                if ( pstate != EFindSqlStateType.stnormal )
8106                  {
8107                    // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
8108                    if ( (lcprevsolidtoken != null) )
8109                      {
8110                        if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
8111                          lcisnewsql = false; //subqery
8112                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
8113                          lcisnewsql = false;
8114                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
8115                          lcisnewsql = false;
8116                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
8117                          lcisnewsql = false;
8118                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
8119                          lcisnewsql = false;
8120                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
8121                          lcisnewsql = false;
8122                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
8123                          {
8124                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
8125                              lcisnewsql = false;
8126                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
8127                              lcisnewsql = false;
8128                          }
8129
8130                        if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
8131                          {
8132                            TSourceToken lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
8133                            if ( (lcpprevsolidtoken != null) )
8134                              {
8135                                if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
8136                                  lcisnewsql = false;
8137                              }
8138                          }
8139
8140                      }
8141
8142
8143                    if ( (lccurrentsqlstatement != null) )
8144                      {
8145                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
8146                          lcisnewsql = false;
8147                      }
8148
8149                  }
8150
8151                if ( lcisnewsql )
8152                  ret = new TSelectSqlStatement(pdbvendor);
8153
8154                break;
8155              }
8156            case sstinsert:
8157              {
8158                boolean lcisnewsql = true;
8159                if ( pstate != EFindSqlStateType.stnormal )
8160                  {
8161                    if ( (lccurrentsqlstatement != null) )
8162                      {
8163
8164                      }
8165                  }
8166
8167                if ( lcisnewsql )
8168                  ret = new TInsertSqlStatement(pdbvendor);
8169
8170                break;
8171              }
8172            case sstupdate:
8173              {
8174                boolean lcisnewsql = true;
8175                if ( pstate != EFindSqlStateType.stnormal )
8176                  {
8177                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
8178                    if ( (lcprevsolidtoken != null) )
8179                      { //
8180                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
8181                          lcisnewsql = false;
8182                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
8183                          lcisnewsql = false;
8184                      }
8185
8186                    TSourceToken lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
8187                    if ( (lcnextsolidtoken != null) )
8188                      {
8189                        if ( lcnextsolidtoken.tokentype == ETokenType.ttleftparenthesis)
8190                          {
8191                            int k = lcsourcetokenlist.solidtokenafterpos(lcnextsolidtoken.posinlist,TBaseType.rrw_select,1,"(");
8192                            if ( k  == 0 ) lcisnewsql = false;
8193                          }
8194                      }
8195
8196
8197                    if ( (lccurrentsqlstatement != null) )
8198                      {
8199                      }
8200                  }
8201
8202                if ( lcisnewsql )
8203                  {
8204                    ret = new TUpdateSqlStatement(pdbvendor);
8205                    ret.dummytag = 1; // means set clause in update is not found yet, used to seperate set clause from set statement
8206                  }
8207                break;
8208              }
8209            case sstdelete:
8210              {
8211                boolean lcisnewsql = true;
8212
8213                if ( pstate != EFindSqlStateType.stnormal )
8214                  {
8215                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
8216                    if ( (lcprevsolidtoken != null) )
8217                      {
8218                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
8219                          lcisnewsql = false;
8220                      }
8221
8222                    if ( (lccurrentsqlstatement != null) )
8223                      {
8224                      }
8225                  }
8226
8227                if ( lcisnewsql )
8228                  ret = new TDeleteSqlStatement(pdbvendor);
8229
8230                break;
8231              }
8232            case sstmerge:
8233              {
8234                ret = new TMergeSqlStatement(pdbvendor);
8235                ret.sqlstatementtype = gnewsqlstatementtype;
8236                break;
8237              }
8238            case sstoraclecommit:
8239              {
8240                ret = new TUnknownSqlStatement(pdbvendor);
8241                ret.sqlstatementtype = gnewsqlstatementtype;
8242                break;
8243              }
8244            case sstoraclerollback:
8245              {
8246                ret = new TUnknownSqlStatement(pdbvendor);
8247                ret.sqlstatementtype = gnewsqlstatementtype;
8248                break;
8249              }
8250            case sstoraclesavepoint:
8251              {
8252                ret = new TUnknownSqlStatement(pdbvendor);
8253                ret.sqlstatementtype = gnewsqlstatementtype;
8254                  break;
8255              }
8256            case sstoraclerevoke:
8257              {
8258                ret = new TUnknownSqlStatement(pdbvendor);
8259                ret.sqlstatementtype = gnewsqlstatementtype;
8260                  break;
8261              }
8262            case sstoraclegrant:
8263              {
8264                ret = new TUnknownSqlStatement(pdbvendor);
8265                ret.sqlstatementtype = gnewsqlstatementtype;
8266                  break;
8267              }
8268            case sstoracleanalyze:
8269              {
8270                ret = new TUnknownSqlStatement(pdbvendor);
8271                ret.sqlstatementtype = gnewsqlstatementtype;
8272                  break;
8273              }
8274            case sstoracletruncate:
8275              {
8276                ret = new TUnknownSqlStatement(pdbvendor);
8277                ret.sqlstatementtype = gnewsqlstatementtype;
8278                  break;
8279              }
8280            case sstcreatetable:
8281            case sstgreenplumCreateExternalTable:
8282              {
8283                ret = new TCreateTableSqlStatement(pdbvendor);
8284                  break;
8285              }
8286            case sstoraclecreateview:
8287              {
8288                ret = new TCreateViewSqlStatement(pdbvendor);
8289                  break;
8290              }
8291            case sstcreatematerializedview:{
8292                ret = new TCreateMaterializedSqlStatement(pdbvendor);
8293                break;
8294            }
8295            case sstoraclecreateindex:
8296              {
8297                ret = new TCreateIndexSqlStatement(pdbvendor);
8298                  break;
8299              }
8300            case sstoraclecreatedatabase:
8301              {
8302                ret = new TCreateDatabaseSqlStatement(pdbvendor);
8303                  break;
8304              }
8305            case sstoracledroptable:
8306              {
8307                ret = new TDropTableSqlStatement(pdbvendor);
8308                  break;
8309              }
8310            case sstoracledropview:
8311              {
8312               ret = new TDropViewSqlStatement(pdbvendor);
8313                  break;
8314              }
8315            case sstoracledropindex:
8316              {
8317                ret = new TDropIndexSqlStatement(pdbvendor);
8318                  break;
8319              }
8320            case sstaltertable:
8321              {
8322                ret = new TAlterTableStatement(pdbvendor);
8323                  break;
8324              }
8325            case sstoraclealtersession:
8326              {
8327                ret = new TAlterSessionStatement(pdbvendor);
8328                  break;
8329              }
8330            case sstplsql_createprocedure:
8331            {
8332              ret = new TPlsqlCreateProcedure(pdbvendor);
8333              ret.sqlstatementtype = gnewsqlstatementtype;
8334              // System.out.println(gnewsqlstatementtype);
8335                break;
8336            }
8337            case sstplsql_createfunction:
8338            {
8339              ret = new TPlsqlCreateFunction(pdbvendor);
8340              ret.sqlstatementtype = gnewsqlstatementtype;
8341              // System.out.println(gnewsqlstatementtype);
8342                break;
8343            }
8344            case sstplsql_createpackage:
8345            {
8346              ret = new TPlsqlCreatePackage(pdbvendor);
8347              ret.sqlstatementtype = gnewsqlstatementtype;
8348              // System.out.println(gnewsqlstatementtype);
8349                break;
8350            }
8351            case sstplsql_createtrigger:
8352            {
8353              ret = new TPlsqlCreateTrigger(pdbvendor);
8354              ret.sqlstatementtype = gnewsqlstatementtype;
8355              // System.out.println(gnewsqlstatementtype);
8356                break;
8357            }
8358            case sstplsql_execimmestmt:
8359              {
8360                ret = new TExecImmeStmt(pdbvendor);
8361               // ret.sqlstatementtype = gnewsqlstatementtype;
8362                // System.out.println(gnewsqlstatementtype);
8363                  break;
8364              }
8365            case sstoraclecreatepackagebody:
8366             {
8367                ret = new TPlsqlCreatePackage(pdbvendor);
8368                ret.sqlstatementtype = ESqlStatementType.sstplsql_createpackage;
8369                 break;
8370             }
8371            case sstplsql_createtype_placeholder:
8372            {
8373              ret = new TPlsqlCreateType_Placeholder(pdbvendor);
8374              ret.sqlstatementtype = gnewsqlstatementtype;
8375              // System.out.println(gnewsqlstatementtype);
8376                break;
8377            }
8378            case sstplsql_createtypebody:
8379              {
8380                ret = new TPlsqlCreateTypeBody(pdbvendor);
8381                ret.sqlstatementtype = gnewsqlstatementtype;
8382                  break;
8383              }
8384            case sstCommentOn:
8385              {
8386                ret = new TCommentOnSqlStmt(pdbvendor);
8387                  break;
8388              }
8389            case sstoraclecreatesequence:
8390              {
8391                ret = new TCreateSequenceStmt(pdbvendor);
8392                  break;
8393              }
8394            case sstoraclecreatesynonym:
8395              {
8396                ret = new TCreateSynonymStmt(pdbvendor);
8397                  break;
8398              }
8399            case sstoraclecreatedirectory:
8400              {
8401                ret = new TOracleCreateDirectoryStmt(pdbvendor);
8402                  break;
8403              }
8404            case sstpostgresqlCreateIndex:
8405                ret = new TCreateIndexSqlStatement(pdbvendor);
8406                break;
8407            case sstpostgresqlCreateView:
8408                ret = new TCreateViewSqlStatement(pdbvendor);
8409                break;
8410            case sstpostgresqlCreateFunction:
8411                ret = new TCreateFunctionStmt(pdbvendor);
8412                break;
8413            case sstcreatetrigger:
8414                ret = new TCreateTriggerStmt(pdbvendor);
8415                break;
8416            case sstpostgresqlMove:
8417                ret = new TMoveStmt(EDbVendor.dbvgreenplum);
8418                break;
8419            case sstpostgresqlTruncate:
8420                ret = new TTruncateStatement(EDbVendor.dbvgreenplum);
8421                break;
8422            case sstpostgresqlExecute:
8423                ret = new TExecuteSqlStatement(EDbVendor.dbvgreenplum);
8424                break;
8425            case sstValues:
8426                ret = new TSelectSqlStatement(EDbVendor.dbvgreenplum);
8427                break;
8428            case sstpostgresqlDeclare: {
8429                boolean lcisnewsql = true;
8430
8431                TSourceToken lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos, 2, false);
8432                if ((lcnextsolidtoken != null)) {
8433                    if (lcnextsolidtoken.tokencode == TBaseType.rrw_greenplum_CURSOR) {
8434                        lcisnewsql = false;
8435                    }
8436                }
8437
8438
8439                if (lcisnewsql)
8440                    ret = new TCommonBlock(pdbvendor);
8441                else {
8442                    ret = new TUnknownSqlStatement(pdbvendor);
8443                }
8444                ret.sqlstatementtype = gnewsqlstatementtype;
8445
8446                break;
8447            }
8448            case sstpostgresqlSet:
8449                ret = new TSetStmt(pdbvendor);
8450                break;
8451            case sstcreateExtension:
8452                ret = new TCreateExtensionStmt(pdbvendor);
8453                break;
8454            case sstcall:
8455                ret = new TCallStatement(pdbvendor);
8456                break;
8457            case sstpostgresqlCreateSchema:
8458                ret = new TCreateSchemaSqlStatement(pdbvendor);
8459                break;
8460            case sstpostgresqlDo: {
8461                boolean lcisnewsql = false;
8462
8463                if (pstate == EFindSqlStateType.stnormal) {
8464                    TSourceToken lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos, 1, false);
8465                    if ((lcnextsolidtoken != null)) {
8466                        if (lcnextsolidtoken.tokencode == TBaseType.rrw_greenplum_function_delimiter)
8467                            lcisnewsql = true;
8468                        else if (lcnextsolidtoken.tokencode == TBaseType.rrw_greenplum_language)
8469                            lcisnewsql = true;
8470                    }
8471                }
8472
8473                if (lcisnewsql)
8474                    ret = new TDoExecuteBlockStmt(pdbvendor);
8475
8476                break;
8477            }
8478            case sstpostgresqlComment:
8479                ret = new TCommentOnSqlStmt(pdbvendor);
8480                break;
8481            default:
8482              {
8483                ret = new TUnknownSqlStatement(pdbvendor);
8484                ret.sqlstatementtype = gnewsqlstatementtype;
8485                break;
8486              }
8487        }    // case
8488
8489        return ret;
8490    }
8491
8492TCustomSqlStatement isoraclesql(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
8493    TCustomSqlStatement ret = null;
8494
8495    gnewsqlstatementtype = ESqlStatementType.sstinvalid;
8496
8497    if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
8498       || (pcst.tokencode  == TBaseType.cmtslashstar)
8499       || (pcst.tokencode  == TBaseType.lexspace)
8500       || (pcst.tokencode  == TBaseType.lexnewline)
8501        || (pcst.tokentype == ETokenType.ttsemicolon) )
8502    {
8503      return null;
8504    }
8505
8506    int lcpos = pcst.posinlist;
8507    TSourceTokenList lcsourcetokenlist = pcst.container;
8508    TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
8509
8510    //subquery after semicolon or at first line
8511    if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
8512      {
8513        int k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
8514        if ( k >0 )
8515          {
8516            ret = new TSelectSqlStatement(pdbvendor);
8517          }
8518
8519        return ret;
8520      }
8521
8522    //cte
8523    if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
8524      {
8525        ret = findcte(pcst,pdbvendor);
8526        if ( (ret != null) )  return ret;
8527      }
8528
8529    gnewsqlstatementtype = findoraclecmd(pcst);
8530
8531    TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
8532    switch (gnewsqlstatementtype) {    //
8533        case sstinvalid:
8534          {
8535            ret = null;
8536
8537            if ( pstate == EFindSqlStateType.stnormal )
8538              {
8539                if ( pcst.tokencode == TBaseType.label_begin )
8540                  {
8541                    ret = new TCommonBlock(pdbvendor);
8542                    gnewsqlstatementtype = ret.sqlstatementtype;
8543                  }
8544                else if ( pcst.tokencode == TBaseType.rrw_declare )
8545                  {
8546                    ret = new TCommonBlock(pdbvendor);
8547                    gnewsqlstatementtype = ret.sqlstatementtype;
8548                  }
8549                else if ( pcst.tokencode == TBaseType.rrw_begin )
8550                  {
8551                    ret = new TCommonBlock(pdbvendor);
8552                    gnewsqlstatementtype = ret.sqlstatementtype;
8553                  }
8554                else if ( pcst.tokencode == TBaseType.rrw_procedure )
8555                  {
8556                    ret = new TPlsqlCreateProcedure(pdbvendor);
8557                    // ret.sqlstatementtype = ESqlStatementType.sstplsql_createprocedure;
8558                    gnewsqlstatementtype = ret.sqlstatementtype;
8559                  }
8560                else if ( pcst.tokencode == TBaseType.rrw_function )
8561                  {
8562                    ret = new TPlsqlCreateFunction(pdbvendor);
8563                    // ret.sqlstatementtype = ESqlStatementType.sstplsql_createfunction;
8564                    gnewsqlstatementtype = ret.sqlstatementtype;
8565                  }
8566                else if ( pcst.tokencode == TBaseType.rrw_package )
8567                  {
8568                    ret = new TPlsqlCreatePackage(pdbvendor);
8569                   // ret.sqlstatementtype = ESqlStatementType.sstplsql_createpackage;
8570                    gnewsqlstatementtype = ret.sqlstatementtype;
8571                  }
8572              }
8573              break;
8574          }
8575        case sstselect:
8576          {
8577            boolean lcisnewsql = true;
8578
8579            if ( pstate != EFindSqlStateType.stnormal )
8580              {
8581                // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
8582                if ( (lcprevsolidtoken != null) )
8583                  {
8584                    if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
8585                      lcisnewsql = false; //subquery
8586                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
8587                      lcisnewsql = false;
8588                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
8589                      lcisnewsql = false;
8590                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
8591                      lcisnewsql = false;
8592                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
8593                      lcisnewsql = false;
8594                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
8595                      lcisnewsql = false;
8596                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
8597                      {
8598                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
8599                          lcisnewsql = false;
8600                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
8601                          lcisnewsql = false;
8602                      }
8603
8604                    if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
8605                      {
8606                        TSourceToken lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
8607                        if ( (lcpprevsolidtoken != null) )
8608                          {
8609                            if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
8610                              lcisnewsql = false;
8611                          }
8612                      }
8613
8614                  }
8615
8616
8617                if ( (lccurrentsqlstatement != null) )
8618                  {
8619                      switch (lccurrentsqlstatement.sqlstatementtype){
8620                          case sstinsert:
8621                              lcisnewsql = false;
8622                              break;
8623                          case sstcreatetable:
8624                          case sstcreateview:
8625                              lcisnewsql = false;
8626                              break;
8627                      }
8628                  }
8629
8630              }
8631
8632            if ( lcisnewsql )
8633              ret = new TSelectSqlStatement(pdbvendor);
8634
8635            break;
8636          }
8637        case sstinsert:
8638          {
8639            boolean lcisnewsql = true;
8640            if ( pstate != EFindSqlStateType.stnormal )
8641              {
8642                if ( (lccurrentsqlstatement != null) )
8643                  {
8644
8645                  }
8646              }
8647
8648            if ( lcisnewsql )
8649              ret = new TInsertSqlStatement(pdbvendor);
8650
8651            break;
8652          }
8653        case sstupdate:
8654          {
8655            boolean lcisnewsql = true;
8656            if ( pstate != EFindSqlStateType.stnormal )
8657              {
8658                lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
8659                if ( (lcprevsolidtoken != null) )
8660                  { //
8661                    if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
8662                      lcisnewsql = false;
8663                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
8664                      lcisnewsql = false;
8665                  }
8666
8667                TSourceToken lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
8668                if ( (lcnextsolidtoken != null) )
8669                  {
8670                    if ( lcnextsolidtoken.tokentype == ETokenType.ttleftparenthesis)
8671                      {
8672                        int k = lcsourcetokenlist.solidtokenafterpos(lcnextsolidtoken.posinlist,TBaseType.rrw_select,1,"(");
8673                        if ( k  == 0 ) lcisnewsql = false;
8674                      }
8675                  }
8676
8677
8678                if ( (lccurrentsqlstatement != null) )
8679                  {
8680                  }
8681              }
8682
8683            if ( lcisnewsql )
8684              {
8685                ret = new TUpdateSqlStatement(pdbvendor);
8686                ret.dummytag = 1; // means set clause in update is not found yet, used to seperate set clause from set statement
8687              }
8688            break;
8689          }
8690        case sstdelete:
8691          {
8692            boolean lcisnewsql = true;
8693
8694            if ( pstate != EFindSqlStateType.stnormal )
8695              {
8696                lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
8697                if ( (lcprevsolidtoken != null) )
8698                  {
8699                    if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
8700                      lcisnewsql = false;
8701                  }
8702
8703                if ( (lccurrentsqlstatement != null) )
8704                  {
8705                      TSourceToken lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
8706                      if ( (lcnextsolidtoken != null) ){
8707                          if (lcnextsolidtoken.tokencode == TBaseType.rrw_oracle_rows){
8708                              lcisnewsql = false;
8709                          }
8710                      }
8711                  }
8712              }
8713
8714            if ( lcisnewsql )
8715              ret = new TDeleteSqlStatement(pdbvendor);
8716
8717            break;
8718          }
8719        case sstmerge:
8720          {
8721            ret = new TMergeSqlStatement(pdbvendor);
8722            ret.sqlstatementtype = gnewsqlstatementtype;
8723            break;
8724          }
8725        case sstoraclecommit:
8726          {
8727
8728              boolean lcisnewsql = true;
8729              if ( pstate != EFindSqlStateType.stnormal )
8730              {
8731                  lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
8732                  if ( (lcprevsolidtoken != null) )
8733                  { //
8734                      if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
8735                          lcisnewsql = false;
8736                  }
8737              }
8738
8739              if (lcisnewsql){
8740                  ret = new TCommitStmt(pdbvendor);
8741                  ret.sqlstatementtype = gnewsqlstatementtype;
8742              }
8743
8744            break;
8745          }
8746        case sstoraclerollback:
8747          {
8748            ret = new TUnknownSqlStatement(pdbvendor);
8749            ret.sqlstatementtype = gnewsqlstatementtype;
8750            break;
8751          }
8752        case sstoraclesavepoint:
8753          {
8754            ret = new TUnknownSqlStatement(pdbvendor);
8755            ret.sqlstatementtype = gnewsqlstatementtype;
8756              break;
8757          }
8758        case sstoraclerevoke:
8759          {
8760            ret = new TUnknownSqlStatement(pdbvendor);
8761            ret.sqlstatementtype = gnewsqlstatementtype;
8762              break;
8763          }
8764        case sstoraclegrant:
8765          {
8766            ret = new TUnknownSqlStatement(pdbvendor);
8767            ret.sqlstatementtype = gnewsqlstatementtype;
8768              break;
8769          }
8770        case sstoracleanalyze:
8771          {
8772            ret = new TUnknownSqlStatement(pdbvendor);
8773            ret.sqlstatementtype = gnewsqlstatementtype;
8774              break;
8775          }
8776        case sstTruncate:
8777          {
8778              ret = new TTruncateStatement(pdbvendor);
8779              ret.sqlstatementtype = gnewsqlstatementtype;
8780              break;
8781          }
8782        case sstcreatetable:
8783          {
8784            ret = new TCreateTableSqlStatement(pdbvendor);
8785              break;
8786          }
8787        case sstoraclecreateview:
8788          {
8789            ret = new TCreateViewSqlStatement(pdbvendor);
8790              break;
8791          }
8792        case sstcreatematerializedview:{
8793            ret = new TCreateMaterializedSqlStatement(pdbvendor);
8794            break;
8795        }
8796        case sstoraclecreatematerializedviewlog:{
8797            ret = new TCreateMaterializedViewLogSqlStatement(pdbvendor);
8798            break;
8799        }
8800        case sstoraclecreateindex:
8801          {
8802            ret = new TCreateIndexSqlStatement(pdbvendor);
8803              break;
8804          }
8805        case sstoraclecreatedatabase:
8806          {
8807            ret = new TCreateDatabaseSqlStatement(pdbvendor);
8808              break;
8809          }
8810        case sstoracledroptable:
8811          {
8812            ret = new TDropTableSqlStatement(pdbvendor);
8813              break;
8814          }
8815        case sstoracledropview:
8816          {
8817           ret = new TDropViewSqlStatement(pdbvendor);
8818              break;
8819          }
8820        case sstoracledropindex:
8821          {
8822            ret = new TDropIndexSqlStatement(pdbvendor);
8823              break;
8824          }
8825        case sstaltertable:
8826          {
8827            ret = new TAlterTableStatement(pdbvendor);
8828              break;
8829          }
8830        case sstoraclealtersession:
8831          {
8832            ret = new TAlterSessionStatement(pdbvendor);
8833              break;
8834          }
8835        case sstplsql_createprocedure:
8836        {
8837          ret = new TPlsqlCreateProcedure(pdbvendor);
8838          ret.sqlstatementtype = gnewsqlstatementtype;
8839          // System.out.println(gnewsqlstatementtype);
8840            break;
8841        }
8842        case sstplsql_createfunction:
8843        {
8844          ret = new TPlsqlCreateFunction(pdbvendor);
8845          ret.sqlstatementtype = gnewsqlstatementtype;
8846          // System.out.println(gnewsqlstatementtype);
8847            break;
8848        }
8849        case sstplsql_createpackage:
8850        {
8851          ret = new TPlsqlCreatePackage(pdbvendor);
8852          ret.sqlstatementtype = gnewsqlstatementtype;
8853          // System.out.println(gnewsqlstatementtype);
8854            break;
8855        }
8856        case sstplsql_createtrigger:
8857        {
8858          ret = new TPlsqlCreateTrigger(pdbvendor);
8859          ret.sqlstatementtype = gnewsqlstatementtype;
8860          // System.out.println(gnewsqlstatementtype);
8861            break;
8862        }
8863        case sstplsql_execimmestmt:
8864          {
8865            ret = new TExecImmeStmt(pdbvendor);
8866           // ret.sqlstatementtype = gnewsqlstatementtype;
8867            // System.out.println(gnewsqlstatementtype);
8868              break;
8869          }
8870        case sstoraclecreatepackagebody:
8871         {
8872            ret = new TPlsqlCreatePackage(pdbvendor);
8873            ret.sqlstatementtype = ESqlStatementType.sstplsql_createpackage;
8874             break;
8875         }
8876        case sstplsql_createtype_placeholder:
8877        {
8878          ret = new TPlsqlCreateType_Placeholder(pdbvendor);
8879          ret.sqlstatementtype = gnewsqlstatementtype;
8880          // System.out.println(gnewsqlstatementtype);
8881            break;
8882        }
8883        case sstplsql_createtypebody:
8884          {
8885            ret = new TPlsqlCreateTypeBody(pdbvendor);
8886            ret.sqlstatementtype = gnewsqlstatementtype;
8887              break;
8888          }
8889        case sstCommentOn:
8890          {
8891            ret = new TCommentOnSqlStmt(pdbvendor);
8892              break;
8893          }
8894        case sstoraclecreatesequence:
8895          {
8896            ret = new TCreateSequenceStmt(pdbvendor);
8897              break;
8898          }
8899        case sstoraclecreatesynonym:
8900          {
8901            ret = new TCreateSynonymStmt(pdbvendor);
8902              break;
8903          }
8904        case sstoraclecreatedirectory:
8905          {
8906            ret = new TOracleCreateDirectoryStmt(pdbvendor);
8907              break;
8908          }
8909        case sstoracleexecuteprocedure:
8910        {
8911            ret = new TOracleExecuteProcedure(pdbvendor);
8912            break;
8913        }
8914        case sstExplain:
8915        {
8916            ret = new TExplainPlan(pdbvendor);
8917            break;
8918        }
8919        case sstoraclecreatelibrary:
8920            ret = new TOracleCreateLibraryStmt(pdbvendor);
8921            break;
8922        case sstaltertrigger:
8923            ret  = new TAlterTriggerStmt(pdbvendor);
8924            break;
8925        case sstoracledropsequence:
8926            ret = new TDropSequenceStmt(pdbvendor);
8927            break;
8928        case sstoraclecall:
8929            ret = new TCallStatement(pdbvendor);
8930            break;
8931        case sstoraclealterview:
8932            ret = new TAlterViewStatement(pdbvendor);
8933            break;
8934        case sstoracledropsynonym:
8935            ret = new TDropSynonymStmt(pdbvendor);
8936            break;
8937        case sstoracledropdatabaselink:
8938            ret = new TDropDatabaseLinkStmt(pdbvendor);
8939            break;
8940        case sstoraclecreatedatabaselink:
8941            ret = new TCreateDatabaseLinkStmt(pdbvendor);
8942            break;
8943        case sstoracledropmaterializedview:
8944            ret = new TDropMaterializedViewStmt(pdbvendor);
8945            break;
8946        case sstoracledropmaterializedviewlog:
8947            ret = new TDropMaterializedViewLogStmt(pdbvendor);
8948            break;
8949        case sstoraclerename:
8950            ret = new TRenameStmt(pdbvendor);
8951            break;
8952        case sstoracledropprocedure:
8953            ret = new TDropProcedureStmt(pdbvendor);
8954            break;
8955        case sstAlterMaterializedView:
8956            ret = new TAlterMaterializedViewStmt(pdbvendor);
8957            break;
8958        case sstoracledroptrigger:
8959            ret = new TDropTriggerSqlStatement(pdbvendor);
8960            break;
8961        case sstoracledropfunction:
8962            ret = new TDropFunctionStmt(pdbvendor);
8963            break;
8964        case sstoraclealterindex:
8965            ret = new TAlterIndexStmt(pdbvendor);
8966            break;
8967        case sstoraclealtersequence:
8968            ret = new TAlterSequenceStatement(pdbvendor);
8969            break;
8970        case sstoraclealtertype:
8971            ret = new TAlterTypeStatement(pdbvendor);
8972            break;
8973        default:
8974          {
8975            ret = new TUnknownSqlStatement(pdbvendor);
8976            ret.sqlstatementtype = gnewsqlstatementtype;
8977            break;
8978          }
8979    }    // case
8980
8981    return ret;
8982}
8983
8984TCustomSqlStatement isinformixsql(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
8985    TCustomSqlStatement ret = null;
8986
8987    gnewsqlstatementtype = ESqlStatementType.sstinvalid;
8988
8989    if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
8990       || (pcst.tokencode  == TBaseType.cmtslashstar)
8991       || (pcst.tokencode  == TBaseType.lexspace)
8992       || (pcst.tokencode  == TBaseType.lexnewline)
8993        || (pcst.tokentype == ETokenType.ttsemicolon) )
8994    {
8995      return null;
8996    }
8997
8998    int lcpos = pcst.posinlist;
8999    TSourceTokenList lcsourcetokenlist = pcst.container;
9000    TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
9001
9002    //subquery after semicolon or at first line
9003    if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
9004      {
9005        int k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
9006        if ( k >0 )
9007          {
9008            ret = new TSelectSqlStatement(pdbvendor);
9009          }
9010
9011        return ret;
9012      }
9013
9014    //cte
9015    if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
9016      {
9017        ret = findcte(pcst,pdbvendor);
9018        if ( (ret != null) )  return ret;
9019      }
9020
9021    gnewsqlstatementtype = findinformixcmd(pcst);
9022
9023    TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
9024    switch (gnewsqlstatementtype) {    //
9025        case sstinvalid:
9026          {
9027            ret = null;
9028
9029            if ( pstate == EFindSqlStateType.stnormal )
9030              {
9031                if ( pcst.tokencode == TBaseType.label_begin )
9032                  {
9033                    ret = new TCommonBlock(pdbvendor);
9034                    gnewsqlstatementtype = ret.sqlstatementtype;
9035                  }
9036                else if ( pcst.tokencode == TBaseType.rrw_declare )
9037                  {
9038                    ret = new TCommonBlock(pdbvendor);
9039                    gnewsqlstatementtype = ret.sqlstatementtype;
9040                  }
9041                else if ( pcst.tokencode == TBaseType.rrw_begin )
9042                  {
9043                    ret = new TCommonBlock(pdbvendor);
9044                    gnewsqlstatementtype = ret.sqlstatementtype;
9045                  }
9046                else if ( pcst.tokencode == TBaseType.rrw_procedure )
9047                  {
9048                    ret = new TPlsqlCreateProcedure(pdbvendor);
9049                    // ret.sqlstatementtype = ESqlStatementType.sstplsql_createprocedure;
9050                    gnewsqlstatementtype = ret.sqlstatementtype;
9051                  }
9052                else if ( pcst.tokencode == TBaseType.rrw_function )
9053                  {
9054                    ret = new TPlsqlCreateFunction(pdbvendor);
9055                    // ret.sqlstatementtype = ESqlStatementType.sstplsql_createfunction;
9056                    gnewsqlstatementtype = ret.sqlstatementtype;
9057                  }
9058                else if ( pcst.tokencode == TBaseType.rrw_package )
9059                  {
9060                    ret = new TPlsqlCreatePackage(pdbvendor);
9061                   // ret.sqlstatementtype = ESqlStatementType.sstplsql_createpackage;
9062                    gnewsqlstatementtype = ret.sqlstatementtype;
9063                  }
9064              }
9065              break;
9066          }
9067        case sstselect:
9068          {
9069            boolean lcisnewsql = true;
9070
9071            if ( pstate != EFindSqlStateType.stnormal )
9072              {
9073                // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
9074                if ( (lcprevsolidtoken != null) )
9075                  {
9076                    if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
9077                      lcisnewsql = false; //subqery
9078                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
9079                      lcisnewsql = false;
9080                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
9081                      lcisnewsql = false;
9082                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
9083                      lcisnewsql = false;
9084                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
9085                      lcisnewsql = false;
9086                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
9087                      lcisnewsql = false;
9088                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
9089                      {
9090                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
9091                          lcisnewsql = false;
9092                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
9093                          lcisnewsql = false;
9094                      }
9095
9096                    if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
9097                      {
9098                        TSourceToken lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
9099                        if ( (lcpprevsolidtoken != null) )
9100                          {
9101                            if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
9102                              lcisnewsql = false;
9103                          }
9104                      }
9105
9106                  }
9107
9108
9109                if ( (lccurrentsqlstatement != null) )
9110                  {
9111                    if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
9112                      lcisnewsql = false;
9113                  }
9114
9115              }
9116
9117            if ( lcisnewsql )
9118              ret = new TSelectSqlStatement(pdbvendor);
9119
9120            break;
9121          }
9122        case sstinsert:
9123          {
9124            boolean lcisnewsql = true;
9125            if ( pstate != EFindSqlStateType.stnormal )
9126              {
9127                if ( (lccurrentsqlstatement != null) )
9128                  {
9129                        // merge
9130                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
9131                        {
9132                              if (lcprevsolidtoken != null)
9133                              {
9134                                  if (lcprevsolidtoken.tokencode == TBaseType.rrw_then)
9135                                  {lcisnewsql = false;}
9136                              }
9137                        }
9138
9139                  }
9140              }
9141
9142            if ( lcisnewsql )
9143              ret = new TInsertSqlStatement(pdbvendor);
9144
9145            break;
9146          }
9147        case sstupdate:
9148          {
9149            boolean lcisnewsql = true;
9150            if ( pstate != EFindSqlStateType.stnormal )
9151              {
9152                lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
9153                if ( (lcprevsolidtoken != null) )
9154                  { //
9155                    if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
9156                      lcisnewsql = false;
9157                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
9158                      lcisnewsql = false;
9159                  }
9160
9161                TSourceToken lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
9162                if ( (lcnextsolidtoken != null) )
9163                  {
9164                    if ( lcnextsolidtoken.tokentype == ETokenType.ttleftparenthesis)
9165                      {
9166                        int k = lcsourcetokenlist.solidtokenafterpos(lcnextsolidtoken.posinlist,TBaseType.rrw_select,1,"(");
9167                        if ( k  == 0 ) lcisnewsql = false;
9168                      }
9169                  }
9170
9171
9172                if ( (lccurrentsqlstatement != null) )
9173                  {
9174                        // merge
9175                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
9176                        {
9177                              if (lcprevsolidtoken != null)
9178                              {
9179                                  if (lcprevsolidtoken.tokencode == TBaseType.rrw_then)
9180                                  {lcisnewsql = false;}
9181                              }
9182                        }
9183                  }
9184              }
9185
9186            if ( lcisnewsql )
9187              {
9188                ret = new TUpdateSqlStatement(pdbvendor);
9189                ret.dummytag = 1; // means set clause in update is not found yet, used to seperate set clause from set statement
9190              }
9191            break;
9192          }
9193        case sstdelete:
9194          {
9195            boolean lcisnewsql = true;
9196
9197            if ( pstate != EFindSqlStateType.stnormal )
9198              {
9199                lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
9200                if ( (lcprevsolidtoken != null) )
9201                  {
9202                    if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
9203                      lcisnewsql = false;
9204                  }
9205
9206                if ( (lccurrentsqlstatement != null) )
9207                  {
9208                        // merge
9209                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
9210                        {
9211                              if (lcprevsolidtoken != null)
9212                              {
9213                                  if (lcprevsolidtoken.tokencode == TBaseType.rrw_then)
9214                                  {lcisnewsql = false;}
9215                              }
9216                        }
9217                  }
9218              }
9219
9220            if ( lcisnewsql )
9221              ret = new TDeleteSqlStatement(pdbvendor);
9222
9223            break;
9224          }
9225        case sstmerge:
9226          {
9227            ret = new TMergeSqlStatement(pdbvendor);
9228            ret.sqlstatementtype = gnewsqlstatementtype;
9229            break;
9230          }
9231        case sstinformixCommit:
9232          {
9233            ret = new TUnknownSqlStatement(pdbvendor);
9234            ret.sqlstatementtype = gnewsqlstatementtype;
9235            break;
9236          }
9237        case sstinformixSavepoint:
9238          {
9239            ret = new TUnknownSqlStatement(pdbvendor);
9240            ret.sqlstatementtype = gnewsqlstatementtype;
9241              break;
9242          }
9243        case sstinformixRevoke:
9244          {
9245            ret = new TUnknownSqlStatement(pdbvendor);
9246            ret.sqlstatementtype = gnewsqlstatementtype;
9247              break;
9248          }
9249        case sstinformixGrant:
9250          {
9251            ret = new TUnknownSqlStatement(pdbvendor);
9252            ret.sqlstatementtype = gnewsqlstatementtype;
9253              break;
9254          }
9255        case sstTruncate:
9256          {
9257              ret = new TTruncateStatement(pdbvendor);
9258              ret.sqlstatementtype = gnewsqlstatementtype;
9259              break;
9260          }
9261        case sstcreatetable:
9262        case sstinformixCreateTempTable:
9263          {
9264            ret = new TCreateTableSqlStatement(pdbvendor);
9265              break;
9266          }
9267        case sstinformixCreateView:
9268          {
9269            ret = new TCreateViewSqlStatement(pdbvendor);
9270              break;
9271          }
9272        case sstinformixCreateIndex:
9273          {
9274            ret = new TCreateIndexSqlStatement(pdbvendor);
9275              break;
9276          }
9277        case sstinformixCreateDatabase:
9278          {
9279            ret = new TCreateDatabaseSqlStatement(pdbvendor);
9280              break;
9281          }
9282        case sstinformixDropTable:
9283          {
9284            ret = new TDropTableSqlStatement(pdbvendor);
9285              break;
9286          }
9287        case sstinformixDropView:
9288          {
9289           ret = new TDropViewSqlStatement(pdbvendor);
9290              break;
9291          }
9292        case sstinformixDropIndex:
9293          {
9294            ret = new TDropIndexSqlStatement(pdbvendor);
9295              break;
9296          }
9297        case sstinformixDropRowType:
9298        {
9299            ret = new TInformixDropRowTypeStmt(pdbvendor);
9300            break;
9301        }
9302        case sstinformixDropSequence:
9303        {
9304            ret = new TDropSequenceStmt(pdbvendor);
9305            break;
9306        }
9307        case sstinformixDropSynonym:
9308        {
9309            ret = new TDropSynonymStmt(pdbvendor);
9310            break;
9311        }
9312        case sstinformixAlterTable:
9313          {
9314            ret = new TAlterTableStatement(pdbvendor);
9315              break;
9316          }
9317        case sstinformixCreateProcedure:
9318        {
9319          ret = new TInformixCreateProcedure(pdbvendor);
9320          ret.sqlstatementtype = gnewsqlstatementtype;
9321            break;
9322        }
9323        case sstinformixCreateFunction:
9324        {
9325          ret = new TInformixCreateFunction(pdbvendor);
9326          ret.sqlstatementtype = gnewsqlstatementtype;
9327            break;
9328        }
9329        case sstcreatetrigger:
9330        {
9331          ret = new TCreateTriggerStmt(pdbvendor);
9332            break;
9333        }
9334        case sstinformixExecuteImmediate:
9335          {
9336            ret = new TInformixExecuteImmediate(pdbvendor);
9337              break;
9338          }
9339        case sstinformixCreateSequence:
9340        case sstinformixAlterSequence:
9341          {
9342            ret = new TCreateSequenceStmt(pdbvendor);
9343              break;
9344          }
9345        case sstinformixCreateSynonym:
9346          {
9347            ret = new TCreateSynonymStmt(pdbvendor);
9348              break;
9349          }
9350        case sstinformixExecuteFunction:
9351        {
9352            ret = new TInformixExecuteFunction(pdbvendor);
9353            break;
9354        }
9355        case sstinformixExecuteProcedure:
9356        {
9357            ret = new TInformixExecuteProcedure(pdbvendor);
9358            break;
9359        }
9360        case sstinformixCreateRowType:
9361        {
9362            ret = new TInformixCreateRowTypeStmt(pdbvendor);
9363            break;
9364        }
9365        case sstinformixPut:
9366        case sstinformixInfo:
9367          {
9368            ret = null;
9369
9370            if ( pstate == EFindSqlStateType.stnormal )
9371              {
9372                  ret = new TUnknownSqlStatement(pdbvendor);
9373                  ret.sqlstatementtype = gnewsqlstatementtype;
9374              }
9375              break;
9376          }
9377        case sstinformixAlterIndex:
9378        {
9379            ret = new TAlterIndexStmt(pdbvendor);
9380            break;
9381        }
9382        case sstinformixRenameColumn:
9383        case sstinformixRenameTable:
9384        case sstinformixRenameSequence:
9385        case sstinformixRenameIndex:
9386        {
9387            ret = new TRenameStmt(pdbvendor);
9388            break;
9389        }
9390        case sstdropdatabase:
9391            ret = new TDropDatabaseStmt(pdbvendor);
9392            break;
9393        case sstinformixRollbackWork:
9394        {
9395            ret =  new TMssqlRollback(pdbvendor);
9396            break;
9397        }
9398        default:
9399          {
9400            ret = new TUnknownSqlStatement(pdbvendor);
9401            ret.sqlstatementtype = gnewsqlstatementtype;
9402            break;
9403          }
9404    }    // case
9405
9406    return ret;
9407}
9408
9409
9410    TCustomSqlStatement issybasesql(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
9411        TCustomSqlStatement ret = null;
9412        int k;
9413        boolean lcisnewsql;
9414        TSourceToken lcpprevsolidtoken,lcnextsolidtoken,lctoken;
9415
9416        gnewsqlstatementtype = ESqlStatementType.sstinvalid;
9417
9418        if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
9419                || (pcst.tokencode  == TBaseType.cmtslashstar)
9420                || (pcst.tokencode  == TBaseType.lexspace)
9421                || (pcst.tokencode  == TBaseType.lexnewline)
9422                || (pcst.tokentype == ETokenType.ttsemicolon) )
9423        {
9424            return ret;
9425        }
9426
9427        int lcpos = pcst.posinlist;
9428        TSourceTokenList lcsourcetokenlist = pcst.container;
9429        TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
9430
9431        //subquery after semicolon || at first line
9432        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
9433        {
9434            k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
9435            if ( k >0 )
9436            {
9437                ret =  new TSelectSqlStatement(pdbvendor);
9438            }
9439
9440            return ret;
9441        }
9442
9443        //cte
9444        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
9445        {
9446            ret = findcte(pcst,pdbvendor);
9447            if ( (ret != null) )  return ret;
9448        }
9449
9450        gnewsqlstatementtype = findsybasecmd(pcst);
9451
9452        TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
9453        switch(gnewsqlstatementtype ) {   //
9454            case sstinvalid:
9455            {
9456                if ( pcst.tokencode == TBaseType.mslabel )
9457                {
9458                    ret =  new TMssqlLabel(pdbvendor);
9459                }
9460                else
9461                    ret = null;
9462
9463                break;
9464            }
9465            case sstselect:
9466            {
9467                lcisnewsql = true;
9468
9469                if ( pstate != EFindSqlStateType.stnormal )
9470                {
9471                    // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
9472                    if ( (lcprevsolidtoken != null) )
9473                    {
9474                        if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
9475                            lcisnewsql = false; //subqery
9476                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
9477                            lcisnewsql = false;
9478                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
9479                            lcisnewsql = false;
9480                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
9481                            lcisnewsql = false;
9482                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
9483                            lcisnewsql = false;
9484                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
9485                            lcisnewsql = false;
9486                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
9487                        {
9488                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
9489                                lcisnewsql = false;
9490                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
9491                                lcisnewsql = false;
9492                        }
9493                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
9494                        {
9495                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlset )
9496                                lcisnewsql = false;
9497                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqldeclare )
9498                                lcisnewsql = false;
9499                        }
9500
9501                        if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
9502                        {
9503                            lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
9504                            if ( (lcpprevsolidtoken != null) )
9505                            {
9506                                if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
9507                                    lcisnewsql = false;
9508                            }
9509                        }
9510
9511                    }
9512
9513                    if ( (lccurrentsqlstatement != null) )
9514                    {
9515                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
9516                        {
9517                        }
9518                        else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlgrant )
9519                        {
9520                            if ( (lcprevsolidtoken != null) )
9521                            {
9522                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_grant )
9523                                    lcisnewsql = false;
9524                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
9525                                    lcisnewsql = false;
9526                            }
9527                        } else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlrevoke )
9528                        {
9529                            if ( (lcprevsolidtoken != null) )
9530                            {
9531                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_revoke )
9532                                    lcisnewsql = false;
9533                            }
9534                        }else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview ){
9535                            lcisnewsql = false;
9536                        }
9537                    }
9538
9539                }
9540
9541                if ( lcisnewsql )
9542                    ret =  new TSelectSqlStatement(pdbvendor);
9543
9544                break;
9545
9546            }
9547            case sstinsert:
9548            {
9549                lcisnewsql = true;
9550                if ( pstate != EFindSqlStateType.stnormal )
9551                {
9552                    if ( (lccurrentsqlstatement != null) )
9553                    {
9554                        // merge
9555                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
9556                        {
9557                              if (lcprevsolidtoken != null)
9558                              {
9559                                  if (lcprevsolidtoken.tokencode == TBaseType.rrw_then)
9560                                  {lcisnewsql = false;}
9561                              }
9562                        }
9563
9564                        // bulk insert
9565                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlbulkinsert )
9566                        {
9567                            if ( (lcprevsolidtoken != null) )
9568                            {
9569                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_bulk )
9570                                    lcisnewsql = false;
9571                            }
9572                        }
9573
9574                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlgrant )
9575                        {
9576                            if ( (lcprevsolidtoken != null) )
9577                            {
9578                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_grant )
9579                                    lcisnewsql = false;
9580                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
9581                                    lcisnewsql = false;
9582                            }
9583                        }else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlrevoke ) {
9584                            if ( (lcprevsolidtoken != null) )
9585                            {
9586                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_revoke )
9587                                    lcisnewsql = false;
9588                            }
9589                        }
9590
9591                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetrigger )
9592                        {
9593                            if ( (lcprevsolidtoken != null) )
9594                            {
9595                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
9596                                    lcisnewsql = false;
9597                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
9598                                    lcisnewsql = false;
9599                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(),"after") == 0 )
9600                                    lcisnewsql = false;
9601                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(), "of") == 0 )
9602                                    lcisnewsql = false;
9603                            }
9604                        }
9605
9606
9607                    }
9608                }
9609
9610                if ( lcisnewsql )
9611                {
9612                    ret =  new TInsertSqlStatement(pdbvendor);
9613                    ret.dummytag = 1; //  select stmt in insert is permitted
9614                    for ( k = lcpos + 1; k < lcsourcetokenlist.size();k++ )    // iterate
9615                    {
9616                        if ( lcsourcetokenlist.get(k).isnonsolidtoken() ) continue;
9617                        if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_values ) break;
9618                        if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_go ) break;
9619                        if ( lcsourcetokenlist.get(k).tokentype == ETokenType.ttsemicolon ) break;
9620                        if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_select ) break;
9621                        if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_execute ) break;
9622                        if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_exec ) break;
9623                    }    // for (
9624                    if ( k > lcsourcetokenlist.size() - 1 )
9625                        k = lcsourcetokenlist.size() - 1;
9626
9627                    for ( int i = lcpos + 1; i <=  k; i++ )    // iterate
9628                    {
9629                        lcsourcetokenlist.get(i).tokenstatus = ETokenStatus.tsignoredbygetrawstatement;
9630                    }    // for (
9631
9632                }
9633
9634                break;
9635            }
9636            case sstsybaseInsertBulk:
9637            {
9638                ret =  new TInsertBulk(pdbvendor);
9639                break;
9640            }
9641            case sstupdate:
9642            {
9643                lcisnewsql = true;
9644                if ( pstate != EFindSqlStateType.stnormal )
9645                {
9646                    // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
9647                    if ( (lcprevsolidtoken != null) )
9648                    { //
9649                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
9650                            lcisnewsql = false;
9651                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
9652                            lcisnewsql = false;
9653                    }
9654
9655                    lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
9656                    if ( TBaseType.assigned(lcnextsolidtoken) )
9657                    {
9658                        if ( lcnextsolidtoken.tokentype == ETokenType.ttleftparenthesis)
9659                        {
9660                            k = lcsourcetokenlist.solidtokenafterpos(lcnextsolidtoken.posinlist,TBaseType.rrw_select,1,"(");
9661                            if ( k  == 0 ) lcisnewsql = false;
9662                        }
9663                    }
9664
9665
9666                    if ( TBaseType.assigned(lccurrentsqlstatement) )
9667                    {
9668                        // merge
9669                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
9670                        {
9671                              if (lcprevsolidtoken != null)
9672                              {
9673                                  if (lcprevsolidtoken.tokencode == TBaseType.rrw_then)
9674                                  {lcisnewsql = false;}
9675                              }
9676                        }
9677
9678                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlgrant )
9679                        {
9680                            if ( TBaseType.assigned(lcprevsolidtoken) )
9681                            {
9682                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_grant )
9683                                    lcisnewsql = false;
9684                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
9685                                    lcisnewsql = false;
9686                            }
9687                        }else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlrevoke )
9688                        {
9689                            if ( TBaseType.assigned(lcprevsolidtoken) )
9690                            {
9691                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_revoke )
9692                                    lcisnewsql = false;
9693                            }
9694                        }
9695                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetrigger )
9696                        {
9697                            if ( TBaseType.assigned(lcprevsolidtoken) )
9698                            {
9699                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
9700                                    lcisnewsql = false;
9701                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
9702                                    lcisnewsql = false;
9703                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(),"after") == 0 )
9704                                    lcisnewsql = false;
9705                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(), "of") == 0 )
9706                                    lcisnewsql = false;
9707                            }
9708                        }
9709
9710                    }
9711                }
9712
9713                if ( lcisnewsql )
9714                {
9715                    ret =  new TUpdateSqlStatement(pdbvendor);
9716                    ret.dummytag = 1; // means set clause in update is not found yet, used to seperate set clause from set statement
9717                }
9718
9719                break;
9720            }
9721            case sstdelete:
9722            {
9723                lcisnewsql = true;
9724
9725                if ( pstate != EFindSqlStateType.stnormal )
9726                {
9727                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
9728                    if ( TBaseType.assigned(lcprevsolidtoken) )
9729                    {
9730                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
9731                            lcisnewsql = false;
9732                    }
9733
9734                    if ( TBaseType.assigned(lccurrentsqlstatement) )
9735                    {
9736                        // merge
9737                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
9738                        {
9739                              if (lcprevsolidtoken != null)
9740                              {
9741                                  if (lcprevsolidtoken.tokencode == TBaseType.rrw_then)
9742                                  {lcisnewsql = false;}
9743                              }
9744                        }
9745
9746                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlgrant )
9747                        {
9748                            if ( TBaseType.assigned(lcprevsolidtoken) )
9749                            {
9750                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_grant )
9751                                    lcisnewsql = false;
9752                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
9753                                    lcisnewsql = false;
9754                            }
9755                        }else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlrevoke )
9756                        {
9757                            if ( TBaseType.assigned(lcprevsolidtoken) )
9758                            {
9759                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_revoke )
9760                                    lcisnewsql = false;
9761                            }
9762                        }
9763
9764                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetrigger )
9765                        {
9766                            if ( TBaseType.assigned(lcprevsolidtoken) )
9767                            {
9768                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
9769                                    lcisnewsql = false;
9770                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
9771                                    lcisnewsql = false;
9772                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(),"after") == 0 )
9773                                    lcisnewsql = false;
9774                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(), "of") == 0 )
9775                                    lcisnewsql = false;
9776                            }
9777                        }
9778
9779                    }
9780                }
9781
9782                if ( lcisnewsql )
9783                    ret =  new TDeleteSqlStatement(pdbvendor);
9784
9785                break;
9786            }
9787            case sstcreatetable:
9788            {
9789                ret =  new TCreateTableSqlStatement(pdbvendor);
9790                break;
9791            }
9792            case sstcreateview:
9793            {
9794                ret =  new TCreateViewSqlStatement(pdbvendor);
9795                break;
9796            }
9797            case sstaltertable:
9798            {
9799                ret =  new TAlterTableStatement(pdbvendor);
9800                break;
9801            }
9802            case sstmssqlfetch:
9803            {
9804                ret =  new TMssqlFetch(pdbvendor);
9805                break;
9806            }
9807            case sstmssqlif :
9808            {
9809                lcisnewsql = true;
9810                if ((lccurrentsqlstatement != null) && ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqldropprocedure ))
9811                {lcisnewsql = false;}
9812                if (lcisnewsql){
9813                    ret = new TMssqlIfElse(pdbvendor);
9814                    ret.dummytag = 1;// reduce to 0 while stmt find in 'if ( condtion stmt' || 'else stmt'
9815                }
9816
9817                break;
9818            }
9819            case sstmssqlwhile:
9820            {
9821                ret = new TMssqlIfElse(pdbvendor);
9822                ret.dummytag = 1;// reduce to 0 while stmt find in 'if ( condtion stmt' || 'else stmt'
9823                break;
9824            }
9825            case sstmssqlcreateprocedure :
9826            case sstmssqlalterprocedure:
9827            {
9828                ret = new TMssqlCreateProcedure(pdbvendor);
9829                break;
9830            }
9831            case sstmssqlcreatefunction :
9832            case sstmssqlalterfunction:
9833            {
9834                ret =  new TMssqlCreateFunction(pdbvendor);
9835                break;
9836            }
9837            case sstcreatetrigger :
9838            case sstmssqlaltertrigger:
9839            {
9840                ret =  new TCreateTriggerStmt(pdbvendor);
9841                break;
9842            }
9843            case sstmssqlreturn:
9844            {
9845                ret =  new TMssqlReturn(pdbvendor);
9846                break;
9847            }
9848            case sstmssqlprint:
9849            {
9850                ret =  new TMssqlPrint(pdbvendor);
9851                break;
9852            }
9853            case sstmssqluse:
9854            {
9855                ret =  new TUseDatabase(pdbvendor);
9856                break;
9857            }
9858            case sstmssqlgo:
9859            {
9860                ret =  new TMssqlGo(pdbvendor);
9861                break;
9862            }
9863            case sstmssqlrevert:
9864            {
9865                ret =  new TMssqlRevert(pdbvendor);
9866                break;
9867            }
9868            case sstmssqlgrant:
9869            {
9870                lcisnewsql = true;
9871                // prev tokentext can't be with
9872                if ( pstate != EFindSqlStateType.stnormal )
9873                {
9874                    if ( TBaseType.assigned(lcprevsolidtoken) )
9875                    {
9876                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_with )
9877                        {
9878                            ret = null;
9879                            lcisnewsql = false;
9880                        }
9881                    }
9882                }
9883                if ( lcisnewsql )
9884                {
9885                    ret =  new TGrantStmt(pdbvendor);
9886                    //ret.sqlstatementtype = gnewsqlstatementtype;
9887                    for ( k = lcpos + 1; k< lcsourcetokenlist.size();k++ )    // iterate
9888                    {
9889                        lctoken = lcsourcetokenlist.get(k);
9890                        if (lctoken.isnonsolidtoken() ) continue;
9891                        if ( lctoken.tokencode == TBaseType.rrw_go ) break;
9892                        if ( lctoken.tokentype == ETokenType.ttsemicolon ) break;
9893                        if ( lctoken.tokencode == TBaseType.rrw_to   ) break;
9894                        lctoken.tokenstatus = ETokenStatus.tsignoredbygetrawstatement;
9895                    }
9896                }
9897                break;
9898            }
9899            case sstmssqldeclare:
9900            {
9901                ret =  new TMssqlDeclare(pdbvendor);
9902                break;
9903            }
9904            case sstmssqlcontinue:
9905            {
9906                lcisnewsql = true;
9907                if ((lccurrentsqlstatement != null) && ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstload ))
9908                {lcisnewsql = false;}
9909                if (lcisnewsql){
9910                    ret =  new TMssqlContinue(pdbvendor);
9911                }
9912
9913                break;
9914            }
9915            case sstbreak:
9916            {
9917                ret =  new TBreakStmt(pdbvendor);
9918                break;
9919            }
9920            case sstmssqlopen:
9921            {
9922                ret =  new TMssqlOpen(pdbvendor);
9923                break;
9924            }
9925            case sstmssqlclose:
9926            {
9927                ret =  new TMssqlClose(pdbvendor);
9928                break;
9929            }
9930            case sstmssqlbulkinsert:
9931            {
9932                ret =  new TMssqlBulkInsert(pdbvendor);
9933                break;
9934            }
9935            case sstmssqldeallocate:
9936            {
9937                ret =  new TMssqlDeallocate(pdbvendor);
9938                break;
9939            }
9940            case sstmssqlraiserror:
9941            {
9942                ret =  new TMssqlRaiserror(pdbvendor);
9943                break;
9944            }
9945            case sstmssqlgoto:
9946            {
9947                ret =  new TMssqlGoTo(pdbvendor);
9948                break;
9949            }
9950            case sstmssqldropview:
9951            {
9952                ret =  new TDropViewSqlStatement(pdbvendor);
9953                break;
9954            }
9955            case sstmssqldroptable:
9956            {
9957                ret =  new TDropTableSqlStatement(pdbvendor);
9958                break;
9959            }
9960            case sstmssqldropindex:
9961            {
9962                ret =  new TDropIndexSqlStatement(pdbvendor);
9963                break;
9964            }
9965            case sstmssqldroppartitionscheme :
9966                ret = new TDropPartitionSchemeStmt(pdbvendor);
9967                break;
9968
9969            case sstmssqldropaggregate :
9970            case sstmssqldropapplicationrole :
9971            case sstmssqldropassembly :
9972            case sstmssqldropasymmetrickey :
9973            case sstmssqldropcertificate :
9974            case sstmssqldropcontract :
9975            case sstmssqldropcredential :
9976            case sstmssqldropdefault :
9977            case sstmssqldropendpoint :
9978            case sstmssqldropeventnotification :
9979            case sstmssqldropfulltextcatalog :
9980            case sstmssqldropfulltextindex :
9981            case sstmssqldropfunction :
9982            case sstmssqldroplogin :
9983            case sstmssqldropmasterkey :
9984            case sstmssqldropmessagetype :
9985            case sstmssqldroppartitionfunction :
9986            case sstmssqldropprocedure :
9987            case sstmssqldropqueue :
9988            case sstmssqldropremoteservicebinding :
9989            case sstmssqldroprole :
9990            case sstmssqldroproute :
9991            case sstmssqldroprule :
9992            case sstmssqldropschema :
9993            case sstmssqldropservice :
9994            case sstmssqldropsignature:
9995            case sstmssqldropstatistics :
9996            case sstmssqldropsymmetrickey :
9997            case sstmssqldroptrigger :
9998            case sstmssqldroptype :
9999            case sstmssqldropuser :
10000            case sstmssqldropxmlschemacollection:
10001            case sstmssqldropdatabase :
10002            {
10003                ret =  new TMssqlDropDbObject(EDbVendor.dbvsybase);
10004                ret.sqlstatementtype = gnewsqlstatementtype;
10005                break;
10006            }
10007            case sstmssqldropsynonym :
10008            {
10009                ret =  new TDropSynonymStmt(pdbvendor);
10010                break;
10011            }
10012            case sstmssqltruncatetable:
10013            {
10014                ret =  new TTruncateStatement(pdbvendor);
10015                break;
10016            }
10017            case sstmssqlbegintran:
10018            {
10019                ret =  new TBeginTran(pdbvendor);
10020                break;
10021            }
10022            case sstmssqlsavetran:
10023            {
10024                ret =  new TMssqlSaveTran(pdbvendor);
10025                break;
10026            }
10027            case sstmssqlcommit:
10028            {
10029                lcisnewsql = true;
10030
10031                if ( TBaseType.assigned(lcprevsolidtoken) )
10032                {
10033                    if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
10034                    {
10035
10036                        lcisnewsql = false;
10037                    }
10038                }
10039
10040                if (lcisnewsql){
10041                    ret =  new TMssqlCommit(pdbvendor);
10042                }
10043
10044                break;
10045            }
10046            case sstmssqlrollback:
10047            {
10048                ret =  new TMssqlRollback(pdbvendor);
10049                break;
10050            }
10051            case sstmssqlreadtext :
10052            case sstmssqldbcc :
10053            case sstmssqlrestore :
10054            case sstmssqlbackup :
10055            {
10056                ret = new TMssqlDummyStmt(pdbvendor);
10057                ret.sqlstatementtype = gnewsqlstatementtype;
10058                break;
10059            }
10060            case sstcreateindex:
10061            {
10062                ret =  new TCreateIndexSqlStatement(pdbvendor);
10063                break;
10064            }
10065            case sstmssqlwaitfor:
10066            {
10067                ret =  new TMssqlWaitFor(pdbvendor);
10068                break;
10069            }
10070            case sstmerge:
10071            {
10072                lcisnewsql = true;
10073
10074                if (pstate != EFindSqlStateType.stnormal)
10075                {
10076
10077                    if (lccurrentsqlstatement != null)
10078                    {
10079                        // merge union, merge join
10080                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstselect)
10081                        {
10082                                    lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
10083                                    if (lcnextsolidtoken != null)
10084                                       {
10085                                        if ((lcnextsolidtoken.tokencode == TBaseType.rrw_union) || (lcnextsolidtoken.tokencode == TBaseType.rrw_join))
10086                                           {
10087                                              lcisnewsql = false;
10088                                           }
10089                                        }
10090                        }
10091
10092                    }
10093
10094                    TSourceToken lcnexttoken = lcsourcetokenlist.nextsolidtoken(lcpos, 1, false);
10095                    if ( (lcnexttoken != null) )
10096                    {
10097                        if ( lcnexttoken.tokencode == TBaseType.rrw_sybase_partition )
10098                            lcisnewsql = false;
10099                    }
10100
10101                }
10102
10103                if (lcisnewsql)
10104                {
10105                    ret = new TMergeSqlStatement(pdbvendor);
10106                    ret.sqlstatementtype = gnewsqlstatementtype;
10107                }
10108
10109                break;
10110            }
10111            case sstmssqlbegintry :
10112            case sstmssqlbegincatch:
10113            {
10114                ret =  new TMssqlBlock(pdbvendor);
10115                ret.sqlstatementtype = gnewsqlstatementtype;
10116                break;
10117            }
10118            case sstmssqlexec:
10119            {
10120                lcisnewsql = true;
10121                // prev tokentext can't be with
10122                if ( pstate != EFindSqlStateType.stnormal )
10123                {
10124                    if ( TBaseType.assigned(lccurrentsqlstatement) )
10125                    {
10126                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
10127                        {
10128                            if ( lccurrentsqlstatement.dummytag == 1 )
10129                            {
10130                                lcisnewsql = false;
10131                                lccurrentsqlstatement.dummytag = 0; // no select is permited after it
10132                            }
10133                        }
10134
10135                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlgrant )
10136                        {
10137                            if ( TBaseType.assigned(lcprevsolidtoken) )
10138                            {
10139                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_grant )
10140                                    lcisnewsql = false;
10141                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
10142                                    lcisnewsql = false;
10143                            }
10144                        }else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlrevoke ){
10145                            if ( TBaseType.assigned(lcprevsolidtoken) )
10146                            {
10147                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_revoke )
10148                                    lcisnewsql = false;
10149                            }
10150                        }
10151
10152
10153
10154                        if (
10155                                (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlcreateprocedure)
10156                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetrigger)
10157                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlcreatefunction)
10158                                        ||(lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlalterprocedure)
10159                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlaltertrigger)
10160                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlalterfunction)
10161                                )
10162                        {
10163                            if ( TBaseType.assigned(lcprevsolidtoken) )
10164                            {
10165                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_with )
10166                                    lcisnewsql = false;
10167                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
10168                                    lcisnewsql = false;
10169                            }
10170                        }
10171                    }
10172                }
10173                if ( lcisnewsql )
10174                {
10175                    ret =  new TMssqlExecute(pdbvendor);
10176                }
10177                break;
10178            }
10179            case sstmssqlexecuteas:
10180            {
10181                lcisnewsql = true;
10182                // prev tokentext can't be with
10183                if ( pstate != EFindSqlStateType.stnormal )
10184                {
10185                    if ( TBaseType.assigned(lccurrentsqlstatement) )
10186                    {
10187                        if (
10188                                (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlcreateprocedure)
10189                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetrigger)
10190                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlcreatefunction)
10191                                        ||(lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlalterprocedure)
10192                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlaltertrigger)
10193                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlalterfunction)
10194                                )
10195                        {
10196                            if ( TBaseType.assigned(lcprevsolidtoken) )
10197                            {
10198                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_with )
10199                                    lcisnewsql = false;
10200                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
10201                                    lcisnewsql = false;
10202                            }
10203                        }
10204                    }
10205                }
10206                if ( lcisnewsql )
10207                {
10208                    ret =  new TMssqlExecuteAs(pdbvendor);
10209                    ret.sqlstatementtype = gnewsqlstatementtype;
10210                }
10211                break;
10212            }
10213            case sstmssqlset:
10214            {
10215                lcisnewsql = true;
10216                if ( pstate != EFindSqlStateType.stnormal )
10217                {
10218                    if ( TBaseType.assigned(lccurrentsqlstatement) )
10219                    {
10220
10221                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlif)
10222                        {
10223                             TSourceToken lcPPToken = lcsourcetokenlist.searchToken(TBaseType.rrw_update,"",pcst,-10);
10224                             if (TBaseType.assigned(lcPPToken))
10225                            {
10226                                  lcisnewsql = false;
10227                            }
10228                        }
10229
10230                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
10231                        {
10232                              if (lcprevsolidtoken != null)
10233                              {
10234                                  if (lcprevsolidtoken.tokencode == TBaseType.rrw_update){
10235                                    lcisnewsql = false;}
10236                              }
10237                        }
10238
10239                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstupdate )
10240                        {
10241                            if ( lccurrentsqlstatement.dummytag == 1 )
10242                            {
10243                                //update statement still find set clause yet, so this is setclause in update statement
10244                                lccurrentsqlstatement.dummytag = 0;
10245                                lcisnewsql = false;
10246                            }
10247                        }
10248                    }
10249
10250                    lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
10251                    if ( TBaseType.assigned(lcnextsolidtoken) )
10252                    { //set null, set default
10253                        if ( (TBaseType.mycomparetext(lcnextsolidtoken.getAstext(),"null")==0)
10254                                || (TBaseType.mycomparetext(lcnextsolidtoken.getAstext(), "default")==0) )
10255                        {
10256                            lcisnewsql = false;
10257                        }
10258                    }
10259
10260                }
10261
10262                if ( lcisnewsql )
10263                {
10264                    ret =  new TMssqlSet(pdbvendor);
10265                }
10266
10267                break;
10268            }
10269            case sstmssqlupdatetext:
10270            {
10271                ret =  new TMssqlUpdateText(pdbvendor);
10272                break;
10273            }
10274            case sstmssqlendconversation:
10275            {
10276                ret =  new TMssqlEndConversation(pdbvendor);
10277                break;
10278            }
10279            case sstmssqlbegindialog:
10280            {
10281                ret =  new TMssqlBeginDialog(pdbvendor);
10282                break;
10283            }
10284            case sstmssqlsendonconversation:
10285            {
10286                ret =  new TMssqlSendOnConversation(pdbvendor);
10287                break;
10288            }
10289            case sstmssqldisabletrigger :
10290            case sstmssqlenabletrigger:
10291            {
10292                lcisnewsql = true;
10293                if ( TBaseType.assigned(lccurrentsqlstatement) )
10294                {
10295                    if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstaltertable )
10296                        lcisnewsql = false;
10297                }
10298
10299                if ( lcisnewsql )
10300                {
10301                    ret =  new TDisableEnableTriggerStmt(pdbvendor);
10302                    ret.sqlstatementtype = gnewsqlstatementtype;
10303                }
10304                break;
10305            }
10306            case sstsybaseWritetext:
10307            {
10308                ret =  new TSybaseWritetext(pdbvendor);
10309                break;
10310            }
10311            case sstsybaseDeleteStatistics:
10312            {
10313                ret = new TSybaseDeleteStatistics(pdbvendor);
10314                break;
10315            }
10316            case sstcall:
10317            {
10318                ret = new TCallStatement(pdbvendor);
10319                break;
10320            }
10321            default:
10322            {
10323                ret =  new TUnknownSqlStatement(pdbvendor);
10324                ret.sqlstatementtype = gnewsqlstatementtype;
10325                break;
10326            }
10327        }    // case
10328
10329        return ret;
10330    }
10331
10332    TCustomSqlStatement ismssqlsql(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
10333        TCustomSqlStatement ret = null;
10334        int k;
10335        boolean lcisnewsql;
10336        TSourceToken lcpprevsolidtoken,lcnextsolidtoken,lctoken;
10337
10338        gnewsqlstatementtype = ESqlStatementType.sstinvalid;
10339
10340        if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
10341                || (pcst.tokencode  == TBaseType.cmtslashstar)
10342                || (pcst.tokencode  == TBaseType.lexspace)
10343                || (pcst.tokencode  == TBaseType.lexnewline)
10344                || (pcst.tokentype == ETokenType.ttsemicolon) )
10345        {
10346            return ret;
10347        }
10348
10349        int lcpos = pcst.posinlist;
10350        TSourceTokenList lcsourcetokenlist = pcst.container;
10351        TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
10352
10353        //subquery after semicolon or at first line
10354        if ( pcst.tokentype == ETokenType.ttleftparenthesis)  // (
10355        {
10356            k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
10357            if ( k >0 )
10358            {
10359                if (pstate == EFindSqlStateType.stnormal){
10360                    ret =  new TSelectSqlStatement(pdbvendor);
10361                    return ret;
10362                }
10363//                if (((lccurrentsqlstatement != null) )&&(lccurrentsqlstatement.sqlstatementtype != ESqlStatementType.sstselect)&&(lcsourcetokenlist.returnbeforecurtoken(true))){
10364//                    ret =  new TSelectSqlStatement(pdbvendor);
10365//                    return ret;
10366//                }
10367            }
10368        }
10369
10370        //cte
10371        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
10372        {
10373            ret = findcte(pcst,pdbvendor);
10374            if ( (ret != null) )  return ret;
10375        }
10376
10377        if ( (lccurrentsqlstatement != null) && (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable)
10378                && (pcst.tokencode == TBaseType.rrw_with) )
10379        {
10380            TSourceToken lcPrevToken = pcst.prevSolidToken();
10381            if ((lcPrevToken != null) && (lcPrevToken.tokencode == TBaseType.rrw_as))
10382            { // mantisbt/view.php?id=3900, create table with as select, ignore tokens from with to select (including the select token)
10383                ret = findcte(pcst,pdbvendor);
10384                if ( (ret != null) )  {
10385                    ret = null;
10386                }
10387            }
10388        }
10389
10390        //odbc
10391        if ( (pstate == EFindSqlStateType.stnormal) && ((pcst.tokencode == '{')||(pcst.tokencode == TBaseType.odbc_esc_prefix)) && (pcst.getLinkToken() != null)  )
10392        {
10393            ret = new TCallStatement(pdbvendor);
10394            return ret;
10395        }
10396
10397        gnewsqlstatementtype = findmssqlcmd(pcst);
10398
10399        TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
10400        switch(gnewsqlstatementtype ) {   //
10401            case sstinvalid:
10402            {
10403                if ( pcst.tokencode == TBaseType.mslabel )
10404                {
10405                    ret =  new TMssqlLabel(pdbvendor);
10406                }
10407                else
10408                    ret = null;
10409
10410                break;
10411            }
10412            case sstselect:
10413            {
10414                lcisnewsql = true;
10415
10416                if ( pstate != EFindSqlStateType.stnormal )
10417                {
10418                    // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
10419                    if ( (lcprevsolidtoken != null) )
10420                    {
10421                        if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
10422                            lcisnewsql = false; //subqery
10423                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
10424                            lcisnewsql = false;
10425                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
10426                            lcisnewsql = false;
10427                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
10428                            lcisnewsql = false;
10429                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
10430                            lcisnewsql = false;
10431                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
10432                            lcisnewsql = false;
10433                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
10434                        {
10435                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
10436                                lcisnewsql = false;
10437                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
10438                                lcisnewsql = false;
10439                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstalterview )
10440                                lcisnewsql = false;
10441                        }
10442                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
10443                        {
10444                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlset )
10445                                lcisnewsql = false;
10446                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqldeclare )
10447                                lcisnewsql = false;
10448                        }
10449
10450                        if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
10451                        {
10452                            lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
10453                            if ( (lcpprevsolidtoken != null) )
10454                            {
10455                                if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
10456                                    lcisnewsql = false;
10457                            }
10458                        }
10459
10460                    }
10461
10462                    if ( (lccurrentsqlstatement != null) )
10463                    {
10464                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
10465                        {
10466                        }
10467                        else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlgrant )
10468                        {
10469                            if ( (lcprevsolidtoken != null) )
10470                            {
10471                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_grant )
10472                                    lcisnewsql = false;
10473                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
10474                                    lcisnewsql = false;
10475                            }
10476                        }else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview ){
10477                            lcisnewsql = false;
10478                        }else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatematerializedview ){
10479                            lcisnewsql = false;
10480                        }
10481                    }
10482
10483                }
10484
10485                if ( lcisnewsql )
10486                    ret =  new TSelectSqlStatement(pdbvendor);
10487
10488                break;
10489
10490            }
10491            case sstinsert:
10492            {
10493                lcisnewsql = true;
10494                if ( pstate != EFindSqlStateType.stnormal )
10495                {
10496                    if ( (lccurrentsqlstatement != null) )
10497                    {
10498                        // merge
10499                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
10500                        {
10501                              if (lcprevsolidtoken != null)
10502                              {
10503                                  if (lcprevsolidtoken.tokencode == TBaseType.rrw_then)
10504                                  {lcisnewsql = false;}
10505                              }
10506                        }
10507
10508                        // bulk insert
10509                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlbulkinsert )
10510                        {
10511                            if ( (lcprevsolidtoken != null) )
10512                            {
10513                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_bulk )
10514                                    lcisnewsql = false;
10515                            }
10516                        }
10517
10518                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlgrant )
10519                        {
10520                            if ( (lcprevsolidtoken != null) )
10521                            {
10522                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_grant )
10523                                    lcisnewsql = false;
10524                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
10525                                    lcisnewsql = false;
10526                            }
10527                        }
10528
10529                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetrigger )
10530                        {
10531                            if ( (lcprevsolidtoken != null) )
10532                            {
10533                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
10534                                    lcisnewsql = false;
10535                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
10536                                    lcisnewsql = false;
10537                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(),"after") == 0 )
10538                                    lcisnewsql = false;
10539                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(), "of") == 0 )
10540                                    lcisnewsql = false;
10541                            }
10542                        }
10543
10544
10545                    }
10546                }
10547
10548                if ( lcisnewsql )
10549                {
10550                    ret =  new TInsertSqlStatement(pdbvendor);
10551                    ret.dummytag = 1; //  select stmt in insert is permitted
10552                    for ( k = lcpos + 1; k < lcsourcetokenlist.size();k++ )    // iterate
10553                    {
10554                        if ( lcsourcetokenlist.get(k).isnonsolidtoken() ) continue;
10555                        if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_values ) break;
10556                        if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_go ) break;
10557                        if ( lcsourcetokenlist.get(k).tokentype == ETokenType.ttsemicolon ) break;
10558                        if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_select ){
10559                            ret.dummytag = 0;
10560                            break;
10561                        }
10562                        if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_execute ) break;
10563                        if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_exec ) break;
10564                    }    // for (
10565                    if ( k > lcsourcetokenlist.size() - 1 )
10566                        k = lcsourcetokenlist.size() - 1;
10567
10568                    for ( int i = lcpos + 1; i <=  k; i++ )    // iterate
10569                    {
10570                        lcsourcetokenlist.get(i).tokenstatus = ETokenStatus.tsignoredbygetrawstatement;
10571                    }    // for (
10572
10573                }
10574
10575                break;
10576            }
10577            case sstupdate:
10578            {
10579                lcisnewsql = true;
10580                if ( pstate != EFindSqlStateType.stnormal )
10581                {
10582                    // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
10583                    if ( (lcprevsolidtoken != null) )
10584                    { //
10585                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
10586                            lcisnewsql = false;
10587                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
10588                            lcisnewsql = false;
10589                    }
10590
10591                    lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
10592                    if ( TBaseType.assigned(lcnextsolidtoken) )
10593                    {
10594                        if ( lcnextsolidtoken.tokentype == ETokenType.ttleftparenthesis)
10595                        {
10596                            k = lcsourcetokenlist.solidtokenafterpos(lcnextsolidtoken.posinlist,TBaseType.rrw_select,1,"(");
10597                            if ( k  == 0 ) lcisnewsql = false;
10598                        }
10599                    }
10600
10601
10602                    if ( TBaseType.assigned(lccurrentsqlstatement) )
10603                    {
10604                        // merge
10605                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
10606                        {
10607                              if (lcprevsolidtoken != null)
10608                              {
10609                                  if (lcprevsolidtoken.tokencode == TBaseType.rrw_then)
10610                                  {lcisnewsql = false;}
10611                              }
10612                        }
10613
10614                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlgrant )
10615                        {
10616                            if ( TBaseType.assigned(lcprevsolidtoken) )
10617                            {
10618                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_grant )
10619                                    lcisnewsql = false;
10620                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
10621                                    lcisnewsql = false;
10622                            }
10623                        }
10624                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetrigger )
10625                        {
10626                            if ( TBaseType.assigned(lcprevsolidtoken) )
10627                            {
10628                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
10629                                    lcisnewsql = false;
10630                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
10631                                    lcisnewsql = false;
10632                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(),"after") == 0 )
10633                                    lcisnewsql = false;
10634                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(), "of") == 0 )
10635                                    lcisnewsql = false;
10636                            }
10637                        }
10638
10639                    }
10640                }
10641
10642                if ( lcisnewsql )
10643                {
10644                    ret =  new TUpdateSqlStatement(pdbvendor);
10645                    ret.dummytag = 1; // means set clause in update is not found yet, used to separate set clause from set statement
10646                }
10647
10648                break;
10649            }
10650            case sstdelete:
10651            {
10652                lcisnewsql = true;
10653
10654                if ( pstate != EFindSqlStateType.stnormal )
10655                {
10656                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
10657                    if ( TBaseType.assigned(lcprevsolidtoken) )
10658                    {
10659                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
10660                            lcisnewsql = false;
10661                    }
10662
10663                    if ( TBaseType.assigned(lccurrentsqlstatement) )
10664                    {
10665                        // merge
10666                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
10667                        {
10668                              if (lcprevsolidtoken != null)
10669                              {
10670                                  if (lcprevsolidtoken.tokencode == TBaseType.rrw_then)
10671                                  {lcisnewsql = false;}
10672                              }
10673                        }
10674
10675                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlgrant )
10676                        {
10677                            if ( TBaseType.assigned(lcprevsolidtoken) )
10678                            {
10679                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_grant )
10680                                    lcisnewsql = false;
10681                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
10682                                    lcisnewsql = false;
10683                            }
10684                        }
10685
10686                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetrigger )
10687                        {
10688                            if ( TBaseType.assigned(lcprevsolidtoken) )
10689                            {
10690                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
10691                                    lcisnewsql = false;
10692                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
10693                                    lcisnewsql = false;
10694                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(),"after") == 0 )
10695                                    lcisnewsql = false;
10696                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(), "of") == 0 )
10697                                    lcisnewsql = false;
10698                            }
10699                        }
10700
10701                    }
10702                }
10703
10704                if ( lcisnewsql )
10705                    ret =  new TDeleteSqlStatement(pdbvendor);
10706
10707                break;
10708            }
10709            case sstcreatetable:
10710            {
10711                lcisnewsql = true;
10712                if ( pstate != EFindSqlStateType.stnormal ) {
10713
10714                    if (TBaseType.assigned(lccurrentsqlstatement)) {
10715                        if ((lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateschema)
10716                                )
10717                        {
10718                            lcisnewsql = false;
10719                        }
10720                    }
10721                }
10722
10723                if (lcisnewsql) {
10724                    ret = new TCreateTableSqlStatement(pdbvendor);
10725
10726                }
10727                break;
10728            }
10729            case sstcreateview:
10730            {
10731
10732                lcisnewsql = true;
10733                if ( pstate != EFindSqlStateType.stnormal ) {
10734
10735                    if (TBaseType.assigned(lccurrentsqlstatement)) {
10736                        if ((lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateschema)
10737                                )
10738                        {
10739                            lcisnewsql = false;
10740                        }
10741                    }
10742                }
10743                if (lcisnewsql) {
10744                    ret =  new TCreateViewSqlStatement(pdbvendor);
10745                }
10746                break;
10747            }
10748            case sstcreatesequence:
10749              {
10750                ret = new TCreateSequenceStmt(pdbvendor);
10751                  break;
10752              }
10753            case sstaltertable:
10754            {
10755                ret =  new TAlterTableStatement(pdbvendor);
10756                break;
10757            }
10758            case sstmssqlfetch:
10759            {
10760                ret =  new TMssqlFetch(pdbvendor);
10761                break;
10762            }
10763            case sstmssqlif :
10764            {
10765                lcisnewsql = true;
10766                if ( pstate != EFindSqlStateType.stnormal ) {
10767
10768                    if (TBaseType.assigned(lccurrentsqlstatement)) {
10769                        // merge
10770                        if (
10771                            (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstdropprocedure)
10772                                ||(lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstdropdatabase)
10773                                    ||(lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstdropfunction)
10774                                    ||(lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlDropSecurityPolicy)
10775                                )
10776                        {
10777                            lcisnewsql = false;
10778                        }else if ( (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstdroptable)
10779                                ||(lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstdropindex)
10780                                ||(lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable)
10781                                ||(lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstdropsynonym)
10782                                ||(lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstdropview)
10783                                ||(lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstdropsequence)
10784                        ){
10785                            // DROP TABLE IF EXISTS T1;
10786                            TSourceToken st = lcsourcetokenlist.solidtokenbefore(lcpos);
10787                            if ((st.tokencode == TBaseType.rrw_table)||(st.tokencode == TBaseType.rrw_index)
10788                                ||(st.tokencode == TBaseType.rrw_sqlserver_synonym)||(st.tokencode == TBaseType.rrw_view)
10789                                ||(st.tokencode == TBaseType.rrw_sqlserver_sequence)
10790                                ){
10791                                lcisnewsql = false;
10792                            }
10793                        }else if ((lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstaltertable)){
10794                            lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
10795                            if (lcnextsolidtoken != null){
10796                                if (lcnextsolidtoken.tokencode == TBaseType.rrw_sqlserver_exists){
10797                                    lcisnewsql = false;
10798                                }
10799                            }
10800                        }
10801                    }
10802                }
10803
10804
10805                if (lcisnewsql) {
10806                    ret = new TMssqlIfElse(pdbvendor);
10807                    ret.dummytag = 1;// reduce to 0 while stmt find in 'if ( condtion stmt' || 'else stmt'
10808                }
10809                break;
10810            }
10811            case sstmssqlwhile:
10812            {
10813                ret = new TMssqlIfElse(pdbvendor);
10814                ret.dummytag = 1;// reduce to 0 while stmt find in 'if ( condtion stmt' || 'else stmt'
10815                break;
10816            }
10817            case sstmssqlcreateprocedure :
10818            case sstmssqlalterprocedure:
10819            {
10820                ret = new TMssqlCreateProcedure(pdbvendor);
10821                break;
10822            }
10823            case sstmssqlcreatefunction :
10824            case sstmssqlalterfunction:
10825            {
10826                ret =  new TMssqlCreateFunction(pdbvendor);
10827                break;
10828            }
10829            case sstcreatetrigger :
10830            case sstmssqlaltertrigger:
10831            {
10832                ret =  new TCreateTriggerStmt(pdbvendor); //TMssqlCreateTrigger(pdbvendor);
10833                break;
10834            }
10835            case sstmssqlreturn:
10836            {
10837                ret =  new TMssqlReturn(pdbvendor);
10838                break;
10839            }
10840            case sstmssqlprint:
10841            {
10842                if (pdbvendor == EDbVendor.dbvodbc){
10843
10844                }else if (pdbvendor == EDbVendor.dbvmssql){
10845                    ret =  new TMssqlPrint(pdbvendor);
10846                }
10847
10848                break;
10849            }
10850            case sstmssqluse:
10851            {
10852                ret =  new TUseDatabase(pdbvendor);
10853                break;
10854            }
10855            case sstmssqlgo:
10856            {
10857                ret =  new TMssqlGo(pdbvendor);
10858                break;
10859            }
10860            case sstmssqlrevert:
10861            {
10862                lcisnewsql = true;
10863                // prev tokentext can't be with
10864                if ( pstate != EFindSqlStateType.stnormal ) {
10865                    if (TBaseType.assigned(lcprevsolidtoken)) {
10866                        if (lcprevsolidtoken.toString().equalsIgnoreCase("no")) {
10867                            ret = null;
10868                            lcisnewsql = false;
10869                        }
10870                    }
10871                }
10872                if (lcisnewsql){
10873                    ret =  new TMssqlRevert(pdbvendor);
10874                }
10875
10876                break;
10877            }
10878            case sstmssqlgrant:
10879            {
10880                lcisnewsql = true;
10881                // prev tokentext can't be with
10882                if ( pstate != EFindSqlStateType.stnormal )
10883                {
10884                    if ( TBaseType.assigned(lcprevsolidtoken) )
10885                    {
10886                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_with )
10887                        {
10888                            ret = null;
10889                            lcisnewsql = false;
10890                        }
10891                    }
10892
10893                    if((lcisnewsql)&&(TBaseType.assigned(lccurrentsqlstatement))) {
10894                        if ((lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateschema)
10895                                )
10896                        {
10897                            lcisnewsql = false;
10898                        }
10899                    }
10900                }
10901                if ( lcisnewsql )
10902                {
10903                    ret =  new TGrantStmt(pdbvendor);
10904                    //ret.sqlstatementtype = gnewsqlstatementtype;
10905                    for ( k = lcpos + 1; k< lcsourcetokenlist.size();k++ )    // iterate
10906                    {
10907                        lctoken = lcsourcetokenlist.get(k);
10908                        if (lctoken.isnonsolidtoken() ) continue;
10909                        if ( lctoken.tokencode == TBaseType.rrw_go ) break;
10910                        if ( lctoken.tokentype == ETokenType.ttsemicolon ) break;
10911                        if ( lctoken.tokencode == TBaseType.rrw_to   ) break;
10912                        lctoken.tokenstatus = ETokenStatus.tsignoredbygetrawstatement;
10913                    }
10914                }
10915                break;
10916            }
10917            case sstmssqlrevoke:{
10918                lcisnewsql = true;
10919                if ( pstate != EFindSqlStateType.stnormal )
10920                {
10921                    if((lcisnewsql)&&(TBaseType.assigned(lccurrentsqlstatement))) {
10922                        if ((lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateschema)
10923                                )
10924                        {
10925                            lcisnewsql = false;
10926                        }
10927                    }
10928                }
10929                if ( lcisnewsql )
10930                {
10931                    ret =  new TRevokeStmt(pdbvendor);
10932                    for ( k = lcpos + 1; k< lcsourcetokenlist.size();k++ )    // iterate
10933                    {
10934                        lctoken = lcsourcetokenlist.get(k);
10935                        if (lctoken.isnonsolidtoken() ) continue;
10936                        if ( lctoken.tokencode == TBaseType.rrw_go ) break;
10937                        if ( lctoken.tokentype == ETokenType.ttsemicolon ) break;
10938                        if ( lctoken.tokencode == TBaseType.rrw_to   ) break;
10939                        lctoken.tokenstatus = ETokenStatus.tsignoredbygetrawstatement;
10940                    }
10941                }
10942                break;
10943
10944            }
10945            case sstmssqldeny:
10946            {
10947                lcisnewsql = true;
10948                if ( pstate != EFindSqlStateType.stnormal )
10949                {
10950                    if((lcisnewsql)&&(TBaseType.assigned(lccurrentsqlstatement))) {
10951                        if ((lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateschema)
10952                                )
10953                        {
10954                            lcisnewsql = false;
10955                        }
10956                    }
10957                }
10958                if ( lcisnewsql )
10959                {
10960                    ret =  new TDenyStmt(pdbvendor);
10961                    for ( k = lcpos + 1; k< lcsourcetokenlist.size();k++ )    // iterate
10962                    {
10963                        lctoken = lcsourcetokenlist.get(k);
10964                        if (lctoken.isnonsolidtoken() ) continue;
10965                        if ( lctoken.tokencode == TBaseType.rrw_go ) break;
10966                        if ( lctoken.tokentype == ETokenType.ttsemicolon ) break;
10967                        if ( lctoken.tokencode == TBaseType.rrw_to   ) break;
10968                        lctoken.tokenstatus = ETokenStatus.tsignoredbygetrawstatement;
10969                    }
10970                }
10971                break;
10972            }
10973            case sstmssqldeclare:
10974            {
10975                ret =  new TMssqlDeclare(pdbvendor);
10976                break;
10977            }
10978            case sstmssqlcontinue:
10979            {
10980                ret =  new TMssqlContinue(pdbvendor);
10981                break;
10982            }
10983            case sstbreak:
10984            {
10985                ret =  new TBreakStmt(pdbvendor);
10986                break;
10987            }
10988            case sstmssqlopen:
10989            {
10990                ret =  new TMssqlOpen(pdbvendor);
10991                break;
10992            }
10993            case sstmssqlclose:
10994            {
10995                ret =  new TMssqlClose(pdbvendor);
10996                break;
10997            }
10998            case sstmssqlbulkinsert:
10999            {
11000                ret =  new TMssqlBulkInsert(pdbvendor);
11001                break;
11002            }
11003            case sstmssqldeallocate:
11004            {
11005                ret =  new TMssqlDeallocate(pdbvendor);
11006                break;
11007            }
11008            case sstmssqlraiserror:
11009            {
11010                ret =  new TMssqlRaiserror(pdbvendor);
11011                break;
11012            }
11013            case sstmssqlgoto:
11014            {
11015                ret =  new TMssqlGoTo(pdbvendor);
11016                break;
11017            }
11018            case sstmssqldropview:
11019            {
11020                ret =  new TDropViewSqlStatement(pdbvendor);
11021                break;
11022            }
11023            case sstmssqldroptable:
11024            {
11025                ret =  new TDropTableSqlStatement(pdbvendor);
11026                break;
11027            }
11028            case sstmssqldropindex:
11029            {
11030                ret =  new TDropIndexSqlStatement(pdbvendor);
11031                break;
11032            }
11033            case sstmssqldroppartitionscheme :
11034                ret = new TDropPartitionSchemeStmt(pdbvendor);
11035                break;
11036            case sstmssqldropaggregate :
11037            case sstmssqldropapplicationrole :
11038            case sstmssqldropassembly :
11039            case sstmssqldropasymmetrickey :
11040            case sstmssqldropcertificate :
11041            case sstmssqldropcontract :
11042            case sstmssqldropcredential :
11043            case sstmssqldropdefault :
11044            case sstmssqldropendpoint :
11045            case sstmssqldropeventnotification :
11046            case sstmssqldropfulltextcatalog :
11047            case sstmssqldropfulltextindex :
11048            case sstmssqldroplogin :
11049            case sstmssqldropmasterkey :
11050            case sstmssqldropmessagetype :
11051            case sstmssqldroppartitionfunction :
11052            case sstmssqldropqueue :
11053            case sstmssqldropremoteservicebinding :
11054            case sstmssqldroprole :
11055            case sstmssqldroproute :
11056            case sstmssqldroprule :
11057            case sstmssqldropservice :
11058            case sstmssqldropsignature:
11059            case sstmssqldropstatistics :
11060            case sstmssqldropsymmetrickey :
11061            case sstmssqldroptrigger :
11062            case sstmssqldroptype :
11063            case sstmssqldropuser :
11064            case sstmssqldropxmlschemacollection:
11065            case sstmssqldropeventsession:
11066            {
11067                ret =  new TMssqlDropDbObject(EDbVendor.dbvmssql);
11068                ret.sqlstatementtype = gnewsqlstatementtype;
11069                break;
11070            }
11071            case sstmssqldropsynonym :
11072            {
11073                ret =  new TDropSynonymStmt(pdbvendor);
11074                break;
11075            }
11076            case sstmssqldropprocedure :
11077            {
11078                ret =  new TDropProcedureStmt(EDbVendor.dbvmssql);
11079                break;
11080            }
11081            case sstmssqldropdatabase :
11082            {
11083                ret =  new TDropDatabaseStmt(EDbVendor.dbvmssql);
11084                break;
11085            }
11086            case sstmssqldropschema :
11087            {
11088                ret =  new TDropSchemaSqlStatement(EDbVendor.dbvmssql);
11089                break;
11090            }
11091            case sstmssqltruncatetable:
11092            {
11093                ret =  new TTruncateStatement(pdbvendor);
11094                break;
11095            }
11096            case sstmssqlbegintran:
11097            {
11098                ret =  new TBeginTran(pdbvendor);
11099                break;
11100            }
11101            case sstmssqlsavetran:
11102            {
11103                if (pdbvendor == EDbVendor.dbvodbc){
11104
11105                }else if (pdbvendor == EDbVendor.dbvmssql) {
11106                    ret = new TMssqlSaveTran(pdbvendor);
11107                }
11108                break;
11109            }
11110            case sstmssqlcommit:
11111            {
11112                ret =  new TMssqlCommit(pdbvendor);
11113                break;
11114            }
11115            case sstmssqlrollback:
11116            {
11117                ret =  new TMssqlRollback(pdbvendor);
11118                break;
11119            }
11120            case sstmssqlreadtext :
11121            case sstmssqldbcc :
11122            case sstmssqlrestore :
11123            case sstmssqlbackup :
11124            {
11125                ret = new TMssqlDummyStmt(pdbvendor);
11126                ret.sqlstatementtype = gnewsqlstatementtype;
11127                break;
11128            }
11129
11130            case sstmssqlreceive:
11131            {
11132                lcisnewsql = true;
11133                if ( pstate != EFindSqlStateType.stnormal )
11134                {
11135                    if((lcisnewsql)&&(TBaseType.assigned(lccurrentsqlstatement))) {
11136                        if ((lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstselect)
11137                        )
11138                        {
11139                            lcisnewsql = false;
11140                        }
11141                    }
11142                }
11143                if ( lcisnewsql )
11144                {
11145                    ret = new TMssqlDummyStmt(pdbvendor);
11146                    ret.sqlstatementtype = gnewsqlstatementtype;
11147                }
11148                break;
11149            }
11150            case sstcreateindex:
11151            {
11152                ret =  new TCreateIndexSqlStatement(pdbvendor);
11153                break;
11154            }
11155            case sstmssqlwaitfor:
11156            {
11157                ret =  new TMssqlWaitFor(pdbvendor);
11158                break;
11159            }
11160            case sstmerge:
11161            {
11162                lcisnewsql = true;
11163
11164                if (pstate != EFindSqlStateType.stnormal)
11165                {
11166
11167                    if (lccurrentsqlstatement != null)
11168                    {
11169                        // merge union, merge join
11170                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstselect)
11171                        {
11172                                    lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
11173                                    if (lcnextsolidtoken != null)
11174                                       {
11175                                        if ((lcnextsolidtoken.tokencode == TBaseType.rrw_union) || (lcnextsolidtoken.tokencode == TBaseType.rrw_join)) 
11176                                           {
11177                                              lcisnewsql = false;
11178                                           }
11179                                        }
11180                        }
11181
11182//                        if ( TBaseType.assigned(lcprevsolidtoken) )
11183//                        {
11184//                            if ( lcprevsolidtoken.tokencode == '(' )
11185//                                lcisnewsql = false;
11186//                        }
11187
11188                    }
11189                    if (lcisnewsql){
11190                        TSourceToken nextSt = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
11191                        if (nextSt != null){
11192                            if (nextSt.tokencode == TBaseType.rrw_join){
11193                                lcisnewsql = false;
11194                            }
11195                        }
11196                    }
11197                }
11198
11199                if (lcisnewsql)
11200                {
11201                    ret = new TMergeSqlStatement(pdbvendor);
11202                    ret.sqlstatementtype = gnewsqlstatementtype;
11203                }
11204
11205                break;
11206            }
11207            case sstmssqlbegintry :
11208            case sstmssqlbegincatch:
11209            {
11210                ret =  new TMssqlBlock(pdbvendor);
11211                ret.sqlstatementtype = gnewsqlstatementtype;
11212                break;
11213            }
11214            case sstmssqlexec:
11215            {
11216                lcisnewsql = true;
11217                // prev tokentext can't be with
11218                if ( pstate != EFindSqlStateType.stnormal )
11219                {
11220                    if ( TBaseType.assigned(lccurrentsqlstatement) )
11221                    {
11222                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
11223                        {
11224                            if ( lccurrentsqlstatement.dummytag == 1 )
11225                            {
11226                                lcisnewsql = false;
11227                                lccurrentsqlstatement.dummytag = 0; // no select is permitted after it
11228                            }
11229
11230                            TSourceToken valuesToken = pcst.searchToken(TBaseType.rrw_values,-pcst.posinlist);
11231                            if (valuesToken != null){
11232                                // https://www.sqlparser.com/bugs/mantisbt/view.php?id=3153
11233                                // INSERT INTO @tempTbl VALUES ('Test5')
11234                                //
11235                                //EXEC sp_execute @handle, 1
11236                                // 如果 EXEC 在 insert 语句的 values 后面,则这个 EXEC 为独立的 sql 语句,
11237                                // 而不是属于insert 语句
11238                                TSourceToken insertToken = lccurrentsqlstatement.sourcetokenlist.get(0);
11239                                if (valuesToken.posinlist > insertToken.posinlist){
11240                                    lcisnewsql = true;
11241                                }
11242                            }
11243                        }
11244
11245                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlgrant )
11246                        {
11247                            if ( TBaseType.assigned(lcprevsolidtoken) )
11248                            {
11249                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_grant )
11250                                    lcisnewsql = false;
11251                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
11252                                    lcisnewsql = false;
11253                            }
11254                        }
11255
11256                        if (
11257                                (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlcreateprocedure)
11258                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetrigger)
11259                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlcreatefunction)
11260                                        ||(lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlalterprocedure)
11261                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlaltertrigger)
11262                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlalterfunction)
11263                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlcreatequeue)
11264                                )
11265                        {
11266                            if ( TBaseType.assigned(lcprevsolidtoken) )
11267                            {
11268                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_with )
11269                                    lcisnewsql = false;
11270                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
11271                                    lcisnewsql = false;
11272                            }
11273                        }
11274                    }
11275                }
11276                if ( lcisnewsql )
11277                {
11278                    ret =  new TMssqlExecute(pdbvendor);
11279                }
11280                break;
11281            }
11282            case sstmssqlexecuteas:
11283            {
11284                lcisnewsql = true;
11285                // prev tokentext can't be with
11286                if ( pstate != EFindSqlStateType.stnormal )
11287                {
11288                    if ( TBaseType.assigned(lccurrentsqlstatement) )
11289                    {
11290                        if (
11291                                (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlcreateprocedure)
11292                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetrigger)
11293                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlcreatefunction)
11294                                        ||(lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlalterprocedure)
11295                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlaltertrigger)
11296                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlalterfunction)
11297                                )
11298                        {
11299                            if ( TBaseType.assigned(lcprevsolidtoken) )
11300                            {
11301                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_with )
11302                                    lcisnewsql = false;
11303                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
11304                                    lcisnewsql = false;
11305                            }
11306                        }
11307                    }
11308                }
11309                if ( lcisnewsql )
11310                {
11311                    ret =  new TMssqlExecuteAs(pdbvendor);
11312                    ret.sqlstatementtype = gnewsqlstatementtype;
11313                }
11314                break;
11315            }
11316            case sstmssqlset:
11317            {
11318                lcisnewsql = true;
11319                if ( pstate != EFindSqlStateType.stnormal )
11320                {
11321                    if ( TBaseType.assigned(lccurrentsqlstatement) )
11322                    {
11323
11324                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlif)
11325                        {
11326                             TSourceToken lcPPToken = lcsourcetokenlist.searchToken(TBaseType.rrw_update,"",pcst,-10);
11327                             if (TBaseType.assigned(lcPPToken))
11328                            {
11329                                  lcisnewsql = false;
11330                            }
11331                        }
11332
11333                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstalterdatabase)
11334                        {
11335                             TSourceToken lcPPToken = lcsourcetokenlist.searchToken(TBaseType.rrw_alter,"",pcst,-10);
11336                             if (TBaseType.assigned(lcPPToken))
11337                            {
11338                                  lcisnewsql = false;
11339                            }
11340                        }
11341
11342                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
11343                        {
11344                              if (lcprevsolidtoken != null)
11345                              {
11346                                  if (lcprevsolidtoken.tokencode == TBaseType.rrw_update){
11347                                    lcisnewsql = false;}
11348                              }
11349                        }
11350
11351                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstupdate )
11352                        {
11353                            if ( lccurrentsqlstatement.dummytag == 1 )
11354                            {
11355                                //update statement still find set clause yet, so this is set clause in update statement
11356                                lccurrentsqlstatement.dummytag = 0;
11357                                lcisnewsql = false;
11358                            }
11359                        }
11360
11361                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlcreateeventsession )
11362                        {
11363                            lcisnewsql = false;
11364                        }
11365                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstaltertable )
11366                        {
11367                            lcisnewsql = false;
11368                        }
11369                    }
11370
11371                    lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
11372                    if ( TBaseType.assigned(lcnextsolidtoken) )
11373                    { //set null, set default
11374                        if ( (TBaseType.mycomparetext(lcnextsolidtoken.getAstext(),"null")==0)
11375                                || (TBaseType.mycomparetext(lcnextsolidtoken.getAstext(), "default")==0) )
11376                        {
11377                            lcisnewsql = false;
11378                        }
11379                    }
11380
11381                }
11382
11383                if ( lcisnewsql )
11384                {
11385                    ret =  new TMssqlSet(pdbvendor);
11386                }
11387
11388                break;
11389            }
11390            case sstmssqlsetrowcount:
11391            {
11392                ret =  new TMssqlSetRowCount(pdbvendor);
11393                break;
11394            }
11395            case sstmssqlupdatetext:
11396            {
11397                ret =  new TMssqlUpdateText(pdbvendor);
11398                break;
11399            }
11400            case sstmssqlendconversation:
11401            {
11402                ret =  new TMssqlEndConversation(pdbvendor);
11403                break;
11404            }
11405            case sstmssqlbegindialog:
11406            {
11407                ret =  new TMssqlBeginDialog(pdbvendor);
11408                break;
11409            }
11410            case sstmssqlsendonconversation:
11411            {
11412                ret =  new TMssqlSendOnConversation(pdbvendor);
11413                break;
11414            }
11415            case sstdropsequence:
11416                ret = new TDropSequenceStmt(pdbvendor);
11417                break;
11418            case sstmssqldisabletrigger :
11419            case sstmssqlenabletrigger:
11420            {
11421                lcisnewsql = true;
11422                if ( TBaseType.assigned(lccurrentsqlstatement) )
11423                {
11424                    if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstaltertable )
11425                        lcisnewsql = false;
11426                }
11427
11428                if ( lcisnewsql )
11429                {
11430                    ret =  new TUnknownSqlStatement(pdbvendor);
11431                    ret.sqlstatementtype = gnewsqlstatementtype;
11432                }
11433                break;
11434            }
11435            case sstmssqlthrow:
11436                ret = new TMssqlThrow(pdbvendor);
11437                break;
11438            case sstmssqlalterdatabase:
11439                ret = new TAlterDatabaseStmt(pdbvendor);
11440                break;
11441            case sstmssqlreconfigure:
11442                ret = new TReconfigure(pdbvendor);
11443                break;
11444            case sstcreatedatabase:
11445            {
11446                ret = new TCreateDatabaseSqlStatement(pdbvendor);
11447                break;
11448            }
11449            case sstmssqlcreateschema:
11450            {
11451                ret = new TCreateSchemaSqlStatement(pdbvendor);
11452                for ( k = lcpos + 1; k< lcsourcetokenlist.size();k++ )    // iterate
11453                {
11454                    lctoken = lcsourcetokenlist.get(k);
11455                    if (lctoken.isnonsolidtoken() ) continue;
11456                    if ( lctoken.tokencode == TBaseType.rrw_go ) break;
11457                    if ( lctoken.tokentype == ETokenType.ttsemicolon ) break;
11458                    lctoken.tokenstatus = ETokenStatus.tsignoredbygetrawstatement;
11459                }
11460                break;
11461            }
11462            case sstmssqlcreatesynonym:
11463            {
11464                ret = new TCreateSynonymStmt(pdbvendor);
11465                break;
11466            }
11467            case sstmssqlcreatetype:
11468                ret = new TMssqlCreateType(pdbvendor);
11469                break;
11470            case sstmssqlcreatexmlschemacollection:
11471                ret = new TMssqlCreateXmlSchemaCollectionStmt(pdbvendor);
11472                break;
11473            case sstmssqlalterindex:
11474                ret = new TAlterIndexStmt(pdbvendor);
11475                break;
11476            case sstmssqlcreateevexternalDataSource:
11477                ret = new TCreateExternalDataSourceStmt(pdbvendor);
11478                break;
11479            case sstmssqlcreateeventsession:
11480                ret = new TCreateEventSession(pdbvendor);
11481                break;
11482            case sstmssqldropfunction :
11483                ret = new TDropFunctionStmt(pdbvendor);
11484                break;
11485            case sstmssqlcreateevexternalLanguage:
11486                ret = new TCreateExternalLanguage(pdbvendor);
11487                break;
11488            case sstmssqlalterview:
11489            {
11490                lcisnewsql = true;
11491                if ( TBaseType.assigned(lccurrentsqlstatement) )
11492                {
11493                    if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
11494                        lcisnewsql = false;
11495                }
11496
11497                if ( lcisnewsql )
11498                {
11499                    ret =  new TAlterViewStatement(pdbvendor);
11500                    //ret.sqlstatementtype = gnewsqlstatementtype;
11501                }
11502                break;
11503            }
11504            case sstCreateFileFormat:
11505            {
11506                ret = new TCreateFileFormatStmt(pdbvendor);
11507                break;
11508            }
11509            case sstmssqlcreatemasterkey:
11510                ret = new TCreateMasterKeyStmt(pdbvendor);
11511                break;
11512            case sstmssqlcreatedatabaseencryptionkey:
11513            {
11514                TMssqlStmtStub stub = new TMssqlStmtStub(pdbvendor);
11515                stub.sqlstatementtype = ESqlStatementType.sstmssqlcreatedatabaseencryptionkey;
11516                ret = stub;
11517                break;
11518            }
11519            case sstmssqlcreateselectivexmlindex:
11520            {
11521                TMssqlStmtStub stub = new TMssqlStmtStub(pdbvendor);
11522                stub.sqlstatementtype = ESqlStatementType.sstmssqlcreateselectivexmlindex;
11523                ret = stub;
11524                break;
11525            }
11526            case sstmssqlcreatejsonindex:
11527            {
11528                TMssqlStmtStub stub = new TMssqlStmtStub(pdbvendor);
11529                stub.sqlstatementtype = ESqlStatementType.sstmssqlcreatejsonindex;
11530                ret = stub;
11531                break;
11532            }
11533            case sstmssqlcreatevectorindex:
11534            {
11535                TMssqlStmtStub stub = new TMssqlStmtStub(pdbvendor);
11536                stub.sqlstatementtype = ESqlStatementType.sstmssqlcreatevectorindex;
11537                ret = stub;
11538                break;
11539            }
11540            case sstcreatecredential:
11541                ret =  new TCreateCredentialStmt(pdbvendor);
11542                break;
11543            case sstCopyInto:
11544            {
11545                ret = new TMssqlCopyIntoStmt(pdbvendor);
11546                break;
11547            }
11548            case sstcreatematerializedview:{
11549                ret = new TCreateMaterializedSqlStatement(pdbvendor);
11550                break;
11551            }
11552            case sstmssqlCreateSecurityPolicy:
11553                ret = new TMssqlCreateSecurityPolicy(pdbvendor);
11554                break;
11555            case sstmssqlAlterSecurityPolicy:
11556                ret = new TMssqlAlterSecurityPolicy(pdbvendor);
11557                break;
11558            case sstmssqlDropSecurityPolicy:
11559                ret = new TMssqlDropSecurityPolicy(pdbvendor);
11560                break;
11561            case sstmssqlalterpartitionfunction:
11562                ret = new TAlterPartitionFunctionStmt(pdbvendor);
11563                break;
11564            case sstmssqlcreatepartitionfunction:
11565                ret = new TCreatePartitionFunctionStmt(pdbvendor);
11566                break;
11567            case sstmssqlalterpartitionscheme:
11568                ret = new TAlterPartitionSchemeSqlStatement(pdbvendor);
11569                break;
11570            case sstmssqlcreatepartitionscheme:
11571                ret = new TCreatePartitionSchemeSqlStatement(pdbvendor);
11572                break;
11573            default:
11574            {
11575                ret =  new TUnknownSqlStatement(pdbvendor);
11576                ret.sqlstatementtype = gnewsqlstatementtype;
11577                break;
11578            }
11579        }    // case
11580
11581        return ret;
11582    }
11583
11584    TCustomSqlStatement isteradatasql(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
11585        TCustomSqlStatement ret = null;
11586        int k;
11587        boolean lcisnewsql;
11588        TSourceToken lcpprevsolidtoken,lcnextsolidtoken,lctoken;
11589
11590        gnewsqlstatementtype = ESqlStatementType.sstinvalid;
11591
11592        if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
11593                || (pcst.tokencode  == TBaseType.cmtslashstar)
11594                || (pcst.tokencode  == TBaseType.lexspace)
11595                || (pcst.tokencode  == TBaseType.lexnewline)
11596                || (pcst.tokentype == ETokenType.ttsemicolon) )
11597        {
11598            return ret;
11599        }
11600
11601        int lcpos = pcst.posinlist;
11602        TSourceTokenList lcsourcetokenlist = pcst.container;
11603        TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
11604
11605        //subquery after semicolon || at first line
11606        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokentype == ETokenType.ttleftparenthesis) )
11607        {
11608            k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
11609            if ( k >0 )
11610            {
11611                ret =  new TSelectSqlStatement(pdbvendor);
11612            }else{
11613                k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_teradata_sel,1,"(");
11614                if ( k >0 )
11615                {
11616                    ret =  new TSelectSqlStatement(pdbvendor);
11617                }
11618            }
11619
11620            return ret;
11621        }
11622
11623        //cte
11624        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
11625        {
11626            ret = findcte(pcst,pdbvendor);
11627            if ( (ret != null) )  return ret;
11628        }
11629
11630        // using
11631        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_teradata_using) ){
11632           //return mapTeradataUsing(pcst);
11633            return new TTeradataUsing(pdbvendor);
11634        }
11635        
11636        if ( (pstate == EFindSqlStateType.stnormal) &&
11637                ((pcst.tokencode == TBaseType.rrw_lock)||(pcst.tokencode == TBaseType.rrw_teradata_locking)) ){
11638            return new TTeradataLock(pdbvendor);
11639        }
11640
11641        gnewsqlstatementtype = findteradatacmd(pcst);
11642
11643        TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
11644        switch(gnewsqlstatementtype ) {   //
11645            case sstinvalid:
11646            {
11647                ret = null;
11648                break;
11649            }
11650            case sstselect:
11651            {
11652                lcisnewsql = true;
11653
11654                if ( pstate != EFindSqlStateType.stnormal )
11655                {
11656                    // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
11657                    if ( (lcprevsolidtoken != null) )
11658                    {
11659                        if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
11660                            lcisnewsql = false; //subqery
11661                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
11662                            lcisnewsql = false;
11663                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
11664                            lcisnewsql = false;
11665                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
11666                            lcisnewsql = false;
11667                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
11668                            lcisnewsql = false;
11669                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
11670                            lcisnewsql = false;
11671                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
11672                        {
11673                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
11674                                lcisnewsql = false;
11675                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
11676                                lcisnewsql = false;
11677                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstteradatareplaceview )
11678                                lcisnewsql = false;
11679                        }
11680
11681                        if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
11682                        {
11683                            lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
11684                            if ( (lcpprevsolidtoken != null) )
11685                            {
11686                                if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
11687                                    lcisnewsql = false;
11688                            }
11689                        }
11690
11691                    }
11692
11693                    if ( (lccurrentsqlstatement != null) )
11694                    {
11695                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
11696                        {
11697                        }
11698                        else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview ){
11699                            lcisnewsql = false;
11700                        }
11701                    }
11702
11703                }
11704
11705                if ( lcisnewsql )
11706                    ret =  new TSelectSqlStatement(pdbvendor);
11707
11708                break;
11709
11710            }
11711            case sstinsert:
11712            {
11713                lcisnewsql = true;
11714                if ( pstate != EFindSqlStateType.stnormal )
11715                {
11716                    if ( (lccurrentsqlstatement != null) )
11717                    {
11718                        // merge
11719                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
11720                        {
11721                              if (lcprevsolidtoken != null)
11722                              {
11723                                  if (lcprevsolidtoken.tokencode == TBaseType.rrw_then)
11724                                  {lcisnewsql = false;}
11725                              }
11726                        }
11727
11728
11729
11730                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstteradatacreatetrigger )
11731                        {
11732                            if ( (lcprevsolidtoken != null) )
11733                            {
11734                                if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
11735                                    lcisnewsql = false;
11736                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(),"after") == 0 )
11737                                    lcisnewsql = false;
11738                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(),"before") == 0 )
11739                                    lcisnewsql = false;
11740                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(), "of") == 0 )
11741                                    lcisnewsql = false;
11742                            }
11743                        }
11744
11745
11746                    }
11747                }
11748
11749                if ( lcisnewsql )
11750                {
11751                    ret =  new TInsertSqlStatement(pdbvendor);
11752                    ret.dummytag = 1; //  select stmt in insert is permitted
11753                    for ( k = lcpos + 1; k < lcsourcetokenlist.size();k++ )    // iterate
11754                    {
11755                        if ( lcsourcetokenlist.get(k).isnonsolidtoken() ) continue;
11756                        if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_values ) break;
11757                        // if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_go ) break;
11758                        if ( lcsourcetokenlist.get(k).tokentype == ETokenType.ttsemicolon ) break;
11759                        if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_select ) break;
11760                        if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_execute ) break;
11761                        if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_exec ) break;
11762                    }    // for (
11763                    if ( k > lcsourcetokenlist.size() - 1 )
11764                        k = lcsourcetokenlist.size() - 1;
11765
11766                    for ( int i = lcpos + 1; i <=  k; i++ )    // iterate
11767                    {
11768                        lcsourcetokenlist.get(i).tokenstatus = ETokenStatus.tsignoredbygetrawstatement;
11769                    }    // for (
11770
11771                }
11772
11773                break;
11774            }
11775            case sstupdate:
11776            {
11777                lcisnewsql = true;
11778                if ( pstate != EFindSqlStateType.stnormal )
11779                {
11780                    // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
11781                    if ( (lcprevsolidtoken != null) )
11782                    { //
11783                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
11784                            lcisnewsql = false;
11785                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
11786                            lcisnewsql = false;
11787                    }
11788
11789                    lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
11790                    if ( TBaseType.assigned(lcnextsolidtoken) )
11791                    {
11792                        if ( lcnextsolidtoken.tokentype == ETokenType.ttleftparenthesis)
11793                        {
11794                            k = lcsourcetokenlist.solidtokenafterpos(lcnextsolidtoken.posinlist,TBaseType.rrw_select,1,"(");
11795                            if ( k  == 0 ) lcisnewsql = false;
11796                        }
11797                    }
11798
11799
11800                    if ( TBaseType.assigned(lccurrentsqlstatement) )
11801                    {
11802                        // merge
11803                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
11804                        {
11805                              if (lcprevsolidtoken != null)
11806                              {
11807                                  if (lcprevsolidtoken.tokencode == TBaseType.rrw_then)
11808                                  {lcisnewsql = false;}
11809                              }
11810                        }
11811
11812
11813                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstteradatacreatetrigger )
11814                        {
11815                            if ( TBaseType.assigned(lcprevsolidtoken) )
11816                            {
11817                                if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
11818                                    lcisnewsql = false;
11819                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(),"after") == 0 )
11820                                    lcisnewsql = false;
11821                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(),"before") == 0 )
11822                                    lcisnewsql = false;
11823                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(), "of") == 0 )
11824                                    lcisnewsql = false;
11825                            }
11826                        }
11827
11828                    }
11829                }
11830
11831                if ( lcisnewsql )
11832                {
11833                    ret =  new TUpdateSqlStatement(pdbvendor);
11834                    ret.dummytag = 1; // means set clause in update is not found yet, used to seperate set clause from set statement
11835                }
11836
11837                break;
11838            }
11839            case sstdelete:
11840            {
11841                lcisnewsql = true;
11842
11843                if ( pstate != EFindSqlStateType.stnormal )
11844                {
11845                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
11846                    if ( TBaseType.assigned(lcprevsolidtoken) )
11847                    {
11848                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
11849                            lcisnewsql = false;
11850                    }
11851
11852                    if ( TBaseType.assigned(lccurrentsqlstatement) )
11853                    {
11854                        // merge
11855                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
11856                        {
11857                              if (lcprevsolidtoken != null)
11858                              {
11859                                  if (lcprevsolidtoken.tokencode == TBaseType.rrw_then)
11860                                  {lcisnewsql = false;}
11861                              }
11862                        }
11863
11864
11865                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstteradatacreatetrigger )
11866                        {
11867                            if ( TBaseType.assigned(lcprevsolidtoken) )
11868                            {
11869                                if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
11870                                    lcisnewsql = false;
11871                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(),"after") == 0 )
11872                                    lcisnewsql = false;
11873                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(),"before") == 0 )
11874                                    lcisnewsql = false;
11875                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(), "of") == 0 )
11876                                    lcisnewsql = false;
11877                            }
11878                        }
11879
11880                    }
11881                }
11882
11883                if ( lcisnewsql )
11884                    ret =  new TDeleteSqlStatement(pdbvendor);
11885
11886                break;
11887            }
11888            case sstcreatetable:
11889            {
11890                ret =  new TCreateTableSqlStatement(pdbvendor);
11891                break;
11892            }
11893            case sstaltertable:
11894            case sstteradataaltertable:
11895            {
11896                ret =  new TAlterTableStatement(pdbvendor);
11897                break;
11898            }
11899            case sstteradatafetch:
11900            {
11901                ret =  new TMssqlFetch(pdbvendor);
11902                break;
11903            }
11904            case sstcreateprocedure :
11905            case sstteradatareplaceprocedure:
11906            {
11907                ret = new TCreateProcedureStmt(pdbvendor);
11908                break;
11909            }
11910            case sstteradataalterprocedure:
11911                ret = new TAlterProcedureStmt(pdbvendor);
11912                break;
11913            case sstteradatacreatefunction :
11914            case sstteradatareplacefunction:
11915            {
11916                ret =  new TTeradataCreateFunction(pdbvendor);
11917                break;
11918            }
11919            case sstteradataalterfunction:
11920                ret =  new TAlterFunctionStmt(pdbvendor);
11921                break;
11922            case sstteradatacreatetrigger :
11923            case sstteradataaltertrigger:
11924            case sstteradatareplacetrigger:
11925            {                              
11926                ret =  new TCreateTriggerStmt(pdbvendor);
11927                break;
11928            }
11929            case sstteradatagrant:
11930            {
11931                lcisnewsql = true;
11932                // prev tokentext can't be with
11933                if ( pstate != EFindSqlStateType.stnormal )
11934                {
11935                    if ( TBaseType.assigned(lcprevsolidtoken) )
11936                    {
11937                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_with )
11938                        {
11939                            ret = null;
11940                            lcisnewsql = false;
11941                        }
11942                    }
11943                }
11944                if ( lcisnewsql )
11945                {
11946                    ret =  new TTeradataGrant(pdbvendor);
11947                    ret.sqlstatementtype = gnewsqlstatementtype;
11948                    for ( k = lcpos + 1; k< lcsourcetokenlist.size();k++ )    // iterate
11949                    {
11950                        lctoken = lcsourcetokenlist.get(k);
11951                        if (lctoken.isnonsolidtoken() ) continue;
11952                        if ( lctoken.tokencode == TBaseType.rrw_go ) break;
11953                        if ( lctoken.tokentype == ETokenType.ttsemicolon ) break;
11954                        if ( lctoken.tokencode == TBaseType.rrw_to   ) break;
11955                        lctoken.tokenstatus = ETokenStatus.tsignoredbygetrawstatement;
11956                    }
11957                }
11958                break;
11959            }
11960            case sstdropindex:
11961            {
11962                ret =  new TDropIndexSqlStatement(pdbvendor);
11963                break;
11964            }
11965            case sstdroptable:
11966            {
11967                ret =  new TDropTableSqlStatement(pdbvendor);
11968                break;
11969            }
11970            case sstdropview:
11971            {
11972                ret =  new TDropViewSqlStatement(pdbvendor);
11973                break;
11974            }
11975            case sstteradatadropprocedure:
11976                ret =  new TDropProcedureStmt(pdbvendor);
11977                break;
11978            case sstteradatadropauthorization:
11979            case sstteradatadropcast:
11980            case sstteradatadropdatabase:
11981            case sstteradatadropfunction:
11982            case sstteradatadroptrigger:
11983            case sstteradatadropordering:
11984            case sstteradatadropprofile:
11985            case sstteradatadropreplicationgroup:
11986            case sstteradatadroprole:
11987            case sstteradatadroptransform:
11988            case sstteradatadroptype:
11989            case sstteradatadropuser:
11990            case sstteradatadropzone:
11991            {
11992                ret =  new TTeradataDropDbObject(EDbVendor.dbvteradata);
11993                ret.sqlstatementtype = gnewsqlstatementtype;
11994                break;
11995            }
11996            case sstteradatadropmacro:
11997                ret = new TDropMacro(EDbVendor.dbvteradata);
11998                break;
11999            case sstteradatadropconstraint:
12000                ret = new TDropConstraintStmt(EDbVendor.dbvteradata);
12001                break;
12002            case sstteradatabegintransaction:
12003            {
12004                ret =  new TBeginTran(pdbvendor);
12005                break;
12006            }
12007            case sstteradataendtransaction:
12008            {
12009                ret =  new TEndTran(pdbvendor);
12010                break;
12011            }
12012            case sstteradatacommit:
12013            {
12014                ret =  new TTeradataCommit(pdbvendor);
12015                break;
12016            }
12017            case sstteradatarollback:
12018            {
12019                ret =  new TTeradataRollback(pdbvendor);
12020                break;
12021            }
12022            case sstcreateindex:
12023            {
12024                ret =  new TCreateIndexSqlStatement(pdbvendor);
12025                break;
12026            }
12027            case sstmerge:
12028            {
12029                lcisnewsql = true;
12030
12031                if (pstate != EFindSqlStateType.stnormal)
12032                {
12033
12034                    if (lccurrentsqlstatement != null)
12035                    {
12036                        // merge union, merge join
12037                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstselect)
12038                        {
12039                                    lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
12040                                    if (lcnextsolidtoken != null)
12041                                       {
12042                                        if ((lcnextsolidtoken.tokencode == TBaseType.rrw_union) || (lcnextsolidtoken.tokencode == TBaseType.rrw_join))
12043                                           {
12044                                              lcisnewsql = false;
12045                                           }
12046                                        }
12047                        }
12048
12049                    }
12050                }
12051
12052                if (lcisnewsql)
12053                {
12054                    ret = new TMergeSqlStatement(pdbvendor);
12055                    ret.sqlstatementtype = gnewsqlstatementtype;
12056                }
12057
12058                break;
12059            }
12060            case sstteradataexecute:
12061            {
12062                lcisnewsql = true;
12063                // prev tokentext can't be with
12064                if ( pstate != EFindSqlStateType.stnormal )
12065                {
12066                    if ( TBaseType.assigned(lccurrentsqlstatement) )
12067                    {
12068                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
12069                        {
12070                            if ( lccurrentsqlstatement.dummytag == 1 )
12071                            {
12072                                lcisnewsql = false;
12073                                lccurrentsqlstatement.dummytag = 0; // no select is permited after it
12074                            }
12075                        }
12076
12077                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstteradatagrant )
12078                        {
12079                            if ( TBaseType.assigned(lcprevsolidtoken) )
12080                            {
12081                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_grant )
12082                                    lcisnewsql = false;
12083                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
12084                                    lcisnewsql = false;
12085                            }
12086                        }
12087
12088                        if (
12089                                (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateprocedure)
12090                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstteradatacreatetrigger)
12091                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstteradatacreatefunction)
12092                                        ||(lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstteradataalterprocedure)
12093                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstteradataaltertrigger)
12094                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstteradataalterfunction)
12095                                )
12096                        {
12097                            if ( TBaseType.assigned(lcprevsolidtoken) )
12098                            {
12099                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_with )
12100                                    lcisnewsql = false;
12101                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
12102                                    lcisnewsql = false;
12103                            }
12104                        }
12105                    }
12106                }
12107                if ( lcisnewsql )
12108                {
12109                    ret =  new TTeradataExecute(pdbvendor);
12110                }
12111                break;
12112            }
12113            case sstteradatasetsession:
12114            {
12115                ret =  new TTeradataSetSession(pdbvendor);
12116                break;
12117            }
12118            case sstteradatadatabase:
12119                if (pcst.isFirstTokenOfLine()){
12120                    ret =  new TTeradataSetSession(pdbvendor);
12121                }
12122
12123                break;
12124            case sstteradatasettimezone:
12125            {
12126                ret =  new TTeradataSetTimezone(pdbvendor);
12127                break;
12128            }
12129            case sstteradatasetrole:
12130            {
12131                ret =  new TTeradataSetRole(pdbvendor);
12132                break;
12133            }
12134            case sstteradataendlogging:
12135            {
12136                ret =  new TTeradataEndLogging(pdbvendor);
12137                break;
12138            }
12139            case sstteradatabeginlogging:
12140            {
12141                ret =  new TTeradataBeginLogging(pdbvendor);
12142                break;
12143            }
12144            case sstteradataabort:
12145            {
12146                ret = new TTeradataAbort(pdbvendor);
12147                break;
12148            }
12149            case sstteradatareplaceview:
12150            case sstcreateview:
12151            {
12152                ret = new TCreateViewSqlStatement(pdbvendor);
12153                ret.sqlstatementtype = ESqlStatementType.sstcreateview;
12154                break;
12155            }
12156            case sstteradatacollectstatistics:
12157            {
12158                ret = new TTeradataCollectStatistics(pdbvendor);
12159                break;
12160            }
12161            case sstteradatagive:
12162            {
12163                ret = new TTeradataGive(pdbvendor);
12164                break;
12165            }
12166            case sstteradatacall:
12167                ret = new TCallStatement(pdbvendor);
12168                break;
12169            case sstteradatacreatemacro:
12170            case sstteradatareplacemacro:
12171                ret = new TCreateMacro(pdbvendor);
12172                break;
12173            case sstteradatarenametable:
12174                ret = new TRenameStmt(pdbvendor);
12175                break;
12176            case sstteradatacomment:
12177                ret = new TCommentOnSqlStmt(pdbvendor);
12178                break;
12179            case sstteradatacheckworkload:
12180                ret = new TCheckWorkload(pdbvendor);
12181                break;
12182            case sstgetdiagnostics:
12183                ret = new TGetDiagStmt(pdbvendor);
12184                break;
12185            case sstteradatacreaterole:
12186                ret = new TCreateRoleStmt(pdbvendor);
12187                break;
12188            case sstteradatarevoke:
12189                ret = new TRevokeStmt(pdbvendor);
12190                break;
12191            case sstteradataalterzone:
12192                ret = new TAlterZoneStmt(pdbvendor);
12193                break;
12194            case sstcreatezone:
12195                ret = new TCreateZoneStmt(pdbvendor);
12196                break;
12197            case sstteradataalterconstraint:
12198                ret = new TAlterConstraintStmt(pdbvendor);
12199                break;
12200            case sstExplain:
12201                ret = new TExplainPlan(pdbvendor);
12202                break;
12203            case sstteradatareleaseLock:
12204                ret = new TTeradataReleaseLockStmt(pdbvendor);
12205                break;
12206            default:
12207            {
12208                ret =  new TTeradataNotImplement(pdbvendor);
12209                ret.sqlstatementtype = gnewsqlstatementtype;
12210                break;
12211            }
12212        }    // case
12213
12214        return ret;
12215    }
12216
12217
12218    TCustomSqlStatement ishana(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
12219        TCustomSqlStatement ret = null;
12220        int k;
12221        boolean lcisnewsql;
12222        TSourceToken lcpprevsolidtoken,lcnextsolidtoken,lctoken;
12223
12224        gnewsqlstatementtype = ESqlStatementType.sstinvalid;
12225
12226        if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
12227                || (pcst.tokencode  == TBaseType.cmtslashstar)
12228                || (pcst.tokencode  == TBaseType.lexspace)
12229                || (pcst.tokencode  == TBaseType.lexnewline)
12230                || (pcst.tokentype == ETokenType.ttsemicolon) )
12231        {
12232            return ret;
12233        }
12234
12235        int lcpos = pcst.posinlist;
12236        TSourceTokenList lcsourcetokenlist = pcst.container;
12237        TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
12238
12239        //subquery after semicolon || at first line
12240        if ( pcst.tokentype == ETokenType.ttleftparenthesis)  // (
12241        {
12242            k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
12243            if ( k >0 )
12244            {
12245                if (pstate == EFindSqlStateType.stnormal){
12246                    ret =  new TSelectSqlStatement(pdbvendor);
12247                    return ret;
12248                }
12249            }
12250        }
12251
12252        //cte
12253        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
12254        {
12255            ret = findcte(pcst,pdbvendor);
12256            if ( (ret != null) )  return ret;
12257        }
12258
12259        gnewsqlstatementtype = findhanacmd(pcst);
12260
12261        TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
12262        switch(gnewsqlstatementtype ) {   //
12263            case sstinvalid:
12264            {
12265                if ( pcst.tokencode == TBaseType.mslabel )
12266                {
12267                    ret =  new TMssqlLabel(pdbvendor);
12268                }
12269                else
12270                    ret = null;
12271
12272                break;
12273            }
12274            case sstselect:
12275            {
12276                lcisnewsql = true;
12277
12278                if ( pstate != EFindSqlStateType.stnormal )
12279                {
12280                    // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
12281                    if ( (lcprevsolidtoken != null) )
12282                    {
12283                        if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
12284                            lcisnewsql = false; //subqery
12285                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
12286                            lcisnewsql = false;
12287                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
12288                            lcisnewsql = false;
12289                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
12290                            lcisnewsql = false;
12291                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
12292                            lcisnewsql = false;
12293                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
12294                            lcisnewsql = false;
12295                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
12296                        {
12297                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
12298                                lcisnewsql = false;
12299                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
12300                                lcisnewsql = false;
12301                        }
12302                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
12303                        {
12304                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlset )
12305                                lcisnewsql = false;
12306                        }
12307                        else if (lcprevsolidtoken.tokentype == ETokenType.ttrightparenthesis){
12308                            if ((lccurrentsqlstatement != null) && (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable)){
12309                                lcisnewsql = false;
12310                            }
12311                        }
12312
12313                        if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
12314                        {
12315                            lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
12316                            if ( (lcpprevsolidtoken != null) )
12317                            {
12318                                if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
12319                                    lcisnewsql = false;
12320                            }
12321                        }
12322
12323                    }
12324
12325                    if ( (lccurrentsqlstatement != null) )
12326                    {
12327                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
12328                        {
12329                            lcisnewsql = false;
12330                        }
12331                        else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstGrant )
12332                        {
12333                            if ( (lcprevsolidtoken != null) )
12334                            {
12335                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_grant )
12336                                    lcisnewsql = false;
12337                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
12338                                    lcisnewsql = false;
12339                            }
12340                        }else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview ){
12341                            lcisnewsql = false;
12342                        }else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstaltersequence ){
12343                            lcisnewsql = false;
12344                        }else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstExplain ){
12345                            lcisnewsql = false;
12346                        }else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstRevoke ){
12347                            lcisnewsql = false;
12348                        }else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstupsert ){
12349                            lcisnewsql = false;
12350                        }else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstalterview ){
12351                            lcisnewsql = false;
12352                        }
12353                    }
12354
12355                }
12356
12357                if ( lcisnewsql )
12358                    ret =  new TSelectSqlStatement(pdbvendor);
12359
12360                break;
12361
12362            }
12363            case sstinsert:
12364            {
12365                lcisnewsql = true;
12366                if ( pstate != EFindSqlStateType.stnormal )
12367                {
12368                    if ( (lccurrentsqlstatement != null) )
12369                    {
12370                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateauditpolicy)
12371                        {
12372                            lcisnewsql = false;
12373                        }
12374                        // merge
12375                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
12376                        {
12377                            if (lcprevsolidtoken != null)
12378                            {
12379                                if (lcprevsolidtoken.tokencode == TBaseType.rrw_then)
12380                                {lcisnewsql = false;}
12381                            }
12382                        }
12383
12384
12385                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstGrant )
12386                        {
12387                            if ( (lcprevsolidtoken != null) )
12388                            {
12389                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_grant )
12390                                    lcisnewsql = false;
12391                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
12392                                    lcisnewsql = false;
12393                            }
12394                        }else if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
12395                        {
12396                            lcisnewsql = false;
12397                        }
12398
12399                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetrigger )
12400                        {
12401                            if ( (lcprevsolidtoken != null) )
12402                            {
12403                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
12404                                    lcisnewsql = false;
12405                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
12406                                    lcisnewsql = false;
12407                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(),"after") == 0 )
12408                                    lcisnewsql = false;
12409                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(), "of") == 0 )
12410                                    lcisnewsql = false;
12411                            }
12412                        }
12413
12414
12415                    }
12416                }
12417
12418                if ( lcisnewsql )
12419                {
12420                    ret =  new TInsertSqlStatement(pdbvendor);
12421                    ret.dummytag = 1; //  select stmt in insert is permitted
12422                    for ( k = lcpos + 1; k < lcsourcetokenlist.size();k++ )    // iterate
12423                    {
12424                        if ( lcsourcetokenlist.get(k).isnonsolidtoken() ) continue;
12425                        if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_values ) break;
12426                        if ( lcsourcetokenlist.get(k).tokentype == ETokenType.ttsemicolon ) break;
12427                        if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_select ){
12428                            ret.dummytag = 0;
12429                            break;
12430                        }
12431                    }    // for (
12432                    if ( k > lcsourcetokenlist.size() - 1 )
12433                        k = lcsourcetokenlist.size() - 1;
12434
12435                    for ( int i = lcpos + 1; i <=  k; i++ )    // iterate
12436                    {
12437                        lcsourcetokenlist.get(i).tokenstatus = ETokenStatus.tsignoredbygetrawstatement;
12438                    }    // for (
12439
12440                }
12441
12442                break;
12443            }
12444            case sstupdate:
12445            {
12446                lcisnewsql = true;
12447                if ( pstate != EFindSqlStateType.stnormal )
12448                {
12449                    // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
12450                    if ( (lcprevsolidtoken != null) )
12451                    { //
12452                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
12453                            lcisnewsql = false;
12454                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
12455                            lcisnewsql = false;
12456                    }
12457
12458                    lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
12459                    if ( TBaseType.assigned(lcnextsolidtoken) )
12460                    {
12461                        if ( lcnextsolidtoken.tokentype == ETokenType.ttleftparenthesis)
12462                        {
12463                            k = lcsourcetokenlist.solidtokenafterpos(lcnextsolidtoken.posinlist,TBaseType.rrw_select,1,"(");
12464                            if ( k  == 0 ) lcisnewsql = false;
12465                        }
12466                    }
12467
12468
12469                    if ( TBaseType.assigned(lccurrentsqlstatement) )
12470                    {
12471                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateauditpolicy)
12472                        {
12473                                lcisnewsql = false;
12474                        }else if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
12475                        {
12476                            lcisnewsql = false;
12477                        }
12478                        // merge
12479                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
12480                        {
12481                            if (lcprevsolidtoken != null)
12482                            {
12483                                if (lcprevsolidtoken.tokencode == TBaseType.rrw_then)
12484                                {lcisnewsql = false;}
12485                            }
12486                        }
12487
12488                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstGrant )
12489                        {
12490                            if ( TBaseType.assigned(lcprevsolidtoken) )
12491                            {
12492                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_grant )
12493                                    lcisnewsql = false;
12494                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
12495                                    lcisnewsql = false;
12496                            }
12497                        }
12498                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetrigger )
12499                        {
12500                            if ( TBaseType.assigned(lcprevsolidtoken) )
12501                            {
12502                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
12503                                    lcisnewsql = false;
12504                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
12505                                    lcisnewsql = false;
12506                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(),"after") == 0 )
12507                                    lcisnewsql = false;
12508                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(), "of") == 0 )
12509                                    lcisnewsql = false;
12510                            }
12511                        }
12512
12513                    }
12514                }
12515
12516                if ( lcisnewsql )
12517                {
12518                    ret =  new TUpdateSqlStatement(pdbvendor);
12519                    ret.dummytag = 1; // means set clause in update is not found yet, used to separate set clause from set statement
12520                }
12521
12522                break;
12523            }
12524            case sstdelete:
12525            {
12526                lcisnewsql = true;
12527
12528                if ( pstate != EFindSqlStateType.stnormal )
12529                {
12530                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
12531                    if ( TBaseType.assigned(lcprevsolidtoken) )
12532                    {
12533                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
12534                            lcisnewsql = false;
12535                    }
12536
12537                    if ( TBaseType.assigned(lccurrentsqlstatement) )
12538                    {
12539                        // merge
12540                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
12541                        {
12542                            if (lcprevsolidtoken != null)
12543                            {
12544                                if (lcprevsolidtoken.tokencode == TBaseType.rrw_then)
12545                                {lcisnewsql = false;}
12546                            }
12547                        }
12548
12549                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstGrant )
12550                        {
12551                            if ( TBaseType.assigned(lcprevsolidtoken) )
12552                            {
12553                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_grant )
12554                                    lcisnewsql = false;
12555                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
12556                                    lcisnewsql = false;
12557                            }
12558                        }
12559
12560                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetrigger )
12561                        {
12562                            if ( TBaseType.assigned(lcprevsolidtoken) )
12563                            {
12564                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
12565                                    lcisnewsql = false;
12566                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
12567                                    lcisnewsql = false;
12568                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(),"after") == 0 )
12569                                    lcisnewsql = false;
12570                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(), "of") == 0 )
12571                                    lcisnewsql = false;
12572                            }
12573                        }
12574
12575                        if ((lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstbackupcatalogdelete)
12576                        ||(lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable)
12577                                )
12578                        {
12579                            lcisnewsql = false;
12580                        }
12581
12582                    }
12583                }
12584
12585                if ( lcisnewsql )
12586                    ret =  new TDeleteSqlStatement(pdbvendor);
12587
12588                break;
12589            }
12590            case sstcreatetable:
12591            {
12592                ret =  new TCreateTableSqlStatement(pdbvendor);
12593                break;
12594            }
12595            case sstcreateview:
12596            {
12597                ret =  new TCreateViewSqlStatement(pdbvendor);
12598                break;
12599            }
12600            case sstcreatesequence:
12601            {
12602                ret = new TCreateSequenceStmt(pdbvendor);
12603                break;
12604            }
12605            case sstaltertable:
12606            {
12607                lcisnewsql = true;
12608                if ( pstate != EFindSqlStateType.stnormal )
12609                {
12610                            lcisnewsql = false;
12611                }
12612                if ( lcisnewsql ) {
12613                    ret = new TAlterTableStatement(pdbvendor);
12614                }
12615                break;
12616            }
12617            case sstcreateprocedure :
12618            {
12619                ret = new TCreateProcedureStmt(pdbvendor);
12620                break;
12621            }
12622            case sstalterprocedure:
12623            {
12624                boolean isAlter = false;
12625                // hana  alter and create procedure 语法混在一起,无法区分
12626                // c:\prg\gsp_java\gsp_java_core\gsp_sqlfiles\TestCases\public\allversions\hana\create_procedure.sql
12627                if (pcst.tokencode == TBaseType.rrw_alter){
12628
12629                    TSourceToken st = pcst.nextSolidToken(3);
12630                    if (st != null){
12631                        switch (st.toString().toUpperCase()) {
12632                            case "RECOMPILE":   
12633                                isAlter = true;
12634                                break;
12635                            case "ENCRYPTION":
12636                                isAlter = true;
12637                                break;
12638                            case "ADD":
12639                                isAlter = true;
12640                                break;
12641                            default:
12642                                break;
12643                        }
12644                    }
12645
12646                    // TSourceToken st = pcst.searchToken("recompile",4);
12647                    // if (st != null){
12648                    //     isAlter = true;
12649                    // }else{
12650                    //     st = pcst.searchToken("encryption",4);
12651                    //     if (st != null){
12652                    //         isAlter = true;
12653                    //     }
12654                    // }
12655                }
12656                if (isAlter){
12657                    ret = new TAlterProcedureStmt (pdbvendor);
12658                }else{
12659                    ret  = new TCreateProcedureStmt (pdbvendor);
12660                }
12661
12662                break;
12663            }
12664            case sstcreatefunction :
12665            {
12666                ret =  new TCreateFunctionStmt(pdbvendor);
12667                break;
12668            }
12669            case sstalterfunction:
12670            {
12671                boolean isAlter = false;
12672                // hana  alter and create function 语法混在一起,无法区分
12673
12674                if (pcst.tokencode == TBaseType.rrw_alter){
12675                    TSourceToken stAdd = pcst.searchToken("add",4);
12676                    TSourceToken stAlter = pcst.searchToken("alter",4);
12677                    TSourceToken stDrop = pcst.searchToken("drop",4);
12678                    if ((stAdd != null)||(stAlter != null)||(stDrop != null)){
12679                        isAlter = true;
12680                    }else{
12681                        TSourceToken st = pcst.searchToken("encryption",4);
12682                        if (st != null){
12683                            isAlter = true;
12684                        }
12685                    }
12686                }
12687
12688                if (isAlter){
12689                    ret = new TAlterFunctionStmt (pdbvendor);
12690                }else{
12691                    ret  = new TCreateFunctionStmt (pdbvendor);
12692                }
12693
12694
12695                break;
12696            }
12697            case sstcreatetrigger :
12698            case sstaltertrigger:
12699            {
12700                ret =  new TCreateTriggerStmt(pdbvendor);
12701                break;
12702            }
12703            case sstGrant:
12704            {
12705                lcisnewsql = true;
12706
12707                if ( pstate != EFindSqlStateType.stnormal )
12708                {
12709                    lcisnewsql = false;
12710
12711                }
12712                if ( lcisnewsql )
12713                {
12714                    ret =  new TGrantStmt(pdbvendor);
12715                    //ret.sqlstatementtype = gnewsqlstatementtype;
12716                    for ( k = lcpos + 1; k< lcsourcetokenlist.size();k++ )    // iterate
12717                    {
12718                        lctoken = lcsourcetokenlist.get(k);
12719                        if (lctoken.isnonsolidtoken() ) continue;
12720                        if ( lctoken.tokencode == TBaseType.rrw_go ) break;
12721                        if ( lctoken.tokentype == ETokenType.ttsemicolon ) break;
12722                        if ( lctoken.tokencode == TBaseType.rrw_to   ) break;
12723                        lctoken.tokenstatus = ETokenStatus.tsignoredbygetrawstatement;
12724                    }
12725                }
12726                break;
12727            }
12728            case sstdropview:
12729            {
12730                ret =  new TDropViewSqlStatement(pdbvendor);
12731                break;
12732            }
12733            case sstdroptable:
12734            {
12735                ret =  new TDropTableSqlStatement(pdbvendor);
12736                break;
12737            }
12738            case sstdropindex:
12739            {
12740                ret =  new TDropIndexSqlStatement(pdbvendor);
12741                break;
12742            }
12743            case ssttruncatetable:
12744            {
12745                ret =  new TTruncateStatement(pdbvendor);
12746                break;
12747            }
12748            case sstcommit:
12749            {
12750                lcisnewsql = true;
12751                TSourceToken lcPrev = pcst.prevSolidToken();
12752                if ((lcPrev != null) && (lcPrev.tokencode == TBaseType.rrw_hana_of)){
12753                    lcisnewsql = false;
12754                }
12755                if ( pstate != EFindSqlStateType.stnormal )
12756                {
12757                    lcisnewsql = false;
12758
12759                }
12760                if (lcisnewsql){
12761                    ret =  new TCommitStmt(pdbvendor);
12762                }
12763
12764                break;
12765            }
12766            case sstrollback:
12767            {
12768                ret =  new TRollbackStmt(pdbvendor);
12769                break;
12770            }
12771            case sstRevoke:
12772            {
12773                lcisnewsql = true;
12774
12775                if ( pstate != EFindSqlStateType.stnormal )
12776                {
12777                    lcisnewsql = false;
12778
12779                }
12780                if (lcisnewsql){
12781                    ret = new TRevokeStmt(pdbvendor);
12782                }
12783                break;
12784            }
12785            case sstcreateindex:
12786            {
12787                ret =  new TCreateIndexSqlStatement(pdbvendor);
12788                break;
12789            }
12790            case sstset:
12791            {
12792                lcisnewsql = true;
12793                if ( pstate != EFindSqlStateType.stnormal )
12794                {
12795                    if ( TBaseType.assigned(lccurrentsqlstatement) )
12796                    {
12797                        lcisnewsql = false;
12798                    }
12799                }
12800
12801                if ( lcisnewsql )
12802                {
12803                    ret =  new TMssqlSet(pdbvendor);
12804                }
12805
12806                break;
12807            }
12808            case sstdropsequence:
12809                ret = new TDropSequenceStmt(pdbvendor);
12810                break;
12811            case sstalterdatabase:
12812                ret = new TAlterDatabaseStmt(pdbvendor);
12813                break;
12814            case sstcreatedatabase:
12815            {
12816                ret = new TCreateDatabaseSqlStatement(pdbvendor);
12817                break;
12818            }
12819            case sstcreateschema:
12820            {
12821                ret = new TCreateSchemaSqlStatement(pdbvendor);
12822                break;
12823            }
12824            case sstcreatesynonym:
12825            {
12826                ret = new TCreateSynonymStmt(pdbvendor);
12827                break;
12828            }
12829            case sstcreatetype:
12830                ret = new TMssqlCreateType(pdbvendor);
12831                break;
12832            case sstreplace:
12833                lcisnewsql = true;
12834                TSourceToken lcNext = pcst.nextSolidToken();
12835                if ((lcNext != null) && (lcNext.tokencode == '(')){
12836                    lcisnewsql = false;
12837                }
12838                if ( pstate != EFindSqlStateType.stnormal )
12839                {
12840                    lcisnewsql = false;
12841                }
12842                if (lcisnewsql) {
12843                     ret = new TUpsertStmt(pdbvendor);
12844                    //ret.sqlstatementtype = gnewsqlstatementtype;
12845                }
12846                break;
12847            case sstalterauditpolicy:
12848                ret = new TAlterAuditPolicyStmt(pdbvendor);
12849                break;
12850            case sstaltercredential:
12851                ret = new TAlterCredentialStmt(pdbvendor);
12852                break;
12853            case sstalterfulltextindex:
12854                ret = new TAlterFulltextIndexStmt(pdbvendor);
12855                break;
12856            case sstalterindex:
12857                ret = new TAlterIndexStmt(pdbvendor);
12858                break;
12859            case sstalterldapprovider:
12860                ret = new TAlterLDAPProviderStmt(pdbvendor);
12861                break;
12862            case sstalterjwtprovider:
12863                ret = new TAlterJWTProviderStmt(pdbvendor);
12864                break;
12865            case sstalterpse:
12866                ret = new TAlterPSEStmt(pdbvendor);
12867                break;
12868            case sstalterremotesource:
12869                ret = new TAlterRemoteSourceStmt(pdbvendor);
12870                break;
12871            case sstAlterRole:
12872                ret = new TAlterRoleStmt(pdbvendor);
12873                break;
12874            case sstaltersamlprovider:
12875                ret = new TAlterSAMLProviderStmt(pdbvendor);
12876                break;
12877            case sstaltersequence:
12878                ret = new TAlterSequenceStatement(pdbvendor);
12879                break;
12880            case sstalterstatistics:
12881                ret = new TAlterStatisticsStmt(pdbvendor);
12882                break;
12883            case sstaltersystem:
12884                ret = new TAlterSystemStmt(pdbvendor);
12885                break;
12886            case sstunload:
12887                lcisnewsql = true;
12888                if ( pstate != EFindSqlStateType.stnormal )
12889                {
12890                    lcisnewsql = false;
12891                }
12892                if ( lcisnewsql ) {
12893                    ret = new TUnloadStmt(pdbvendor);
12894                    ret.sqlstatementtype = gnewsqlstatementtype;
12895                }
12896                break;
12897            case sstunset:
12898            case sstunsetpse:
12899            case sstunsetsystemlicense:
12900                lcisnewsql = true;
12901                if ( pstate != EFindSqlStateType.stnormal )
12902                {
12903                    lcisnewsql = false;
12904                }
12905                if ( lcisnewsql ) {
12906                    ret = new TUnsetStmt(pdbvendor);
12907                    ret.sqlstatementtype = gnewsqlstatementtype;
12908                }
12909                break;
12910            case sstalteruser:
12911                ret  = new TAlterUserStmt(pdbvendor);
12912                break;
12913            case sstconnect:
12914                lcisnewsql = true;
12915                if ( pstate != EFindSqlStateType.stnormal )
12916                {
12917                    lcisnewsql = false;
12918                }
12919                if ( lcisnewsql ) {
12920                    ret = new TConnectStmt(pdbvendor);
12921                    ret.sqlstatementtype = gnewsqlstatementtype;
12922                }
12923                break;
12924            case sstalterusergroup:
12925                ret = new TAlterUserGroupStmt(pdbvendor);
12926                        break;
12927            case sstalterview:
12928            case sstalterviewcache:
12929                ret = new TAlterViewStatement(pdbvendor);
12930                break;
12931            case sstaltervirtualtable:
12932                ret = new TAlterVirtualTableStmt(pdbvendor);
12933                break;
12934            case sstalterworkloadclass:
12935                ret = new TAlterWorkloadClassStmt(pdbvendor);
12936                break;
12937            case sstalterworkloadmapping:
12938                ret = new TAlterWorkloadMappingStmt(pdbvendor);
12939                break;
12940            case sstbackupcancel:
12941                ret = new TBackupCancelStmt(pdbvendor);
12942                break;
12943            case sstbackupcatalogdelete:
12944                ret = new TBackupCatalogDeleteStmt(pdbvendor);
12945                break;
12946            case sstbackupcheck:
12947            case sstbackupcheckaccess:
12948                ret = new TBackupCheckStmt(pdbvendor);
12949                break;
12950            case sstbackupdata:
12951                ret = new TBackupDataStmt(pdbvendor);
12952                break;
12953            case sstbackuplistdata:
12954                ret = new TBackupListDataStmt(pdbvendor);
12955                break;
12956            case sstcall:
12957                ret = new TCallStatement(pdbvendor);
12958                break;
12959            case sstcomment:
12960                ret = new TCommentOnSqlStmt(pdbvendor);
12961                break;
12962            case sstcreateauditpolicy:
12963                ret =  new TCreateAuditPolicyStmt(pdbvendor);
12964                break;
12965            case sstcreatecertificate:
12966                ret =  new TCreateCertificateStmt(pdbvendor);
12967                break;
12968            case sstcreatecollection:
12969                ret =  new TCreateCollectionStmt(pdbvendor);
12970                break;
12971            case sstcreatecredential:
12972                ret =  new TCreateCredentialStmt(pdbvendor);
12973                break;
12974            case sstcreatefulltextindex:
12975                ret =  new TCreateFulltextIndexStmt(pdbvendor);
12976                break;
12977            case sstcreategraphworkspace:
12978                ret =  new TCreateGraphWorkspaceStmt(pdbvendor);
12979                break;
12980            case sstcreateJWTProvider:
12981                ret =  new TCreateJWTProviderStmt(pdbvendor);
12982                break;
12983            case sstcreateLDAPProvider:
12984                ret =  new TCreateLDAPProviderStmt(pdbvendor);
12985                break;
12986            case sstcreatepse:
12987                ret =  new TCreatePSEStmt(pdbvendor);
12988                break;
12989            case sstcreateremotesource:
12990                ret =  new TCreateRemoteSourceStmt(pdbvendor);
12991                break;
12992            case sstcreaterole:
12993                ret =  new TCreateRoleStmt(pdbvendor);
12994                break;
12995            case sstcreatesamlprovider:
12996                ret =  new TCreateSAMLProviderStmt(pdbvendor);
12997                break;
12998            case sstcreatestatistics:
12999                ret =  new TCreateStatistics(pdbvendor);
13000                break;
13001            case sstcreatestructuredprivilege:
13002                ret =  new TCreateStructuredPrivilegeStmt(pdbvendor);
13003                break;
13004            case sstcreateuser:
13005                ret =  new TCreateUserStmt(pdbvendor);
13006                break;
13007            case sstcreateusergroup:
13008                ret =  new TCreateUserGroupStmt(pdbvendor);
13009                break;
13010            case sstcreatevirtualfunction:
13011                ret =  new TCreateVirtualFunctionStmt(pdbvendor);
13012                break;
13013            case sstcreatevirtualtable:
13014                ret =  new TCreateVirtualTableStmt(pdbvendor);
13015                break;
13016            case sstcreateworkloadclass:
13017                ret =  new TCreateWorkloadClassStmt(pdbvendor);
13018                break;
13019            case sstcreateworkloadmapping:
13020                ret =  new TCreateWorkloadMappingStmt(pdbvendor);
13021                break;
13022            case sstdropauditpolicy:
13023            case sstdropcertificate:
13024            case sstdropcollection:
13025            case sstdropcredential:
13026            case sstdropfulltextindex:
13027            case sstdropJWTProvider:
13028            case sstdropLDAPProvider:
13029            case sstdroppse:
13030            case sstdropremotesource:
13031            case sstdropsamlprovider:
13032            case sstdropstatistics:
13033            case sstdropgraphworkspace:
13034            case sstdropstructuredprivilege:
13035            case sstdroptype:
13036            case sstdropusergroup:
13037            case sstdropworkloadclass:
13038            case sstdropworkloadmapping:
13039                lcisnewsql = true;
13040                if ( pstate != EFindSqlStateType.stnormal )
13041                {
13042                    lcisnewsql = false;
13043                }
13044                if ( lcisnewsql ) {
13045                    ret =  new TDropStmt(pdbvendor);
13046                }
13047
13048                break;
13049            case sstdropdatabase:
13050                ret =  new TDropDatabaseStmt(pdbvendor);
13051                break;
13052            case sstdropfunction:
13053                ret =  new TDropFunctionStmt(pdbvendor);
13054                break;
13055            case sstdropprocedure:
13056                ret =  new TDropProcedureStmt(pdbvendor);
13057                break;
13058            case sstdroprole:
13059                ret =  new TDropRoleStmt(pdbvendor);
13060                break;
13061            case sstdropschema:
13062                ret =  new TDropSchemaSqlStatement(pdbvendor);
13063                break;
13064            case sstdropsynonym:
13065                ret =  new TDropSynonymStmt(pdbvendor);
13066                break;
13067            case sstdroptrigger:
13068                ret =  new TDropTriggerSqlStatement(pdbvendor);
13069                break;
13070            case sstdropuser:
13071                ret =  new TDropUserStmt(pdbvendor);
13072                break;
13073            case sstExplain:
13074                ret =  new TExplainPlan(pdbvendor);
13075                break;
13076            case sstexport:
13077                ret =  new TExportStmt(pdbvendor);
13078                break;
13079            case sstimport:
13080//            case sstimportfrom:
13081//            case sstimportscan:
13082                ret =  new TImportStmt(pdbvendor);
13083                break;
13084            case sstload:
13085                lcisnewsql = true;
13086                if ( pstate != EFindSqlStateType.stnormal )
13087                {
13088                    lcisnewsql = false;
13089                }
13090                if ( lcisnewsql ) {
13091                    ret =  new TLoadStmt(pdbvendor);
13092                }
13093
13094                break;
13095            case sstlocktable:
13096                ret =  new TLockTableStmt(pdbvendor);
13097                break;
13098            case sstmergedelta:
13099                ret =  new TMergeDeltaStmt(pdbvendor);
13100                break;
13101            case sstmerge:
13102                ret =  new TMergeSqlStatement(pdbvendor);
13103                break;
13104            case sstrecoverdata:
13105                ret =  new TRecoverDataStmt(pdbvendor);
13106                break;
13107            case sstrecoverdatabase:
13108                ret =  new TRecoverDatabaseStmt(pdbvendor);
13109                break;
13110            case sstrefreshstatistics:
13111                ret =  new TRefreshStatisticsStmt(pdbvendor);
13112                break;
13113            case sstrenamecollection:
13114            case sstrenamecolumn:
13115            case sstrenamedatabase:
13116            case sstrenameindex:
13117            case sstrenametable:
13118                ret =  new TRenameStmt(pdbvendor);
13119                break;
13120            case sssethistorysession:
13121            case sstsetpse:
13122            case sstsetschema:
13123            case sstsetsystemlicense:
13124            case sstsettransaction:
13125            case sstsettransactionautocommit:
13126                ret =  new TSetDatabaseObjectStmt(pdbvendor);
13127                break;
13128            case ssttruncatecollection:
13129                ret =  new TTruncateCollectionStmt(pdbvendor);
13130                break;
13131            case sstvalidateLDAPProvider:
13132                ret =  new TValidateLDAPProviderStmt(pdbvendor);
13133                break;
13134            case sstvalidateUser:
13135                ret =  new TValidateUserStmt(pdbvendor);
13136                break;
13137            case sstupsert:
13138                ret =  new TUpsertStmt(pdbvendor);
13139                break;
13140            case sstsavepoint:
13141                {
13142                    lcisnewsql = true;
13143
13144                    if ( pstate != EFindSqlStateType.stnormal )
13145                    {
13146                        lcisnewsql = false;
13147    
13148                    }
13149                    if (lcisnewsql){
13150                    ret = new TSavepointStmt(pdbvendor);
13151                    ret.sqlstatementtype = gnewsqlstatementtype;
13152                    }
13153                    break;
13154                }                
13155            default:
13156            {
13157                ret =  new TUnknownSqlStatement(pdbvendor);
13158                ret.sqlstatementtype = gnewsqlstatementtype;
13159                break;
13160            }
13161        }    // case
13162
13163        return ret;
13164    }
13165
13166    TCustomSqlStatement mapTeradataUsing(TSourceToken ptoken){
13167        TCustomSqlStatement ret = null;
13168        TSourceToken lctoken = null;
13169        int lcnested = 0,k,j;
13170
13171        //using ... insert/select/delete/update/begin transaction
13172        int lcpos = ptoken.posinlist;
13173        TSourceTokenList lcsourcetokenlist = ptoken.container;
13174
13175        for (int i = lcpos + 1; i <  lcsourcetokenlist.size();i++)    // iterate
13176          {
13177            lctoken = lcsourcetokenlist.get(i);
13178              if ( (lctoken.tokencode == TBaseType.rrw_delete) )
13179                {
13180                  ret = new TDeleteSqlStatement(EDbVendor.dbvteradata);
13181                  gnewsqlstatementtype = ESqlStatementType.sstdelete;
13182                  break;
13183                }
13184              else if ( (lctoken.tokencode == TBaseType.rrw_insert) )
13185                {
13186                  ret = new TInsertSqlStatement(EDbVendor.dbvteradata);
13187                  gnewsqlstatementtype = ESqlStatementType.sstinsert;
13188                  break;
13189                }
13190              else if ( (lctoken.tokencode == TBaseType.rrw_select) )
13191                {
13192                  ret = new TSelectSqlStatement(EDbVendor.dbvteradata);
13193                  gnewsqlstatementtype = ESqlStatementType.sstselect;
13194                  break;
13195                }
13196              else if ( (lctoken.tokencode == TBaseType.rrw_update) )
13197                {
13198                  ret = new TUpdateSqlStatement(EDbVendor.dbvteradata);
13199                  gnewsqlstatementtype = ESqlStatementType.sstupdate;
13200                  break;
13201                }
13202              else if ( (lctoken.tokencode == TBaseType.rrw_begin) || (lctoken.tokencode == TBaseType.rrw_bt) )
13203                {
13204                  ret = new TTeradataBeginTransaction(EDbVendor.dbvteradata);
13205                  gnewsqlstatementtype = ESqlStatementType.sstteradatabegintransaction;
13206                  break;
13207                }
13208          }
13209        return ret;
13210    }
13211
13212/**
13213 * Analyzes a SQL token to determine if it starts a Common Table Expression (CTE) 
13214 * and returns the appropriate SQL statement object.
13215 *
13216 * This function handles CTEs that begin with "WITH" and can contain:
13217 * - SELECT statements
13218 * - INSERT statements  
13219 * - UPDATE statements
13220 * - DELETE statements
13221 * - MERGE statements
13222 * - VALUES clauses (PostgreSQL)
13223 *
13224 * Side Effects:
13225 * When a CTE is found, this function marks tokens as "ignored" to prevent them from being 
13226 * processed again during raw statement parsing:
13227 * 1. All tokens from after WITH up to and including the main statement keyword (SELECT/INSERT/etc.) 
13228 *    are marked with ETokenStatus.tsignoredbygetrawstatement
13229 * 2. For INSERT statements, additional tokens after INSERT up to VALUES/SELECT/EXECUTE/semicolon 
13230 *    are also marked as ignored
13231 * 
13232 * Example of ignored tokens:
13233 * WITH cte AS (SELECT * FROM t1)  -- these tokens marked as ignored
13234 * SELECT * FROM cte;             -- SELECT is also marked as ignored
13235 *                               -- parsing continues after SELECT
13236 *
13237 * @param ptoken The source token to analyze, expected to be a "WITH" keyword
13238 * @param pdbvendor The database vendor type (e.g. Oracle, SQL Server, etc.)
13239 * @return A TCustomSqlStatement object representing the CTE statement type found,
13240 *         or null if no valid CTE statement is detected
13241 */    
13242TCustomSqlStatement findcte(TSourceToken ptoken, EDbVendor pdbvendor){
13243    TCustomSqlStatement ret = null;
13244    TSourceToken lctoken = null;
13245    int lcnested = 0,k,j;
13246    boolean inXmlNamespaces = false;
13247    boolean isXmlNamespaces = false;
13248
13249    int lcpos = ptoken.posinlist;
13250    TSourceTokenList lcsourcetokenlist = ptoken.container;
13251
13252    for (int i = lcpos + 1; i <  lcsourcetokenlist.size();i++)    // iterate
13253      {
13254        lctoken = lcsourcetokenlist.get(i);
13255//        if (lctoken.tokencode == TBaseType.rrw_postgresql_recursive){
13256//            continue;
13257//        }
13258          if (lctoken.tokencode == TBaseType.rrw_xmlnamespaces){
13259              inXmlNamespaces = true;
13260              lcnested = 0;
13261              continue;
13262          }
13263          if (inXmlNamespaces) {
13264              if ( lctoken.tokentype == ETokenType.ttleftparenthesis)  lcnested++;
13265              if ( lctoken.tokentype == ETokenType.ttrightparenthesis) {
13266                  lcnested--;
13267                  if (lcnested == 0) {
13268                    inXmlNamespaces = false;
13269                    isXmlNamespaces = true;
13270                  }
13271              }
13272              continue;
13273          }
13274        if (( lctoken.tokencode == TBaseType.rrw_as ) || isXmlNamespaces)
13275          {
13276            lcnested = 0;
13277            int startPos = i+1;
13278            if (isXmlNamespaces) startPos = i;
13279            for ( j = startPos; j < lcsourcetokenlist.size();j++)
13280            {
13281              lctoken = lcsourcetokenlist.get(j);
13282              if (lctoken.isnonsolidtoken() ) continue;
13283              if ( lctoken.tokentype == ETokenType.ttleftparenthesis)  lcnested++;
13284              if ( lctoken.tokentype == ETokenType.ttrightparenthesis) lcnested--;
13285
13286
13287              if ( (lcnested == 0) && (lctoken.tokencode == TBaseType.rrw_delete) )
13288                {
13289                  ret = new TDeleteSqlStatement(pdbvendor);
13290                  ret.isctequery = true;
13291                  gnewsqlstatementtype = ESqlStatementType.sstdelete;
13292                  break;
13293                }
13294
13295                if ( (lcnested == 0) && (lctoken.tokencode == TBaseType.rrw_merge) )
13296                  {
13297                    ret = new TMergeSqlStatement(pdbvendor);
13298                    ret.isctequery = true;
13299                    gnewsqlstatementtype = ESqlStatementType.sstmerge;
13300                    break;
13301                  }
13302
13303              if ( (lcnested == 0) && (lctoken.tokencode == TBaseType.rrw_insert) )
13304                {
13305                  ret = new TInsertSqlStatement(pdbvendor);
13306                  ret.isctequery = true;
13307                  gnewsqlstatementtype = ESqlStatementType.sstinsert;
13308                  ret.dummytag = 1; //  select stmt in insert is permitted
13309
13310                  for ( k = lctoken.posinlist + 1; k < lcsourcetokenlist.size();k++)    // iterate
13311                  {
13312                    if ( lcsourcetokenlist.get(k).isnonsolidtoken()  ) continue;
13313                    if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_values ) break;
13314                    if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_go ) break;
13315                    if ( lcsourcetokenlist.get(k).tokentype == ETokenType.ttsemicolon ) break;
13316                    if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_select ) break;
13317                    if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_execute ) break;
13318                    if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_exec ) break;
13319                  }    // for
13320                  if ( k > lcsourcetokenlist.size() - 1 )
13321                    k = lcsourcetokenlist.size() - 1;
13322
13323                  for (int m = lctoken.posinlist + 1; m <=  k; m++)    // iterate
13324                  {
13325                    lcsourcetokenlist.get(m).tokenstatus = ETokenStatus.tsignoredbygetrawstatement;
13326                  }    // for
13327
13328                  break;
13329                }
13330
13331                if ( (lcnested == 0) && (lctoken.tokencode == TBaseType.rrw_values) &&(pdbvendor == EDbVendor.dbvpostgresql) )
13332                {
13333                        ret = new TSelectSqlStatement(pdbvendor);
13334                        ret.isctequery = true;
13335                        gnewsqlstatementtype = ESqlStatementType.sstselect;
13336                        break;
13337                }
13338
13339              if ( (lcnested == 0) && (lctoken.tokencode == TBaseType.rrw_select) )
13340                {
13341                  ret = new TSelectSqlStatement(pdbvendor);
13342                  ret.isctequery = true;
13343                  gnewsqlstatementtype = ESqlStatementType.sstselect;
13344                  break;
13345                }
13346
13347              if ( (lcnested == 0) && (lctoken.tokencode == TBaseType.rrw_update) )
13348                {
13349                  ret = new TUpdateSqlStatement(pdbvendor);
13350                  ret.isctequery = true;
13351                  ret.dummytag = 1; // means set clause in update is not found yet, used to seperate set clause from set statement
13352                  gnewsqlstatementtype = ESqlStatementType.sstupdate;
13353                  break;
13354                }
13355
13356                if ( (pdbvendor == EDbVendor.dbvhive) && (lcnested == 0) && (lctoken.tokencode == TBaseType.rrw_from) )
13357                {
13358                    TSourceToken cmdToken = lctoken.searchToken(TBaseType.rrw_insert,3);
13359                    if (cmdToken != null){
13360                        ret = new TInsertSqlStatement(pdbvendor);
13361                        ret.isctequery = true;
13362                        gnewsqlstatementtype = ESqlStatementType.sstinsert;
13363
13364                    }else{
13365                        ret = new TSelectSqlStatement(pdbvendor);
13366                        ret.isctequery = true;
13367                        gnewsqlstatementtype = ESqlStatementType.ssthiveFromQuery;
13368                    }
13369                    break;
13370                }
13371
13372
13373            }    // for
13374
13375            if ( (ret != null) )
13376              {
13377                for (k = lcpos + 1; k <= j;k++)    // iterate
13378                {
13379                  lcsourcetokenlist.get(k).tokenstatus = ETokenStatus.tsignoredbygetrawstatement;
13380                }    // for
13381                break;
13382              }
13383
13384          }
13385      }
13386
13387    return ret;
13388}
13389
13390  TCustomSqlStatement findMdxStmtBeginWithClause(TSourceToken ptoken, EDbVendor pdbvendor){
13391      TCustomSqlStatement ret = null;
13392      ret = new TMdxSelect(pdbvendor);
13393      ret.isctequery = true;
13394      gnewsqlstatementtype = ESqlStatementType.sstmdxselect;
13395      return ret;
13396 }
13397
13398 TCustomSqlStatement isdb2sql(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
13399    TCustomSqlStatement ret = null;
13400    int k;
13401    boolean lcisnewsql;
13402    TSourceToken lcpprevsolidtoken,lcnextsolidtoken;
13403
13404    gnewsqlstatementtype = ESqlStatementType.sstinvalid;
13405
13406    if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
13407       || (pcst.tokencode  == TBaseType.cmtslashstar)
13408       || (pcst.tokencode  == TBaseType.lexspace)
13409       || (pcst.tokencode  == TBaseType.lexnewline)
13410        || (pcst.tokentype == ETokenType.ttsemicolon) )
13411    {
13412      return ret;
13413    }
13414
13415    int lcpos = pcst.posinlist;
13416    TSourceTokenList lcsourcetokenlist = pcst.container;
13417    TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
13418
13419    //subquery after semicolon || at first line
13420    if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
13421      {
13422        k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
13423        if ( k >0 )
13424          {
13425            ret =  new TSelectSqlStatement(pdbvendor);
13426          }
13427
13428        return ret;
13429      }
13430
13431    //cte
13432    if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
13433      {
13434        ret = findcte(pcst,pdbvendor);
13435        if ( TBaseType.assigned(ret) )  return ret;
13436      }
13437
13438    //values
13439    if ( (pstate == EFindSqlStateType.stnormal) &&  (pcst.tokencode == TBaseType.rrw_values) )
13440      {
13441        ret =  new TSelectSqlStatement(pdbvendor);
13442        return ret;
13443      }
13444
13445    // db2 scriptoptions
13446    if ( pcst.tokencode == TBaseType.scriptoptions )
13447      {
13448        ret = new TDb2ScriptOptionStmt(pdbvendor);
13449        return ret;
13450      }
13451
13452    gnewsqlstatementtype = finddb2cmd(pcst);
13453
13454    TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
13455    switch(gnewsqlstatementtype) {   //
13456        case sstinvalid:
13457          {
13458            ret = null;
13459           if ( pcst.tokencode == TBaseType.rrw_begin )
13460          {
13461              ret = new TCommonBlock(pdbvendor);
13462              gnewsqlstatementtype = ret.sqlstatementtype;
13463          }
13464              break;
13465          }
13466        case sstselect:
13467          {
13468            lcisnewsql = true;
13469
13470            if ( pstate != EFindSqlStateType.stnormal )
13471              {
13472                // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
13473                if ( TBaseType.assigned(lcprevsolidtoken) )
13474                  {
13475                    if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
13476                      lcisnewsql = false; //subqery
13477                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
13478                      lcisnewsql = false;
13479                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
13480                      lcisnewsql = false;
13481                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
13482                      lcisnewsql = false;
13483                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
13484                      lcisnewsql = false;
13485                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
13486                      lcisnewsql = false;
13487                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
13488                      {
13489                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
13490                          lcisnewsql = false;
13491                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
13492                          lcisnewsql = false;
13493                      }
13494
13495                    if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
13496                      {
13497                        lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
13498                        if ( TBaseType.assigned(lcpprevsolidtoken) )
13499                          {
13500                            if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
13501                              lcisnewsql = false;
13502                          }
13503                      }
13504
13505                  }
13506
13507
13508                if ( TBaseType.assigned(lccurrentsqlstatement) )
13509                  {
13510                    if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
13511                    {
13512                      lcisnewsql = false;
13513                    }
13514                    else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstselect )
13515                      {
13516                        if ( lccurrentsqlstatement.isctequery )
13517                          lcisnewsql = false;
13518                      }
13519                  }
13520
13521              }
13522
13523            if ( lcisnewsql )
13524              ret =  new TSelectSqlStatement(pdbvendor);
13525              break;
13526          }
13527        case sstinsert:
13528          {
13529            lcisnewsql = true;
13530            if ( pstate != EFindSqlStateType.stnormal )
13531              {
13532                if ( TBaseType.assigned(lccurrentsqlstatement) )
13533                  {
13534
13535                  }
13536              }
13537
13538            if ( lcisnewsql )
13539              ret =  new TInsertSqlStatement(pdbvendor);
13540              break;
13541          }
13542        case sstupdate:
13543          {
13544            lcisnewsql = true;
13545            if ( pstate != EFindSqlStateType.stnormal )
13546              {
13547                lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
13548                if ( TBaseType.assigned(lcprevsolidtoken) )
13549                  { //
13550                    if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
13551                      lcisnewsql = false;
13552                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
13553                      lcisnewsql = false;
13554                  }
13555
13556                lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
13557                if ( TBaseType.assigned(lcnextsolidtoken) )
13558                  {
13559                    if ( lcnextsolidtoken.tokentype == ETokenType.ttleftparenthesis)
13560                      {
13561                        k = lcsourcetokenlist.solidtokenafterpos(lcnextsolidtoken.posinlist,TBaseType.rrw_select,1,"(");
13562                        if ( k  == 0 ) lcisnewsql = false;
13563                      }
13564                  }
13565
13566
13567                if ( TBaseType.assigned(lccurrentsqlstatement) )
13568                  {
13569                  }
13570              }
13571
13572            if ( lcisnewsql )
13573              {
13574                ret =  new TUpdateSqlStatement(pdbvendor);
13575                ret.dummytag = 1; // means set clause in update is not found yet, used to seperate set clause from set statement
13576              }
13577              break;
13578          }
13579        case sstdelete:
13580          {
13581            lcisnewsql = true;
13582
13583            if ( pstate != EFindSqlStateType.stnormal )
13584              {
13585                lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
13586                if ( TBaseType.assigned(lcprevsolidtoken) )
13587                  {
13588                    if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
13589                      lcisnewsql = false;
13590                  }
13591
13592                if ( TBaseType.assigned(lccurrentsqlstatement) )
13593                  {
13594                  }
13595              }
13596
13597            if ( lcisnewsql )
13598              ret =  new TDeleteSqlStatement(pdbvendor);
13599              break;
13600          }
13601        case sstmerge:
13602          {
13603            ret =  new TMergeSqlStatement(pdbvendor);
13604            ret.sqlstatementtype = gnewsqlstatementtype;
13605              break;
13606          }
13607        case sstcommit:
13608          {
13609            ret =  new TUnknownSqlStatement(pdbvendor);
13610            ret.sqlstatementtype = gnewsqlstatementtype;
13611              break;
13612          }
13613        case sstrollback:
13614          {
13615            ret =  new TUnknownSqlStatement(pdbvendor);
13616            ret.sqlstatementtype = gnewsqlstatementtype;
13617              break;
13618          }
13619        case sstsavepoint:
13620          {
13621            ret =  new TUnknownSqlStatement(pdbvendor);
13622            ret.sqlstatementtype = gnewsqlstatementtype;
13623              break;
13624          }
13625        case sstRevoke:
13626          {
13627            ret =  new TUnknownSqlStatement(pdbvendor);
13628            ret.sqlstatementtype = gnewsqlstatementtype;
13629              break;
13630          }
13631        case sstcreatetable:
13632          {
13633            ret =  new TCreateTableSqlStatement(pdbvendor);
13634              break;
13635          }
13636        case sstcreateview:
13637          {
13638            ret =  new TCreateViewSqlStatement(pdbvendor);
13639              break;
13640          }
13641        case sstcreateindex:
13642          {
13643            ret =  new TCreateIndexSqlStatement(pdbvendor);
13644              break;
13645          }
13646        case sstcreatedatabase:
13647          {
13648            ret =  new TCreateDatabaseSqlStatement(pdbvendor);
13649              break;
13650          }
13651        case sstdroptable:
13652          {
13653            ret =  new TDropTableSqlStatement(pdbvendor);
13654              break;
13655          }
13656        case sstdropview:
13657          {
13658            ret =  new TDropViewSqlStatement(pdbvendor);
13659              break;
13660          }
13661        case sstdropindex:
13662          {
13663            ret =  new TDropIndexSqlStatement(pdbvendor);
13664              break;
13665          }
13666        case sstaltertable:
13667          {
13668            ret =  new TAlterTableStatement(pdbvendor);
13669              break;
13670          }
13671        case sstaltersession:
13672          {
13673            ret =  new TAlterSessionStatement(pdbvendor);
13674              break;
13675          }
13676        case sstdb2set:
13677          {
13678            ret = new TDb2SetVariableStmt(pdbvendor);
13679              break;
13680          }
13681        case sstdb2setschema:
13682        {
13683            ret = new TSetDatabaseObjectStmt(pdbvendor);
13684            break;
13685        }
13686        case sstdb2call:
13687          {
13688            ret = new TDb2CallStmt(pdbvendor);
13689              break;
13690          }
13691        case sstdb2declarecursor:
13692          {
13693            ret = new TDb2DeclareCursorStatement(pdbvendor);
13694              break;
13695          }
13696        case sstcreateprocedure:
13697          {
13698            ret = new TCreateProcedureStmt(pdbvendor);
13699              break;
13700          }
13701        case sstcreatefunction:
13702          {
13703            ret = new TCreateFunctionStmt(pdbvendor);
13704              break;
13705          }
13706        case sstdb2createtrigger:
13707          {
13708            ret = new TCreateTriggerStmt(pdbvendor);
13709              break;
13710          }
13711        case sstdb2return:
13712          {
13713            ret = new TDb2ReturnStmt(pdbvendor);
13714              break;
13715          }
13716      case sstdb2refreshtable:
13717      case sstdb2connect:
13718      case sstdb2terminate:
13719      case sstdb2execute:
13720          {
13721            ret = new TDb2DummyStmt(pdbvendor);
13722              break;
13723          }
13724        case sstdb2createalias:
13725        {
13726            ret = new TCreateAliasStmt(pdbvendor);
13727            break;
13728        }
13729        case sstcreateauditpolicy:
13730            ret =  new TCreateAuditPolicyStmt(pdbvendor);
13731            break;
13732        case sstdb2comment:
13733            ret =  new TCommentOnSqlStmt(pdbvendor);
13734            break;
13735        case sstdb2createvariable:
13736            ret =  new TCreateVariableStmt(pdbvendor);
13737            break;
13738        case sstcreaterole:
13739            ret =  new TCreateRoleStmt(pdbvendor);
13740            break;
13741        case sstcreateTablespace:
13742            ret =  new TCreateTablespaceStmt(pdbvendor);
13743            break;
13744        case sstRunStats:
13745            ret =  new TRunStats(pdbvendor);
13746            break;
13747        case ssttruncatetable:
13748        {
13749            ret =  new TTruncateStatement(pdbvendor);
13750            break;
13751        }
13752        case sstcreatesynonym:
13753            ret = new TCreateSynonymStmt(pdbvendor);
13754            break;        
13755        default:
13756          {
13757            // ret = tdb2dummystmt.create(pdbvendor);
13758            ret =  new TUnknownSqlStatement(pdbvendor);
13759            ret.sqlstatementtype = gnewsqlstatementtype;
13760              break;
13761          }
13762    }    // case
13763
13764    return ret;
13765}
13766
13767    public TCustomSqlStatement issql(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
13768        TCustomSqlStatement ret = null;
13769        if (pcst == null) return null;
13770
13771        switch (pdbvendor){
13772            case dbvoracle: {
13773                ret = isoraclesql(pcst,pdbvendor,pstate,psqlstatement);
13774                break;
13775            }
13776            case dbvmssql: {
13777                ret = ismssqlsql(pcst, pdbvendor, pstate, psqlstatement);
13778                break;
13779            }
13780            case dbvdb2: {
13781                ret = isdb2sql(pcst, pdbvendor, pstate, psqlstatement);
13782                break;
13783            }
13784            case dbvmysql: {
13785                ret = ismysqlsql(pcst, pdbvendor, pstate, psqlstatement);
13786                break;
13787            }
13788            case dbvaccess: {
13789                ret = ismssqlsql(pcst, pdbvendor, pstate, psqlstatement);
13790                break;
13791            }
13792            case dbvteradata: {
13793                ret = isteradatasql(pcst, pdbvendor, pstate, psqlstatement);
13794                break;
13795            }
13796            case dbvpostgresql: {
13797                ret = ispostgresql(pcst, pdbvendor, pstate, psqlstatement);
13798                break;
13799            }
13800            case dbvredshift: {
13801                ret = isredshift(pcst, pdbvendor, pstate, psqlstatement);
13802                break;
13803            }
13804            case dbvgreenplum: {
13805                ret = isgreenplum(pcst,pdbvendor,pstate,psqlstatement);
13806                break;
13807            }
13808            case dbvmdx:{
13809                ret = ismdxsql(pcst, pdbvendor, pstate, psqlstatement);
13810                break;
13811            }
13812            case dbvnetezza:{
13813                ret = isnetezza(pcst, pdbvendor, pstate, psqlstatement);
13814                break;
13815            }
13816            case dbvsybase:{
13817                ret = issybasesql(pcst, pdbvendor, pstate, psqlstatement);
13818                break;
13819            }
13820            case dbvinformix:{
13821                ret = isinformixsql(pcst, pdbvendor, pstate, psqlstatement);
13822                break;
13823            }
13824            case dbvhive:{
13825                ret = ishive(pcst, pdbvendor, pstate, psqlstatement);
13826                break;
13827            }
13828            case dbvimpala:{
13829                ret = ishive(pcst, pdbvendor, pstate, psqlstatement);
13830                break;
13831            }
13832            case dbvhana:{
13833                ret = ishana(pcst, pdbvendor, pstate, psqlstatement);
13834                break;
13835            }
13836            case dbvvertica:{
13837                ret = isvertica(pcst, pdbvendor, pstate, psqlstatement);
13838                break;
13839            }
13840            case dbvcouchbase:{
13841                ret = iscouchbase(pcst, pdbvendor, pstate, psqlstatement);
13842                break;
13843            }
13844            case dbvsnowflake:{
13845                ret = issnowflake(pcst, pdbvendor, pstate, psqlstatement);
13846                break;
13847            }
13848            case dbvbigquery:{
13849                ret = isbigquery(pcst, pdbvendor, pstate, psqlstatement);
13850                break;
13851            }
13852            case dbvsoql:{
13853                ret = ismssqlsql(pcst,pdbvendor,pstate,psqlstatement);
13854                break;
13855            }
13856            case dbvsparksql:{
13857                ret = issparksql(pcst,pdbvendor,pstate,psqlstatement);
13858                break;
13859            }
13860            case dbvpresto:{
13861                ret = ispresto(pcst,pdbvendor,pstate,psqlstatement);
13862                break;
13863            }
13864            case dbvathena:{
13865                ret = isathena(pcst,pdbvendor,pstate,psqlstatement);
13866                break;
13867            }
13868            case dbvdatabricks:{
13869                ret = isdatabricks(pcst,pdbvendor,pstate,psqlstatement);
13870                break;
13871            }
13872            case dbvgaussdb:{
13873                ret = isgaussdb(pcst,pdbvendor,pstate,psqlstatement);
13874                break;
13875            }
13876            default:
13877            {
13878                ret = ismssqlsql(pcst,pdbvendor,pstate,psqlstatement);
13879            }
13880        }    // case
13881        return ret;
13882    }
13883    TCustomSqlStatement isdatabricks(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
13884
13885        TCustomSqlStatement ret = null;
13886        int k;
13887        boolean lcisnewsql;
13888        TSourceToken lcpprevsolidtoken,lcnextsolidtoken;
13889
13890        gnewsqlstatementtype = ESqlStatementType.sstinvalid;
13891
13892        if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
13893                || (pcst.tokencode  == TBaseType.cmtslashstar)
13894                || (pcst.tokencode  == TBaseType.lexspace)
13895                || (pcst.tokencode  == TBaseType.lexnewline)
13896                || (pcst.tokentype == ETokenType.ttsemicolon) )
13897        {
13898            return ret;
13899        }
13900
13901        int lcpos = pcst.posinlist;
13902        TSourceTokenList lcsourcetokenlist = pcst.container;
13903        TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
13904
13905        //subquery after semicolon || at first line
13906        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
13907        {
13908            k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
13909            if ( k >0 )
13910            {
13911                ret =  new TSelectSqlStatement(pdbvendor);
13912            }
13913
13914            return ret;
13915        }
13916
13917        //cte
13918        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
13919        {
13920            ret = findcte(pcst,pdbvendor);
13921            if ( (ret != null) )  return ret;
13922        }
13923
13924
13925        gnewsqlstatementtype = finddatabrickscmd(pcst);
13926
13927        TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
13928
13929        if ((gnewsqlstatementtype == ESqlStatementType.sstinvalid)&&(pcst.tokencode == TBaseType.rrw_create)){
13930            //if (pcst.container.nextsolidtoken(pcst.posinlist,15,))
13931            TSourceToken viewToken = pcst.container.searchToken(TBaseType.rrw_view,"",pcst,15);
13932            if (viewToken != null){
13933                gnewsqlstatementtype = ESqlStatementType.sstcreateview;
13934            }
13935        }
13936        switch (gnewsqlstatementtype){
13937            case sstinvalid:
13938            {
13939                ret = null;
13940                break;
13941            }
13942            case sstselect:
13943            {
13944                lcisnewsql = true;
13945
13946                if ( pstate != EFindSqlStateType.stnormal )
13947                {
13948                    // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
13949                    if ( TBaseType.assigned(lcprevsolidtoken) )
13950                    {
13951                        if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
13952                            lcisnewsql = false; //subqery
13953                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
13954                            lcisnewsql = false;
13955                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
13956                            lcisnewsql = false;
13957                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
13958                            lcisnewsql = false;
13959                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
13960                            lcisnewsql = false;
13961                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
13962                            lcisnewsql = false;
13963                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
13964                        {
13965                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
13966                                lcisnewsql = false;
13967                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
13968                                lcisnewsql = false;
13969                        }
13970
13971                        if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
13972                        {
13973                            lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
13974                            if ( TBaseType.assigned(lcpprevsolidtoken) )
13975                            {
13976                                if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
13977                                    lcisnewsql = false;
13978                            }
13979                        }
13980
13981                    }
13982
13983
13984                    if ( TBaseType.assigned(lccurrentsqlstatement) )
13985                    {
13986                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
13987                            lcisnewsql = false;
13988                    }
13989
13990                }
13991
13992                if ( lcisnewsql )
13993                    ret =  new TSelectSqlStatement(pdbvendor);
13994                break;
13995            }
13996            case sstinsert:
13997            {
13998                lcisnewsql = true;
13999                if ( pstate != EFindSqlStateType.stnormal )
14000                {
14001                    if ( TBaseType.assigned(lccurrentsqlstatement) )
14002                    {
14003
14004                    }
14005                }
14006
14007                if ( lcisnewsql )
14008                    ret =  new TInsertSqlStatement(pdbvendor);
14009                ret.sqlstatementtype = gnewsqlstatementtype;
14010                break;
14011            }
14012            case sstdelete:
14013            {
14014                lcisnewsql = true;
14015
14016                if ( pstate != EFindSqlStateType.stnormal )
14017                {
14018                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
14019                    if ( TBaseType.assigned(lcprevsolidtoken) )
14020                    {
14021                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
14022                            lcisnewsql = false;
14023                    }
14024
14025                    if ( TBaseType.assigned(lccurrentsqlstatement) )
14026                    {
14027                    }
14028                }
14029
14030                if ( lcisnewsql )
14031                    ret =  new TDeleteSqlStatement(pdbvendor);
14032                break;
14033            }
14034            case sstaltertable:
14035            {
14036                ret =  new TAlterTableStatement(pdbvendor);
14037                break;
14038            }
14039            case sstalterfunction:
14040            {
14041                ret =  new TAlterFunctionStmt(pdbvendor);
14042                break;
14043            }
14044            case sstAlterSchema:
14045            {
14046                ret =  new TAlterSchemaStmt(pdbvendor);
14047                break;
14048            }
14049            case sstanalyzeTable:
14050            {
14051                ret = new TAnalyzeStmt(pdbvendor);
14052                break;
14053            }
14054            case sstcall:
14055            {
14056                ret =  new TCallStatement(pdbvendor);
14057                break;
14058            }
14059            case sstcommit:
14060            {
14061                ret =  new TCommitStmt(pdbvendor);
14062                break;
14063            }
14064            case sstcreatefunction:
14065            {
14066                ret =  new TCreateFunctionStmt(pdbvendor);
14067                break;
14068            }
14069            case sstcreaterole:
14070            {
14071                ret =  new TCreateRoleStmt(pdbvendor);
14072                break;
14073            }
14074            case sstcreateschema:
14075            {
14076                ret =  new TCreateSchemaSqlStatement(pdbvendor);
14077                break;
14078            }
14079            case sstcreatetable:
14080            {
14081                ret =  new TCreateTableSqlStatement(pdbvendor);
14082                break;
14083            }
14084            case sstcreateview:
14085            {
14086                ret =  new TCreateViewSqlStatement(pdbvendor);
14087                break;
14088            }
14089            case sstpostgresqlDeallocate:
14090            {
14091                ret =  new TUnknownSqlStatement(pdbvendor);
14092                ret.sqlstatementtype = gnewsqlstatementtype;
14093                break;
14094            }
14095            case sstdropfunction:
14096            {
14097                ret =  new TDropFunctionStmt(pdbvendor);
14098                break;
14099            }
14100            case sstdroprole:
14101            {
14102                ret =  new TDropRoleStmt(pdbvendor);
14103                break;
14104            }
14105            case sstdropschema:
14106            {
14107                ret =  new TDropSchemaSqlStatement(pdbvendor);
14108                break;
14109            }
14110            case sstdroptable:
14111            {
14112                ret =  new TDropTableSqlStatement(pdbvendor);
14113                break;
14114            }
14115            case sstdropview:
14116            {
14117                ret =  new TDropViewSqlStatement(pdbvendor);
14118                break;
14119            }
14120            case sstExecute:
14121            {
14122                ret =  new TExecuteSqlStatement(pdbvendor);
14123                break;
14124            }
14125            case sstExplain:
14126            {
14127                ret =  new TExplainPlan(pdbvendor);
14128                break;
14129            }
14130            case sstGrant:
14131            {
14132                ret =  new TGrantStmt(pdbvendor);
14133                break;
14134            }
14135            case sstprepare:
14136            {
14137                ret =  new TPrepareStmt(pdbvendor);
14138                break;
14139            }
14140            case sstset:
14141            case sstReset:
14142            {
14143                lcisnewsql = true;
14144                if ( pstate != EFindSqlStateType.stnormal )
14145                {
14146                    if ( TBaseType.assigned(lccurrentsqlstatement) )
14147                    {
14148                        lcisnewsql = false;
14149                    }
14150                }
14151
14152                if ( lcisnewsql )
14153                {
14154                    ret =  new TSetStmt(pdbvendor);
14155                }
14156                break;
14157            }
14158            case sstShow:
14159            {
14160                ret = new TShowStmt(pdbvendor);
14161                ret.sqlstatementtype = gnewsqlstatementtype;
14162                break;
14163            }
14164            case sstStartTransaction:
14165            {
14166                ret = new TStartTransactionStmt(pdbvendor);
14167                break;
14168            }
14169            case sstValues:
14170            {
14171                ret =  new TSelectSqlStatement(pdbvendor);
14172                break;
14173            }
14174            case sstResetSession:
14175            {
14176                ret =  new TResetSessionStmt(pdbvendor);
14177                break;
14178            }
14179            case sstCreateExternallocation:
14180                ret = new TCreateExternalLocationStmt(pdbvendor);
14181                break;
14182            case sstList:
14183            {
14184                ret = new TListStmt(pdbvendor);
14185                break;
14186            }
14187            case sstRevoke:
14188                ret = new TRevokeStmt(pdbvendor);
14189                break;
14190            case sstaltercredental:
14191                ret = new TAlterCredentialStmt(pdbvendor);
14192                break;
14193            case sstdescribeCatalog:
14194            case  sstdescribeFunction:
14195            case   sstdescribeProvider:
14196            case   sstdescribeQuery:
14197            case   sstdescribeRecipient:
14198            case   sstdescribeSchema:
14199            case    sstdescribeShare:
14200            case    sstdescribeTable:
14201            case    sstdescribeDatabase:
14202            case    sstdescribeLocation:
14203            case    sstdescribeCredential:
14204            case    sstdescribe:
14205                ret = new TDescribeStmt(pdbvendor);
14206                break;
14207            case sstUseCatalog:
14208            case sstUseSchema:
14209            case sstUseDatabase:
14210            case sstUse:
14211                ret = new TUseDatabase(pdbvendor);
14212                break;
14213            case sstAnalyzeTable:
14214                ret = new TAnalyzeStmt(pdbvendor);
14215                break;
14216            case sstCreategroup:
14217                ret = new TCreateGroup(pdbvendor);
14218                break;
14219            case sstAlterGroup:
14220                ret = new TAlterGroup(pdbvendor);
14221                break;
14222            case sstDeny:
14223                ret = new TDenyStmt(pdbvendor);
14224                break;
14225            case sstDropGroup:
14226                ret = new TDropGroup(pdbvendor);
14227                break;
14228            case sstmsckrepairtable:
14229                 ret = new TMSCKStmt(pdbvendor);
14230                break;
14231            case sstcreatecatalog:
14232                ret = new TCreateCatalogStmt(pdbvendor);
14233                break;
14234            case sstConvertToDelta:
14235                ret = new TConvertToDeltaStmt(pdbvendor);
14236                break;
14237            case sstOptimize:
14238                ret = new TOptimizeStmt(pdbvendor);
14239                break;
14240            case sstRestoreTable:
14241                ret = new TRestoreTableStmt(pdbvendor);
14242                break;
14243            case sstReorgTable:
14244                ret = new TReorgTableStmt(pdbvendor);
14245                    break;
14246            case sstVacuum:
14247                ret = new TVacuumStmt(pdbvendor);
14248                break;
14249            case sstmerge:
14250                ret = new TMergeSqlStatement(pdbvendor);
14251                break;
14252            default:
14253            {
14254                ret =  new TUnknownSqlStatement(pdbvendor);
14255                ret.sqlstatementtype = gnewsqlstatementtype;
14256                break;
14257            }
14258        }    // case
14259
14260        return ret;
14261
14262    }
14263    TCustomSqlStatement ispresto(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
14264
14265        TCustomSqlStatement ret = null;
14266        int k;
14267        boolean lcisnewsql;
14268        TSourceToken lcpprevsolidtoken,lcnextsolidtoken;
14269
14270        gnewsqlstatementtype = ESqlStatementType.sstinvalid;
14271
14272        if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
14273                || (pcst.tokencode  == TBaseType.cmtslashstar)
14274                || (pcst.tokencode  == TBaseType.lexspace)
14275                || (pcst.tokencode  == TBaseType.lexnewline)
14276                || (pcst.tokentype == ETokenType.ttsemicolon) )
14277        {
14278            return ret;
14279        }
14280
14281        int lcpos = pcst.posinlist;
14282        TSourceTokenList lcsourcetokenlist = pcst.container;
14283        TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
14284
14285        //subquery after semicolon || at first line
14286        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
14287        {
14288            k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
14289            if ( k >0 )
14290            {
14291                ret =  new TSelectSqlStatement(pdbvendor);
14292            }
14293
14294            return ret;
14295        }
14296
14297        //cte
14298        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
14299        {
14300            ret = findcte(pcst,pdbvendor);
14301            if ( (ret != null) )  return ret;
14302        }
14303
14304
14305        gnewsqlstatementtype = findprestocmd(pcst);
14306
14307        TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
14308
14309        if ((gnewsqlstatementtype == ESqlStatementType.sstinvalid)&&(pcst.tokencode == TBaseType.rrw_create)){
14310            //if (pcst.container.nextsolidtoken(pcst.posinlist,15,))
14311            TSourceToken viewToken = pcst.container.searchToken(TBaseType.rrw_view,"",pcst,15);
14312            if (viewToken != null){
14313                gnewsqlstatementtype = ESqlStatementType.sstcreateview;
14314            }
14315        }
14316        switch (gnewsqlstatementtype){
14317            case sstinvalid:
14318            {
14319                ret = null;
14320                break;
14321            }
14322            case sstselect:
14323            {
14324                lcisnewsql = true;
14325
14326                if ( pstate != EFindSqlStateType.stnormal )
14327                {
14328                    // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
14329                    if ( TBaseType.assigned(lcprevsolidtoken) )
14330                    {
14331                        if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
14332                            lcisnewsql = false; //subqery
14333                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
14334                            lcisnewsql = false;
14335                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
14336                            lcisnewsql = false;
14337                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
14338                            lcisnewsql = false;
14339                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
14340                            lcisnewsql = false;
14341                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
14342                            lcisnewsql = false;
14343                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
14344                        {
14345                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
14346                                lcisnewsql = false;
14347                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
14348                                lcisnewsql = false;
14349                        }
14350
14351                        if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
14352                        {
14353                            lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
14354                            if ( TBaseType.assigned(lcpprevsolidtoken) )
14355                            {
14356                                if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
14357                                    lcisnewsql = false;
14358                            }
14359                        }
14360
14361                    }
14362
14363
14364                    if ( TBaseType.assigned(lccurrentsqlstatement) )
14365                    {
14366                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
14367                            lcisnewsql = false;
14368                    }
14369
14370                }
14371
14372                if ( lcisnewsql )
14373                    ret =  new TSelectSqlStatement(pdbvendor);
14374                break;
14375            }
14376            case sstinsert:
14377            {
14378                lcisnewsql = true;
14379                if ( pstate != EFindSqlStateType.stnormal )
14380                {
14381                    if ( TBaseType.assigned(lccurrentsqlstatement) )
14382                    {
14383
14384                    }
14385                }
14386
14387                if ( lcisnewsql )
14388                    ret =  new TInsertSqlStatement(pdbvendor);
14389                ret.sqlstatementtype = gnewsqlstatementtype;
14390                break;
14391            }
14392            case sstdelete:
14393            {
14394                lcisnewsql = true;
14395
14396                if ( pstate != EFindSqlStateType.stnormal )
14397                {
14398                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
14399                    if ( TBaseType.assigned(lcprevsolidtoken) )
14400                    {
14401                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
14402                            lcisnewsql = false;
14403                    }
14404
14405                    if ( TBaseType.assigned(lccurrentsqlstatement) )
14406                    {
14407                    }
14408                }
14409
14410                if ( lcisnewsql )
14411                    ret =  new TDeleteSqlStatement(pdbvendor);
14412                break;
14413            }
14414            case sstaltertable:
14415            {
14416                ret =  new TAlterTableStatement(pdbvendor);
14417                break;
14418            }
14419            case sstalterfunction:
14420            {
14421                ret =  new TAlterFunctionStmt(pdbvendor);
14422                break;
14423            }
14424            case sstAlterSchema:
14425            {
14426                ret =  new TAlterSchemaStmt(pdbvendor);
14427                break;
14428            }
14429            case sstanalyzeTable:
14430            {
14431                ret = new TAnalyzeStmt(pdbvendor);
14432                break;
14433            }
14434            case sstcall:
14435            {
14436                ret =  new TCallStatement(pdbvendor);
14437                break;
14438            }
14439            case sstcommit:
14440            {
14441                ret =  new TCommitStmt(pdbvendor);
14442                break;
14443            }
14444            case sstcreatefunction:
14445            {
14446                ret =  new TCreateFunctionStmt(pdbvendor);
14447                break;
14448            }
14449            case sstcreaterole:
14450            {
14451                ret =  new TCreateRoleStmt(pdbvendor);
14452                break;
14453            }
14454            case sstcreateschema:
14455            {
14456                ret =  new TCreateSchemaSqlStatement(pdbvendor);
14457                break;
14458            }
14459            case sstcreatetable:
14460            {
14461                ret =  new TCreateTableSqlStatement(pdbvendor);
14462                break;
14463            }
14464            case sstcreateview:
14465            {
14466                ret =  new TCreateViewSqlStatement(pdbvendor);
14467                break;
14468            }
14469            case sstpostgresqlDeallocate:
14470            {
14471                ret =  new TUnknownSqlStatement(pdbvendor);
14472                ret.sqlstatementtype = gnewsqlstatementtype;
14473                break;
14474            }
14475            case sstdescribe:
14476            {
14477                ret =  new TDescribeStmt(pdbvendor);
14478                break;
14479            }
14480            case sstdropfunction:
14481            {
14482                ret =  new TDropFunctionStmt(pdbvendor);
14483                break;
14484            }
14485            case sstdroprole:
14486            {
14487                ret =  new TDropRoleStmt(pdbvendor);
14488                break;
14489            }
14490            case sstdropschema:
14491            {
14492                ret =  new TDropSchemaSqlStatement(pdbvendor);
14493                break;
14494            }
14495            case sstdroptable:
14496            {
14497                ret =  new TDropTableSqlStatement(pdbvendor);
14498                break;
14499            }
14500            case sstdropview:
14501            {
14502                ret =  new TDropViewSqlStatement(pdbvendor);
14503                break;
14504            }
14505            case sstExecute:
14506            {
14507                ret =  new TExecuteSqlStatement(pdbvendor);
14508                break;
14509            }
14510            case sstExplain:
14511            {
14512                ret =  new TExplainPlan(pdbvendor);
14513                break;
14514            }
14515            case sstGrant:
14516            {
14517                ret =  new TGrantStmt(pdbvendor);
14518                break;
14519            }
14520            case sstprepare:
14521            {
14522                ret =  new TPrepareStmt(pdbvendor);
14523                break;
14524            }
14525            case sstset:
14526            case sstReset:
14527            {
14528                lcisnewsql = true;
14529                if ( pstate != EFindSqlStateType.stnormal )
14530                {
14531                    if ( TBaseType.assigned(lccurrentsqlstatement) )
14532                    {
14533                        lcisnewsql = false;
14534                    }
14535                }
14536
14537                if ( lcisnewsql )
14538                {
14539                    ret =  new TSetStmt(pdbvendor);
14540                }
14541                break;
14542            }
14543            case sstShow:
14544            {
14545                ret = new TShowStmt(pdbvendor);
14546                ret.sqlstatementtype = gnewsqlstatementtype;
14547                break;
14548            }
14549            case sstStartTransaction:
14550            {
14551                ret = new TStartTransactionStmt(pdbvendor);
14552                break;
14553            }
14554            case sstUse:
14555            {
14556                ret =  new TUseDatabase(pdbvendor);
14557                break;
14558            }
14559            case sstValues:
14560            {
14561                ret =  new TSelectSqlStatement(pdbvendor);
14562                break;
14563            }
14564            case sstResetSession:
14565            {
14566                ret =  new TResetSessionStmt(pdbvendor);
14567                break;
14568            }
14569            default:
14570            {
14571                ret =  new TUnknownSqlStatement(pdbvendor);
14572                ret.sqlstatementtype = gnewsqlstatementtype;
14573                break;
14574            }
14575        }    // case
14576
14577        return ret;
14578
14579    }
14580    TCustomSqlStatement isathena(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
14581
14582        TCustomSqlStatement ret = null;
14583        int k;
14584        boolean lcisnewsql;
14585        TSourceToken lcpprevsolidtoken,lcnextsolidtoken;
14586
14587        gnewsqlstatementtype = ESqlStatementType.sstinvalid;
14588
14589        if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
14590                || (pcst.tokencode  == TBaseType.cmtslashstar)
14591                || (pcst.tokencode  == TBaseType.lexspace)
14592                || (pcst.tokencode  == TBaseType.lexnewline)
14593                || (pcst.tokentype == ETokenType.ttsemicolon) )
14594        {
14595            return ret;
14596        }
14597
14598        int lcpos = pcst.posinlist;
14599        TSourceTokenList lcsourcetokenlist = pcst.container;
14600        TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
14601
14602        //subquery after semicolon || at first line
14603        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
14604        {
14605            k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
14606            if ( k >0 )
14607            {
14608                ret =  new TSelectSqlStatement(pdbvendor);
14609            }
14610
14611            return ret;
14612        }
14613
14614        //cte
14615        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
14616        {
14617            ret = findcte(pcst,pdbvendor);
14618            if ( (ret != null) )  return ret;
14619        }
14620
14621
14622        gnewsqlstatementtype = findathenacmd(pcst);
14623
14624        TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
14625
14626        if ((gnewsqlstatementtype == ESqlStatementType.sstinvalid)&&(pcst.tokencode == TBaseType.rrw_create)){
14627            //if (pcst.container.nextsolidtoken(pcst.posinlist,15,))
14628            TSourceToken viewToken = pcst.container.searchToken(TBaseType.rrw_view,"",pcst,15);
14629            if (viewToken != null){
14630                gnewsqlstatementtype = ESqlStatementType.sstcreateview;
14631            }
14632        }
14633        switch (gnewsqlstatementtype){
14634            case sstinvalid:
14635            {
14636                ret = null;
14637                break;
14638            }
14639            case sstselect:
14640            {
14641                lcisnewsql = true;
14642
14643                if ( pstate != EFindSqlStateType.stnormal )
14644                {
14645                    // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
14646                    if ( TBaseType.assigned(lcprevsolidtoken) )
14647                    {
14648                        if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
14649                            lcisnewsql = false; //subqery
14650                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
14651                            lcisnewsql = false;
14652                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
14653                            lcisnewsql = false;
14654                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
14655                            lcisnewsql = false;
14656                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
14657                            lcisnewsql = false;
14658                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
14659                            lcisnewsql = false;
14660                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
14661                        {
14662                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
14663                                lcisnewsql = false;
14664                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
14665                                lcisnewsql = false;
14666                        }
14667
14668                        if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
14669                        {
14670                            lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
14671                            if ( TBaseType.assigned(lcpprevsolidtoken) )
14672                            {
14673                                if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
14674                                    lcisnewsql = false;
14675                            }
14676                        }
14677
14678                    }
14679
14680
14681                    if ( TBaseType.assigned(lccurrentsqlstatement) )
14682                    {
14683                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
14684                            lcisnewsql = false;
14685                    }
14686
14687                }
14688
14689                if ( lcisnewsql )
14690                    ret =  new TSelectSqlStatement(pdbvendor);
14691                break;
14692            }
14693            case sstinsert:
14694            {
14695                lcisnewsql = true;
14696                if ( pstate != EFindSqlStateType.stnormal )
14697                {
14698                    if ( TBaseType.assigned(lccurrentsqlstatement) )
14699                    {
14700
14701                    }
14702                }
14703
14704                if ( lcisnewsql )
14705                    ret =  new TInsertSqlStatement(pdbvendor);
14706                ret.sqlstatementtype = gnewsqlstatementtype;
14707                break;
14708            }
14709            case sstdelete:
14710            {
14711                lcisnewsql = true;
14712
14713                if ( pstate != EFindSqlStateType.stnormal )
14714                {
14715                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
14716                    if ( TBaseType.assigned(lcprevsolidtoken) )
14717                    {
14718                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
14719                            lcisnewsql = false;
14720                    }
14721
14722                    if ( TBaseType.assigned(lccurrentsqlstatement) )
14723                    {
14724                    }
14725                }
14726
14727                if ( lcisnewsql )
14728                    ret =  new TDeleteSqlStatement(pdbvendor);
14729                break;
14730            }
14731            case sstaltertable:
14732            {
14733                ret =  new TAlterTableStatement(pdbvendor);
14734                break;
14735            }
14736            case sstalterfunction:
14737            {
14738                ret =  new TAlterFunctionStmt(pdbvendor);
14739                break;
14740            }
14741            case sstAlterSchema:
14742            {
14743                ret =  new TAlterSchemaStmt(pdbvendor);
14744                break;
14745            }
14746            case sstanalyzeTable:
14747            {
14748                ret = new TAnalyzeStmt(pdbvendor);
14749                break;
14750            }
14751            case sstcall:
14752            {
14753                ret =  new TCallStatement(pdbvendor);
14754                break;
14755            }
14756            case sstcommit:
14757            {
14758                ret =  new TCommitStmt(pdbvendor);
14759                break;
14760            }
14761            case sstcreatefunction:
14762            {
14763                ret =  new TCreateFunctionStmt(pdbvendor);
14764                break;
14765            }
14766            case sstcreaterole:
14767            {
14768                ret =  new TCreateRoleStmt(pdbvendor);
14769                break;
14770            }
14771            case sstcreateschema:
14772            {
14773                ret =  new TCreateSchemaSqlStatement(pdbvendor);
14774                break;
14775            }
14776            case sstcreatetable:
14777            {
14778                ret =  new TCreateTableSqlStatement(pdbvendor);
14779                break;
14780            }
14781            case sstcreateview:
14782            {
14783                ret =  new TCreateViewSqlStatement(pdbvendor);
14784                break;
14785            }
14786            case sstpostgresqlDeallocate:
14787            {
14788                ret =  new TUnknownSqlStatement(pdbvendor);
14789                ret.sqlstatementtype = gnewsqlstatementtype;
14790                break;
14791            }
14792            case sstdescribe:
14793            {
14794                ret =  new TDescribeStmt(pdbvendor);
14795                break;
14796            }
14797            case sstdropfunction:
14798            {
14799                ret =  new TDropFunctionStmt(pdbvendor);
14800                break;
14801            }
14802            case sstdroprole:
14803            {
14804                ret =  new TDropRoleStmt(pdbvendor);
14805                break;
14806            }
14807            case sstdropschema:
14808            {
14809                ret =  new TDropSchemaSqlStatement(pdbvendor);
14810                break;
14811            }
14812            case sstdroptable:
14813            {
14814                ret =  new TDropTableSqlStatement(pdbvendor);
14815                break;
14816            }
14817            case sstdropview:
14818            {
14819                ret =  new TDropViewSqlStatement(pdbvendor);
14820                break;
14821            }
14822            case sstExecute:
14823            {
14824                ret =  new TExecuteSqlStatement(pdbvendor);
14825                break;
14826            }
14827            case sstExplain:
14828            {
14829                ret =  new TExplainPlan(pdbvendor);
14830                break;
14831            }
14832            case sstGrant:
14833            {
14834                ret =  new TGrantStmt(pdbvendor);
14835                break;
14836            }
14837            case sstprepare:
14838            {
14839                ret =  new TPrepareStmt(pdbvendor);
14840                break;
14841            }
14842            case sstset:
14843            case sstReset:
14844            {
14845                lcisnewsql = true;
14846                if ( pstate != EFindSqlStateType.stnormal )
14847                {
14848                    if ( TBaseType.assigned(lccurrentsqlstatement) )
14849                    {
14850                        lcisnewsql = false;
14851                    }
14852                }
14853
14854                if ( lcisnewsql )
14855                {
14856                    ret =  new TSetStmt(pdbvendor);
14857                }
14858                break;
14859            }
14860            case sstShow:
14861            {
14862                ret = new TShowStmt(pdbvendor);
14863                ret.sqlstatementtype = gnewsqlstatementtype;
14864                break;
14865            }
14866            case sstStartTransaction:
14867            {
14868                ret = new TStartTransactionStmt(pdbvendor);
14869                break;
14870            }
14871            case sstUse:
14872            {
14873                ret =  new TUseDatabase(pdbvendor);
14874                break;
14875            }
14876            case sstValues:
14877            {
14878                ret =  new TSelectSqlStatement(pdbvendor);
14879                break;
14880            }
14881            case sstResetSession:
14882            {
14883                ret =  new TResetSessionStmt(pdbvendor);
14884                break;
14885            }
14886            case sstunload:
14887                lcisnewsql = true;
14888                if ( pstate != EFindSqlStateType.stnormal )
14889                {
14890                    lcisnewsql = false;
14891                }
14892                if ( lcisnewsql ) {
14893                    ret = new TUnloadStmt(pdbvendor);
14894                    ret.sqlstatementtype = gnewsqlstatementtype;
14895                }
14896                break;
14897            case sstmsck:
14898            {
14899                ret = new TMSCKStmt(pdbvendor);
14900                break;
14901            }
14902            case sstcreatedatabase:
14903            {
14904                ret = new TCreateDatabaseSqlStatement(pdbvendor);
14905                break;
14906            }
14907            case sstalterdatabase:
14908            {
14909                ret = new TAlterDatabaseStmt(pdbvendor);
14910                break;
14911            }
14912            case sstdropdatabase:
14913                ret = new TDropDatabaseStmt(pdbvendor);
14914                break;
14915            default:
14916            {
14917                ret =  new TUnknownSqlStatement(pdbvendor);
14918                ret.sqlstatementtype = gnewsqlstatementtype;
14919                break;
14920            }
14921        }    // case
14922
14923        return ret;
14924
14925    }
14926
14927    TCustomSqlStatement issparksql(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
14928
14929            TCustomSqlStatement ret = null;
14930            int k;
14931            boolean lcisnewsql;
14932            TSourceToken lcpprevsolidtoken,lcnextsolidtoken;
14933
14934            gnewsqlstatementtype = ESqlStatementType.sstinvalid;
14935
14936            if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
14937                    || (pcst.tokencode  == TBaseType.cmtslashstar)
14938                    || (pcst.tokencode  == TBaseType.lexspace)
14939                    || (pcst.tokencode  == TBaseType.lexnewline)
14940                    || (pcst.tokentype == ETokenType.ttsemicolon) )
14941            {
14942                return ret;
14943            }
14944
14945            int lcpos = pcst.posinlist;
14946            TSourceTokenList lcsourcetokenlist = pcst.container;
14947            TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
14948
14949            //subquery after semicolon || at first line
14950            if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
14951            {
14952                k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
14953                if ( k >0 )
14954                {
14955                    ret =  new TSelectSqlStatement(pdbvendor);
14956                }
14957
14958                return ret;
14959            }
14960
14961            //cte
14962            if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
14963            {
14964                ret = findcte(pcst,pdbvendor);
14965                if ( (ret != null) )  return ret;
14966            }
14967
14968
14969            gnewsqlstatementtype = findsparksqlcmd(pcst);
14970
14971            TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
14972
14973            if ((gnewsqlstatementtype == ESqlStatementType.sstinvalid)&&(pcst.tokencode == TBaseType.rrw_create)){
14974                //if (pcst.container.nextsolidtoken(pcst.posinlist,15,))
14975                TSourceToken viewToken = pcst.container.searchToken(TBaseType.rrw_view,"",pcst,15);
14976                if (viewToken != null){
14977                    gnewsqlstatementtype = ESqlStatementType.sstcreateview;
14978                }
14979            }
14980            switch (gnewsqlstatementtype){
14981                case sstinvalid:
14982                {
14983                    ret = null;
14984                    break;
14985                }
14986                case sstselect:
14987                {
14988                    lcisnewsql = true;
14989
14990                    if ( pstate != EFindSqlStateType.stnormal )
14991                    {
14992                        // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
14993                        if ( TBaseType.assigned(lcprevsolidtoken) )
14994                        {
14995                            if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
14996                                lcisnewsql = false; //subqery
14997                            else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
14998                                lcisnewsql = false;
14999                            else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
15000                                lcisnewsql = false;
15001                            else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
15002                                lcisnewsql = false;
15003                            else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
15004                                lcisnewsql = false;
15005                            else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
15006                                lcisnewsql = false;
15007                            else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
15008                            {
15009                                if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
15010                                    lcisnewsql = false;
15011                                if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
15012                                    lcisnewsql = false;
15013                            }
15014
15015                            if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
15016                            {
15017                                lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
15018                                if ( TBaseType.assigned(lcpprevsolidtoken) )
15019                                {
15020                                    if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
15021                                        lcisnewsql = false;
15022                                }
15023                            }
15024
15025                        }
15026
15027
15028                        if ( TBaseType.assigned(lccurrentsqlstatement) )
15029                        {
15030                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
15031                                lcisnewsql = false;
15032                        }
15033
15034                    }
15035
15036                    if ( lcisnewsql )
15037                        ret =  new TSelectSqlStatement(pdbvendor);
15038                    break;
15039                }
15040                case sstinsert:
15041                {
15042                    lcisnewsql = true;
15043                    if ( pstate != EFindSqlStateType.stnormal )
15044                    {
15045                        if ( TBaseType.assigned(lccurrentsqlstatement) )
15046                        {
15047
15048                        }
15049                    }
15050
15051                    if ( lcisnewsql )
15052                        ret =  new TInsertSqlStatement(pdbvendor);
15053                    ret.sqlstatementtype = gnewsqlstatementtype;
15054                    break;
15055                }
15056                case sstupdate:
15057                {
15058                    lcisnewsql = true;
15059                    if ( pstate != EFindSqlStateType.stnormal )
15060                    {
15061                        lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
15062                        if ( TBaseType.assigned(lcprevsolidtoken) )
15063                        { //
15064                            if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
15065                                lcisnewsql = false;
15066                            else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
15067                                lcisnewsql = false;
15068                        }
15069
15070                        lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
15071                        if ( TBaseType.assigned(lcnextsolidtoken) )
15072                        {
15073                            if ( lcnextsolidtoken.tokentype == ETokenType.ttleftparenthesis)
15074                            {
15075                                k = lcsourcetokenlist.solidtokenafterpos(lcnextsolidtoken.posinlist,TBaseType.rrw_select,1,"(");
15076                                if ( k  == 0 ) lcisnewsql = false;
15077                            }
15078                        }
15079
15080
15081                        if ( TBaseType.assigned(lccurrentsqlstatement) )
15082                        {
15083                        }
15084                    }
15085
15086                    if ( lcisnewsql )
15087                    {
15088                        ret =  new TUpdateSqlStatement(pdbvendor);
15089                        ret.dummytag = 1; // means set clause in update is not found yet, used to seperate set clause from set statement
15090                    }
15091                    break;
15092                }
15093                case sstdelete:
15094                {
15095                    lcisnewsql = true;
15096
15097                    if ( pstate != EFindSqlStateType.stnormal )
15098                    {
15099                        lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
15100                        if ( TBaseType.assigned(lcprevsolidtoken) )
15101                        {
15102                            if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
15103                                lcisnewsql = false;
15104                        }
15105
15106                        if ( TBaseType.assigned(lccurrentsqlstatement) )
15107                        {
15108                        }
15109                    }
15110
15111                    if ( lcisnewsql )
15112                        ret =  new TDeleteSqlStatement(pdbvendor);
15113                    break;
15114                }
15115                case sstcreatetable:
15116                {
15117                    ret =  new TCreateTableSqlStatement(pdbvendor);
15118                    break;
15119                }
15120                case sstcreateview:
15121                {
15122                    ret =  new TCreateViewSqlStatement(pdbvendor);
15123                    break;
15124                }
15125                case sstcreatedatabase:
15126                {
15127                    ret =  new TCreateDatabaseSqlStatement(pdbvendor);
15128                    break;
15129                }
15130                case sstdroptable:
15131                {
15132                    ret =  new TDropTableSqlStatement(pdbvendor);
15133                    break;
15134                }
15135                case sstdropview:
15136                {
15137                    ret =  new TDropViewSqlStatement(pdbvendor);
15138                    break;
15139                }
15140                case sstaltertable:
15141                {
15142                    ret =  new TAlterTableStatement(pdbvendor);
15143                    break;
15144                }
15145                case sstset:
15146                case sstReset:
15147                case sstSetTimeZone:
15148                {
15149                    lcisnewsql = true;
15150                    if ( pstate != EFindSqlStateType.stnormal )
15151                    {
15152                        if ( TBaseType.assigned(lccurrentsqlstatement) )
15153                        {
15154                            lcisnewsql = false;
15155                        }
15156                    }
15157
15158                    if ( lcisnewsql )
15159                    {
15160                        ret =  new TSetStmt(pdbvendor);
15161                    }
15162                    break;
15163                }
15164                case sstcreatefunction:
15165                {
15166                    ret =  new TCreateFunctionStmt(pdbvendor);
15167                    break;
15168                }
15169                case sstTruncate:
15170                {
15171                    ret =  new TTruncateStatement(pdbvendor);
15172                    break;
15173                }
15174                case sstdescribe:
15175                {
15176                    ret =  new TDescribeStmt(pdbvendor);
15177                    break;
15178                }
15179                case sstExplain:
15180                {
15181                    ret =  new TExplainPlan(pdbvendor);
15182                    break;
15183                }
15184                case sstUse:
15185                {
15186                    ret =  new TUseDatabase(pdbvendor);
15187                    break;
15188                }
15189                case sstLoadData:
15190                {
15191                    ret =  new TLoadDataStmt(pdbvendor);
15192                    break;
15193                }
15194                case sstShowColumns:
15195                case sstShowCreateTable:
15196                case sstShowDatabases:
15197                case sstShowFunctions:
15198                case sstShowPartitions:
15199                case sstShowTableExtended:
15200                case sstShowTables:
15201                case sstShowTblProperties:
15202                case sstShowViews:
15203                case sstShowUser:
15204                    ret = new TShowStmt(pdbvendor);
15205                    ret.sqlstatementtype = gnewsqlstatementtype;
15206                    break;
15207                case sstalterdatabase:
15208                    ret =  new TAlterDatabaseStmt(pdbvendor);
15209                    break;
15210                case sstdescribeDatabase:
15211                case sstdescribeTable:
15212                case sstdescribeFunction:
15213                    ret =  new TDescribeStmt(pdbvendor);
15214                    break;
15215                case sstalterview:
15216                    ret =  new TAlterViewStatement(pdbvendor);
15217                    break;
15218                case sstAddFile:
15219                case sstAddJar:
15220                case sstListFile:
15221                case sstListJar:
15222                    ret =  new TResourceManagement(pdbvendor);
15223                    ret.sqlstatementtype = gnewsqlstatementtype;
15224                    break;
15225                case sstdropdatabase:
15226                    ret =  new TDropDatabaseStmt(pdbvendor);
15227                    break;
15228                case sstdropfunction:
15229                    ret =  new TDropFunctionStmt(pdbvendor);
15230                    break;
15231                case ssttruncatetable:
15232                    ret =  new TTruncateStatement(pdbvendor);
15233                     break;
15234                case sstmsck:
15235                {
15236                    ret = new TMSCKStmt(pdbvendor);
15237                    break;
15238                }
15239                case sstanalyzeTable:
15240                {
15241                    ret = new TAnalyzeStmt(pdbvendor);
15242                    break;
15243                }
15244                case sstCacheTable:
15245                case sstUnCacheTable:
15246                case sstClearCache:
15247                    ret = new TCacheTable(pdbvendor);
15248                    break;
15249                case sstRefreshTable:
15250                case sstRefreshFunction:
15251                case sstRefresh:
15252                    ret = new TRefresh(pdbvendor);
15253                    break;
15254                default:
15255                {
15256                    ret =  new TUnknownSqlStatement(pdbvendor);
15257                    ret.sqlstatementtype = gnewsqlstatementtype;
15258                    break;
15259                }
15260            }    // case
15261
15262            return ret;
15263
15264    }
15265
15266    TCustomSqlStatement ismysqlsql(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
15267    TCustomSqlStatement ret = null;
15268    int k;
15269    boolean lcisnewsql;
15270    TSourceToken lcpprevsolidtoken,lcnextsolidtoken;
15271
15272    gnewsqlstatementtype = ESqlStatementType.sstinvalid;
15273
15274    if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
15275       || (pcst.tokencode  == TBaseType.cmtslashstar)
15276       || (pcst.tokencode  == TBaseType.lexspace)
15277       || (pcst.tokencode  == TBaseType.lexnewline)
15278        || (pcst.tokentype == ETokenType.ttsemicolon) )
15279    {
15280      return ret;
15281    }
15282
15283    int lcpos = pcst.posinlist;
15284    TSourceTokenList lcsourcetokenlist = pcst.container;
15285    TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
15286
15287    //subquery after semicolon || at first line
15288    if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
15289      {
15290        k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
15291        if ( k >0 )
15292          {
15293            ret =  new TSelectSqlStatement(pdbvendor);
15294          }
15295
15296        return ret;
15297      }
15298
15299        //cte
15300        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
15301        {
15302            ret = findcte(pcst,pdbvendor);
15303            if ( (ret != null) )  return ret;
15304        }
15305
15306
15307    //cte
15308//  if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == rrw_with) )
15309//    {
15310//      ret = tselectsqlstatement.create(pdbvendor);
15311//      tselectsqlstatement(ret).isctequery = true;
15312//      exit;
15313//    }
15314//
15315
15316    gnewsqlstatementtype = findmysqlcmd(pcst);
15317
15318    TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
15319
15320    if ((gnewsqlstatementtype == ESqlStatementType.sstinvalid)&&(pcst.tokencode == TBaseType.rrw_create)){
15321      //if (pcst.container.nextsolidtoken(pcst.posinlist,15,))
15322        TSourceToken viewToken = pcst.container.searchToken(TBaseType.rrw_view,"",pcst,15);
15323        if (viewToken != null){
15324            gnewsqlstatementtype = ESqlStatementType.sstcreateview;
15325        }
15326    }
15327    switch (gnewsqlstatementtype){
15328        case sstinvalid:
15329          {
15330            ret = null;
15331            break;
15332          }
15333        case sstselect:
15334          {
15335            lcisnewsql = true;
15336
15337            if ( pstate != EFindSqlStateType.stnormal )
15338              {
15339                // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
15340                if ( TBaseType.assigned(lcprevsolidtoken) )
15341                  {
15342                    if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
15343                      lcisnewsql = false; //subqery
15344                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
15345                      lcisnewsql = false;
15346                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
15347                      lcisnewsql = false;
15348                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
15349                      lcisnewsql = false;
15350                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
15351                      lcisnewsql = false;
15352                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
15353                      lcisnewsql = false;
15354                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
15355                      {
15356                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
15357                          lcisnewsql = false;
15358                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
15359                          lcisnewsql = false;
15360                      }
15361
15362                    if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
15363                      {
15364                        lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
15365                        if ( TBaseType.assigned(lcpprevsolidtoken) )
15366                          {
15367                            if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
15368                              lcisnewsql = false;
15369                          }
15370                      }
15371
15372                  }
15373
15374
15375                if ( TBaseType.assigned(lccurrentsqlstatement) )
15376                  {
15377                    if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
15378                      lcisnewsql = false;
15379                  }
15380
15381              }
15382
15383            if ( lcisnewsql )
15384              ret =  new TSelectSqlStatement(pdbvendor);
15385              break;
15386          }
15387        case sstinsert:
15388        case sstmysqlreplace:
15389          {
15390            lcisnewsql = true;
15391            if ( pstate != EFindSqlStateType.stnormal )
15392              {
15393                if ( TBaseType.assigned(lccurrentsqlstatement) )
15394                  {
15395
15396                  }
15397              }
15398
15399            if ( lcisnewsql )
15400              ret =  new TInsertSqlStatement(pdbvendor);
15401              ret.sqlstatementtype = gnewsqlstatementtype;
15402              break;
15403          }
15404        case sstupdate:
15405          {
15406            lcisnewsql = true;
15407            if ( pstate != EFindSqlStateType.stnormal )
15408              {
15409                lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
15410                if ( TBaseType.assigned(lcprevsolidtoken) )
15411                  { //
15412                    if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
15413                      lcisnewsql = false;
15414                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
15415                      lcisnewsql = false;
15416                  }
15417
15418                lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
15419                if ( TBaseType.assigned(lcnextsolidtoken) )
15420                  {
15421                    if ( lcnextsolidtoken.tokentype == ETokenType.ttleftparenthesis)
15422                      {
15423                        k = lcsourcetokenlist.solidtokenafterpos(lcnextsolidtoken.posinlist,TBaseType.rrw_select,1,"(");
15424                        if ( k  == 0 ) lcisnewsql = false;
15425                      }
15426                  }
15427
15428
15429                if ( TBaseType.assigned(lccurrentsqlstatement) )
15430                  {
15431                  }
15432              }
15433
15434            if ( lcisnewsql )
15435              {
15436                ret =  new TUpdateSqlStatement(pdbvendor);
15437                ret.dummytag = 1; // means set clause in update is not found yet, used to seperate set clause from set statement
15438              }
15439              break;
15440          }
15441        case sstdelete:
15442          {
15443            lcisnewsql = true;
15444
15445            if ( pstate != EFindSqlStateType.stnormal )
15446              {
15447                lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
15448                if ( TBaseType.assigned(lcprevsolidtoken) )
15449                  {
15450                    if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
15451                      lcisnewsql = false;
15452                  }
15453
15454                if ( TBaseType.assigned(lccurrentsqlstatement) )
15455                  {
15456                  }
15457              }
15458
15459            if ( lcisnewsql )
15460              ret =  new TDeleteSqlStatement(pdbvendor);
15461              break;
15462          }
15463        case sstmerge:
15464          {
15465            ret =  new TMergeSqlStatement(pdbvendor);
15466            ret.sqlstatementtype = gnewsqlstatementtype;
15467              break;
15468          }
15469        case sstcommit:
15470          {
15471            ret =  new TUnknownSqlStatement(pdbvendor);
15472            ret.sqlstatementtype = gnewsqlstatementtype;
15473              break;
15474          }
15475        case sstrollback:
15476          {
15477            ret =  new TUnknownSqlStatement(pdbvendor);
15478            ret.sqlstatementtype = gnewsqlstatementtype;
15479              break;
15480          }
15481        case sstsavepoint:
15482          {
15483            ret =  new TUnknownSqlStatement(pdbvendor);
15484            ret.sqlstatementtype = gnewsqlstatementtype;
15485              break;
15486          }
15487        case sstRevoke:
15488          {
15489            ret =  new TUnknownSqlStatement(pdbvendor);
15490            ret.sqlstatementtype = gnewsqlstatementtype;
15491              break;
15492          }
15493        case sstcreatetable:
15494          {
15495            ret =  new TCreateTableSqlStatement(pdbvendor);
15496              break;
15497          }
15498        case sstcreateview:
15499          {
15500            ret =  new TCreateViewSqlStatement(pdbvendor);
15501              break;
15502          }
15503        case sstmysqlcreateindex:
15504          {
15505            ret =  new TCreateIndexSqlStatement(pdbvendor);
15506              break;
15507          }
15508        case sstcreatedatabase:
15509          {
15510            ret =  new TCreateDatabaseSqlStatement(pdbvendor);
15511              break;
15512          }
15513        case sstmysqldroptable:
15514        case sstdroptable:
15515          {
15516            ret =  new TDropTableSqlStatement(pdbvendor);
15517              break;
15518          }
15519        case sstdropview:
15520          {
15521            ret =  new TDropViewSqlStatement(pdbvendor);
15522              break;
15523          }
15524        case sstdropindex:
15525          {
15526            ret =  new TDropIndexSqlStatement(pdbvendor);
15527              break;
15528          }
15529        case sstaltertable:
15530          {
15531            ret =  new TAlterTableStatement(pdbvendor);
15532              break;
15533          }
15534        case sstaltersession:
15535          {
15536            ret =  new TAlterSessionStatement(pdbvendor);
15537              break;
15538          }
15539        case sstmysqlset:
15540          {
15541            ret =  new TSetStmt(pdbvendor);
15542              break;
15543          }
15544        case sstmysqlcreateprocedure:
15545          {
15546            ret =  new TCreateProcedureStmt(pdbvendor);
15547              break;
15548          }
15549        case sstmysqlcreatefunction:
15550          {
15551            ret =  new TCreateFunctionStmt(pdbvendor);
15552              break;
15553          }
15554        case sstcreatetrigger:
15555          {
15556            ret =  new TCreateTriggerStmt(pdbvendor);
15557              break;
15558          }
15559        case sstmysqlcall:
15560        {
15561            ret =  new TCallStatement(pdbvendor);
15562            break;
15563        }
15564        case sstmysqltruncate:
15565        {
15566            ret =  new TTruncateStatement(pdbvendor);
15567            break;
15568        }
15569        case sstmysqlprepare:
15570        {
15571            ret =  new TPrepareStmt(pdbvendor);
15572            break;
15573        }
15574        case sstdescribe:
15575        {
15576            ret =  new TDescribeStmt(pdbvendor);
15577            break;
15578        }
15579        case sstExplain:
15580        {
15581            ret =  new TExplainPlan(pdbvendor);
15582            break;
15583        }
15584        case sstmysqldropindex:
15585        {
15586            ret =  new TDropIndexSqlStatement(pdbvendor);
15587            break;
15588        }
15589        case sstmysqldropprocedure:
15590        {
15591            ret =  new TDropProcedureStmt(pdbvendor);
15592            break;
15593        }
15594        case sstmysqlsignal:
15595        {
15596            ret =  new TMySQLSignal(pdbvendor);
15597            break;
15598        }
15599        case sstmysqlstarttransaction:
15600        {
15601            if ( pstate == EFindSqlStateType.stnormal )
15602            {
15603                ret =  new TUnknownSqlStatement(pdbvendor);
15604                ret.sqlstatementtype = gnewsqlstatementtype;
15605            }
15606            break;
15607        }
15608        case sstmysqluse:
15609        {
15610            ret =  new TUseDatabase(pdbvendor);
15611          break;
15612        }
15613        case sstmysqlexecute:
15614        {
15615            ret =  new TExecuteSqlStatement(pdbvendor);
15616            ret.sqlstatementtype = gnewsqlstatementtype;
15617            break;
15618        }
15619        case sstmysqlcreatedatabase:
15620        {
15621            ret =  new TCreateDatabaseSqlStatement(pdbvendor);
15622            break;
15623        }
15624        case sstmysqlrenametable:
15625        {
15626            ret =  new TRenameStmt(pdbvendor);
15627            break;
15628        }
15629        case sstmysqlshowindex:
15630            ret =  new TShowIndexStmt(pdbvendor);
15631            break;
15632        case sstmysqlloaddatainfile:
15633            ret = new TLoadDataStmt(pdbvendor);
15634            break;
15635        case sstmysqlshowlogs:
15636        case sstmysqlshowbinlogevents:
15637        case sstmysqlshowcharacterset:
15638        case sstmysqlshowcollation:
15639        case sstmysqlshowcolumns:
15640        case sstmysqlshowwarnings:
15641        case sstmysqlshowcreatedatabase:
15642        case sstmysqlshowcreatefunction:
15643        case sstmysqlshowcreateprocedure:
15644        case sstmysqlshowcreatetable:
15645        case sstmysqlshowcreateview:
15646        case sstmysqlshowdatabases:
15647        case sstmysqlshowerrors:
15648        case sstmysqlshowfields:
15649        case sstmysqlshowprocesslist:
15650        case sstmysqlshowtables:
15651        case sstmysqlshowfunctionstatus:
15652        case sstmysqlshowstatus:
15653        case sstmysqlshowvariables:
15654        case sstmysqlshowgrants:
15655        case sstmysqlshowinnodbstatus:
15656        case sstmysqlshowmasterlogs:
15657        case sstmysqlshowplugins:
15658        case sstmysqlshowprivileges:
15659        case sstmysqlshowprofile:
15660        case sstmysqlshowprofiles:
15661        case sstmysqlshowslavehosts:
15662        case sstmysqlshowslavestatus:
15663        case sstmysqlshowtablestatus:
15664        case sstmysqlshowtriggers:
15665        case sstmysqlshowcreateschema:
15666        case sstmysqlshowengines:
15667            ret = new TMySQLShowStmt(pdbvendor);
15668            ret.sqlstatementtype = gnewsqlstatementtype;
15669            break;
15670        case sstmysqlshowengine:
15671            ret = new TShowEngineStmt(pdbvendor);
15672            break;
15673        case sstmysqlshowreplicaStatus:
15674            ret = new TShowStmt(pdbvendor);
15675            ret.sqlstatementtype = gnewsqlstatementtype;
15676            break;
15677        case sstmysqlalterfunction:
15678            ret = new TAlterFunctionStmt(pdbvendor);
15679            break;
15680        case sstmysqlalterprocedure:
15681            ret = new TAlterProcedureStmt(pdbvendor);
15682            break;
15683        case sstmysqldropfunction:
15684            ret = new TDropFunctionStmt(pdbvendor);
15685            break;
15686        case sstmysqldroptrigger:
15687            ret = new TDropTriggerSqlStatement(pdbvendor);
15688            break;
15689        case sstmysqloptimizetable:
15690            ret = new TMySQLOptimizeTableStmt(pdbvendor);
15691            break;
15692        case sstmysqlalterview:
15693            ret  = new TAlterViewStatement(pdbvendor);
15694            break;
15695        default:
15696          {
15697            ret =  new TUnknownSqlStatement(pdbvendor);
15698            ret.sqlstatementtype = gnewsqlstatementtype;
15699              break;
15700          }
15701    }    // case
15702
15703    return ret;
15704}
15705
15706TCustomSqlStatement ismdxsql(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
15707    TCustomSqlStatement ret = null;
15708
15709    gnewsqlstatementtype = ESqlStatementType.sstinvalid;
15710
15711    if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
15712       || (pcst.tokencode  == TBaseType.cmtslashstar)
15713       || (pcst.tokencode  == TBaseType.lexspace)
15714       || (pcst.tokencode  == TBaseType.lexnewline)
15715        || (pcst.tokentype == ETokenType.ttsemicolon) )
15716    {
15717      return null;
15718    }
15719
15720    int lcpos = pcst.posinlist;
15721    TSourceTokenList lcsourcetokenlist = pcst.container;
15722    TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
15723
15724
15725    //with clause before statement
15726    if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
15727      {
15728        ret = findMdxStmtBeginWithClause(pcst,pdbvendor);
15729        if ( (ret != null) )  return ret;
15730      }
15731
15732    gnewsqlstatementtype = findmdxcmd(pcst);
15733
15734    TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
15735    switch (gnewsqlstatementtype) {    //
15736        case sstinvalid:
15737          {
15738            ret = null;
15739            if ( pstate == EFindSqlStateType.stnormal )
15740              {
15741                  //treat all unregonized statement as an expression
15742                  ret = new TMdxExpression(EDbVendor.dbvmdx);
15743              }
15744              break;
15745          }
15746        case sstmdxselect:
15747          {
15748            boolean lcisnewsql = true;
15749
15750            if ( pstate != EFindSqlStateType.stnormal )
15751              {
15752                if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstselect )
15753                  {
15754                    if ( lccurrentsqlstatement.isctequery )
15755                      lcisnewsql = false;
15756                  }
15757              }
15758
15759            if ( lcisnewsql )
15760              ret = new TMdxSelect(pdbvendor);
15761
15762            break;
15763          }
15764        case sstmdxupdate:
15765          {
15766            boolean lcisnewsql = true;
15767            if ( pstate != EFindSqlStateType.stnormal )
15768              {
15769                lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
15770                if ( (lcprevsolidtoken != null) )
15771                  { //
15772                  }
15773
15774                TSourceToken lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
15775                if ( (lcnextsolidtoken != null) )
15776                  {
15777                  }
15778
15779                if ( (lccurrentsqlstatement != null) )
15780                  {
15781                  }
15782              }
15783
15784            if ( lcisnewsql )
15785              {
15786                ret = new TMdxUpdate(pdbvendor);
15787              }
15788            break;
15789          }
15790        case sstmdxaltercube:
15791          {
15792            ret = new TMdxAlterCube(pdbvendor);
15793              break;
15794          }
15795        case sstmdxcalculate:
15796          {
15797            ret = new TMdxCalculate(pdbvendor);
15798              break;
15799          }
15800        case sstmdxcall:
15801          {
15802            ret = new TMdxCall(pdbvendor);
15803              break;
15804          }
15805        case sstmdxcase:
15806          {
15807            ret = new TMdxCase(pdbvendor);
15808              break;
15809          }
15810        case sstmdxclearcalculations:
15811          {
15812            ret = new TMdxClearCalculations(pdbvendor);
15813              break;
15814          }
15815        case sstmdxcreateaction:
15816          {
15817            ret = new TMdxCreateAction(pdbvendor);
15818              break;
15819          }
15820        case sstmdxcreatemember:
15821          {
15822            ret = new TMdxCreateMember(pdbvendor);
15823              break;
15824          }
15825        case sstmdxcreatecellcalculation:
15826          {
15827            ret = new TMdxCreateCellCalculation(pdbvendor);
15828              break;
15829          }
15830        case sstmdxcreateglobalcube:
15831          {
15832            ret = new TMdxCreateGlobalCube(pdbvendor);
15833              break;
15834          }
15835        case sstmdxcreateset:
15836          {
15837            ret = new TMdxCreateSet(pdbvendor);
15838              break;
15839          }
15840        case sstmdxcreatesessioncube:
15841          {
15842            ret = new TMdxCreateSessionCube(pdbvendor);
15843              break;
15844          }
15845        case sstmdxcreatesubcube:
15846          {
15847            ret = new TMdxCreateSubCube(pdbvendor);
15848              break;
15849          }
15850        case sstmdxdrillthrough:
15851          {
15852            ret = new TMdxDrillthrough(pdbvendor);
15853              break;
15854          }
15855        case sstmdxdropaction:
15856          {
15857            ret = new TMdxDropAction(pdbvendor);
15858              break;
15859          }
15860        case sstmdxdropmember:
15861          {
15862            ret = new TMdxDropMember(pdbvendor);//ret = new TMdxCreateSessionCube(pdbvendor);
15863              break;
15864          }
15865        case sstmdxdropcellcalculation:
15866          {
15867            ret = new TMdxDropCellCalculation(pdbvendor);
15868              break;
15869          }
15870        case sstmdxdropset:
15871          {
15872            ret = new TMdxDropSet(pdbvendor);
15873              break;
15874          }
15875        case sstmdxdropsubcube:
15876          {
15877            ret = new TMdxDropSubcube(pdbvendor);
15878              break;
15879          }
15880        case sstmdxfreeze:
15881          {
15882            ret = new TMdxFreeze(pdbvendor);
15883            break;
15884          }
15885        case sstmdxif:
15886          {
15887            ret = new TMdxIf(pdbvendor);
15888              break;
15889          }
15890        case sstmdxrefreshcube:
15891          {
15892            ret = new TMdxRefreshCube(pdbvendor);
15893              break;
15894          }
15895        case sstmdxscope:
15896          {
15897            ret = new TMdxScope(pdbvendor);
15898              break;
15899          }
15900        case sstmdxcreatemeasure:
15901        {
15902            ret = new TMdxCreateMeasure(pdbvendor);
15903            break;
15904        }
15905        case sstmdxexisting:
15906        default:
15907          {
15908            ret = new TUnknownSqlStatement(pdbvendor);
15909            ret.sqlstatementtype = gnewsqlstatementtype;
15910            break;
15911          }
15912    }    // case
15913
15914    return ret;
15915}
15916
15917
15918public ESqlStatementType findsybasecmdusedbyyacc(TSourceToken pcst){
15919  ESqlStatementType ret = ESqlStatementType.sstinvalid;
15920
15921    int lcpos = pcst.posinlist;
15922    TSourceTokenList lcsourcetokenlist = pcst.container;
15923
15924    //subquery after semicolon or at first line
15925    if (  (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
15926      {
15927        int k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
15928        if ( k >0 )
15929          {
15930            ret = ESqlStatementType.sstselect;
15931          }
15932
15933        return ret;
15934      }
15935
15936
15937    ret = findsybasecmd(pcst);
15938    // execute can't be used to delimite other sql
15939    if ( ret == ESqlStatementType.sstmssqlexec )
15940      ret = ESqlStatementType.sstinvalid;
15941
15942  return ret;
15943}
15944
15945public ESqlStatementType findmssqlcmdusedbyyacc(TSourceToken pcst){
15946  ESqlStatementType ret = ESqlStatementType.sstinvalid;
15947
15948    int lcpos = pcst.posinlist;
15949    TSourceTokenList lcsourcetokenlist = pcst.container;
15950
15951    //subquery after semicolon or at first line
15952    if (  (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
15953      {
15954        int k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
15955        if ( k >0 )
15956          {
15957            ret = ESqlStatementType.sstselect;
15958          }
15959
15960        return ret;
15961      }
15962
15963
15964    ret = findmssqlcmd(pcst);
15965    // execute can't be used to delimite other sql
15966    if ( ret == ESqlStatementType.sstmssqlexec )
15967      ret = ESqlStatementType.sstinvalid;
15968
15969  return ret;
15970}
15971
15972
15973TCustomSqlStatement ishive(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
15974    TCustomSqlStatement ret = null;
15975
15976    gnewsqlstatementtype = ESqlStatementType.sstinvalid;
15977
15978    if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
15979       || (pcst.tokencode  == TBaseType.cmtslashstar)
15980       || (pcst.tokencode  == TBaseType.lexspace)
15981       || (pcst.tokencode  == TBaseType.lexnewline)
15982        || (pcst.tokentype == ETokenType.ttsemicolon) )
15983    {
15984      return null;
15985    }
15986
15987    int lcpos = pcst.posinlist;
15988    TSourceTokenList lcsourcetokenlist = pcst.container;
15989    TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
15990
15991
15992    //from query
15993    if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_from) )
15994      {
15995          if (pcst.container == null){
15996              return new TSelectSqlStatement(pdbvendor);
15997          }
15998
15999          // search select or insert who comes first,
16000          int lcpos1 = pcst.posinlist;
16001          TSourceTokenList lcsourcetokenlist1 = pcst.container;
16002          TSourceToken tmpSt;
16003          int parenthesisCnt = 0;
16004          for(int k=lcpos1+1;k<lcsourcetokenlist1.size();k++){
16005              tmpSt = lcsourcetokenlist1.get(k);
16006              if (tmpSt.tokencode == ';') break;
16007              if (tmpSt.tokencode == '(') parenthesisCnt++;
16008              if (tmpSt.tokencode == ')') parenthesisCnt--;
16009              if (parenthesisCnt == 0){
16010                  if (tmpSt.tokencode == TBaseType.rrw_select){
16011                      ret = new TSelectSqlStatement(pdbvendor);
16012                      break;
16013                  }else if (tmpSt.tokencode == TBaseType.rrw_insert){
16014                      ret = new TInsertSqlStatement(pdbvendor);
16015                      break;
16016                  }
16017              }
16018          }
16019
16020          if (ret == null){
16021              ret = new TSelectSqlStatement(pdbvendor);
16022//              FROM (
16023//                      FROM pv_users
16024//                      MAP pv_users.userid, pv_users.date
16025//                      USING 'map_script'
16026//              AS dt, uid
16027//              CLUSTER BY dt) map_output;
16028          }
16029
16030          return ret;
16031      }
16032
16033    //cte
16034    if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
16035    {
16036        ret = findcte(pcst,pdbvendor);
16037        if ( (ret != null) )  return ret;
16038    }
16039
16040    gnewsqlstatementtype = findhivecmd(pcst);
16041
16042    TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
16043    switch (gnewsqlstatementtype) {    //
16044        case sstinvalid:
16045          {
16046            ret = null;
16047            break;
16048          }
16049        case sstselect:
16050          {
16051            boolean lcisnewsql = true;
16052
16053            if ( pstate != EFindSqlStateType.stnormal )
16054              {
16055
16056                if ( (lccurrentsqlstatement != null) )
16057                  {
16058                    if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.ssthiveFromQuery )
16059                      //if (((TSelectSqlStatement)lccurrentsqlstatement).getSelectToken().tokencode == TBaseType.rrw_from)
16060                        lcisnewsql = false;
16061                  }
16062
16063              }
16064
16065            if ( lcisnewsql )
16066              ret = new TSelectSqlStatement(pdbvendor);
16067
16068            break;
16069          }
16070        case sstinsert:
16071          {
16072            boolean lcisnewsql = true;
16073            if ( pstate != EFindSqlStateType.stnormal )
16074              {
16075                if ( (lccurrentsqlstatement != null) )
16076                  {
16077                      if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.ssthiveFromQuery )
16078                         // if (((TSelectSqlStatement)lccurrentsqlstatement).getSelectToken().tokencode == TBaseType.rrw_from)
16079                             lcisnewsql = false;
16080                  }
16081              }
16082
16083            if ( lcisnewsql )
16084              ret = new TInsertSqlStatement(pdbvendor);
16085
16086            break;
16087          }
16088        case sstTruncate:
16089          {
16090              ret = new TTruncateStatement(pdbvendor);
16091              break;
16092          }
16093        case sstalterdatabase:
16094        {
16095            ret = new TAlterDatabaseStmt(pdbvendor);
16096            break;
16097        }
16098        case sstalterindex:
16099          {
16100            ret = new TAlterIndexStmt(pdbvendor);
16101              break;
16102          }
16103        case sstaltertable:
16104          {
16105            ret = new TAlterTableStatement(pdbvendor);
16106              break;
16107          }
16108        case sstalterview:
16109          {
16110            ret = new TAlterViewStatement(pdbvendor);
16111              break;
16112          }
16113        case sstanalyzeTable:
16114        {
16115            ret = new TAnalyzeStmt(pdbvendor);
16116            break;
16117        }
16118        case sstcreatedatabase:
16119          {
16120            ret = new TCreateDatabaseSqlStatement(pdbvendor);
16121              break;
16122          }
16123        case sstcreatetable:
16124          {
16125            ret = new TCreateTableSqlStatement(pdbvendor);
16126              break;
16127          }
16128        case sstcreateindex:
16129          {
16130            ret = new TCreateIndexSqlStatement(pdbvendor);
16131              break;
16132          }
16133        case sstcreateview:
16134          {
16135            ret = new TCreateViewSqlStatement(pdbvendor);
16136              break;
16137          }
16138        case ssthiveCreateRole:
16139        {
16140            ret = new THiveCreateRole(pdbvendor);
16141            break;
16142        }
16143        case ssthiveCreateFunction:
16144        {
16145            ret = new THiveCreateFunction(pdbvendor);
16146            break;
16147        }
16148        case ssthiveDesc:
16149        {
16150            ret = new THiveDescribe(pdbvendor);
16151            break;
16152        }
16153        case ssthiveDropDatabase:
16154        {
16155            ret = new THiveDropDatabase(pdbvendor);
16156            break;
16157        }
16158        case sstdropindex:
16159          {
16160            ret = new TDropIndexSqlStatement(pdbvendor);
16161              break;
16162          }
16163        case ssthiveDropRole:
16164        {
16165            ret = new THiveDropRole(pdbvendor);
16166              break;
16167        }
16168        case sstdroptable:
16169          {
16170            ret = new TDropTableSqlStatement(pdbvendor);
16171              break;
16172          }
16173        case ssthiveDropFunciton:
16174        {
16175            ret = new THiveDropFunction(pdbvendor);
16176              break;
16177        }
16178        case sstdropview:
16179          {
16180           ret = new TDropViewSqlStatement(pdbvendor);
16181              break;
16182          }
16183        case ssthiveExplain:
16184        {
16185            ret = new THiveExplain(pdbvendor);
16186            break;
16187        }
16188        case ssthiveExportTable:
16189        {
16190            ret = new THiveExportTable(pdbvendor);
16191               break;
16192        }
16193        case ssthiveGrant:
16194        {
16195            ret = new THiveGrant(pdbvendor);
16196               break;
16197        }
16198        case ssthiveGrantRole:
16199        {
16200            ret = new THiveGrantRole(pdbvendor);
16201               break;
16202        }
16203        case ssthiveImportTable:
16204        {
16205            ret = new THiveImportTable(pdbvendor);
16206               break;
16207        }
16208        case ssthiveLoad:
16209        {
16210            ret = new THiveLoad(pdbvendor);
16211               break;
16212        }
16213        case ssthiveLockTable:
16214        {
16215            ret = new TLockTableStmt(pdbvendor);
16216               break;
16217        }
16218        case sstmsck:
16219        {
16220            ret = new TMSCKStmt(pdbvendor);
16221               break;
16222        }
16223        case ssthiveRevoke:
16224        {
16225            ret = new THiveRevoke(pdbvendor);
16226               break;
16227        }
16228        case ssthiveRevokeRole:
16229        {
16230            ret = new THiveRevokeRole(pdbvendor);
16231               break;
16232        }
16233        case ssthiveSet:
16234        {
16235            ret = new THiveSet(pdbvendor);
16236               break;
16237        }
16238        case ssthiveShow:
16239        {
16240            ret = new THiveShow(pdbvendor);
16241               break;
16242        }
16243        case ssthiveShowGrants:
16244        {
16245            ret = new THiveShowGrant(pdbvendor);
16246               break;
16247        }
16248        case ssthiveShowRoleGrants:
16249        {
16250            ret = new THiveShowRoleGrant(pdbvendor);
16251               break;
16252        }
16253        case ssthiveUnlockTable:
16254        {
16255            ret = new THiveUnlockTable(pdbvendor);
16256               break;
16257        }
16258        case ssthiveSwitchDatabase:
16259        {
16260            ret = new TUseDatabase(pdbvendor);
16261               break;
16262        }
16263        case sstmerge:
16264        {
16265            ret = new TMergeSqlStatement(pdbvendor);
16266            break;
16267        }
16268        case sstupdate:
16269        {
16270            ret = new TUpdateSqlStatement(pdbvendor);
16271            break;
16272        }
16273        case sstdelete:
16274        {
16275            ret = new TDeleteSqlStatement(pdbvendor);
16276            break;
16277        }
16278        case sstCreateMacro:
16279            ret = new TCreateMacro(pdbvendor);
16280            break;
16281        case sstDropMacro:
16282            ret = new TDropMacro(pdbvendor);
16283            break;
16284        case sstcreatematerializedview:
16285            ret = new TCreateMaterializedSqlStatement(pdbvendor);
16286            break;
16287        case sstupsert:
16288            ret = new TUpsertStmt(pdbvendor);
16289            break;
16290        default:
16291          {
16292            ret = new TUnknownSqlStatement(pdbvendor);
16293            ret.sqlstatementtype = gnewsqlstatementtype;
16294            break;
16295          }
16296    }    // case
16297
16298    return ret;
16299}
16300
16301    TCustomSqlStatement isvertica(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
16302        TCustomSqlStatement ret = null;
16303
16304        gnewsqlstatementtype = ESqlStatementType.sstinvalid;
16305
16306        if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
16307                || (pcst.tokencode  == TBaseType.cmtslashstar)
16308                || (pcst.tokencode  == TBaseType.lexspace)
16309                || (pcst.tokencode  == TBaseType.lexnewline)
16310                || (pcst.tokentype == ETokenType.ttsemicolon) )
16311        {
16312            return null;
16313        }
16314
16315        int lcpos = pcst.posinlist;
16316        TSourceTokenList lcsourcetokenlist = pcst.container;
16317        TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
16318
16319        //subquery after semicolon or at first line
16320        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
16321        {
16322            int k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
16323            if ( k >0 )
16324            {
16325                ret = new TSelectSqlStatement(pdbvendor);
16326            }
16327
16328            return ret;
16329        }
16330
16331        //cte
16332        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
16333        {
16334            ret = findcte(pcst,pdbvendor);
16335            if ( (ret != null) )  return ret;
16336        }
16337
16338        gnewsqlstatementtype = findverticacmd(pcst);
16339
16340        TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
16341        switch (gnewsqlstatementtype) {    //
16342            case sstinvalid:
16343            {
16344                ret = null;
16345
16346                if ( pstate == EFindSqlStateType.stnormal )
16347                {
16348                    if ( pcst.tokencode == TBaseType.label_begin )
16349                    {
16350                        ret = new TCommonBlock(pdbvendor);
16351                        gnewsqlstatementtype = ret.sqlstatementtype;
16352                    }
16353                    else if ( pcst.tokencode == TBaseType.rrw_declare )
16354                    {
16355                        ret = new TCommonBlock(pdbvendor);
16356                        gnewsqlstatementtype = ret.sqlstatementtype;
16357                    }
16358                    else if ( pcst.tokencode == TBaseType.rrw_begin )
16359                    {
16360                        ret = new TCommonBlock(pdbvendor);
16361                        gnewsqlstatementtype = ret.sqlstatementtype;
16362                    }
16363                    else if ( pcst.tokencode == TBaseType.rrw_procedure )
16364                    {
16365                        ret = new TPlsqlCreateProcedure(pdbvendor);
16366                        // ret.sqlstatementtype = ESqlStatementType.sstplsql_createprocedure;
16367                        gnewsqlstatementtype = ret.sqlstatementtype;
16368                    }
16369                    else if ( pcst.tokencode == TBaseType.rrw_function )
16370                    {
16371                        ret = new TPlsqlCreateFunction(pdbvendor);
16372                        // ret.sqlstatementtype = ESqlStatementType.sstplsql_createfunction;
16373                        gnewsqlstatementtype = ret.sqlstatementtype;
16374                    }
16375                    else if ( pcst.tokencode == TBaseType.rrw_package )
16376                    {
16377                        ret = new TPlsqlCreatePackage(pdbvendor);
16378                        // ret.sqlstatementtype = ESqlStatementType.sstplsql_createpackage;
16379                        gnewsqlstatementtype = ret.sqlstatementtype;
16380                    }
16381                }
16382                break;
16383            }
16384            case sstselect:
16385            {
16386                boolean lcisnewsql = true;
16387
16388                if ( pstate != EFindSqlStateType.stnormal )
16389                {
16390                    // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
16391                    if ( (lcprevsolidtoken != null) )
16392                    {
16393                        if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
16394                            lcisnewsql = false; //subqery
16395                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
16396                            lcisnewsql = false;
16397                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
16398                            lcisnewsql = false;
16399                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
16400                            lcisnewsql = false;
16401                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
16402                            lcisnewsql = false;
16403                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
16404                            lcisnewsql = false;
16405                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
16406                        {
16407                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
16408                                lcisnewsql = false;
16409                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
16410                                lcisnewsql = false;
16411                        }
16412
16413                        if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
16414                        {
16415                            TSourceToken lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
16416                            if ( (lcpprevsolidtoken != null) )
16417                            {
16418                                if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
16419                                    lcisnewsql = false;
16420                            }
16421                        }
16422
16423                    }
16424
16425
16426                    if ( (lccurrentsqlstatement != null) )
16427                    {
16428                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
16429                            lcisnewsql = false;
16430                    }
16431
16432                }
16433
16434                if ( lcisnewsql )
16435                    ret = new TSelectSqlStatement(pdbvendor);
16436
16437                break;
16438            }
16439            case sstinsert:
16440            {
16441                boolean lcisnewsql = true;
16442                if ( pstate != EFindSqlStateType.stnormal )
16443                {
16444                    if ( (lccurrentsqlstatement != null) )
16445                    {
16446
16447                    }
16448                }
16449
16450                if ( lcisnewsql )
16451                    ret = new TInsertSqlStatement(pdbvendor);
16452
16453                break;
16454            }
16455            case sstupdate:
16456            {
16457                boolean lcisnewsql = true;
16458                if ( pstate != EFindSqlStateType.stnormal )
16459                {
16460                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
16461                    if ( (lcprevsolidtoken != null) )
16462                    { //
16463                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
16464                            lcisnewsql = false;
16465                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
16466                            lcisnewsql = false;
16467                    }
16468
16469                    TSourceToken lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
16470                    if ( (lcnextsolidtoken != null) )
16471                    {
16472                        if ( lcnextsolidtoken.tokentype == ETokenType.ttleftparenthesis)
16473                        {
16474                            int k = lcsourcetokenlist.solidtokenafterpos(lcnextsolidtoken.posinlist,TBaseType.rrw_select,1,"(");
16475                            if ( k  == 0 ) lcisnewsql = false;
16476                        }
16477                    }
16478
16479
16480                    if ( (lccurrentsqlstatement != null) )
16481                    {
16482                    }
16483                }
16484
16485                if ( lcisnewsql )
16486                {
16487                    ret = new TUpdateSqlStatement(pdbvendor);
16488                    ret.dummytag = 1; // means set clause in update is not found yet, used to seperate set clause from set statement
16489                }
16490                break;
16491            }
16492            case sstdelete:
16493            {
16494                boolean lcisnewsql = true;
16495
16496                if ( pstate != EFindSqlStateType.stnormal )
16497                {
16498                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
16499                    if ( (lcprevsolidtoken != null) )
16500                    {
16501                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
16502                            lcisnewsql = false;
16503                    }
16504
16505                    if ( (lccurrentsqlstatement != null) )
16506                    {
16507                    }
16508                }
16509
16510                if ( lcisnewsql )
16511                    ret = new TDeleteSqlStatement(pdbvendor);
16512
16513                break;
16514            }
16515            case sstmerge:
16516            {
16517                ret = new TMergeSqlStatement(pdbvendor);
16518                ret.sqlstatementtype = gnewsqlstatementtype;
16519                break;
16520            }
16521            case sstcommit:
16522            case sstEnd:
16523            {
16524                ret = new TCommitStmt(pdbvendor);
16525                ret.sqlstatementtype = gnewsqlstatementtype;
16526                break;
16527            }
16528            case sstrollback:
16529            {
16530                ret = new TRollbackStmt(pdbvendor);
16531                ret.sqlstatementtype = gnewsqlstatementtype;
16532                break;
16533            }
16534            case sstsavepoint:
16535            {
16536                ret = new TSavepointStmt(pdbvendor);
16537                ret.sqlstatementtype = gnewsqlstatementtype;
16538                break;
16539            }
16540            case sstRevoke:
16541            {
16542                ret = new TRevokeStmt(pdbvendor);
16543                ret.sqlstatementtype = gnewsqlstatementtype;
16544                break;
16545            }
16546            case sstGrant:
16547            {
16548                ret = new TGrantStmt(pdbvendor);
16549                ret.sqlstatementtype = gnewsqlstatementtype;
16550                break;
16551            }
16552            case sstTruncate:
16553            {
16554                ret = new TTruncateStatement(pdbvendor);
16555                ret.sqlstatementtype = gnewsqlstatementtype;
16556                break;
16557            }
16558            case sstcreatetable:
16559            {
16560                ret = new TCreateTableSqlStatement(pdbvendor);
16561                break;
16562            }
16563            case sstcreateview:
16564            {
16565                ret = new TCreateViewSqlStatement(pdbvendor);
16566                break;
16567            }
16568            case sstcreateindex:
16569            {
16570                ret = new TCreateIndexSqlStatement(pdbvendor);
16571                break;
16572            }
16573            case sstcreatedatabase:
16574            {
16575                ret = new TCreateDatabaseSqlStatement(pdbvendor);
16576                break;
16577            }
16578            case sstdroptable:
16579            {
16580                ret = new TDropTableSqlStatement(pdbvendor);
16581                break;
16582            }
16583            case sstdropview:
16584            {
16585                ret = new TDropViewSqlStatement(pdbvendor);
16586                break;
16587            }
16588            case sstdropindex:
16589            {
16590                ret = new TDropIndexSqlStatement(pdbvendor);
16591                break;
16592            }
16593            case sstaltertable:
16594            {
16595                ret = new TAlterTableStatement(pdbvendor);
16596                break;
16597            }
16598            case sstaltersession:
16599            {
16600                ret = new TAlterSessionStatement(pdbvendor);
16601                break;
16602            }
16603            case sstcreateprocedure:
16604            {
16605                ret = new TCreateProcedureStmt(pdbvendor);
16606                break;
16607            }
16608            case sstCommentOn:
16609            {
16610                ret = new TCommentOnSqlStmt(pdbvendor);
16611                break;
16612            }
16613            case sstcreatesequence:
16614            {
16615                ret = new TCreateSequenceStmt(pdbvendor);
16616                break;
16617            }
16618            case sstcreatefunction:
16619                ret = new TVerticaCreateFunction(pdbvendor);
16620                break;
16621            case sstaltersequence:
16622                ret = new TAlterSequenceStatement(pdbvendor);
16623                break;
16624            case sstAlterAccessPolicy:
16625                ret = new TAlterAccessPolicy(pdbvendor);
16626                break;
16627            case sstAlterAuthentication:
16628                ret = new TAlterAuthentication(pdbvendor);
16629                break;
16630            case sstalterdatabase:
16631                ret = new TAlterDatabaseStmt(pdbvendor);
16632                break;
16633            case sstAlterFaultGroup:
16634                ret = new TAlterFaultGroup(pdbvendor);
16635                break;
16636            case sstalterfunction:
16637                ret = new TAlterFunctionStmt(pdbvendor);
16638                break;
16639            case sstAlterLibrary:
16640                ret = new TAlterLibraryStmt(pdbvendor);
16641                break;
16642            case sstAlterNode:
16643                 ret = new TAlterNode(pdbvendor);
16644                break;
16645            case sstAlterNetworkInterface:
16646                ret = new TAlterNetworkInterface(pdbvendor);
16647                break;
16648            case sstAlterProjection:
16649                ret = new TAlterProjectionRename(pdbvendor);
16650                break;
16651            case sstAlterProfile:
16652                ret = new TAlterProfile(pdbvendor);
16653                break;
16654            case sstAlterResourcePool:
16655                ret = new TAlterResourcePool(pdbvendor);
16656                break;
16657            case sstAlterRole:
16658                ret = new TAlterRoleStmt(pdbvendor);
16659                break;
16660            case sstAlterSchema:
16661                ret = new TAlterSchemaStmt(pdbvendor);
16662                break;
16663            case sstAlterSubnet:
16664                ret = new TAlterSubnet(pdbvendor);
16665                break;
16666            case sstBegin:
16667            case sstStartTransaction:
16668                ret = new TBeginTran(pdbvendor);
16669                break;
16670            case sstReleaseSavepoint:
16671                ret = new TReleaseSavepointStmt(pdbvendor);
16672                break;
16673            case sstconnect:
16674                ret = new TConnectStmt(pdbvendor);
16675                break;
16676            case sstCreateAccessPolicy:
16677                ret = new TCreateAccessPolicy(pdbvendor);
16678                break;
16679            case sstCreateAuthentication:
16680                ret = new TCreateAuthentication(pdbvendor);
16681                break;
16682            case sstCreateFaultGroup:
16683                ret = new TCreateFaultGroup(pdbvendor);
16684                break;
16685            case sstCreateHCatalogSchema:
16686                ret = new TCreateHCatalogSchema(pdbvendor);
16687                break;
16688            case sstCreateSubnet:
16689                ret = new TCreateSubnet(pdbvendor);
16690                break;
16691            case sstcreateuser:
16692                ret = new TCreateUserStmt(pdbvendor);
16693                break;
16694            case sstDisconnect:
16695                ret = new TDisconnectStmt(pdbvendor);
16696                break;
16697            case sstDropAccessPolicy:
16698                ret = new TDropAccessPolicy(pdbvendor);
16699                break;
16700            case sstDropAggregateFunction:
16701                ret = new TDropAggregateFunction(pdbvendor);
16702                break;
16703            case sstDropAuthentication:
16704                ret = new TDropAuthentication(pdbvendor);
16705                break;
16706            case sstDropFaultGroup:
16707                ret = new TDropFaultGroup(pdbvendor);
16708                break;
16709            case sstdropfunction:
16710                ret = new TDropFunctionStmt(pdbvendor);
16711                break;
16712            case sstDropLibrary:
16713                ret = new TDropLibraryStmt(pdbvendor);
16714                break;
16715            case sstDropNetworkInterface:
16716                ret = new TDropNetworkInterface(pdbvendor);
16717                break;
16718            case sstdropprocedure:
16719                ret = new TDropProcedureStmt(pdbvendor);
16720                break;
16721            case sstDropProjection:
16722                ret = new TDropProjectionStmt(pdbvendor);
16723                break;
16724            case sstDropResourcePool:
16725                ret = new TDropResourcePool(pdbvendor);
16726                break;
16727            case sstdroprole:
16728                ret  = new TDropRoleStmt(pdbvendor);
16729                break;
16730            case sstdropschema:
16731                ret = new TDropSchemaSqlStatement(pdbvendor);
16732                break;
16733            case sstdropsequence:
16734                ret = new TDropSequenceStmt(pdbvendor);
16735                break;
16736            case sstDropSubnet:
16737                ret = new TDropSubnet(pdbvendor);
16738                break;
16739            case sstDropTextIndex:
16740                ret = new TDropTextIndex(pdbvendor);
16741                break;
16742            case sstDropTransformFunction:
16743                ret = new TDropTransformFunction(pdbvendor);
16744                break;
16745            case sstdropuser:
16746                ret = new TDropUserStmt(pdbvendor);
16747                break;
16748            case sstExplain:
16749            {
16750                ret = new TExplainPlan(pdbvendor);
16751                break;
16752            }
16753            case sstExportToVertica:
16754                ret = new TExportToVertica(pdbvendor);
16755                break;
16756            case sstProfile:
16757                ret = new TProfileStmt(pdbvendor);
16758                break;
16759            case sstset:
16760                ret = new TVerticaSetStmt(pdbvendor);
16761                break;
16762            case sstShow:
16763                ret = new TVerticaShow(pdbvendor);
16764                break;
16765            case sstcall:
16766                ret = new TCallStatement(pdbvendor);
16767                break;
16768            default:
16769            {
16770                ret = new TUnknownSqlStatement(pdbvendor);
16771                ret.sqlstatementtype = gnewsqlstatementtype;
16772                break;
16773            }
16774        }    // case
16775
16776        return ret;
16777    }
16778
16779
16780    TCustomSqlStatement iscouchbase(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
16781        TCustomSqlStatement ret = null;
16782
16783        gnewsqlstatementtype = ESqlStatementType.sstinvalid;
16784
16785        if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
16786                || (pcst.tokencode  == TBaseType.cmtslashstar)
16787                || (pcst.tokencode  == TBaseType.lexspace)
16788                || (pcst.tokencode  == TBaseType.lexnewline)
16789                || (pcst.tokentype == ETokenType.ttsemicolon) )
16790        {
16791            return null;
16792        }
16793
16794        int lcpos = pcst.posinlist;
16795        TSourceTokenList lcsourcetokenlist = pcst.container;
16796        TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
16797
16798        //subquery after semicolon or at first line
16799        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
16800        {
16801            int k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
16802            if ( k >0 )
16803            {
16804                ret = new TSelectSqlStatement(pdbvendor);
16805            }
16806
16807            return ret;
16808        }
16809
16810        //cte
16811        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
16812        {
16813            ret = findcte(pcst,pdbvendor);
16814            if ( (ret != null) )  return ret;
16815        }
16816
16817        gnewsqlstatementtype = findcouchbasecmd(pcst);
16818
16819        TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
16820        switch (gnewsqlstatementtype) {    //
16821            case sstinvalid:
16822            {
16823                ret = null;
16824
16825                if ( pstate == EFindSqlStateType.stnormal )
16826                {
16827                    if ( pcst.tokencode == TBaseType.label_begin )
16828                    {
16829                        ret = new TCommonBlock(pdbvendor);
16830                        gnewsqlstatementtype = ret.sqlstatementtype;
16831                    }
16832                    else if ( pcst.tokencode == TBaseType.rrw_declare )
16833                    {
16834                        ret = new TCommonBlock(pdbvendor);
16835                        gnewsqlstatementtype = ret.sqlstatementtype;
16836                    }
16837                    else if ( pcst.tokencode == TBaseType.rrw_begin )
16838                    {
16839                        ret = new TCommonBlock(pdbvendor);
16840                        gnewsqlstatementtype = ret.sqlstatementtype;
16841                    }
16842                    else if ( pcst.tokencode == TBaseType.rrw_procedure )
16843                    {
16844                        ret = new TPlsqlCreateProcedure(pdbvendor);
16845                        // ret.sqlstatementtype = ESqlStatementType.sstplsql_createprocedure;
16846                        gnewsqlstatementtype = ret.sqlstatementtype;
16847                    }
16848                    else if ( pcst.tokencode == TBaseType.rrw_function )
16849                    {
16850                        ret = new TPlsqlCreateFunction(pdbvendor);
16851                        // ret.sqlstatementtype = ESqlStatementType.sstplsql_createfunction;
16852                        gnewsqlstatementtype = ret.sqlstatementtype;
16853                    }
16854                    else if ( pcst.tokencode == TBaseType.rrw_package )
16855                    {
16856                        ret = new TPlsqlCreatePackage(pdbvendor);
16857                        // ret.sqlstatementtype = ESqlStatementType.sstplsql_createpackage;
16858                        gnewsqlstatementtype = ret.sqlstatementtype;
16859                    }
16860                }
16861                break;
16862            }
16863            case sstselect:
16864            {
16865                boolean lcisnewsql = true;
16866
16867                if ( pstate != EFindSqlStateType.stnormal )
16868                {
16869                    // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
16870                    if ( (lcprevsolidtoken != null) )
16871                    {
16872                        if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
16873                            lcisnewsql = false; //subqery
16874                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
16875                            lcisnewsql = false;
16876                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
16877                            lcisnewsql = false;
16878                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
16879                            lcisnewsql = false;
16880                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
16881                            lcisnewsql = false;
16882                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
16883                            lcisnewsql = false;
16884                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
16885                        {
16886                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
16887                                lcisnewsql = false;
16888                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
16889                                lcisnewsql = false;
16890                        }
16891
16892                        if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
16893                        {
16894                            TSourceToken lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
16895                            if ( (lcpprevsolidtoken != null) )
16896                            {
16897                                if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
16898                                    lcisnewsql = false;
16899                            }
16900                        }
16901
16902                    }
16903
16904
16905                    if ( (lccurrentsqlstatement != null) )
16906                    {
16907                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
16908                            lcisnewsql = false;
16909                    }
16910
16911                }
16912
16913                if ( lcisnewsql )
16914                    ret = new TSelectSqlStatement(pdbvendor);
16915
16916                break;
16917            }
16918            case sstinsert:
16919            {
16920                boolean lcisnewsql = true;
16921                if ( pstate != EFindSqlStateType.stnormal )
16922                {
16923                    if ( (lccurrentsqlstatement != null) )
16924                    {
16925
16926                    }
16927                }
16928
16929                if ( lcisnewsql )
16930                    ret = new TInsertSqlStatement(pdbvendor);
16931
16932                break;
16933            }
16934            case sstupdate:
16935            {
16936                boolean lcisnewsql = true;
16937                if ( pstate != EFindSqlStateType.stnormal )
16938                {
16939                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
16940                    if ( (lcprevsolidtoken != null) )
16941                    { //
16942                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
16943                            lcisnewsql = false;
16944                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
16945                            lcisnewsql = false;
16946                    }
16947
16948                    TSourceToken lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
16949                    if ( (lcnextsolidtoken != null) )
16950                    {
16951                        if ( lcnextsolidtoken.tokentype == ETokenType.ttleftparenthesis)
16952                        {
16953                            int k = lcsourcetokenlist.solidtokenafterpos(lcnextsolidtoken.posinlist,TBaseType.rrw_select,1,"(");
16954                            if ( k  == 0 ) lcisnewsql = false;
16955                        }
16956                    }
16957
16958
16959                    if ( (lccurrentsqlstatement != null) )
16960                    {
16961                    }
16962                }
16963
16964                if ( lcisnewsql )
16965                {
16966                    ret = new TUpdateSqlStatement(pdbvendor);
16967                    ret.dummytag = 1; // means set clause in update is not found yet, used to seperate set clause from set statement
16968                }
16969                break;
16970            }
16971            case sstdelete:
16972            {
16973                boolean lcisnewsql = true;
16974
16975                if ( pstate != EFindSqlStateType.stnormal )
16976                {
16977                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
16978                    if ( (lcprevsolidtoken != null) )
16979                    {
16980                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
16981                            lcisnewsql = false;
16982                    }
16983
16984                    if ( (lccurrentsqlstatement != null) )
16985                    {
16986                    }
16987                }
16988
16989                if ( lcisnewsql )
16990                    ret = new TDeleteSqlStatement(pdbvendor);
16991
16992                break;
16993            }
16994            case sstmerge:
16995            {
16996                ret = new TMergeSqlStatement(pdbvendor);
16997                ret.sqlstatementtype = gnewsqlstatementtype;
16998                break;
16999            }
17000            case sstcreateindex:
17001            {
17002                ret = new TCreateIndexSqlStatement(pdbvendor);
17003                break;
17004            }
17005            case sstdropindex:
17006            {
17007                ret = new TDropIndexSqlStatement(pdbvendor);
17008                break;
17009            }
17010            case sstBuildIndex:
17011                ret = new TTBuildIndexesStmt(pdbvendor);
17012                break;
17013            case sstinfer:
17014                ret = new TInferKeyspaceStmt(pdbvendor);
17015                break;
17016            case sstupsert:
17017                ret = new TUpsertStmt(pdbvendor);
17018                break;
17019            case sstExplain:
17020            {
17021                ret = new TExplainPlan(pdbvendor);
17022                break;
17023            }
17024            case sstprepare:
17025            {
17026                ret = new TExplainPlan(pdbvendor);
17027                ret.sqlstatementtype = ESqlStatementType.sstprepare;
17028                break;
17029            }
17030            case sstExecutePreparedStmt:
17031                ret = new TExecuteSqlStatement(pdbvendor);
17032                break;
17033            default:
17034            {
17035                ret = new TUnknownSqlStatement(pdbvendor);
17036                ret.sqlstatementtype = gnewsqlstatementtype;
17037                break;
17038            }
17039        }    // case
17040
17041        return ret;
17042    }
17043
17044    /**
17045     * Generic method for yacc parsers to find SQL command type.
17046     * Delegates to vendor-specific implementations where available.
17047     * Added temporarily for revert testing - uses token's dbvendor field.
17048     */
17049    public ESqlStatementType findCmdUsedByYacc(TSourceToken token) {
17050        EDbVendor vendor = token.getDbvendor();
17051        if (vendor == null) {
17052            return ESqlStatementType.sstinvalid;
17053        }
17054
17055        // Delegate to vendor-specific methods where they exist
17056        switch (vendor) {
17057            case dbvmssql:
17058                return findmssqlcmdusedbyyacc(token);
17059            case dbvsybase:
17060                return findsybasecmdusedbyyacc(token);
17061            // For other vendors, use generic command finding
17062            default:
17063                TSqlCmdList cmdList = getSqlCmdList(vendor);
17064                if (cmdList == null || cmdList.size() == 0) {
17065                    return ESqlStatementType.sstunknown;
17066                }
17067                // Use generic finddbcmd for vendors without specific yacc methods
17068                return finddbcmd(token, cmdList);
17069        }
17070    }
17071
17072}