001package gudusoft.gsqlparser;
002
003//import gudusoft.gsqlparser.*;
004import gudusoft.gsqlparser.stmt.*;
005import gudusoft.gsqlparser.stmt.bigquery.TExportDataStmt;
006import gudusoft.gsqlparser.stmt.couchbase.TInferKeyspaceStmt;
007import gudusoft.gsqlparser.stmt.couchbase.TTBuildIndexesStmt;
008import gudusoft.gsqlparser.stmt.databricks.*;
009import gudusoft.gsqlparser.stmt.hana.*;
010import gudusoft.gsqlparser.stmt.hive.*;
011import gudusoft.gsqlparser.stmt.informix.*;
012import gudusoft.gsqlparser.stmt.netezza.TNetezzaGenerateStatistics;
013import gudusoft.gsqlparser.stmt.netezza.TNetezzaGroomTable;
014import gudusoft.gsqlparser.stmt.postgresql.*;
015import gudusoft.gsqlparser.stmt.presto.TResetSessionStmt;
016import gudusoft.gsqlparser.stmt.redshift.*;
017import gudusoft.gsqlparser.stmt.snowflake.*;
018import gudusoft.gsqlparser.stmt.sparksql.*;
019import gudusoft.gsqlparser.stmt.sybase.TInsertBulk;
020import gudusoft.gsqlparser.stmt.sybase.TSybaseDeleteStatistics;
021import gudusoft.gsqlparser.stmt.sybase.TSybaseWritetext;
022import gudusoft.gsqlparser.stmt.teradata.*;
023import gudusoft.gsqlparser.stmt.mysql.*;
024import gudusoft.gsqlparser.stmt.db2.*;
025import gudusoft.gsqlparser.stmt.mssql.*;
026import gudusoft.gsqlparser.stmt.oracle.*;
027import gudusoft.gsqlparser.stmt.mdx.*;
028import gudusoft.gsqlparser.stmt.vertica.*;
029
030import java.util.ArrayList;
031import java.util.HashMap;
032
033
034public class TSqlCmds {
035
036    public class TSqlCmd {
037        int token1;
038        String token2,token3,token4,token5,token6,token7,token1Str;
039        public ESqlStatementType sqlstatementtype;
040
041        public  TSqlCmd(){
042            token1Str = "***";
043        }
044
045        public String toString(){
046
047            String retStr;
048            if (token1 <= TBaseType.rrw_abort){
049                retStr = TBaseType.getTextByTokenCode(token1);
050            }else {
051                retStr = token1Str;
052            }
053
054            if (token2.trim().length() > 0){
055                retStr = retStr +" "+token2.replace("*"," ");
056            }
057            if (token3.trim().length() > 0){
058                retStr = retStr +" "+token3;
059            }
060            if (token4.trim().length() > 0){
061                retStr = retStr +" "+token4;
062            }
063            if (token5.trim().length() > 0){
064                retStr = retStr +" "+token5;
065            }
066            if (token6.trim().length() > 0){
067                retStr = retStr +" "+token6;
068            }
069            if (token7.trim().length() > 0){
070                retStr = retStr +" "+token7;
071            }
072            return  retStr;
073        }
074    }
075
076    public class TSqlCmdList<TSqlCmd> extends ArrayList<TSqlCmds.TSqlCmd>
077    {
078        private HashMap<Integer, Integer> startIndexMap;
079
080        public TSqlCmdList()
081        {
082            super();
083            startIndexMap = new HashMap<Integer, Integer>();
084        }
085
086        public boolean add(TSqlCmds.TSqlCmd o) {
087            boolean ret = super.add(o);
088
089            // add first occurrence of a token to a hash that gives index of
090            // first entry that matches that first token
091            if (!startIndexMap.containsKey(o.token1))
092            {
093                startIndexMap.put(o.token1, size() - 1);
094            }
095
096            return ret;
097        }
098
099        int getStartIndex(int token1)
100        {
101            Integer startIndex = startIndexMap.get(token1);
102            if (startIndex == null)
103                return -1;
104            else
105                return startIndex.intValue();
106        }
107    }
108
109    TSqlCmdList mssqlcmds,oraclecmds,db2cmds,mysqlcmds,accesscmds,mdxcmds,teradatacmds,
110            postgresqlcmds,netezzacmds,sybasecmds,informixcmds,hivecmds,greenplumcmds,
111            redshiftcmds,hanacmds,verticacmds,couchbasecmds,snowflakecmds,bigquerycmds,
112            sparksqlcmds,prestocmds,athenacmds,databrickscmds,gaussdbcmds;
113
114    public TSqlCmdList getSqlCmdList(EDbVendor dbVendor){
115        TSqlCmdList sqlCmdList = null;
116        switch(dbVendor){
117            case dbvmssql:
118                if (mssqlcmds.size() == 0) {initmssqlcmds();}
119                sqlCmdList = mssqlcmds;
120                break;
121            case dbvoracle:
122                if (oraclecmds.size() == 0) {initoraclecmds();}
123                sqlCmdList = oraclecmds;
124                break;
125            case dbvmysql:
126                if (mysqlcmds.size() == 0) {initmysqlcmds();}
127                sqlCmdList = mysqlcmds;
128                break;
129            case dbvdb2:
130                if (db2cmds.size() == 0) {initdb2cmds();}
131                sqlCmdList = db2cmds;
132                break;
133            case dbvmdx:
134                if (mdxcmds.size() == 0) {initmdxcmds();}
135                sqlCmdList = mdxcmds;
136                break;
137            case dbvteradata:
138                if (teradatacmds.size() == 0) {initteradatacmds();}
139                sqlCmdList = teradatacmds;
140                break;
141            case dbvpostgresql:
142                if (postgresqlcmds.size() == 0) {initpostgresqlcmds();}
143                sqlCmdList = postgresqlcmds;
144                break;
145            case dbvredshift:
146                if (redshiftcmds.size() == 0) {initredshiftcmds();}
147                sqlCmdList = redshiftcmds;
148                break;
149            case dbvnetezza:
150                if (netezzacmds.size() == 0) {initnetezzacmds();}
151                sqlCmdList = netezzacmds;
152                break;
153            case dbvsybase:
154                if (sybasecmds.size() == 0) {initsybasecmds();}
155                sqlCmdList = sybasecmds;
156                break;
157            case dbvinformix:
158                if (informixcmds.size() == 0) {initinformixcmds();}
159                sqlCmdList = informixcmds;
160                break;
161            case dbvhive:
162                if (hivecmds.size() == 0) {inithivecmds();}
163                sqlCmdList = hivecmds;
164                break;
165            case dbvimpala:
166                if (hivecmds.size() == 0) {inithivecmds();
167                }
168                sqlCmdList = hivecmds;
169                break;
170            case dbvgreenplum:
171                if (greenplumcmds.size() == 0) {initgreenplumcmds();
172                }
173                sqlCmdList = greenplumcmds;
174                break;
175            case dbvhana:
176                if (hanacmds.size() == 0) {inithanacmds();
177                }
178                sqlCmdList = hanacmds;
179                break;
180            case dbvvertica:
181                if (verticacmds.size() == 0) {initverticacmds();
182                }
183                sqlCmdList = verticacmds;
184                break;
185            case dbvcouchbase:
186                if (couchbasecmds.size() == 0) {initcouchbasecmds();
187                }
188                sqlCmdList = couchbasecmds;
189                break;
190            case dbvsnowflake:
191                if (snowflakecmds.size() == 0) {initsnowflakecmds();
192                }
193                sqlCmdList = snowflakecmds;
194                break;
195            case dbvbigquery:
196                if (bigquerycmds.size() == 0) {initbigquerycmds();
197                }
198                sqlCmdList = bigquerycmds;
199                break;
200            case dbvsparksql:
201                if (sparksqlcmds.size() == 0) {initsparksqlcmds();
202                }
203                sqlCmdList = sparksqlcmds;
204                break;
205            case dbvpresto:
206                if (prestocmds.size() == 0) {initprestocmds();
207                }
208                sqlCmdList = prestocmds;
209                break;
210            case dbvathena:
211                if (athenacmds.size() == 0) {initathenacmds();
212                }
213                sqlCmdList = athenacmds;
214                break;
215            case dbvdatabricks:
216                if (databrickscmds.size() == 0) {initdatabrickscmds();
217                }
218                sqlCmdList = databrickscmds;
219                break;
220            case dbvgaussdb:
221                if (gaussdbcmds.size() == 0) {initgaussdbcmds();
222                }
223                sqlCmdList = gaussdbcmds;
224                break;
225        }
226        return  sqlCmdList;
227    }
228
229    ESqlStatementType gnewsqlstatementtype;
230
231   // int  mssqlcmdscurrentcount,oraclecmdscurrentcount,db2cmdscurrentcount,mysqlcmdscurrentcount,mdxcmdscurrentcount ;
232
233    public TSqlCmds(){
234//        mssqlcmdscurrentcount = 0;
235//        oraclecmdscurrentcount = 0;
236//        db2cmdscurrentcount = 0;
237//        mysqlcmdscurrentcount = 0;
238//        mdxcmdscurrentcount = 0;
239        mssqlcmds = new TSqlCmdList();
240        sybasecmds = new TSqlCmdList();
241        oraclecmds = new TSqlCmdList();
242        db2cmds = new TSqlCmdList();
243        mysqlcmds = new TSqlCmdList();
244        accesscmds = new TSqlCmdList();
245        mdxcmds = new TSqlCmdList();
246        teradatacmds = new TSqlCmdList();
247        postgresqlcmds = new TSqlCmdList();
248        netezzacmds = new TSqlCmdList();
249        informixcmds = new TSqlCmdList();
250        hivecmds = new TSqlCmdList();
251        greenplumcmds = new TSqlCmdList();
252        redshiftcmds = new TSqlCmdList();
253        hanacmds = new TSqlCmdList();
254        verticacmds = new TSqlCmdList();
255        couchbasecmds = new TSqlCmdList();
256        snowflakecmds = new TSqlCmdList();
257        bigquerycmds = new TSqlCmdList();
258        sparksqlcmds = new TSqlCmdList();
259        prestocmds = new TSqlCmdList();
260        athenacmds = new TSqlCmdList();
261        databrickscmds = new TSqlCmdList();
262        gaussdbcmds = new TSqlCmdList();
263    }
264
265    void addcmds(EDbVendor dbVendor, ESqlStatementType psqlstatementtype, int ptoken1, String ptoken2, String ptoken3, String ptoken4, String ptoken5,String ptoken6,String ptoken7){
266      TSqlCmd sc = new TSqlCmd();
267      sc.sqlstatementtype = psqlstatementtype;
268      sc.token1 = ptoken1;
269      sc.token2 = ptoken2;
270      sc.token3 = ptoken3;
271      sc.token4 = ptoken4;
272      sc.token5 = ptoken5;
273      sc.token6 = ptoken6;
274      sc.token7 = ptoken7;
275      switch(dbVendor){
276          case dbvmssql:
277              if (sc.token1 > TBaseType.rrw_abort){
278                  switch (sc.token1){
279                      case TBaseType.rrw_sqlserver_throw:
280                          sc.token1Str = "throw";
281                          break;
282                      default:
283                          break;
284                  }
285              }
286              mssqlcmds.add(sc);
287              break;
288          case dbvoracle:
289              oraclecmds.add(sc);
290              break;
291          case dbvmysql:
292              if (sc.token1 > TBaseType.rrw_abort){
293                  switch (sc.token1){
294                      case TBaseType.rrw_mysql_delimiter:
295                          sc.token1Str = "delimiter";
296                          break;
297                      case TBaseType.rrw_mysql_desc:
298                          sc.token1Str = "desc";
299                          break;
300                      default:
301                          break;
302                  }
303              }
304              mysqlcmds.add(sc);
305              break;
306          case dbvdb2:
307              db2cmds.add(sc);
308              break;
309          case dbvmdx:
310              mdxcmds.add(sc);
311              break;
312          case dbvteradata:
313              if (sc.token1 > TBaseType.rrw_abort){
314                  switch (sc.token1){
315                      case TBaseType.rrw_teradata_wait:
316                          sc.token1Str = "wait";
317                          break;
318                      case TBaseType.rrw_teradata_using:
319                          sc.token1Str = "using";
320                          break;
321                      case TBaseType.rrw_teradata_upd:
322                          sc.token1Str = "update";
323                          break;
324                      case TBaseType.rrw_teradata_sel:
325                          sc.token1Str = "select";
326                          break;
327                      case TBaseType.rrw_teradata_restart:
328                          sc.token1Str = "restart";
329                          break;
330                      case TBaseType.rrw_teradata_position:
331                          sc.token1Str = "position";
332                          break;
333                      case TBaseType.rrw_teradata_modify:
334                          sc.token1Str = "modify";
335                          break;
336                      case TBaseType.rrw_teradata_logon:
337                          sc.token1Str = "logon";
338                          break;
339                      case TBaseType.rrw_teradata_locking:
340                          sc.token1Str = "locking";
341                          break;
342                      case TBaseType.rrw_teradata_ins:
343                          sc.token1Str = "insert";
344                          break;
345                      case TBaseType.rrw_teradata_help:
346                          sc.token1Str = "help";
347                          break;
348                      case TBaseType.rrw_teradata_give:
349                          sc.token1Str = "give";
350                          break;
351                      case TBaseType.rrw_teradata_echo:
352                          sc.token1Str = "echo";
353                          break;
354                      case TBaseType.rrw_teradata_dump:
355                          sc.token1Str = "dump";
356                          break;
357                      case TBaseType.rrw_teradata_diagnostic:
358                          sc.token1Str = "diagnostic";
359                          break;
360                      case TBaseType.rrw_teradata_del:
361                          sc.token1Str = "delete";
362                          break;
363                      case TBaseType.rrw_teradata_cv:
364                          sc.token1Str = "create view";
365                          break;
366                      case TBaseType.rrw_teradata_collect:
367                          sc.token1Str = "collect";
368                          break;
369                      case TBaseType.rrw_teradata_cm:
370                          sc.token1Str = "create macro";
371                          break;
372                      default:
373                          break;
374                  }
375              }
376              teradatacmds.add(sc);
377              break;
378          case dbvpostgresql:
379              if (sc.token1 > TBaseType.rrw_abort){
380                  switch (sc.token1){
381                      case TBaseType.rrw_postgresql_cluster:
382                          sc.token1Str = "cluster";
383                          break;
384                      case TBaseType.rrw_postgresql_copy:
385                          sc.token1Str = "copy";
386                          break;
387                      case TBaseType.rrw_postgresql_discard:
388                          sc.token1Str = "discard";
389                          break;
390                      case TBaseType.rrw_postgresql_listen:
391                          sc.token1Str = "listen";
392                          break;
393                      case TBaseType.rrw_postgresql_notify:
394                          sc.token1Str = "notify";
395                          break;
396                      case TBaseType.rrw_postgresql_reassign:
397                          sc.token1Str = "reassign";
398                          break;
399                      case TBaseType.rrw_postgresql_reindex:
400                          sc.token1Str = "reindex";
401                          break;
402                      case TBaseType.rrw_postgresql_security:
403                          sc.token1Str = "security";
404                          break;
405                      case TBaseType.rrw_postgresql_unlisten:
406                          sc.token1Str = "unlisten";
407                          break;
408                      default:
409                          break;
410                  }
411              }
412              postgresqlcmds.add(sc);
413              break;
414          case dbvredshift:
415              if (sc.token1 > TBaseType.rrw_abort){
416                  switch (sc.token1){
417                      case TBaseType.rrw_redshift_cancel:
418                          sc.token1Str = "cancel";
419                          break;
420                      case TBaseType.rrw_redshift_copy:
421                          sc.token1Str = "copy";
422                          break;
423                      case TBaseType.rrw_redshift_unload:
424                          sc.token1Str = "unload";
425                          break;
426                      case TBaseType.rrw_redshift_vacuum:
427                          sc.token1Str = "vacuum";
428                          break;
429                      default:
430                          break;
431                  }
432              }
433              redshiftcmds.add(sc);
434              break;
435          case dbvnetezza:
436              if (sc.token1 > TBaseType.rrw_abort){
437                  switch (sc.token1){
438                      case TBaseType.rrw_netezza_copy:
439                          sc.token1Str = "copy";
440                          break;
441                      case TBaseType.rrw_netezza_generate:
442                          sc.token1Str = "generate";
443                          break;
444                      case TBaseType.rrw_netezza_groom:
445                          sc.token1Str = "groom";
446                          break;
447                      default:
448                          break;
449                  }
450              }
451              netezzacmds.add(sc);
452              break;
453          case dbvsybase:
454
455              if (sc.token1 > TBaseType.rrw_abort){
456                  switch (sc.token1){
457                      case TBaseType.rrw_sybase_dump:
458                          sc.token1Str = "dump";
459                          break;
460                      default:
461                          break;
462                  }
463              }
464              sybasecmds.add(sc);
465              break;
466          case dbvinformix:
467              if (sc.token1 > TBaseType.rrw_abort){
468                  switch (sc.token1){
469                      case TBaseType.rrw_informix_connect_to:
470                          sc.token1Str = "connect to";
471                          break;
472                      case TBaseType.rrw_informix_info:
473                          sc.token1Str = "info";
474                          break;
475                      case TBaseType.rrw_informix_output:
476                          sc.token1Str = "output";
477                          break;
478                      case TBaseType.rrw_informix_put:
479                          sc.token1Str = "put";
480                          break;
481                      case TBaseType.rrw_informix_unload:
482                          sc.token1Str = "unload";
483                          break;
484                      case TBaseType.rrw_informix_whenever:
485                          sc.token1Str = "whenever";
486                          break;
487                      default:
488                          break;
489                  }
490              }
491              informixcmds.add(sc);
492              break;
493          case dbvhive:
494              if (sc.token1 > TBaseType.rrw_abort){
495                  switch (sc.token1){
496                      case TBaseType.rrw_hive_desc:
497                          sc.token1Str = "desc";
498                          break;
499                      case TBaseType.rrw_hive_export:
500                          sc.token1Str = "export";
501                          break;
502                      case TBaseType.rrw_hive_import:
503                          sc.token1Str = "import";
504                          break;
505                      case TBaseType.rrw_hive_msck:
506                          sc.token1Str = "msck";
507                          break;
508                      default:
509                          break;
510                  }
511              }
512              hivecmds.add(sc);
513              break;
514          case dbvimpala:
515              hivecmds.add(sc);
516              break;
517          case dbvgreenplum:
518              if (sc.token1 > TBaseType.rrw_abort){
519                  switch (sc.token1){
520                      case TBaseType.rrw_greenplum_cluster:
521                          sc.token1Str = "cluster";
522                          break;
523                      case TBaseType.rrw_greenplum_copy:
524                          sc.token1Str = "copy";
525                          break;
526                      case TBaseType.rrw_greenplum_reassign:
527                          sc.token1Str = "reassign";
528                          break;
529                      case TBaseType.rrw_greenplum_reindex:
530                          sc.token1Str = "reindex";
531                          break;
532                      case TBaseType.rrw_greenplum_vacuum:
533                          sc.token1Str = "vacuum";
534                          break;
535                      case TBaseType.rrw_greenplum_analyse:
536                          sc.token1Str = "analyse";
537                          break;
538                      default:
539                          break;
540                  }
541              }
542              greenplumcmds.add(sc);
543              break;
544          case dbvhana:
545              if (sc.token1 > TBaseType.rrw_abort){
546                  switch (sc.token1){
547                      case TBaseType.rrw_hana_unset:
548                          sc.token1Str = "unset";
549                          break;
550                      case TBaseType.rrw_hana_upsert:
551                          sc.token1Str = "upsert";
552                          break;
553                      case TBaseType.rrw_hana_import:
554                          sc.token1Str = "import";
555                          break;
556                      case TBaseType.rrw_hana_export:
557                          sc.token1Str = "export";
558                          break;
559                      case TBaseType.rrw_hana_recover:
560                          sc.token1Str = "recover";
561                          break;
562                      case TBaseType.rrw_hana_unload:
563                          sc.token1Str = "unload";
564                          break;
565                      default:
566                          break;
567                  }
568              }
569              hanacmds.add(sc);
570              break;
571          case dbvvertica:
572              verticacmds.add(sc);
573              break;
574          case dbvcouchbase:
575              couchbasecmds.add(sc);
576              break;
577          case dbvsnowflake:
578              snowflakecmds.add(sc);
579              break;
580          case dbvbigquery:
581              bigquerycmds.add(sc);
582              break;
583          case dbvsparksql:
584              sparksqlcmds.add(sc);
585              break;
586          case dbvpresto:
587              prestocmds.add(sc);
588              break;
589          case dbvathena:
590              athenacmds.add(sc);
591              break;
592          case dbvdatabricks:
593              databrickscmds.add(sc);
594              break;
595          case dbvgaussdb:
596              gaussdbcmds.add(sc);
597              break;
598      }
599  }
600
601  void addmssqlcmds(ESqlStatementType psqlstatementtype, int ptoken1, String ptoken2, String ptoken3, String ptoken4, String ptoken5, String ptoken6, String ptoken7){
602    addcmds(EDbVendor.dbvmssql,psqlstatementtype,ptoken1,ptoken2,ptoken3,ptoken4,ptoken5,ptoken6,ptoken7);
603  }
604
605void addsybasecmds(ESqlStatementType psqlstatementtype, int ptoken1, String ptoken2, String ptoken3, String ptoken4, String ptoken5, String ptoken6, String ptoken7){
606  addcmds(EDbVendor.dbvsybase,psqlstatementtype,ptoken1,ptoken2,ptoken3,ptoken4,ptoken5,ptoken6,ptoken7);
607}
608
609void addpostgresqlcmds(ESqlStatementType psqlstatementtype, int ptoken1, String ptoken2, String ptoken3, String ptoken4, String ptoken5, String ptoken6, String ptoken7){
610  addcmds(EDbVendor.dbvpostgresql,psqlstatementtype,ptoken1,ptoken2,ptoken3,ptoken4,ptoken5,ptoken6,ptoken7);
611}
612
613    void addgaussdbcmds(ESqlStatementType psqlstatementtype, int ptoken1, String ptoken2, String ptoken3, String ptoken4, String ptoken5, String ptoken6, String ptoken7){
614        addcmds(EDbVendor.dbvgaussdb,psqlstatementtype,ptoken1,ptoken2,ptoken3,ptoken4,ptoken5,ptoken6,ptoken7);
615    }
616
617void addredshiftcmds(ESqlStatementType psqlstatementtype, int ptoken1, String ptoken2, String ptoken3, String ptoken4, String ptoken5, String ptoken6, String ptoken7){
618    addcmds(EDbVendor.dbvredshift,psqlstatementtype,ptoken1,ptoken2,ptoken3,ptoken4,ptoken5,ptoken6,ptoken7);
619}
620
621    void addnetezzacmds(ESqlStatementType psqlstatementtype, int ptoken1, String ptoken2, String ptoken3, String ptoken4, String ptoken5, String ptoken6, String ptoken7){
622  addcmds(EDbVendor.dbvnetezza,psqlstatementtype,ptoken1,ptoken2,ptoken3,ptoken4,ptoken5,ptoken6,ptoken7);
623}
624
625
626void addoraclecmds(ESqlStatementType psqlstatementtype, int ptoken1, String ptoken2, String ptoken3, String ptoken4, String ptoken5, String ptoken6, String ptoken7){
627  addcmds(EDbVendor.dbvoracle,psqlstatementtype,ptoken1,ptoken2,ptoken3,ptoken4,ptoken5,ptoken6,ptoken7);
628}
629
630void addhivecmds(ESqlStatementType psqlstatementtype, int ptoken1, String ptoken2, String ptoken3, String ptoken4, String ptoken5, String ptoken6, String ptoken7){
631  addcmds(EDbVendor.dbvhive,psqlstatementtype,ptoken1,ptoken2,ptoken3,ptoken4,ptoken5,ptoken6,ptoken7);
632}
633
634void addmysqlcmds(ESqlStatementType psqlstatementtype, int ptoken1, String ptoken2, String ptoken3, String ptoken4, String ptoken5, String ptoken6, String ptoken7){
635  addcmds(EDbVendor.dbvmysql,psqlstatementtype,ptoken1,ptoken2,ptoken3,ptoken4,ptoken5,ptoken6,ptoken7);
636}
637
638void addsparksqlcmds(ESqlStatementType psqlstatementtype, int ptoken1, String ptoken2, String ptoken3, String ptoken4, String ptoken5, String ptoken6, String ptoken7){
639    addcmds(EDbVendor.dbvsparksql,psqlstatementtype,ptoken1,ptoken2,ptoken3,ptoken4,ptoken5,ptoken6,ptoken7);
640}
641
642void addprestocmds(ESqlStatementType psqlstatementtype, int ptoken1, String ptoken2, String ptoken3, String ptoken4, String ptoken5, String ptoken6, String ptoken7){
643    addcmds(EDbVendor.dbvpresto,psqlstatementtype,ptoken1,ptoken2,ptoken3,ptoken4,ptoken5,ptoken6,ptoken7);
644}
645
646void addathenacmds(ESqlStatementType psqlstatementtype, int ptoken1, String ptoken2, String ptoken3, String ptoken4, String ptoken5, String ptoken6, String ptoken7){
647    addcmds(EDbVendor.dbvathena,psqlstatementtype,ptoken1,ptoken2,ptoken3,ptoken4,ptoken5,ptoken6,ptoken7);
648}
649
650void adddatabrickscmds(ESqlStatementType psqlstatementtype, int ptoken1, String ptoken2, String ptoken3, String ptoken4, String ptoken5, String ptoken6, String ptoken7){
651    addcmds(EDbVendor.dbvdatabricks,psqlstatementtype,ptoken1,ptoken2,ptoken3,ptoken4,ptoken5,ptoken6,ptoken7);
652}
653
654
655void adddb2cmds(ESqlStatementType psqlstatementtype, int ptoken1, String ptoken2, String ptoken3, String ptoken4, String ptoken5, String ptoken6, String ptoken7){
656  addcmds(EDbVendor.dbvdb2,psqlstatementtype,ptoken1,ptoken2,ptoken3,ptoken4,ptoken5,ptoken6,ptoken7);
657}
658
659void addmdxcmds(ESqlStatementType psqlstatementtype, int ptoken1, String ptoken2, String ptoken3, String ptoken4, String ptoken5, String ptoken6, String ptoken7){
660  addcmds(EDbVendor.dbvmdx,psqlstatementtype,ptoken1,ptoken2,ptoken3,ptoken4,ptoken5,ptoken6,ptoken7);
661}
662
663void addteradatacmds(ESqlStatementType psqlstatementtype, int ptoken1, String ptoken2, String ptoken3, String ptoken4, String ptoken5, String ptoken6, String ptoken7){
664  addcmds(EDbVendor.dbvteradata,psqlstatementtype,ptoken1,ptoken2,ptoken3,ptoken4,ptoken5,ptoken6,ptoken7);
665}
666
667void addinformixcmds(ESqlStatementType psqlstatementtype, int ptoken1, String ptoken2, String ptoken3, String ptoken4, String ptoken5, String ptoken6, String ptoken7){
668  addcmds(EDbVendor.dbvinformix,psqlstatementtype,ptoken1,ptoken2,ptoken3,ptoken4,ptoken5,ptoken6,ptoken7);
669}
670
671void addgreenplumcmds(ESqlStatementType psqlstatementtype, int ptoken1, String ptoken2, String ptoken3, String ptoken4, String ptoken5, String ptoken6, String ptoken7){
672  addcmds(EDbVendor.dbvgreenplum,psqlstatementtype,ptoken1,ptoken2,ptoken3,ptoken4,ptoken5,ptoken6,ptoken7);
673}
674
675void addhanacmds(ESqlStatementType psqlstatementtype, int ptoken1, String ptoken2, String ptoken3, String ptoken4, String ptoken5, String ptoken6, String ptoken7){
676    addcmds(EDbVendor.dbvhana,psqlstatementtype,ptoken1,ptoken2,ptoken3,ptoken4,ptoken5,ptoken6,ptoken7);
677}
678
679void addverticacmds(ESqlStatementType psqlstatementtype, int ptoken1, String ptoken2, String ptoken3, String ptoken4, String ptoken5, String ptoken6, String ptoken7){
680    addcmds(EDbVendor.dbvvertica,psqlstatementtype,ptoken1,ptoken2,ptoken3,ptoken4,ptoken5,ptoken6,ptoken7);
681}
682
683void addcouchbasecmds(ESqlStatementType psqlstatementtype, int ptoken1, String ptoken2, String ptoken3, String ptoken4, String ptoken5, String ptoken6, String ptoken7){
684    addcmds(EDbVendor.dbvcouchbase,psqlstatementtype,ptoken1,ptoken2,ptoken3,ptoken4,ptoken5,ptoken6,ptoken7);
685}
686
687void addsnowflakecmds(ESqlStatementType psqlstatementtype, int ptoken1, String ptoken2, String ptoken3, String ptoken4, String ptoken5, String ptoken6, String ptoken7){
688        addcmds(EDbVendor.dbvsnowflake,psqlstatementtype,ptoken1,ptoken2,ptoken3,ptoken4,ptoken5,ptoken6,ptoken7);
689    }
690
691void addbigquerycmds(ESqlStatementType psqlstatementtype, int ptoken1, String ptoken2, String ptoken3, String ptoken4, String ptoken5, String ptoken6, String ptoken7){
692    addcmds(EDbVendor.dbvbigquery,psqlstatementtype,ptoken1,ptoken2,ptoken3,ptoken4,ptoken5,ptoken6,ptoken7);
693}
694
695ESqlStatementType finddbcmd(TSourceToken ptoken,TSqlCmdList pdbcmds ){
696    ESqlStatementType ret = ESqlStatementType.sstinvalid;
697    if (ptoken.tokentype != ETokenType.ttkeyword){return ret;}
698    int lcchecktokens = 0;
699
700    // Look up initial command array index in hash using first token code
701
702    int startIndex = pdbcmds.getStartIndex(ptoken.tokencode);
703    if (startIndex == -1)
704        return ret;
705
706    for(int i=startIndex; i<pdbcmds.size();i++){
707        if ( ((TSqlCmd)pdbcmds.get(i)).token1 != ptoken.tokencode)
708        {
709            if (lcchecktokens > 0 ) {break;}
710            else
711              continue;
712        }
713        else
714        {
715            if (lcchecktokens < 1)
716            {lcchecktokens = 1;}
717        }
718
719        // first cmd tokentext is same, then check second
720        if ((((TSqlCmd)pdbcmds.get(i)).token2 == "") || (((TSqlCmd)pdbcmds.get(i)).token2 == " ") )
721        {
722            ret = ((TSqlCmd)pdbcmds.get(i)).sqlstatementtype;
723            if (((TSqlCmd)pdbcmds.get(i)).token2 == "")
724              break;
725        }
726
727        int k;
728        TSourceToken lcnextsolidtoken  = nextsolidtoken(ptoken);
729        if (lcnextsolidtoken == null)  break;
730        if ((((TSqlCmd)pdbcmds.get(i)).token2 == "*"))// && (lcchecktokens < 2) ) // can match any string
731        {
732            k = 0;
733        }
734        else {
735          k = TBaseType.mycomparetext(lcnextsolidtoken.astext ,((TSqlCmd)pdbcmds.get(i)).token2);
736        }
737        if (k != 0)
738        {
739            if (lcchecktokens > 1)  break;
740            else
741              continue;
742        }
743        else if (k == 0)
744        {
745            if (lcchecktokens < 2)
746              lcchecktokens = 2;
747        }
748
749        // second cmd tokentext is same, then check third
750        if ((((TSqlCmd)pdbcmds.get(i)).token3 == "") || (((TSqlCmd)pdbcmds.get(i)).token3 == " "))
751        {
752            ret = ((TSqlCmd)pdbcmds.get(i)).sqlstatementtype;
753            if (((TSqlCmd)pdbcmds.get(i)).token3 == "")
754              break;
755        }
756
757        TSourceToken lcnnextsolidtoken = nextsolidtoken(lcnextsolidtoken);
758        if (lcnnextsolidtoken == null) break;
759        if ((((TSqlCmd)pdbcmds.get(i)).token3 == "*"))// && (lcchecktokens < 3))  // can match any string
760          k = 0;
761        else
762        {
763            k = TBaseType.mycomparetext(lcnnextsolidtoken.astext, ((TSqlCmd)pdbcmds.get(i)).token3);
764        }
765        if (k != 0)
766        {
767            if (lcchecktokens > 2)  {break;}
768            else
769              continue;
770        }
771        else
772        {
773            if (lcchecktokens < 3)
774            {lcchecktokens = 3;}
775        }
776
777        // third cmd tokentext is same, then check fourth
778        if ((((TSqlCmd)pdbcmds.get(i)).token4 == "") || (((TSqlCmd)pdbcmds.get(i)).token4 == " "))
779        {
780            ret = ((TSqlCmd)pdbcmds.get(i)).sqlstatementtype;
781            if (((TSqlCmd)pdbcmds.get(i)).token4 == "")
782              break;
783        }
784
785        TSourceToken lcnnnextsolidtoken = nextsolidtoken(lcnnextsolidtoken);
786        if (lcnnnextsolidtoken == null) { break;}
787        if ((((TSqlCmd)(pdbcmds.get(i))).token4 == "*"))// && (lcchecktokens < 4))  // can match any string
788        {k = 0;}
789        else
790        {k = TBaseType.mycomparetext(lcnnnextsolidtoken.astext,((TSqlCmd)pdbcmds.get(i)).token4);}
791
792        if (k != 0 )
793        {
794            if (lcchecktokens > 3)  break;
795            else
796              continue;
797        }
798        else
799        {
800            if (lcchecktokens < 4)
801              lcchecktokens = 4;
802        }
803
804        // fourth cmd tokentext is same, then check fiveth
805        if ((((TSqlCmd)pdbcmds.get(i)).token5 == "") || (((TSqlCmd)pdbcmds.get(i)).token5 == " ") )
806        {
807            ret = ((TSqlCmd)pdbcmds.get(i)).sqlstatementtype;
808            if (((TSqlCmd)pdbcmds.get(i)).token5 == "")
809              break;
810        }
811
812        TSourceToken lcnnnnextsolidtoken = nextsolidtoken(lcnnnextsolidtoken);
813        if (lcnnnnextsolidtoken == null)  break;
814        if ((((TSqlCmd)pdbcmds.get(i)).token5 == "*") )//&& (lcchecktokens < 5) ) // can match any string
815        { k = 0;}
816        else
817        { k = TBaseType.mycomparetext(lcnnnnextsolidtoken.astext, ((TSqlCmd)pdbcmds.get(i)).token5);}
818        if ( k != 0)
819        {
820            if (lcchecktokens > 4)  break;
821            else
822              continue;
823        }
824        else
825        {
826            if (lcchecktokens < 5)
827              lcchecktokens = 5;
828        }
829
830        // fiveth cmd tokentext is same, then check sixth
831        if ((((TSqlCmd)pdbcmds.get(i)).token6 == "") || (((TSqlCmd)pdbcmds.get(i)).token6 == " "))
832        {
833            ret = ((TSqlCmd)pdbcmds.get(i)).sqlstatementtype;
834            if (((TSqlCmd)pdbcmds.get(i)).token6 == "")
835              break;
836        }
837
838        TSourceToken lcnnnnnextsolidtoken = nextsolidtoken(lcnnnnextsolidtoken);
839        if (lcnnnnnextsolidtoken == null)  break;
840        if ((((TSqlCmd)pdbcmds.get(i)).token6 == "*"))// && (lcchecktokens < 6)) // can match any string
841        {k = 0;}
842        else
843        { k = TBaseType.mycomparetext(lcnnnnnextsolidtoken.astext,((TSqlCmd)pdbcmds.get(i)).token6);}
844        if (k != 0)
845        {
846            if (lcchecktokens > 5) break;
847            else
848              continue;
849        }
850        else
851        {
852            if (lcchecktokens < 6)
853              lcchecktokens = 6;
854        }
855
856        // sixth cmd tokentext is same, then check seventh
857        if ((((TSqlCmd)pdbcmds.get(i)).token7 == "") || (((TSqlCmd)pdbcmds.get(i)).token7 == " "))
858        {
859            ret = ((TSqlCmd)pdbcmds.get(i)).sqlstatementtype;
860            if(((TSqlCmd)pdbcmds.get(i)).token7 == "")
861              break;
862        }
863
864        TSourceToken lcnnnnnnextsolidtoken = nextsolidtoken(lcnnnnnextsolidtoken);
865        if (lcnnnnnnextsolidtoken == null) break;
866        if ((((TSqlCmd)pdbcmds.get(i)).token7 == "*"))// && (lcchecktokens < 7)) // can match any string
867        {k = 0;}
868        else
869        { k = TBaseType.mycomparetext(lcnnnnnnextsolidtoken.astext,((TSqlCmd)pdbcmds.get(i)).token7);}
870        if (k  != 0)
871        {
872            if (lcchecktokens > 6 ) break;
873            else
874              continue;
875        }
876        else
877        {
878            if (lcchecktokens < 7)
879            {lcchecktokens = 7;}
880            ret = ((TSqlCmd)pdbcmds.get(i)).sqlstatementtype;
881            break;
882        }
883
884
885    } //for
886    return ret;
887}
888
889TSourceToken nextsolidtoken(TSourceToken ptoken){
890    TSourceToken ret = null;
891    if (ptoken.container == null) {return ret;}
892    ret = ptoken.container.nextsolidtoken(ptoken,1,false);
893
894    return ret;
895}
896
897void initteradatacmds(){
898
899 addteradatacmds(ESqlStatementType.sstteradataabort, TBaseType.rrw_abort,  " "," "," "," "," "," ");
900 addteradatacmds(ESqlStatementType.sstteradataalterconstraint, TBaseType.rrw_alter,"constraint"," "," "," "," "," ");
901 addteradatacmds(ESqlStatementType.sstteradataalterfunction, TBaseType.rrw_alter,"function"," "," "," "," "," ");
902 addteradatacmds(ESqlStatementType.sstteradataalterfunction, TBaseType.rrw_alter,"specific","function"," "," "," "," ");
903 addteradatacmds(ESqlStatementType.sstteradataaltermethod, TBaseType.rrw_alter,"method"," "," "," "," "," ");
904 addteradatacmds(ESqlStatementType.sstteradataaltermethod, TBaseType.rrw_alter,"constructor","method"," "," "," "," ");
905 addteradatacmds(ESqlStatementType.sstteradataaltermethod, TBaseType.rrw_alter,"instance","method"," "," "," "," ");
906 addteradatacmds(ESqlStatementType.sstteradataaltermethod, TBaseType.rrw_alter,"specific","method"," "," "," "," ");
907 addteradatacmds(ESqlStatementType.sstteradataalterprocedure, TBaseType.rrw_alter,"procedure"," "," "," "," "," ");
908 addteradatacmds(ESqlStatementType.sstteradataalterreplicationgroup, TBaseType.rrw_alter,"replication","group"," "," "," "," ");
909 addteradatacmds(ESqlStatementType.sstteradataaltertable, TBaseType.rrw_alter,"table"," "," "," "," "," ");
910 addteradatacmds(ESqlStatementType.sstteradataaltertrigger, TBaseType.rrw_alter,"trigger"," "," "," "," "," ");
911 addteradatacmds(ESqlStatementType.sstteradataaltertype, TBaseType.rrw_alter,"type"," "," "," "," "," ");
912 addteradatacmds(ESqlStatementType.sstteradataalterzone, TBaseType.rrw_alter,"zone"," "," "," "," "," ");
913
914 addteradatacmds(ESqlStatementType.sstteradatabegindeclaresection, TBaseType.rrw_begin,"delcare","section"," "," "," "," ");
915 addteradatacmds(ESqlStatementType.sstteradatabeginlogging, TBaseType.rrw_begin,"logging"," "," "," "," "," ");
916 addteradatacmds(ESqlStatementType.sstteradatabeginquerylogging, TBaseType.rrw_begin,"query","logging"," "," "," "," ");    
917 addteradatacmds(ESqlStatementType.sstteradatabegintransaction, TBaseType.rrw_begin,"transaction"," "," "," "," "," ");
918 addteradatacmds(ESqlStatementType.sstteradatabegintransaction, TBaseType.rrw_bt," "," "," "," "," "," ");
919
920 addteradatacmds(ESqlStatementType.sstteradatacall, TBaseType.rrw_call," "," "," "," "," "," ");
921 addteradatacmds(ESqlStatementType.sstteradatacheckworkload, TBaseType.rrw_check,"workload"," "," "," "," "," ");
922 addteradatacmds(ESqlStatementType.sstteradatacheckpoint, TBaseType.rrw_checkpoint," "," "," "," "," "," ");
923 addteradatacmds(ESqlStatementType.sstteradataclose, TBaseType.rrw_close," "," "," "," "," "," ");
924
925 addteradatacmds(ESqlStatementType.sstteradatacreatemacro, TBaseType.rrw_teradata_cm," "," "," "," "," "," ");
926
927 addteradatacmds(ESqlStatementType.sstteradatacollectdemographics, TBaseType.rrw_teradata_collect,"demographics"," "," "," "," "," ");
928
929 addteradatacmds(ESqlStatementType.sstteradatacollectstatistics, TBaseType.rrw_teradata_collect,"statistics"," "," "," "," "," ");
930 addteradatacmds(ESqlStatementType.sstteradatacollectstatistics, TBaseType.rrw_teradata_collect,"stats"," "," "," "," "," ");
931 addteradatacmds(ESqlStatementType.sstteradatacollectstatistics, TBaseType.rrw_teradata_collect,"stat"," "," "," "," "," ");
932    addteradatacmds(ESqlStatementType.sstteradatacollectstatistics, TBaseType.rrw_teradata_collect,"summary","statistics"," "," "," "," ");
933    addteradatacmds(ESqlStatementType.sstteradatacollectstatistics, TBaseType.rrw_teradata_collect,"summary","stats"," "," "," "," ");
934    addteradatacmds(ESqlStatementType.sstteradatacollectstatistics, TBaseType.rrw_teradata_collect,"summary","stat"," "," "," "," ");
935
936
937 addteradatacmds(ESqlStatementType.sstteradatacomment, TBaseType.rrw_comment," "," "," "," "," "," ");
938 addteradatacmds(ESqlStatementType.sstteradatacommit, TBaseType.rrw_commit," "," "," "," "," "," ");
939 addteradatacmds(ESqlStatementType.sstteradataconnect, TBaseType.rrw_connect," "," "," "," "," "," ");
940 addteradatacmds(ESqlStatementType.sstteradatacreateauthorization, TBaseType.rrw_create,"authorization"," "," "," "," "," ");
941 addteradatacmds(ESqlStatementType.sstteradatacreatecast, TBaseType.rrw_create,"cast"," "," "," "," "," ");
942
943 addteradatacmds(ESqlStatementType.sstteradatacreatemethod, TBaseType.rrw_create,"constructor","method"," "," "," "," ");
944
945 addteradatacmds(ESqlStatementType.sstteradatacreatedatabase, TBaseType.rrw_create,"database"," "," "," "," "," ");
946 addteradatacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"error","table"," "," "," "," ");
947 addteradatacmds(ESqlStatementType.sstteradatacreaterole, TBaseType.rrw_create,"external","role"," "," "," "," ");
948
949 addteradatacmds(ESqlStatementType.sstteradatacreatefunction, TBaseType.rrw_create,"function"," "," "," "," "," ");
950
951 addteradatacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"global","temporary","multiset","table"," "," ");
952 addteradatacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"global","temporary","set","table"," "," ");
953 addteradatacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"global","temporary","table"," "," "," ");
954
955 addteradatacmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"hash","index"," "," "," "," ");
956 addteradatacmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"index"," "," "," "," "," ");
957
958 addteradatacmds(ESqlStatementType.sstteradatacreatemethod, TBaseType.rrw_create,"instance","method"," "," "," "," ");
959
960 addteradatacmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"join","index"," "," "," "," ");
961
962 addteradatacmds(ESqlStatementType.sstteradatacreatemacro, TBaseType.rrw_create,"macro"," "," "," "," "," ");
963
964 addteradatacmds(ESqlStatementType.sstteradatacreatemethod, TBaseType.rrw_create,"method"," "," "," "," "," ");
965 addteradatacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"multiset","global","temporary","table"," "," ");
966 addteradatacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"multiset","table"," "," "," "," ");
967 addteradatacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"multiset","volatile","table"," "," "," ");
968
969 addteradatacmds(ESqlStatementType.sstteradatacreateordering, TBaseType.rrw_create,"ordering"," "," "," "," "," ");
970
971 addteradatacmds(ESqlStatementType.sstcreateprocedure, TBaseType.rrw_create,"proc"," "," "," "," "," ");
972 addteradatacmds(ESqlStatementType.sstcreateprocedure, TBaseType.rrw_create,"procedure"," "," "," "," "," ");
973
974 addteradatacmds(ESqlStatementType.sstteradatacreateprofile, TBaseType.rrw_create,"profile"," "," "," "," "," ");
975
976    addteradatacmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,"recursive","view"," "," "," "," ");
977
978    addteradatacmds(ESqlStatementType.sstteradatacreatereplicationgroup, TBaseType.rrw_create,"replication","group"," "," "," "," ");
979    addteradatacmds(ESqlStatementType.sstteradatacreaterole, TBaseType.rrw_create,"role"," "," "," "," "," ");
980    addteradatacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"set","global","temporary","table"," "," ");
981    addteradatacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"set","table"," "," "," "," ");
982    addteradatacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"set","volatile","table"," "," "," ");
983    addteradatacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"table"," "," "," "," "," ");
984    addteradatacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"temporary","table"," "," "," "," ");
985
986    addteradatacmds(ESqlStatementType.sstteradatacreatetransform, TBaseType.rrw_create,"transform"," "," "," "," "," ");
987
988    addteradatacmds(ESqlStatementType.sstteradatacreatetrigger, TBaseType.rrw_create,"trigger"," "," "," "," "," ");
989
990    addteradatacmds(ESqlStatementType.sstteradatacreatetype, TBaseType.rrw_create,"type"," "," "," "," "," ");
991
992    addteradatacmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"unique","index"," "," "," "," ");
993
994    addteradatacmds(ESqlStatementType.sstteradatacreateuser, TBaseType.rrw_create,"user"," "," "," "," "," ");
995
996    addteradatacmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,"view"," "," "," "," "," ");
997
998    addteradatacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"volatile","multiset","table"," "," "," ");
999    addteradatacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"volatile","table"," "," "," "," ");
1000    addteradatacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"volatile","set","table"," "," "," ");
1001
1002    addteradatacmds(ESqlStatementType.sstcreatezone, TBaseType.rrw_create,"zone"," "," "," "," "," ");
1003
1004    addteradatacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_ct," "," "," "," "," "," ");
1005
1006    addteradatacmds(ESqlStatementType.sstcreateview, TBaseType.rrw_teradata_cv," "," "," "," "," "," ");
1007
1008    addteradatacmds(ESqlStatementType.sstteradatadatabase, TBaseType.rrw_database," "," "," "," "," "," ");
1009
1010    addteradatacmds(ESqlStatementType.sstteradatadeclarecursor, TBaseType.rrw_declare,"cursor"," "," "," "," "," ");
1011
1012    addteradatacmds(ESqlStatementType.sstteradatadeclarestatement, TBaseType.rrw_declare,"statement"," "," "," "," "," ");
1013
1014    addteradatacmds(ESqlStatementType.sstteradatadeclaretable, TBaseType.rrw_declare,"table"," "," "," "," "," ");
1015
1016    addteradatacmds(ESqlStatementType.sstdelete, TBaseType.rrw_teradata_del," "," "," "," "," "," ");
1017
1018    addteradatacmds(ESqlStatementType.sstdelete, TBaseType.rrw_delete," "," "," "," "," "," ");
1019
1020    addteradatacmds(ESqlStatementType.sstteradatadeletedatabase, TBaseType.rrw_delete,"database"," "," "," "," "," ");
1021
1022    addteradatacmds(ESqlStatementType.sstteradatadeleteuser, TBaseType.rrw_delete,"user"," "," "," "," "," ");
1023
1024    addteradatacmds(ESqlStatementType.sstteradatadescribe, TBaseType.rrw_describe," "," "," "," "," "," ");
1025
1026    addteradatacmds(ESqlStatementType.sstteradatadiagnostic, TBaseType.rrw_teradata_diagnostic," "," "," "," "," "," ");
1027
1028    addteradatacmds(ESqlStatementType.sstteradatadropauthorization, TBaseType.rrw_drop,"authorization"," "," "," "," "," ");
1029
1030    addteradatacmds(ESqlStatementType.sstteradatadropcast, TBaseType.rrw_drop,"cast"," "," "," "," "," ");
1031    addteradatacmds(ESqlStatementType.sstteradatadropconstraint, TBaseType.rrw_drop,"constraint"," "," "," "," "," ");
1032    addteradatacmds(ESqlStatementType.sstteradatadropdatabase, TBaseType.rrw_drop,"database"," "," "," "," "," ");
1033    addteradatacmds(ESqlStatementType.sstdroptable, TBaseType.rrw_drop,"error","table"," "," "," "," ");
1034    addteradatacmds(ESqlStatementType.sstteradatadroprole, TBaseType.rrw_drop,"external","role"," "," "," "," ");
1035
1036    addteradatacmds(ESqlStatementType.sstteradatadropfunction, TBaseType.rrw_drop,"function"," "," "," "," "," ");
1037
1038    addteradatacmds(ESqlStatementType.sstdropindex, TBaseType.rrw_drop,"hash","index"," "," "," "," ");
1039    addteradatacmds(ESqlStatementType.sstdropindex, TBaseType.rrw_drop,"index"," "," "," "," "," ");
1040    addteradatacmds(ESqlStatementType.sstdropindex, TBaseType.rrw_drop,"join","index"," "," "," "," ");
1041
1042    addteradatacmds(ESqlStatementType.sstteradatadropmacro, TBaseType.rrw_drop,"macro"," "," "," "," "," ");
1043
1044    addteradatacmds(ESqlStatementType.sstteradatadropordering, TBaseType.rrw_drop,"ordering"," "," "," "," "," ");
1045
1046    addteradatacmds(ESqlStatementType.sstteradatadropprocedure, TBaseType.rrw_drop,"procedure"," "," "," "," "," ");
1047
1048    addteradatacmds(ESqlStatementType.sstteradatadropprofile, TBaseType.rrw_drop,"profile"," "," "," "," "," ");
1049
1050    addteradatacmds(ESqlStatementType.sstteradatadropreplicationgroup, TBaseType.rrw_drop,"replication","group"," "," "," "," ");
1051
1052    addteradatacmds(ESqlStatementType.sstteradatadroprole, TBaseType.rrw_drop,"role"," "," "," "," "," ");
1053
1054    addteradatacmds(ESqlStatementType.sstteradatadropfunction, TBaseType.rrw_drop,"specific","function"," "," "," "," ");
1055
1056    addteradatacmds(ESqlStatementType.sstteradatadropstatistics, TBaseType.rrw_drop,"stat"," "," "," "," "," ");
1057    addteradatacmds(ESqlStatementType.sstteradatadropstatistics, TBaseType.rrw_drop,"statistics"," "," "," "," "," ");
1058    addteradatacmds(ESqlStatementType.sstteradatadropstatistics, TBaseType.rrw_drop,"stats"," "," "," "," "," ");
1059
1060    addteradatacmds(ESqlStatementType.sstdroptable, TBaseType.rrw_drop,"table"," "," "," "," "," ");
1061    addteradatacmds(ESqlStatementType.sstdroptable, TBaseType.rrw_drop,"temporary","table"," "," "," "," ");
1062
1063    addteradatacmds(ESqlStatementType.sstteradatadroptransform, TBaseType.rrw_drop,"transform"," "," "," "," "," ");
1064
1065    addteradatacmds(ESqlStatementType.sstteradatadroptrigger, TBaseType.rrw_drop,"trigger"," "," "," "," "," ");
1066
1067    addteradatacmds(ESqlStatementType.sstteradatadroptype, TBaseType.rrw_drop,"type"," "," "," "," "," ");
1068    addteradatacmds(ESqlStatementType.sstdropindex, TBaseType.rrw_drop,"unique","index"," "," "," "," ");
1069
1070    addteradatacmds(ESqlStatementType.sstteradatadropuser, TBaseType.rrw_drop,"user"," "," "," "," "," ");
1071
1072    addteradatacmds(ESqlStatementType.sstdropview, TBaseType.rrw_drop,"view"," "," "," "," "," ");
1073
1074    addteradatacmds(ESqlStatementType.sstteradatadropzone, TBaseType.rrw_drop,"zone"," "," "," "," "," ");
1075
1076    addteradatacmds(ESqlStatementType.sstteradatadumpexplain, TBaseType.rrw_teradata_dump,"explain"," "," "," "," "," ");
1077
1078    addteradatacmds(ESqlStatementType.sstteradataecho, TBaseType.rrw_teradata_echo," "," "," "," "," "," ");
1079
1080    addteradatacmds(ESqlStatementType.sstteradataenddeclaresection, TBaseType.rrw_end,"declare","section"," "," "," "," ");
1081
1082    addteradatacmds(ESqlStatementType.sstteradataendlogging, TBaseType.rrw_end,"logging"," "," "," "," "," ");
1083
1084    addteradatacmds(ESqlStatementType.sstteradataendquerylogging, TBaseType.rrw_end,"query","logging"," "," "," "," ");
1085
1086    addteradatacmds(ESqlStatementType.sstteradataendtransaction, TBaseType.rrw_end,"transaction"," "," "," "," "," ");
1087
1088    addteradatacmds(ESqlStatementType.sstteradataendtransaction, TBaseType.rrw_et," "," "," "," "," "," ");
1089
1090    addteradatacmds(ESqlStatementType.sstteradataexecute, TBaseType.rrw_execute," "," "," "," "," "," ");
1091
1092    addteradatacmds(ESqlStatementType.sstteradataexecute, TBaseType.rrw_exec," "," "," "," "," "," ");
1093
1094    addteradatacmds(ESqlStatementType.sstteradataexecuteimmediate, TBaseType.rrw_execute,"immediate"," "," "," "," "," ");
1095
1096    addteradatacmds(ESqlStatementType.sstteradataExit, TBaseType.rrw_teradata_exit," "," "," "," "," "," ");
1097
1098    addteradatacmds(ESqlStatementType.sstExplain, TBaseType.rrw_explain, " ", " ", " ", " ", " ", " ");
1099
1100
1101    addteradatacmds(ESqlStatementType.sstteradatafetch, TBaseType.rrw_fetch," "," "," "," "," "," ");
1102
1103    addteradatacmds(ESqlStatementType.sstteradatagetcrash, TBaseType.rrw_get,"crash"," "," "," "," "," ");
1104
1105    addteradatacmds(ESqlStatementType.sstgetdiagnostics, TBaseType.rrw_get,"diagnostics"," "," "," "," "," ");
1106
1107    addteradatacmds(ESqlStatementType.sstteradatagive, TBaseType.rrw_teradata_give," "," "," "," "," "," ");
1108
1109    addteradatacmds(ESqlStatementType.sstteradatagrant, TBaseType.rrw_grant," "," "," "," "," "," ");
1110
1111    addteradatacmds(ESqlStatementType.sstteradatahelp, TBaseType.rrw_teradata_help," "," "," "," "," "," ");
1112
1113    addteradatacmds(ESqlStatementType.sstteradatainclude, TBaseType.rrw_include," "," "," "," "," "," ");
1114
1115    addteradatacmds(ESqlStatementType.sstinsert, TBaseType.rrw_teradata_ins," "," "," "," "," "," ");
1116
1117    addteradatacmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert," "," "," "," "," "," ");
1118
1119    addteradatacmds(ESqlStatementType.sstteradatainsertexplain, TBaseType.rrw_insert,"explain"," "," "," "," "," ");
1120
1121    addteradatacmds(ESqlStatementType.sstteradatalabel, TBaseType.rrw_teradata_label," "," "," "," "," "," ");
1122    addteradatacmds(ESqlStatementType.sstteradatalock, TBaseType.rrw_lock," "," "," "," "," "," ");
1123    addteradatacmds(ESqlStatementType.sstteradatalock, TBaseType.rrw_teradata_locking," "," "," "," "," "," ");
1124    addteradatacmds(ESqlStatementType.sstteradatalogon, TBaseType.rrw_teradata_logon," "," "," "," "," "," ");
1125
1126    addteradatacmds(ESqlStatementType.sstmerge, TBaseType.rrw_merge," "," "," "," "," "," ");
1127
1128    addteradatacmds(ESqlStatementType.sstteradatamodifydatabase, TBaseType.rrw_teradata_modify,"database"," "," "," "," "," ");
1129
1130    addteradatacmds(ESqlStatementType.sstteradatamodifyprofile, TBaseType.rrw_teradata_modify,"profile"," "," "," "," "," ");
1131
1132    addteradatacmds(ESqlStatementType.sstteradatamodifyuser, TBaseType.rrw_teradata_modify,"user"," "," "," "," "," ");
1133
1134    addteradatacmds(ESqlStatementType.sstteradataopen, TBaseType.rrw_open," "," "," "," "," "," ");
1135
1136    addteradatacmds(ESqlStatementType.sstteradataposition, TBaseType.rrw_teradata_position," "," "," "," "," "," ");
1137
1138    addteradatacmds(ESqlStatementType.sstteradataprepare, TBaseType.rrw_prepare," "," "," "," "," "," ");
1139
1140    addteradatacmds(ESqlStatementType.sstteradatareleaseLock, TBaseType.rrw_release,"lock"," "," "," "," "," ");
1141
1142    addteradatacmds(ESqlStatementType.sstteradatarenamefunction, TBaseType.rrw_rename,"function"," "," "," "," "," ");
1143    addteradatacmds(ESqlStatementType.sstteradatarenamemacro, TBaseType.rrw_rename,"macro"," "," "," "," "," ");
1144    addteradatacmds(ESqlStatementType.sstteradatarenameprocedure, TBaseType.rrw_rename,"procedure"," "," "," "," "," ");
1145    addteradatacmds(ESqlStatementType.sstteradatarenametable, TBaseType.rrw_rename,"table"," "," "," "," "," ");
1146    addteradatacmds(ESqlStatementType.sstteradatarenametrigger, TBaseType.rrw_rename,"trigger"," "," "," "," "," ");
1147    addteradatacmds(ESqlStatementType.sstteradatarenameview, TBaseType.rrw_rename,"view"," "," "," "," "," ");
1148
1149    addteradatacmds(ESqlStatementType.sstteradatareplacecast, TBaseType.rrw_replace,"cast"," "," "," "," "," ");
1150
1151    addteradatacmds(ESqlStatementType.sstteradatareplacemethod, TBaseType.rrw_replace,"constructor","method"," "," "," "," ");
1152
1153    addteradatacmds(ESqlStatementType.sstteradatareplacefunction, TBaseType.rrw_replace,"function"," "," "," "," "," ");
1154
1155    addteradatacmds(ESqlStatementType.sstteradatareplacemethod, TBaseType.rrw_replace,"instance","method"," "," "," "," ");
1156
1157    addteradatacmds(ESqlStatementType.sstteradatareplacemacro, TBaseType.rrw_replace,"macro"," "," "," "," "," ");
1158
1159    addteradatacmds(ESqlStatementType.sstteradatareplacemethod, TBaseType.rrw_replace,"method"," "," "," "," "," ");
1160
1161    addteradatacmds(ESqlStatementType.sstteradatareplaceordering, TBaseType.rrw_replace,"ordering"," "," "," "," "," ");
1162
1163    addteradatacmds(ESqlStatementType.sstteradatareplaceprocedure, TBaseType.rrw_replace,"procedure"," "," "," "," "," ");
1164
1165    addteradatacmds(ESqlStatementType.sstteradatareplacemethod, TBaseType.rrw_replace,"specific","method"," "," "," "," ");
1166
1167    addteradatacmds(ESqlStatementType.sstteradatareplacetransform, TBaseType.rrw_replace,"transform"," "," "," "," "," ");
1168
1169    addteradatacmds(ESqlStatementType.sstteradatacreatetrigger, TBaseType.rrw_replace,"trigger"," "," "," "," "," ");
1170
1171    addteradatacmds(ESqlStatementType.sstteradatareplaceview, TBaseType.rrw_replace,"view"," "," "," "," "," ");
1172    addteradatacmds(ESqlStatementType.sstteradatareplaceview, TBaseType.rrw_replace,"recursive","view"," "," "," "," ");
1173
1174    addteradatacmds(ESqlStatementType.sstteradatarestartindexanalysis, TBaseType.rrw_teradata_restart,"index","analysis"," "," "," "," ");
1175
1176    addteradatacmds(ESqlStatementType.sstteradatarevoke, TBaseType.rrw_revoke," "," "," "," "," "," ");
1177
1178    // addteradatacmds(ESqlStatementType.sstteradatarewind, TBaseType.rrw_rewind," "," "," "," "," "," ");
1179
1180    addteradatacmds(ESqlStatementType.sstteradatarollback, TBaseType.rrw_rollback," "," "," "," "," "," ");
1181
1182    addteradatacmds(ESqlStatementType.sstselect, TBaseType.rrw_teradata_sel," "," "," "," "," "," ");
1183    addteradatacmds(ESqlStatementType.sstselect, TBaseType.rrw_select," "," "," "," "," "," ");
1184
1185    //addteradatacmds(ESqlStatementType.sstsetbuffersize, TBaseType.rrw_set,"buffersize"," "," "," "," "," ");
1186    addteradatacmds(ESqlStatementType.sstteradatasetrole, TBaseType.rrw_set,"role"," "," "," "," "," ");
1187
1188    addteradatacmds(ESqlStatementType.sstteradatasetsession, TBaseType.rrw_set,"session"," "," "," "," "," ");
1189    addteradatacmds(ESqlStatementType.sstteradatasetsession, TBaseType.rrw_ss," "," "," "," "," "," ");
1190//    addteradatacmds(ESqlStatementType.sstteradatasetsessionaccount, TBaseType.rrw_set,"session","account"," "," "," "," ");
1191
1192    addteradatacmds(ESqlStatementType.sstteradatasettimezone, TBaseType.rrw_set,"time","zone"," "," "," "," ");
1193
1194    addteradatacmds(ESqlStatementType.sstteradatashow, TBaseType.rrw_show," "," "," "," "," "," ");
1195
1196    addteradatacmds(ESqlStatementType.sstteradatashowmethod, TBaseType.rrw_show,"constructor","method"," "," "," "," ");
1197
1198    addteradatacmds(ESqlStatementType.sstteradatashowfunction, TBaseType.rrw_show,"function"," "," "," "," "," ");
1199
1200    addteradatacmds(ESqlStatementType.sstteradatashowindex, TBaseType.rrw_show,"hash","index"," "," "," "," ");
1201
1202    addteradatacmds(ESqlStatementType.sstteradatashowmethod, TBaseType.rrw_show,"instance","method"," "," "," "," ");
1203
1204    addteradatacmds(ESqlStatementType.sstteradatashowindex, TBaseType.rrw_show,"join","index"," "," "," "," ");
1205
1206    addteradatacmds(ESqlStatementType.sstteradatashowmacro, TBaseType.rrw_show,"macro"," "," "," "," "," ");
1207
1208    addteradatacmds(ESqlStatementType.sstteradatashowmethod, TBaseType.rrw_show,"method"," "," "," "," "," ");
1209
1210    addteradatacmds(ESqlStatementType.sstteradatashowprocedure, TBaseType.rrw_show,"procedure"," "," "," "," "," ");
1211
1212    addteradatacmds(ESqlStatementType.sstteradatashowreplicationgroup, TBaseType.rrw_show,"replication","group"," "," "," "," ");
1213
1214    addteradatacmds(ESqlStatementType.sstteradatashowfunction, TBaseType.rrw_show,"specific","function"," "," "," "," ");
1215    addteradatacmds(ESqlStatementType.sstteradatashowmethod, TBaseType.rrw_show,"specific","method"," "," "," "," ");
1216
1217    addteradatacmds(ESqlStatementType.sstteradatashowtable, TBaseType.rrw_show,"table "," "," "," "," "," ");
1218    addteradatacmds(ESqlStatementType.sstteradatashowtable, TBaseType.rrw_show,"temporary","table"," "," "," "," ");
1219
1220    addteradatacmds(ESqlStatementType.sstteradatashowtrigger, TBaseType.rrw_show,"trigger"," "," "," "," "," ");
1221    addteradatacmds(ESqlStatementType.sstteradatashowtype, TBaseType.rrw_show,"type"," "," "," "," "," ");
1222    addteradatacmds(ESqlStatementType.sstteradatashowview, TBaseType.rrw_show,"view"," "," "," "," "," ");
1223
1224    //addteradatacmds(ESqlStatementType.sstteradatatest, TBaseType.rrw_test," "," "," "," "," "," ");
1225    addteradatacmds(ESqlStatementType.sstupdate, TBaseType.rrw_teradata_upd," "," "," "," "," "," ");
1226    addteradatacmds(ESqlStatementType.sstupdate, TBaseType.rrw_update," "," "," "," "," "," ");
1227
1228    addteradatacmds(ESqlStatementType.sstteradatausing, TBaseType.rrw_teradata_using," "," "," "," "," "," ");
1229
1230    addteradatacmds(ESqlStatementType.sstteradatawait, TBaseType.rrw_teradata_wait," "," "," "," "," "," ");
1231    //addteradatacmds(ESqlStatementType.sstteradatawhenever, TBaseType.rrw_whenever," "," "," "," "," "," ");
1232
1233}
1234
1235 void inithivecmds(){
1236     addhivecmds(ESqlStatementType.sstalterdatabase, TBaseType.rrw_alter,  "database"," "," "," "," "," ");
1237     addhivecmds(ESqlStatementType.sstalterindex, TBaseType.rrw_alter,  "index"," "," "," "," "," ");
1238     addhivecmds(ESqlStatementType.sstaltertable, TBaseType.rrw_alter,  "table"," "," "," "," "," ");
1239     addhivecmds(ESqlStatementType.sstalterview, TBaseType.rrw_alter,  "view"," "," "," "," "," ");
1240     addhivecmds(ESqlStatementType.sstanalyzeTable, TBaseType.rrw_analyze,  "table"," "," "," "," "," ");
1241
1242
1243     addhivecmds(ESqlStatementType.sstcreatedatabase, TBaseType.rrw_create,  "database"," "," "," "," "," ");
1244     addhivecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,  "external","table"," "," "," "," ");
1245     addhivecmds(ESqlStatementType.ssthiveCreateFunction, TBaseType.rrw_create,  "function"," "," "," "," "," ");
1246     addhivecmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,  "index"," "," "," "," "," ");
1247     addhivecmds(ESqlStatementType.sstcreatematerializedview, TBaseType.rrw_create,"materialized","view"," "," "," "," ");
1248
1249     addhivecmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,  "or","replace","view"," "," "," ");
1250     addhivecmds(ESqlStatementType.ssthiveCreateRole, TBaseType.rrw_create,  "role"," "," "," "," "," ");
1251     addhivecmds(ESqlStatementType.sstcreatedatabase, TBaseType.rrw_create,  "schema"," "," "," "," "," ");
1252     addhivecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,  "table"," "," "," "," "," ");
1253     addhivecmds(ESqlStatementType.ssthiveCreateFunction, TBaseType.rrw_create,  "temporary","function"," "," "," "," ");
1254     addhivecmds(ESqlStatementType.sstCreateMacro, TBaseType.rrw_create,  "temporary","macro"," "," "," "," ");
1255     addhivecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,  "temporary","table"," "," "," "," ");
1256     addhivecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,  "transactional","table"," "," "," "," ");
1257     addhivecmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,  "view"," "," "," "," "," ");
1258
1259     addhivecmds(ESqlStatementType.sstdelete, TBaseType.rrw_delete," "," "," "," "," "," ");
1260     addhivecmds(ESqlStatementType.ssthiveDesc, TBaseType.rrw_hive_desc,  " "," "," "," "," "," ");
1261
1262     addhivecmds(ESqlStatementType.ssthiveDesc, TBaseType.rrw_describe,  " "," "," "," "," "," ");
1263
1264     addhivecmds(ESqlStatementType.ssthiveDropDatabase, TBaseType.rrw_drop,  "database"," "," "," "," "," ");
1265     addhivecmds(ESqlStatementType.sstdropindex, TBaseType.rrw_drop,  "index"," "," "," "," "," ");
1266     addhivecmds(ESqlStatementType.ssthiveDropRole, TBaseType.rrw_drop,  "role"," "," "," "," "," ");
1267     addhivecmds(ESqlStatementType.ssthiveDropDatabase, TBaseType.rrw_drop,  "schema"," "," "," "," "," ");
1268     addhivecmds(ESqlStatementType.sstdroptable, TBaseType.rrw_drop,  "table"," "," "," "," "," ");
1269     addhivecmds(ESqlStatementType.ssthiveDropFunciton, TBaseType.rrw_drop,  "temporary","function"," "," "," "," ");
1270     addhivecmds(ESqlStatementType.sstDropMacro, TBaseType.rrw_drop,  "temporary","macro"," "," "," "," ");
1271     addhivecmds(ESqlStatementType.sstdropview, TBaseType.rrw_drop,  "view"," "," "," "," "," ");
1272
1273     addhivecmds(ESqlStatementType.ssthiveExplain, TBaseType.rrw_explain,  " "," "," "," "," "," ");
1274
1275     addhivecmds(ESqlStatementType.ssthiveExportTable, TBaseType.rrw_hive_export,  "table"," "," "," "," "," ");
1276
1277     addhivecmds(ESqlStatementType.ssthiveGrant, TBaseType.rrw_grant,  " "," "," "," "," "," ");
1278     addhivecmds(ESqlStatementType.ssthiveGrantRole, TBaseType.rrw_grant,  "role"," "," "," "," "," ");
1279
1280     addhivecmds(ESqlStatementType.ssthiveImportTable, TBaseType.rrw_hive_import,  "external","table"," "," "," "," ");
1281     addhivecmds(ESqlStatementType.ssthiveImportTable, TBaseType.rrw_hive_import,  "from"," "," "," "," "," ");
1282     addhivecmds(ESqlStatementType.ssthiveImportTable, TBaseType.rrw_hive_import,  "table"," "," "," "," "," ");
1283
1284     addhivecmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert,  " "," "," "," "," "," ");
1285
1286
1287     addhivecmds(ESqlStatementType.ssthiveLoad, TBaseType.rrw_load,  "data"," "," "," "," "," ");
1288
1289     addhivecmds(ESqlStatementType.ssthiveLockTable, TBaseType.rrw_lock,  "table"," "," "," "," "," ");
1290
1291     //merge
1292     addhivecmds(ESqlStatementType.sstmerge, TBaseType.rrw_merge," "," "," "," "," "," ");
1293
1294     addhivecmds(ESqlStatementType.sstmsck, TBaseType.rrw_hive_msck,  " "," "," "," "," "," ");
1295
1296     addhivecmds(ESqlStatementType.ssthiveRevoke, TBaseType.rrw_revoke,  " "," "," "," "," "," ");
1297     addhivecmds(ESqlStatementType.ssthiveRevokeRole, TBaseType.rrw_revoke,  "role"," "," "," "," "," ");
1298
1299     addhivecmds(ESqlStatementType.sstselect, TBaseType.rrw_select,  " "," "," "," "," "," ");
1300     addhivecmds(ESqlStatementType.ssthiveSet, TBaseType.rrw_set,  " "," "," "," "," "," ");
1301     addhivecmds(ESqlStatementType.ssthiveShow, TBaseType.rrw_show,  " "," "," "," "," "," ");
1302     addhivecmds(ESqlStatementType.ssthiveShowGrants, TBaseType.rrw_show,  "grant"," "," "," "," "," ");
1303     addhivecmds(ESqlStatementType.ssthiveShowRoleGrants, TBaseType.rrw_show,  "role","grant"," "," "," "," ");
1304
1305     addhivecmds(ESqlStatementType.sstTruncate, TBaseType.rrw_truncate,  "table"," "," "," "," "," ");
1306
1307     addhivecmds(ESqlStatementType.ssthiveUnlockTable, TBaseType.rrw_unlock,  "table"," "," "," "," "," ");
1308     addhivecmds(ESqlStatementType.sstupdate, TBaseType.rrw_update," "," "," "," "," "," ");
1309     addhivecmds(ESqlStatementType.sstupsert, TBaseType.rrw_hive_upsert, " ", " ", " ", " ", " ", " ");
1310     addhivecmds(ESqlStatementType.ssthiveSwitchDatabase, TBaseType.rrw_use,  " "," "," "," "," "," ");
1311 }
1312
1313    void initdatabrickscmds(){
1314        adddatabrickscmds(ESqlStatementType.sstaddAchieve, TBaseType.rrw_add,  "archive"," "," "," "," "," ");
1315        adddatabrickscmds(ESqlStatementType.sstaddAchieve, TBaseType.rrw_add,  "archives"," "," "," "," "," ");
1316        adddatabrickscmds(ESqlStatementType.sstaltercatalog, TBaseType.rrw_alter,  "catalog"," "," "," "," "," ");
1317        adddatabrickscmds(ESqlStatementType.sstalterdatabase, TBaseType.rrw_alter,  "database"," "," "," "," "," ");
1318        adddatabrickscmds(ESqlStatementType.sstalterlocation, TBaseType.rrw_alter,  "external","location"," "," "," "," ");
1319        adddatabrickscmds(ESqlStatementType.sstAlterGroup, TBaseType.rrw_alter,  "group"," "," "," "," "," ");
1320        adddatabrickscmds(ESqlStatementType.sstalterprovider, TBaseType.rrw_alter,  "provider"," "," "," "," "," ");
1321        adddatabrickscmds(ESqlStatementType.sstalterrecipient, TBaseType.rrw_alter,  "recipient"," "," "," "," "," ");
1322        adddatabrickscmds(ESqlStatementType.sstAlterSchema, TBaseType.rrw_alter,  "schema"," "," "," "," "," ");
1323        adddatabrickscmds(ESqlStatementType.sstAltershare, TBaseType.rrw_alter,  "share"," "," "," "," "," ");
1324        adddatabrickscmds(ESqlStatementType.sstaltercredental, TBaseType.rrw_alter,  "storage","credential"," "," "," "," ");
1325        adddatabrickscmds(ESqlStatementType.sstaltertable, TBaseType.rrw_alter,  "table"," "," "," "," "," ");
1326        adddatabrickscmds(ESqlStatementType.sstalterview, TBaseType.rrw_alter,  "view"," "," "," "," "," ");
1327        adddatabrickscmds(ESqlStatementType.sstAnalyzeTable, TBaseType.rrw_analyze,  "table"," "," "," "," "," ");
1328        adddatabrickscmds(ESqlStatementType.sstAnalyzeTable, TBaseType.rrw_analyze,  "tables"," "," "," "," "," ");
1329        adddatabrickscmds(ESqlStatementType.sstCacheSelect, TBaseType.rrw_cache,  "select"," "," "," "," "," ");
1330        adddatabrickscmds(ESqlStatementType.sstClearCache, TBaseType.rrw_clear,  "cache"," "," "," "," "," ");
1331        adddatabrickscmds(ESqlStatementType.sstCommentOn, TBaseType.rrw_comment,  "on"," "," "," "," "," ");
1332        adddatabrickscmds(ESqlStatementType.sstConvertToDelta, TBaseType.rrw_databricks_convert,  "to","delta"," "," "," "," ");
1333        adddatabrickscmds(ESqlStatementType.sstCopyInto, TBaseType.rrw_databricks_copy,  "into"," "," "," "," "," ");
1334        adddatabrickscmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,  "bloomfilter","index"," "," "," "," ");
1335        adddatabrickscmds(ESqlStatementType.sstcreatecatalog, TBaseType.rrw_create,  "catalog"," "," "," "," "," ");
1336        adddatabrickscmds(ESqlStatementType.sstcreatedatabase, TBaseType.rrw_create,  "database"," "," "," "," "," ");
1337        adddatabrickscmds(ESqlStatementType.sstCreateExternallocation, TBaseType.rrw_create,  "external","location"," "," "," "," ");
1338        adddatabrickscmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create,  "function"," "," "," "," "," ");
1339        adddatabrickscmds(ESqlStatementType.sstCreategroup, TBaseType.rrw_create,  "group"," "," "," "," "," ");
1340        adddatabrickscmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create,  "or","replace","function"," "," "," ");
1341        adddatabrickscmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,  "or","replace","table"," "," "," ");
1342        adddatabrickscmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create,  "or","replace","temp","function"," "," ");
1343        adddatabrickscmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,  "or","replace","temp","view"," "," ");
1344        adddatabrickscmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create,  "or","replace","temporary","function"," "," ");
1345        adddatabrickscmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,  "or","replace","temporary","view"," "," ");
1346        adddatabrickscmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,  "or","replace","view"," "," ", " ");
1347        adddatabrickscmds(ESqlStatementType.sstcreaterecipient, TBaseType.rrw_create,  "recipient"," "," "," "," "," ");
1348        adddatabrickscmds(ESqlStatementType.sstcreateschema, TBaseType.rrw_create,  "schema"," "," "," "," "," ");
1349        adddatabrickscmds(ESqlStatementType.sstcreateshare, TBaseType.rrw_create,  "share"," "," "," "," "," ");
1350        adddatabrickscmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create,  "temp","function"," "," "," "," ");
1351        adddatabrickscmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create,  "temporary","function"," "," "," "," ");
1352        adddatabrickscmds(ESqlStatementType.sstcreaterole, TBaseType.rrw_create,  "role"," "," "," "," "," ");
1353        adddatabrickscmds(ESqlStatementType.sstcreateschema, TBaseType.rrw_create,  "schema"," "," "," "," "," ");
1354        adddatabrickscmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,  "table"," "," "," "," "," ");
1355        adddatabrickscmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,  "view"," "," "," "," "," ");
1356        adddatabrickscmds(ESqlStatementType.sstdelete, TBaseType.rrw_delete,  "from"," "," "," "," "," ");
1357        adddatabrickscmds(ESqlStatementType.sstDeny, TBaseType.rrw_deny,  " "," "," "," "," "," ");
1358        adddatabrickscmds(ESqlStatementType.sstdescribe, TBaseType.rrw_databricks_desc,  " "," "," "," "," "," ");
1359        adddatabrickscmds(ESqlStatementType.sstdescribeCatalog, TBaseType.rrw_databricks_desc,  "catalog"," "," "," "," "," ");
1360        adddatabrickscmds(ESqlStatementType.sstdescribeFunction, TBaseType.rrw_databricks_desc,  "function"," "," "," "," "," ");
1361        adddatabrickscmds(ESqlStatementType.sstdescribeProvider, TBaseType.rrw_databricks_desc,  "provider"," "," "," "," "," ");
1362        adddatabrickscmds(ESqlStatementType.sstdescribeQuery, TBaseType.rrw_databricks_desc,  "query"," "," "," "," "," ");
1363        adddatabrickscmds(ESqlStatementType.sstdescribeRecipient, TBaseType.rrw_databricks_desc,  "recipient"," "," "," "," "," ");
1364        adddatabrickscmds(ESqlStatementType.sstdescribeSchema, TBaseType.rrw_databricks_desc,  "schema"," "," "," "," "," ");
1365        adddatabrickscmds(ESqlStatementType.sstdescribeShare, TBaseType.rrw_databricks_desc,  "share"," "," "," "," "," ");
1366        adddatabrickscmds(ESqlStatementType.sstdescribeTable, TBaseType.rrw_databricks_desc,  "table"," "," "," "," "," ");
1367        adddatabrickscmds(ESqlStatementType.sstdescribe, TBaseType.rrw_describe,  " "," "," "," "," "," ");
1368        adddatabrickscmds(ESqlStatementType.sstdescribeCatalog, TBaseType.rrw_describe,  "catalog"," "," "," "," "," ");
1369        adddatabrickscmds(ESqlStatementType.sstdescribeDatabase, TBaseType.rrw_describe,  "database"," "," "," "," "," ");
1370        adddatabrickscmds(ESqlStatementType.sstdescribeLocation, TBaseType.rrw_describe,  "external","location"," "," "," "," ");
1371        adddatabrickscmds(ESqlStatementType.sstdescribeFunction, TBaseType.rrw_describe,  "function"," "," "," "," "," ");
1372        adddatabrickscmds(ESqlStatementType.sstdescribeProvider, TBaseType.rrw_describe,  "provider"," "," "," "," "," ");
1373        adddatabrickscmds(ESqlStatementType.sstdescribeQuery, TBaseType.rrw_describe,  "query"," "," "," "," "," ");
1374        adddatabrickscmds(ESqlStatementType.sstdescribeRecipient, TBaseType.rrw_describe,  "recipient"," "," "," "," "," ");
1375        adddatabrickscmds(ESqlStatementType.sstdescribeSchema, TBaseType.rrw_describe,  "schema"," "," "," "," "," ");
1376        adddatabrickscmds(ESqlStatementType.sstdescribeShare, TBaseType.rrw_describe,  "share"," "," "," "," "," ");
1377        adddatabrickscmds(ESqlStatementType.sstdescribeCredential, TBaseType.rrw_describe,  "storage","credential"," "," "," "," ");
1378        adddatabrickscmds(ESqlStatementType.sstdescribeTable, TBaseType.rrw_describe,  "table"," "," "," "," "," ");
1379        adddatabrickscmds(ESqlStatementType.sstdropindex, TBaseType.rrw_drop,  "bloomfilter","index"," "," "," "," ");
1380        adddatabrickscmds(ESqlStatementType.sstdropcatalog, TBaseType.rrw_drop,  "catalog"," "," "," "," "," ");
1381        adddatabrickscmds(ESqlStatementType.sstdropdatabase, TBaseType.rrw_drop,  "database"," "," "," "," "," ");
1382        adddatabrickscmds(ESqlStatementType.sstdroplocation, TBaseType.rrw_drop,  "external","location"," "," "," "," ");
1383        adddatabrickscmds(ESqlStatementType.sstdropfunction, TBaseType.rrw_drop,  "function"," "," "," "," "," ");
1384        adddatabrickscmds(ESqlStatementType.sstDropGroup, TBaseType.rrw_drop,  "group"," "," "," "," "," ");
1385        adddatabrickscmds(ESqlStatementType.sstdropprovider, TBaseType.rrw_drop,  "provider"," "," "," "," "," ");
1386        adddatabrickscmds(ESqlStatementType.sstdroprecipient, TBaseType.rrw_drop,  "recipient"," "," "," "," "," ");
1387        adddatabrickscmds(ESqlStatementType.sstdropschema, TBaseType.rrw_drop,  "schema"," "," "," "," "," ");
1388        adddatabrickscmds(ESqlStatementType.sstdropshare, TBaseType.rrw_drop,  "share"," "," "," "," "," ");
1389        adddatabrickscmds(ESqlStatementType.sstdropcredential, TBaseType.rrw_drop,  "storage","credential"," "," "," "," ");
1390        adddatabrickscmds(ESqlStatementType.sstdropfunction, TBaseType.rrw_drop,  "temp","function"," "," "," "," ");
1391        adddatabrickscmds(ESqlStatementType.sstdropfunction, TBaseType.rrw_drop,  "temporary","function"," "," "," "," ");
1392        adddatabrickscmds(ESqlStatementType.sstdroptable, TBaseType.rrw_drop,  "table"," "," "," "," "," ");
1393        adddatabrickscmds(ESqlStatementType.sstdropview, TBaseType.rrw_drop,  "view"," "," "," "," "," ");
1394        adddatabrickscmds(ESqlStatementType.sstExplain, TBaseType.rrw_explain,  " "," "," "," "," "," ");
1395        adddatabrickscmds(ESqlStatementType.sstmsckrepairtable, TBaseType.rrw_databricks_fsck,  "repair"," "," "," "," "," ");
1396        adddatabrickscmds(ESqlStatementType.sstGrant, TBaseType.rrw_grant,  " "," "," "," "," "," ");
1397        adddatabrickscmds(ESqlStatementType.sstGrant, TBaseType.rrw_grant,  "select","on","share"," "," "," ");
1398        adddatabrickscmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert,  " "," "," "," "," "," ");
1399        adddatabrickscmds(ESqlStatementType.sstList, TBaseType.rrw_databricks_list,  " "," "," "," "," "," ");
1400        adddatabrickscmds(ESqlStatementType.sstLoadData, TBaseType.rrw_load,  "data"," "," "," "," "," ");
1401        adddatabrickscmds(ESqlStatementType.sstmerge, TBaseType.rrw_merge,  "into"," "," "," "," "," ");
1402        adddatabrickscmds(ESqlStatementType.sstmsckrepairtable, TBaseType.rrw_databricks_msck,  "repair"," "," "," "," "," ");
1403        adddatabrickscmds(ESqlStatementType.sstmsckrepairtable, TBaseType.rrw_databricks_msck,  "repair","table"," "," "," "," ");
1404        adddatabrickscmds(ESqlStatementType.sstOptimize, TBaseType.rrw_optimize,  " "," "," "," "," "," ");
1405        adddatabrickscmds(ESqlStatementType.sstRefresh, TBaseType.rrw_refresh,  " "," "," "," "," "," ");
1406        adddatabrickscmds(ESqlStatementType.sstRefreshFunction, TBaseType.rrw_refresh,  "function"," "," "," "," "," ");
1407        adddatabrickscmds(ESqlStatementType.sstRefreshTable, TBaseType.rrw_refresh,  "table"," "," "," "," "," ");
1408        adddatabrickscmds(ESqlStatementType.sstReorgTable, TBaseType.rrw_databricks_reorg,  "table"," "," "," "," "," ");
1409        adddatabrickscmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_replace,  "table"," "," "," "," "," ");
1410        adddatabrickscmds(ESqlStatementType.sstReset, TBaseType.rrw_reset,  " "," "," "," "," "," ");
1411        adddatabrickscmds(ESqlStatementType.sstRestoreTable, TBaseType.rrw_restore,  " "," "," "," "," "," ");
1412        adddatabrickscmds(ESqlStatementType.sstRevoke, TBaseType.rrw_revoke,  " "," "," "," "," "," ");
1413        adddatabrickscmds(ESqlStatementType.sstRevoke, TBaseType.rrw_revoke,  "select","on","share"," "," "," ");
1414        adddatabrickscmds(ESqlStatementType.sstset, TBaseType.rrw_set,  " "," "," "," "," "," ");
1415        adddatabrickscmds(ESqlStatementType.sstUseCatalog, TBaseType.rrw_set,  "catalog"," "," "," "," "," ");
1416        adddatabrickscmds(ESqlStatementType.sstset, TBaseType.rrw_set,  "time","zone"," "," "," "," ");
1417        adddatabrickscmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "all","functions"," "," "," "," ");
1418        adddatabrickscmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "all","in","share"," "," "," ");
1419        adddatabrickscmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "catalogs"," "," "," "," "," ");
1420        adddatabrickscmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "columns"," "," "," "," "," ");
1421        adddatabrickscmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "create","table"," "," "," "," ");
1422        adddatabrickscmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "external","locations"," "," "," "," ");
1423        adddatabrickscmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "functions"," "," "," "," "," ");
1424        adddatabrickscmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "grants"," "," "," "," "," ");
1425        adddatabrickscmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "grants","on","share"," "," "," ");
1426        adddatabrickscmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "grants","to","recipient"," "," "," ");
1427        adddatabrickscmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "groups"," "," "," "," "," ");
1428        adddatabrickscmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "partitions"," "," "," "," "," ");
1429        adddatabrickscmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "providers"," "," "," "," "," ");
1430        adddatabrickscmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "recipients"," "," "," "," "," ");
1431        adddatabrickscmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "schemas"," "," "," "," "," ");
1432        adddatabrickscmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "shares"," "," "," "," "," ");
1433        adddatabrickscmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "storage","credentials"," "," "," "," ");
1434        adddatabrickscmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "system","functions"," "," "," "," ");
1435        adddatabrickscmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "table","extended"," "," "," "," ");
1436        adddatabrickscmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "tables"," "," "," "," "," ");
1437        adddatabrickscmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "tblproperties"," "," "," "," "," ");
1438        adddatabrickscmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "user","functions"," "," "," "," ");
1439        adddatabrickscmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "users"," "," "," "," "," ");
1440        adddatabrickscmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "views"," "," "," "," "," ");
1441        adddatabrickscmds(ESqlStatementType.sstsync, TBaseType.rrw_databricks_sync,  "schema"," "," "," "," "," ");
1442        adddatabrickscmds(ESqlStatementType.sstsync, TBaseType.rrw_databricks_sync,  "table"," "," "," "," "," ");
1443        adddatabrickscmds(ESqlStatementType.ssttruncatetable, TBaseType.rrw_truncate,  "table"," "," "," "," "," ");
1444        adddatabrickscmds(ESqlStatementType.sstUnCacheTable, TBaseType.rrw_databricks_uncache,  "table"," "," "," "," "," ");
1445        adddatabrickscmds(ESqlStatementType.sstupdate, TBaseType.rrw_update,  " "," "," "," "," "," ");
1446        adddatabrickscmds(ESqlStatementType.sstUseSchema, TBaseType.rrw_use,  " "," "," "," "," "," ");
1447        adddatabrickscmds(ESqlStatementType.sstUseCatalog, TBaseType.rrw_use,  "catalog"," "," "," "," "," ");
1448        adddatabrickscmds(ESqlStatementType.sstUseSchema, TBaseType.rrw_use,  "database"," "," "," "," "," ");
1449        adddatabrickscmds(ESqlStatementType.sstUseSchema, TBaseType.rrw_use,  "schema"," "," "," "," "," ");
1450        adddatabrickscmds(ESqlStatementType.sstVacuum, TBaseType.rrw_databricks_vacuum,  " "," "," "," "," "," ");
1451
1452        adddatabrickscmds(ESqlStatementType.sstValues, TBaseType.rrw_values,  " "," "," "," "," "," ");
1453
1454        adddatabrickscmds(ESqlStatementType.sstGrant, TBaseType.rrw_grant,  " "," "," "," "," "," ");
1455        adddatabrickscmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert,  " "," "," "," "," "," ");
1456        adddatabrickscmds(ESqlStatementType.sstprepare, TBaseType.rrw_prepare,  " "," "," "," "," "," ");
1457        adddatabrickscmds(ESqlStatementType.sstcreaterole, TBaseType.rrw_replace,  "table"," "," "," "," "," ");
1458        adddatabrickscmds(ESqlStatementType.sstResetSession, TBaseType.rrw_reset,  "session"," "," "," "," "," ");
1459        adddatabrickscmds(ESqlStatementType.sstRevoke, TBaseType.rrw_revoke,  " "," "," "," "," "," ");
1460        adddatabrickscmds(ESqlStatementType.sstrollback, TBaseType.rrw_rollback,  " "," "," "," "," "," ");
1461        adddatabrickscmds(ESqlStatementType.sstselect, TBaseType.rrw_select,  " "," "," "," "," "," ");
1462        adddatabrickscmds(ESqlStatementType.sstset, TBaseType.rrw_set,  "role"," "," "," "," "," ");
1463        adddatabrickscmds(ESqlStatementType.sstset, TBaseType.rrw_set,  "session"," "," "," "," "," ");
1464
1465        adddatabrickscmds(ESqlStatementType.sstStartTransaction, TBaseType.rrw_start,  "transaction"," "," "," "," "," ");
1466
1467    }
1468    void initprestocmds(){
1469        addprestocmds(ESqlStatementType.sstalterfunction, TBaseType.rrw_alter,  "function"," "," "," "," "," ");
1470        addprestocmds(ESqlStatementType.sstAlterSchema, TBaseType.rrw_alter,  "schema"," "," "," "," "," ");
1471        addprestocmds(ESqlStatementType.sstaltertable, TBaseType.rrw_alter,  "table"," "," "," "," "," ");
1472        addprestocmds(ESqlStatementType.sstAnalyzeTable, TBaseType.rrw_analyze,  " "," "," "," "," "," ");
1473        addprestocmds(ESqlStatementType.sstcall, TBaseType.rrw_call,  " "," "," "," "," "," ");
1474        addprestocmds(ESqlStatementType.sstcommit, TBaseType.rrw_commit,  " "," "," "," "," "," ");
1475        addprestocmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create,  "function"," "," "," "," "," ");
1476        addprestocmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create,  "or","replace","function"," "," "," ");
1477        addprestocmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create,  "temporary","function"," "," "," "," ");
1478        addprestocmds(ESqlStatementType.sstcreaterole, TBaseType.rrw_create,  "role"," "," "," "," "," ");
1479        addprestocmds(ESqlStatementType.sstcreateschema, TBaseType.rrw_create,  "schema"," "," "," "," "," ");
1480        addprestocmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,  "table"," "," "," "," "," ");
1481        addprestocmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,  "view"," "," "," "," "," ");
1482        addprestocmds(ESqlStatementType.sstpostgresqlDeallocate, TBaseType.rrw_deallocate,  "prepare"," "," "," "," "," ");
1483        addprestocmds(ESqlStatementType.sstdelete, TBaseType.rrw_delete,  " "," "," "," "," "," ");
1484        addprestocmds(ESqlStatementType.sstdescribe, TBaseType.rrw_describe,  " "," "," "," "," "," ");
1485        addprestocmds(ESqlStatementType.sstdropfunction, TBaseType.rrw_drop,  "function"," "," "," "," "," ");
1486        addprestocmds(ESqlStatementType.sstdroprole, TBaseType.rrw_drop,  "role"," "," "," "," "," ");
1487        addprestocmds(ESqlStatementType.sstdropschema, TBaseType.rrw_drop,  "schema"," "," "," "," "," ");
1488        addprestocmds(ESqlStatementType.sstdroptable, TBaseType.rrw_drop,  "table"," "," "," "," "," ");
1489        addprestocmds(ESqlStatementType.sstdropview, TBaseType.rrw_drop,  "view"," "," "," "," "," ");
1490        addprestocmds(ESqlStatementType.sstExecute, TBaseType.rrw_execute,  " "," "," "," "," "," ");
1491        addprestocmds(ESqlStatementType.sstExplain, TBaseType.rrw_explain,  " "," "," "," "," "," ");
1492        addprestocmds(ESqlStatementType.sstGrant, TBaseType.rrw_grant,  " "," "," "," "," "," ");
1493        addprestocmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert,  " "," "," "," "," "," ");
1494        addprestocmds(ESqlStatementType.sstprepare, TBaseType.rrw_prepare,  " "," "," "," "," "," ");
1495        addprestocmds(ESqlStatementType.sstResetSession, TBaseType.rrw_reset,  "session"," "," "," "," "," ");
1496        addprestocmds(ESqlStatementType.sstRevoke, TBaseType.rrw_revoke,  " "," "," "," "," "," ");
1497        addprestocmds(ESqlStatementType.sstrollback, TBaseType.rrw_rollback,  " "," "," "," "," "," ");
1498        addprestocmds(ESqlStatementType.sstselect, TBaseType.rrw_select,  " "," "," "," "," "," ");
1499        addprestocmds(ESqlStatementType.sstset, TBaseType.rrw_set,  "role"," "," "," "," "," ");
1500        addprestocmds(ESqlStatementType.sstset, TBaseType.rrw_set,  "session"," "," "," "," "," ");
1501        addprestocmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "catalogs"," "," "," "," "," ");
1502        addprestocmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "columns"," "," "," "," "," ");
1503        addprestocmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "create","function"," "," "," "," ");
1504        addprestocmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "create","table"," "," "," "," ");
1505        addprestocmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "create","view"," "," "," "," ");
1506        addprestocmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "current","roles"," "," "," "," ");
1507        addprestocmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "functions"," "," "," "," "," ");
1508        addprestocmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "grants"," "," "," "," "," ");
1509        addprestocmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "role","grants"," "," "," "," ");
1510        addprestocmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "roles"," "," "," "," "," ");
1511        addprestocmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "schemas"," "," "," "," "," ");
1512        addprestocmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "session"," "," "," "," "," ");
1513        addprestocmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "stats"," "," "," "," "," ");
1514        addprestocmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "tables"," "," "," "," "," ");
1515        addprestocmds(ESqlStatementType.sstStartTransaction, TBaseType.rrw_start,  "transaction"," "," "," "," "," ");
1516        addprestocmds(ESqlStatementType.sstUse, TBaseType.rrw_use,  " "," "," "," "," "," ");
1517        addprestocmds(ESqlStatementType.sstValues, TBaseType.rrw_values,  " "," "," "," "," "," ");
1518    }
1519
1520    void initathenacmds(){
1521        addathenacmds(ESqlStatementType.sstalterdatabase, TBaseType.rrw_alter,  "database"," "," "," "," "," ");
1522        addathenacmds(ESqlStatementType.sstalterfunction, TBaseType.rrw_alter,  "function"," "," "," "," "," ");
1523        addathenacmds(ESqlStatementType.sstalterdatabase, TBaseType.rrw_alter,  "schema"," "," "," "," "," ");
1524        addathenacmds(ESqlStatementType.sstaltertable, TBaseType.rrw_alter,  "table"," "," "," "," "," ");
1525        addathenacmds(ESqlStatementType.sstAnalyzeTable, TBaseType.rrw_analyze,  " "," "," "," "," "," ");
1526        addathenacmds(ESqlStatementType.sstcall, TBaseType.rrw_call,  " "," "," "," "," "," ");
1527        addathenacmds(ESqlStatementType.sstcommit, TBaseType.rrw_commit,  " "," "," "," "," "," ");
1528        addathenacmds(ESqlStatementType.sstcreatedatabase, TBaseType.rrw_create,  "database"," "," "," "," "," ");
1529        addathenacmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create,  "function"," "," "," "," "," ");
1530        addathenacmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create,  "or","replace","function"," "," "," ");
1531        addathenacmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create,  "temporary","function"," "," "," "," ");
1532        addathenacmds(ESqlStatementType.sstcreaterole, TBaseType.rrw_create,  "role"," "," "," "," "," ");
1533        addathenacmds(ESqlStatementType.sstcreatedatabase, TBaseType.rrw_create,  "schema"," "," "," "," "," ");
1534        addathenacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,  "table"," "," "," "," "," ");
1535        addathenacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,  "external","table"," "," "," "," ");
1536        addathenacmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,  "view"," "," "," "," "," ");
1537        addathenacmds(ESqlStatementType.sstpostgresqlDeallocate, TBaseType.rrw_deallocate,  "prepare"," "," "," "," "," ");
1538        addathenacmds(ESqlStatementType.sstdelete, TBaseType.rrw_delete,  " "," "," "," "," "," ");
1539        addathenacmds(ESqlStatementType.sstdescribe, TBaseType.rrw_describe,  " "," "," "," "," "," ");
1540        addathenacmds(ESqlStatementType.sstdropdatabase, TBaseType.rrw_drop,  "database"," "," "," "," "," ");
1541        addathenacmds(ESqlStatementType.sstdropfunction, TBaseType.rrw_drop,  "function"," "," "," "," "," ");
1542        addathenacmds(ESqlStatementType.sstdroprole, TBaseType.rrw_drop,  "role"," "," "," "," "," ");
1543        addathenacmds(ESqlStatementType.sstdropdatabase, TBaseType.rrw_drop,  "schema"," "," "," "," "," ");
1544        addathenacmds(ESqlStatementType.sstdroptable, TBaseType.rrw_drop,  "table"," "," "," "," "," ");
1545        addathenacmds(ESqlStatementType.sstdropview, TBaseType.rrw_drop,  "view"," "," "," "," "," ");
1546        addathenacmds(ESqlStatementType.sstExecute, TBaseType.rrw_execute,  " "," "," "," "," "," ");
1547        addathenacmds(ESqlStatementType.sstExplain, TBaseType.rrw_explain,  " "," "," "," "," "," ");
1548        addathenacmds(ESqlStatementType.sstGrant, TBaseType.rrw_grant,  " "," "," "," "," "," ");
1549        addathenacmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert,  " "," "," "," "," "," ");
1550        addathenacmds(ESqlStatementType.sstmsck, TBaseType.rrw_athena_msck,  " "," "," "," "," "," ");
1551        addathenacmds(ESqlStatementType.sstprepare, TBaseType.rrw_prepare,  " "," "," "," "," "," ");
1552        addathenacmds(ESqlStatementType.sstResetSession, TBaseType.rrw_reset,  "session"," "," "," "," "," ");
1553        addathenacmds(ESqlStatementType.sstRevoke, TBaseType.rrw_revoke,  " "," "," "," "," "," ");
1554        addathenacmds(ESqlStatementType.sstrollback, TBaseType.rrw_rollback,  " "," "," "," "," "," ");
1555        addathenacmds(ESqlStatementType.sstselect, TBaseType.rrw_select,  " "," "," "," "," "," ");
1556        addathenacmds(ESqlStatementType.sstset, TBaseType.rrw_set,  "role"," "," "," "," "," ");
1557        addathenacmds(ESqlStatementType.sstset, TBaseType.rrw_set,  "session"," "," "," "," "," ");
1558        addathenacmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "catalogs"," "," "," "," "," ");
1559        addathenacmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "columns"," "," "," "," "," ");
1560        addathenacmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "create","function"," "," "," "," ");
1561        addathenacmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "create","table"," "," "," "," ");
1562        addathenacmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "create","view"," "," "," "," ");
1563        addathenacmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "current","roles"," "," "," "," ");
1564        addathenacmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "databases"," "," "," "," "," ");
1565        addathenacmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "functions"," "," "," "," "," ");
1566        addathenacmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "grants"," "," "," "," "," ");
1567        addathenacmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "partitions"," "," "," "," "," ");
1568        addathenacmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "role","grants"," "," "," "," ");
1569        addathenacmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "roles"," "," "," "," "," ");
1570        addathenacmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "schemas"," "," "," "," "," ");
1571        addathenacmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "session"," "," "," "," "," ");
1572        addathenacmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "stats"," "," "," "," "," ");
1573        addathenacmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "tables"," "," "," "," "," ");
1574        addathenacmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "tblproperties"," "," "," "," "," ");
1575        addathenacmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "views"," "," "," "," "," ");
1576        addathenacmds(ESqlStatementType.sstStartTransaction, TBaseType.rrw_start,  "transaction"," "," "," "," "," ");
1577        addathenacmds(ESqlStatementType.sstunload, TBaseType.rrw_athena_unload, " ", " ", " ", " ", " ", " ");
1578        addathenacmds(ESqlStatementType.sstUse, TBaseType.rrw_use,  " "," "," "," "," "," ");
1579        addathenacmds(ESqlStatementType.sstValues, TBaseType.rrw_values,  " "," "," "," "," "," ");
1580    }
1581
1582 void initsparksqlcmds(){
1583     addsparksqlcmds(ESqlStatementType.sstAddFile, TBaseType.rrw_add,  "file"," "," "," "," "," ");
1584     addsparksqlcmds(ESqlStatementType.sstAddJar, TBaseType.rrw_add,  "jar"," "," "," "," "," ");
1585     addsparksqlcmds(ESqlStatementType.sstalterdatabase, TBaseType.rrw_alter,  "database"," "," "," "," "," ");
1586     addsparksqlcmds(ESqlStatementType.sstaltertable, TBaseType.rrw_alter,  "table"," "," "," "," "," ");
1587     addsparksqlcmds(ESqlStatementType.sstalterview, TBaseType.rrw_alter,  "view"," "," "," "," "," ");
1588     addsparksqlcmds(ESqlStatementType.sstanalyzeTable, TBaseType.rrw_analyze,  "table"," "," "," "," "," ");
1589     addsparksqlcmds(ESqlStatementType.sstCacheTable, TBaseType.rrw_cache,  "table"," "," "," "," "," ");
1590     addsparksqlcmds(ESqlStatementType.sstCacheTable, TBaseType.rrw_cache,  "lazy","table"," "," "," "," ");
1591     addsparksqlcmds(ESqlStatementType.sstClearCache, TBaseType.rrw_clear,  "cache"," "," "," "," "," ");
1592     addsparksqlcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,  "external","table"," "," "," "," ");
1593     addsparksqlcmds(ESqlStatementType.sstcreatedatabase, TBaseType.rrw_create,  "database"," "," "," "," "," ");
1594     addsparksqlcmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create,  "function"," "," "," "," "," ");
1595     addsparksqlcmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,  "global","temporary","view"," "," "," ");
1596     addsparksqlcmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create,  "or","replace","function"," "," "," ");
1597     addsparksqlcmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,  "or","replace","global","temporary","view"," ");
1598     addsparksqlcmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create,  "or","replace","temporary","function"," "," ");
1599     addsparksqlcmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,  "or","replace","temporary","view"," "," ");
1600     addsparksqlcmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,  "or","replace","view"," "," "," ");
1601     addsparksqlcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,  "table"," "," "," "," "," ");
1602     addsparksqlcmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create,  "temporary","function"," "," "," "," ");
1603     addsparksqlcmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,  "temporary","view"," "," "," "," ");
1604     addsparksqlcmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,  "view"," "," "," "," "," ");
1605     addsparksqlcmds(ESqlStatementType.sstdescribeTable, TBaseType.rrw_spark_desc,  " "," "," "," "," "," ");
1606     addsparksqlcmds(ESqlStatementType.sstdescribeTable, TBaseType.rrw_describe,  " "," "," "," "," "," ");
1607     addsparksqlcmds(ESqlStatementType.sstdescribeDatabase, TBaseType.rrw_spark_desc,  "database"," "," "," "," "," ");
1608     addsparksqlcmds(ESqlStatementType.sstdescribeFunction, TBaseType.rrw_spark_desc,  "function"," "," "," "," "," ");
1609     addsparksqlcmds(ESqlStatementType.sstdescribeQuery, TBaseType.rrw_spark_desc,  "query"," "," "," "," "," ");
1610     addsparksqlcmds(ESqlStatementType.sstdescribeTable, TBaseType.rrw_spark_desc,  "table"," "," "," "," "," ");
1611     addsparksqlcmds(ESqlStatementType.sstdescribeFunction, TBaseType.rrw_describe,  "function"," "," "," "," "," ");
1612     addsparksqlcmds(ESqlStatementType.sstdescribeDatabase, TBaseType.rrw_describe,  "database"," "," "," "," "," ");
1613     addsparksqlcmds(ESqlStatementType.sstdescribeQuery, TBaseType.rrw_describe,  "query"," "," "," "," "," ");
1614     addsparksqlcmds(ESqlStatementType.sstdescribeTable, TBaseType.rrw_describe,  "table"," "," "," "," "," ");
1615     addsparksqlcmds(ESqlStatementType.sstdropdatabase, TBaseType.rrw_drop,  "schema"," "," "," "," "," ");
1616     addsparksqlcmds(ESqlStatementType.sstdropdatabase, TBaseType.rrw_drop,  "database"," "," "," "," "," ");
1617     addsparksqlcmds(ESqlStatementType.sstdropfunction, TBaseType.rrw_drop,  "function"," "," "," "," "," ");
1618     addsparksqlcmds(ESqlStatementType.sstdropfunction, TBaseType.rrw_drop,  "temporary","function"," "," "," "," ");
1619     addsparksqlcmds(ESqlStatementType.sstdroptable, TBaseType.rrw_drop,  "table"," "," "," "," "," ");
1620     addsparksqlcmds(ESqlStatementType.sstdropview, TBaseType.rrw_drop,  "view"," "," "," "," "," ");
1621     addsparksqlcmds(ESqlStatementType.sstExplain, TBaseType.rrw_explain,  " "," "," "," "," "," ");
1622     addsparksqlcmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert,  " "," "," "," "," "," ");
1623     addsparksqlcmds(ESqlStatementType.sstListFile, TBaseType.rrw_spark_list,  "file"," "," "," "," "," ");
1624     addsparksqlcmds(ESqlStatementType.sstListJar, TBaseType.rrw_spark_list,  "jar"," "," "," "," "," ");
1625     addsparksqlcmds(ESqlStatementType.sstLoadData, TBaseType.rrw_load,  "data"," "," "," "," "," ");
1626     addsparksqlcmds(ESqlStatementType.sstmsck, TBaseType.rrw_spark_msck, "repair","table"," "," "," "," ");
1627     addsparksqlcmds(ESqlStatementType.sstRefresh, TBaseType.rrw_refresh,  " "," "," "," "," "," ");
1628     addsparksqlcmds(ESqlStatementType.sstRefreshFunction, TBaseType.rrw_refresh,  "function"," "," "," "," "," ");
1629     addsparksqlcmds(ESqlStatementType.sstRefreshTable, TBaseType.rrw_refresh,  "table"," "," "," "," "," ");
1630     addsparksqlcmds(ESqlStatementType.sstReset, TBaseType.rrw_reset,  " "," "," "," "," "," ");
1631     addsparksqlcmds(ESqlStatementType.sstselect, TBaseType.rrw_select,  " "," "," "," "," "," ");
1632     addsparksqlcmds(ESqlStatementType.sstset, TBaseType.rrw_set,  " "," "," "," "," "," ");
1633     addsparksqlcmds(ESqlStatementType.sstSetTimeZone, TBaseType.rrw_set,  "time","zone"," "," "," "," ");
1634     addsparksqlcmds(ESqlStatementType.sstShowColumns, TBaseType.rrw_show,  "columns"," "," "," "," "," ");
1635     addsparksqlcmds(ESqlStatementType.sstShowCreateTable, TBaseType.rrw_show,  "create","table"," "," "," "," ");
1636     addsparksqlcmds(ESqlStatementType.sstShowDatabases, TBaseType.rrw_show,  "databases"," "," "," "," "," ");
1637     addsparksqlcmds(ESqlStatementType.sstShowFunctions, TBaseType.rrw_show,  "functions"," "," "," "," "," ");
1638     addsparksqlcmds(ESqlStatementType.sstShowPartitions, TBaseType.rrw_show,  "partitions"," "," "," "," "," ");
1639     addsparksqlcmds(ESqlStatementType.sstShowTableExtended, TBaseType.rrw_show,  "table","extended"," "," "," "," ");
1640     addsparksqlcmds(ESqlStatementType.sstShowTables, TBaseType.rrw_show,  "tables"," "," "," "," "," ");
1641     addsparksqlcmds(ESqlStatementType.sstShowTblProperties, TBaseType.rrw_show,  "tblproperties"," "," "," "," "," ");
1642     addsparksqlcmds(ESqlStatementType.sstShowUser, TBaseType.rrw_show,  "user"," "," "," "," "," ");
1643     addsparksqlcmds(ESqlStatementType.sstShowViews, TBaseType.rrw_show,  "views"," "," "," "," "," ");
1644     addsparksqlcmds(ESqlStatementType.ssttruncatetable, TBaseType.rrw_truncate,  "table"," "," "," "," "," ");
1645     addsparksqlcmds(ESqlStatementType.sstrepairtable, TBaseType.rrw_repair,  "table"," "," "," "," "," ");
1646     addsparksqlcmds(ESqlStatementType.sstUnCacheTable, TBaseType.rrw_spark_uncache,  "table"," "," "," "," "," ");
1647     addsparksqlcmds(ESqlStatementType.sstUse, TBaseType.rrw_use,  " "," "," "," "," "," ");
1648
1649 }
1650
1651 void initmysqlcmds(){
1652// cmd must be sort alphabetically
1653    addmysqlcmds(ESqlStatementType.sstmysqlalterview, TBaseType.rrw_alter,  "algorithm"," "," "," "," "," ");
1654    addmysqlcmds(ESqlStatementType.sstmysqlalterdatabase, TBaseType.rrw_alter,  "database"," "," "," "," "," ");
1655     addmysqlcmds(ESqlStatementType.sstmysqlalterfunction, TBaseType.rrw_alter,  "function"," "," "," "," "," ");
1656     addmysqlcmds(ESqlStatementType.sstmysqlalterprocedure, TBaseType.rrw_alter,  "procedure"," "," "," "," "," ");
1657     addmysqlcmds(ESqlStatementType.sstmysqlalterview, TBaseType.rrw_alter,  "sql","security","definer","view"," "," ");
1658     addmysqlcmds(ESqlStatementType.sstmysqlalterview, TBaseType.rrw_alter,  "sql","security","invoker","view"," "," ");
1659     addmysqlcmds(ESqlStatementType.sstaltertable, TBaseType.rrw_alter,  "table"," "," "," "," "," ");
1660     addmysqlcmds(ESqlStatementType.sstmysqlalterview, TBaseType.rrw_alter,  "view"," "," "," "," "," ");
1661     addmysqlcmds(ESqlStatementType.sstmysqlanalyzetable, TBaseType.rrw_analyze,  "table"," "," "," "," "," ");
1662     addmysqlcmds(ESqlStatementType.sstmysqlbackuptable, TBaseType.rrw_backup, "table"," "," "," "," "," ");
1663     addmysqlcmds(ESqlStatementType.sstmysqlstarttransaction, TBaseType.rrw_begin, " "," "," "," "," "," ");
1664     addmysqlcmds(ESqlStatementType.sstmysqlcacheindex, TBaseType.rrw_cache,  "index"," "," "," "," "," ");
1665     addmysqlcmds(ESqlStatementType.sstmysqlcall, TBaseType.rrw_call," "," "," "," "," "," ");
1666     addmysqlcmds(ESqlStatementType.sstmysqlcase, TBaseType.rrw_case," "," "," "," "," "," ");
1667     addmysqlcmds(ESqlStatementType.sstmysqlchangemasterto, TBaseType.rrw_change,"master", "to"," "," "," "," ");
1668     addmysqlcmds(ESqlStatementType.sstmysqlchecktable, TBaseType.rrw_check,"table"," "," "," "," "," ");
1669     addmysqlcmds(ESqlStatementType.sstmysqlchecktable, TBaseType.rrw_check,"tables"," "," "," "," "," ");
1670     addmysqlcmds(ESqlStatementType.sstmysqlchecksumtable, TBaseType.rrw_checksum,"table"," "," "," "," "," ");
1671     addmysqlcmds(ESqlStatementType.sstmysqlclose, TBaseType.rrw_close," "," "," "," "," "," ");
1672     addmysqlcmds(ESqlStatementType.sstmysqlcommit, TBaseType.rrw_commit," "," "," "," "," "," ");
1673     addmysqlcmds(ESqlStatementType.sstmysqlcreatefunction, TBaseType.rrw_create,"aggregate","function"," "," "," "," ");
1674     addmysqlcmds(ESqlStatementType.sstmysqlcreatedatabase, TBaseType.rrw_create,"database"," "," "," "," "," ");
1675     addmysqlcmds(ESqlStatementType.sstmysqlcreatefunction, TBaseType.rrw_create,"definer", "=", "current_user", "function"," "," ");
1676     addmysqlcmds(ESqlStatementType.sstmysqlcreateprocedure, TBaseType.rrw_create,"definer", "=", "current_user", "procedure"," "," ");
1677     addmysqlcmds(ESqlStatementType.sstcreatetrigger, TBaseType.rrw_create,"definer", "=", "current_user", "trigger"," "," ");
1678     addmysqlcmds(ESqlStatementType.sstmysqlcreateprocedure, TBaseType.rrw_create,"definer", "=","*","procedure"," "," ");
1679     addmysqlcmds(ESqlStatementType.sstmysqlcreatefunction, TBaseType.rrw_create,"definer", "=","*","function"," "," ");
1680     addmysqlcmds(ESqlStatementType.sstcreatetrigger, TBaseType.rrw_create,"definer", "=","*","trigger"," "," ");
1681     addmysqlcmds(ESqlStatementType.sstmysqlcreatefunction, TBaseType.rrw_create,"definer", "=","*","*","*","function");
1682     addmysqlcmds(ESqlStatementType.sstmysqlcreateprocedure, TBaseType.rrw_create,"definer", "=","*","*","*","procedure");
1683     addmysqlcmds(ESqlStatementType.sstcreatetrigger, TBaseType.rrw_create,"definer", "=","*","*","*","trigger");
1684     addmysqlcmds(ESqlStatementType.sstmysqlcreateindex, TBaseType.rrw_create,"fulltext","index"," "," "," "," ");
1685     addmysqlcmds(ESqlStatementType.sstmysqlcreatefunction, TBaseType.rrw_create,"function"," "," "," "," "," ");
1686     addmysqlcmds(ESqlStatementType.sstmysqlcreateindex, TBaseType.rrw_create,"index"," "," "," "," "," ");
1687     addmysqlcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"or","replace","table"," "," "," ");
1688     addmysqlcmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,"or","replace","view"," "," "," ");
1689     addmysqlcmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,"or","replace","*","*","*","view");
1690     addmysqlcmds(ESqlStatementType.sstmysqlcreateprocedure, TBaseType.rrw_create,"procedure"," "," "," "," "," ");
1691     addmysqlcmds(ESqlStatementType.sstmysqlcreateindex, TBaseType.rrw_create,"spatial","index"," "," "," "," ");
1692     addmysqlcmds(ESqlStatementType.sstmysqlcreatedatabase, TBaseType.rrw_create,"schema"," "," "," "," "," ");
1693     addmysqlcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"table"," "," "," "," "," ");
1694     addmysqlcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"temp","table"," "," "," "," ");
1695     addmysqlcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"temporary","table"," "," "," "," ");
1696     addmysqlcmds(ESqlStatementType.sstcreatetrigger, TBaseType.rrw_create,"trigger"," "," "," "," "," ");
1697     addmysqlcmds(ESqlStatementType.sstmysqlcreateindex, TBaseType.rrw_create,"unique","index"," "," "," "," ");
1698     addmysqlcmds(ESqlStatementType.sstmysqlcreateuser, TBaseType.rrw_create,"user"," "," "," "," "," ");
1699     addmysqlcmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,"view"," "," "," "," "," ");
1700     addmysqlcmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,"*","*","*","*","*","view");
1701     addmysqlcmds(ESqlStatementType.sstmysqldeallocateprepare, TBaseType.rrw_deallocate,"prepare"," "," "," "," "," ");
1702     addmysqlcmds(ESqlStatementType.sstmysqldeclare, TBaseType.rrw_declare," "," "," "," "," "," ");
1703     addmysqlcmds(ESqlStatementType.sstdelete, TBaseType.rrw_delete," "," "," "," "," "," ");
1704     addmysqlcmds(ESqlStatementType.sstmysqldelimiter, TBaseType.rrw_mysql_delimiter," "," "," "," "," "," ");
1705     addmysqlcmds(ESqlStatementType.sstdescribe, TBaseType.rrw_mysql_desc," "," "," "," "," "," ");
1706     addmysqlcmds(ESqlStatementType.sstdescribe, TBaseType.rrw_describe," "," "," "," "," "," ");
1707     addmysqlcmds(ESqlStatementType.sstmysqldo, TBaseType.rrw_do," "," "," "," "," "," ");
1708     addmysqlcmds(ESqlStatementType.sstmysqldropdatabase, TBaseType.rrw_drop,"database"," "," "," "," "," ");
1709     addmysqlcmds(ESqlStatementType.sstmysqldropfunction, TBaseType.rrw_drop,"function"," "," "," "," "," ");
1710     addmysqlcmds(ESqlStatementType.sstmysqldropindex, TBaseType.rrw_drop,"index"," "," "," "," "," ");
1711     addmysqlcmds(ESqlStatementType.sstmysqldropprepare, TBaseType.rrw_drop,"prepare"," "," "," "," "," ");
1712     addmysqlcmds(ESqlStatementType.sstmysqldropprocedure, TBaseType.rrw_drop,"procedure"," "," "," "," "," ");
1713     addmysqlcmds(ESqlStatementType.sstmysqldropdatabase, TBaseType.rrw_drop,"schema"," "," "," "," "," ");
1714     addmysqlcmds(ESqlStatementType.sstmysqldroptable, TBaseType.rrw_drop,"table"," "," "," "," "," ");
1715     addmysqlcmds(ESqlStatementType.sstmysqldroptable, TBaseType.rrw_drop,"tables"," "," "," "," "," ");
1716     addmysqlcmds(ESqlStatementType.sstmysqldroptable, TBaseType.rrw_drop,"temporary","table"," "," "," "," ");
1717     addmysqlcmds(ESqlStatementType.sstmysqldroptrigger, TBaseType.rrw_drop,"trigger"," "," "," "," "," ");
1718     addmysqlcmds(ESqlStatementType.sstmysqldropuser, TBaseType.rrw_drop,"user"," "," "," "," "," ");
1719     addmysqlcmds(ESqlStatementType.sstdropview, TBaseType.rrw_drop,"view"," "," "," "," "," ");
1720     addmysqlcmds(ESqlStatementType.sstmysqlexecute, TBaseType.rrw_execute," "," "," "," "," "," ");
1721     addmysqlcmds(ESqlStatementType.sstExplain, TBaseType.rrw_explain," "," "," "," "," "," ");
1722     addmysqlcmds(ESqlStatementType.sstmysqlfetch, TBaseType.rrw_fetch," "," "," "," "," "," ");
1723     addmysqlcmds(ESqlStatementType.sstmysqlflush, TBaseType.rrw_flush," "," "," "," "," "," ");
1724     addmysqlcmds(ESqlStatementType.sstmysqlgrant, TBaseType.rrw_grant," "," "," "," "," "," ");
1725     addmysqlcmds(ESqlStatementType.sstmysqlhandler, TBaseType.rrw_handler," "," "," "," "," "," ");
1726     addmysqlcmds(ESqlStatementType.sstmysqlifstmt, TBaseType.rrw_if," "," "," "," "," "," ");
1727     addmysqlcmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert," "," "," "," "," "," ");
1728     addmysqlcmds(ESqlStatementType.sstmysqliterate, TBaseType.rrw_iterate," "," "," "," "," "," ");
1729     addmysqlcmds(ESqlStatementType.sstmysqlkill, TBaseType.rrw_kill," "," "," "," "," "," ");
1730     addmysqlcmds(ESqlStatementType.sstmysqlleave, TBaseType.rrw_leave," "," "," "," "," "," ");
1731     addmysqlcmds(ESqlStatementType.sstmysqlloaddatafrommaster, TBaseType.rrw_load,"data", "from", "master"," "," "," ");
1732     addmysqlcmds(ESqlStatementType.sstmysqlloaddatainfile, TBaseType.rrw_load,"data", "infile"," "," "," "," ");
1733     addmysqlcmds(ESqlStatementType.sstmysqlloaddatainfile, TBaseType.rrw_load,"data", "local","infile"," "," "," ");
1734     addmysqlcmds(ESqlStatementType.sstmysqlloadindexintocache, TBaseType.rrw_load,"index", "into", "cache"," "," "," ");
1735     addmysqlcmds(ESqlStatementType.sstmysqlloadtable, TBaseType.rrw_load,"table"," "," "," "," "," ");
1736     addmysqlcmds(ESqlStatementType.sstmysqllocktable, TBaseType.rrw_lock,"table"," "," "," "," "," ");
1737     addmysqlcmds(ESqlStatementType.sstmysqllocktable, TBaseType.rrw_lock,"tables"," "," "," "," "," ");
1738     addmysqlcmds(ESqlStatementType.sstmysqlloop, TBaseType.rrw_loop," "," "," "," "," "," ");
1739     addmysqlcmds(ESqlStatementType.sstmysqlopen, TBaseType.rrw_open," "," "," "," "," "," ");
1740     addmysqlcmds(ESqlStatementType.sstmysqloptimizetable, TBaseType.rrw_optimize,"local","table"," "," "," "," ");
1741     addmysqlcmds(ESqlStatementType.sstmysqloptimizetable, TBaseType.rrw_optimize,"no_write_to_binlog","table"," "," "," "," ");
1742     addmysqlcmds(ESqlStatementType.sstmysqloptimizetable, TBaseType.rrw_optimize,"table"," "," "," "," "," ");
1743     addmysqlcmds(ESqlStatementType.sstmysqlprepare, TBaseType.rrw_prepare," "," "," "," "," "," ");
1744     addmysqlcmds(ESqlStatementType.sstmysqlpurgelogs, TBaseType.rrw_purge,"binary","logs"," "," "," "," ");
1745     addmysqlcmds(ESqlStatementType.sstmysqlpurgelogs, TBaseType.rrw_purge,"logs"," "," "," "," "," ");
1746     addmysqlcmds(ESqlStatementType.sstmysqlpurgelogs, TBaseType.rrw_purge,"master","logs"," "," "," "," ");
1747     addmysqlcmds(ESqlStatementType.sstmysqlreleasesavepoint,TBaseType. rrw_release,"savepoint"," "," "," "," "," ");
1748     addmysqlcmds(ESqlStatementType.sstmysqlrenametable, TBaseType.rrw_rename,"table"," "," "," "," "," ");
1749     addmysqlcmds(ESqlStatementType.sstmysqlrenameuser, TBaseType.rrw_rename,"user"," "," "," "," "," ");
1750     addmysqlcmds(ESqlStatementType.sstmysqlrepairtable,TBaseType.rrw_repair,"local","table"," "," "," "," ");
1751     addmysqlcmds(ESqlStatementType.sstmysqlrepairtable, TBaseType.rrw_repair,"no_write_to_binlog","table"," "," "," "," ");
1752     addmysqlcmds(ESqlStatementType.sstmysqlrepairtable, TBaseType.rrw_repair,"table"," "," "," "," "," ");
1753     addmysqlcmds(ESqlStatementType.sstmysqlrepeat, TBaseType.rrw_repeat," "," "," "," "," "," ");
1754     addmysqlcmds(ESqlStatementType.sstmysqlreplace, TBaseType.rrw_replace," "," "," "," "," "," ");
1755     addmysqlcmds(ESqlStatementType.sstmysqlreset, TBaseType.rrw_reset," "," "," "," "," "," ");
1756     addmysqlcmds(ESqlStatementType.sstmysqlresetmaster, TBaseType.rrw_reset,"master"," "," "," "," "," ");
1757     addmysqlcmds(ESqlStatementType.sstmysqlresetslave, TBaseType.rrw_reset,"slave"," "," "," "," "," ");
1758     addmysqlcmds(ESqlStatementType.sstmysqlrestoretable, TBaseType.rrw_restore,"table"," "," "," "," "," ");
1759     addmysqlcmds(ESqlStatementType.sstmysqlrevoke, TBaseType.rrw_revoke," "," "," "," "," "," ");
1760     addmysqlcmds(ESqlStatementType.sstmysqlrollback, TBaseType.rrw_rollback," "," "," "," "," "," ");
1761     addmysqlcmds(ESqlStatementType.sstmysqlsavepoint, TBaseType.rrw_savepoint," "," "," "," "," "," ");
1762     addmysqlcmds(ESqlStatementType.sstselect, TBaseType.rrw_select," "," "," "," "," "," ");
1763     addmysqlcmds(ESqlStatementType.sstmysqlset, TBaseType.rrw_set," "," "," "," "," "," ");
1764     addmysqlcmds(ESqlStatementType.sstmysqlsetautocommit, TBaseType.rrw_set,"autocommit"," "," "," "," "," ");
1765     addmysqlcmds(ESqlStatementType.sstmysqldelimiter, TBaseType.rrw_set,"delimiter"," "," "," "," "," ");
1766     addmysqlcmds(ESqlStatementType.sstmysqlsetglobalsql_slave_skip_counter, TBaseType.rrw_set,"global", "sql_slave_skip_counter"," "," "," "," ");
1767     addmysqlcmds(ESqlStatementType.sstmysqlsettransaction, TBaseType.rrw_set,"global","transaction"," "," "," "," ");
1768     addmysqlcmds(ESqlStatementType.sstmysqlset, TBaseType.rrw_set,"PASSWORD"," "," "," "," "," ");
1769     addmysqlcmds(ESqlStatementType.sstmysqlsettransaction, TBaseType.rrw_set,"session","transaction"," "," "," "," ");
1770     addmysqlcmds(ESqlStatementType.sstmysqlsetsql_log_bin, TBaseType.rrw_set,"sql_log_bin"," "," "," "," "," ");
1771     addmysqlcmds(ESqlStatementType.sstmysqlsettransaction, TBaseType.rrw_set,"transaction"," "," "," "," "," ");
1772     addmysqlcmds(ESqlStatementType.sstmysqlshowlogs, TBaseType.rrw_show,"bdb","logs"," "," "," "," ");
1773     addmysqlcmds(ESqlStatementType.sstmysqlshowbinlogevents, TBaseType.rrw_show,"binlog", "events"," "," "," "," ");
1774     addmysqlcmds(ESqlStatementType.sstmysqlshowcharacterset, TBaseType.rrw_show,"character", "set"," "," "," "," ");
1775     addmysqlcmds(ESqlStatementType.sstmysqlshowcharacterset, TBaseType.rrw_show,"charset", " "," "," "," "," ");
1776     addmysqlcmds(ESqlStatementType.sstmysqlshowcollation, TBaseType.rrw_show,"collation"," "," "," "," "," ");
1777     addmysqlcmds(ESqlStatementType.sstmysqlshowcolumns, TBaseType.rrw_show,"columns"," "," "," "," "," ");
1778     addmysqlcmds(ESqlStatementType.sstmysqlshowwarnings, TBaseType.rrw_show,"count"," "," "," "," "," ");
1779     addmysqlcmds(ESqlStatementType.sstmysqlshowcreateschema, TBaseType.rrw_show,"create", "schema"," "," "," "," ");
1780     addmysqlcmds(ESqlStatementType.sstmysqlshowcreatedatabase, TBaseType.rrw_show,"create", "database"," "," "," "," ");
1781     addmysqlcmds(ESqlStatementType.sstmysqlshowcreatefunction, TBaseType.rrw_show,"create","function"," "," "," "," ");
1782     addmysqlcmds(ESqlStatementType.sstmysqlshowcreateprocedure, TBaseType.rrw_show,"create","procedure"," "," "," "," ");
1783     addmysqlcmds(ESqlStatementType.sstmysqlshowcreatetable, TBaseType.rrw_show,"create","table"," "," "," "," ");
1784     addmysqlcmds(ESqlStatementType.sstmysqlshowcreateview, TBaseType.rrw_show,"create","view"," "," "," "," ");
1785     addmysqlcmds(ESqlStatementType.sstmysqlshowdatabases, TBaseType.rrw_show,"databases"," "," "," "," "," ");
1786     addmysqlcmds(ESqlStatementType.sstmysqlshowengine, TBaseType.rrw_show,"engine"," "," "," "," "," ");
1787     addmysqlcmds(ESqlStatementType.sstmysqlshowengines, TBaseType.rrw_show,"engines"," "," "," "," "," ");
1788     addmysqlcmds(ESqlStatementType.sstmysqlshowerrors, TBaseType.rrw_show,"errors"," "," "," "," "," ");
1789     addmysqlcmds(ESqlStatementType.sstmysqlshowindex, TBaseType.rrw_show,"extend","index"," "," "," "," ");
1790     addmysqlcmds(ESqlStatementType.sstmysqlshowindex, TBaseType.rrw_show,"extend","indexes"," "," "," "," ");
1791     addmysqlcmds(ESqlStatementType.sstmysqlshowindex, TBaseType.rrw_show,"extend","keys"," "," "," "," ");
1792     addmysqlcmds(ESqlStatementType.sstmysqlshowfields, TBaseType.rrw_show,"fields"," "," "," "," "," ");
1793     addmysqlcmds(ESqlStatementType.sstmysqlshowcolumns, TBaseType.rrw_show,"full","columns"," "," "," "," ");
1794     addmysqlcmds(ESqlStatementType.sstmysqlshowfields, TBaseType.rrw_show,"full","fields"," "," "," "," ");
1795     addmysqlcmds(ESqlStatementType.sstmysqlshowprocesslist, TBaseType.rrw_show,"full","processlist"," "," "," "," ");
1796     addmysqlcmds(ESqlStatementType.sstmysqlshowtables, TBaseType.rrw_show,"full","tables"," "," "," "," ");
1797     addmysqlcmds(ESqlStatementType.sstmysqlshowfunctionstatus, TBaseType.rrw_show,"function", "status"," "," "," "," ");
1798     addmysqlcmds(ESqlStatementType.sstmysqlshowstatus, TBaseType.rrw_show,"global","status"," "," "," "," ");
1799     addmysqlcmds(ESqlStatementType.sstmysqlshowvariables, TBaseType.rrw_show,"global","variables"," "," "," "," ");
1800     addmysqlcmds(ESqlStatementType.sstmysqlshowgrants, TBaseType.rrw_show,"grants"," "," "," "," "," ");
1801     addmysqlcmds(ESqlStatementType.sstmysqlshowindex, TBaseType.rrw_show,"index"," "," "," "," "," ");
1802     addmysqlcmds(ESqlStatementType.sstmysqlshowindex, TBaseType.rrw_show,"indexes"," "," "," "," "," ");
1803     addmysqlcmds(ESqlStatementType.sstmysqlshowinnodbstatus, TBaseType.rrw_show,"innodb", "status"," "," "," "," ");
1804     addmysqlcmds(ESqlStatementType.sstmysqlshowindex, TBaseType.rrw_show,"keys"," "," "," "," "," ");
1805     addmysqlcmds(ESqlStatementType.sstmysqlshowlogs, TBaseType.rrw_show,"logs"," "," "," "," "," ");
1806     addmysqlcmds(ESqlStatementType.sstmysqlshowmasterlogs, TBaseType.rrw_show,"master", "logs"," "," "," "," ");
1807     addmysqlcmds(ESqlStatementType.sstmysqlshowmasterstatus, TBaseType.rrw_show,"master", "status"," "," "," "," ");
1808     addmysqlcmds(ESqlStatementType.sstmysqlshowtables, TBaseType.rrw_show,"open","tables"," "," "," "," ");
1809     addmysqlcmds(ESqlStatementType.sstmysqlshowplugins, TBaseType.rrw_show,"plugins"," "," "," "," "," ");
1810     addmysqlcmds(ESqlStatementType.sstmysqlshowprivileges, TBaseType.rrw_show,"privileges"," "," "," "," "," ");
1811     addmysqlcmds(ESqlStatementType.sstmysqlshowfunctionstatus, TBaseType.rrw_show,"procedure", "status"," "," "," "," ");
1812     addmysqlcmds(ESqlStatementType.sstmysqlshowprocesslist, TBaseType.rrw_show,"processlist"," "," "," "," "," ");
1813     addmysqlcmds(ESqlStatementType.sstmysqlshowprofile, TBaseType.rrw_show,"profile"," "," "," "," "," ");
1814     addmysqlcmds(ESqlStatementType.sstmysqlshowprofiles, TBaseType.rrw_show,"profiles"," "," "," "," "," ");
1815     addmysqlcmds(ESqlStatementType.sstmysqlshowreplicaStatus, TBaseType.rrw_show,"replica","status"," "," "," "," ");
1816     addmysqlcmds(ESqlStatementType.sstmysqlshowstatus, TBaseType.rrw_show,"session","status"," "," "," "," ");
1817     addmysqlcmds(ESqlStatementType.sstmysqlshowvariables, TBaseType.rrw_show,"session","variables"," "," "," "," ");
1818     addmysqlcmds(ESqlStatementType.sstmysqlshowslavehosts, TBaseType.rrw_show,"slave", "hosts"," "," "," "," ");
1819     addmysqlcmds(ESqlStatementType.sstmysqlshowslavestatus, TBaseType.rrw_show,"slave", "status"," "," "," "," ");
1820     addmysqlcmds(ESqlStatementType.sstmysqlshowstatus, TBaseType.rrw_show,"status"," "," "," "," "," ");
1821     addmysqlcmds(ESqlStatementType.sstmysqlshowengines, TBaseType.rrw_show,"storage","engines"," "," "," "," ");
1822     addmysqlcmds(ESqlStatementType.sstmysqlshowtablestatus, TBaseType.rrw_show,"table", "status"," "," "," "," ");
1823     addmysqlcmds(ESqlStatementType.sstmysqlshowtables, TBaseType.rrw_show,"tables"," "," "," "," "," ");
1824     addmysqlcmds(ESqlStatementType.sstmysqlshowtriggers, TBaseType.rrw_show,"triggers"," "," "," "," "," ");
1825     addmysqlcmds(ESqlStatementType.sstmysqlshowvariables, TBaseType.rrw_show,"variables"," "," "," "," "," ");
1826     addmysqlcmds(ESqlStatementType.sstmysqlshowwarnings, TBaseType.rrw_show,"warnings"," "," "," "," "," ");
1827     addmysqlcmds(ESqlStatementType.sstmysqlsignal, TBaseType.rrw_signal," "," "," "," "," "," ");
1828     addmysqlcmds(ESqlStatementType.sstmysqlstartslave, TBaseType.rrw_start,"slave"," "," "," "," "," ");
1829     addmysqlcmds(ESqlStatementType.sstmysqlstarttransaction, TBaseType.rrw_start,"transaction"," "," "," "," "," ");
1830     addmysqlcmds(ESqlStatementType.sstmysqlstopslave, TBaseType.rrw_stop,"slave"," "," "," "," "," ");
1831     addmysqlcmds(ESqlStatementType.sstmysqltruncate, TBaseType.rrw_truncate," "," "," "," "," "," ");
1832     addmysqlcmds(ESqlStatementType.sstmysqlunlocktable, TBaseType.rrw_unlock,"tables"," "," "," "," "," ");
1833     addmysqlcmds(ESqlStatementType.sstupdate, TBaseType.rrw_update," "," "," "," "," "," ");
1834     addmysqlcmds(ESqlStatementType.sstmysqluse, TBaseType.rrw_use," "," "," "," "," "," ");
1835     addmysqlcmds(ESqlStatementType.sstmysqlwhile, TBaseType.rrw_while," "," "," "," "," "," ");
1836
1837}
1838
1839void initmdxcmds(){
1840// cmd must be sort alphabetically
1841    addmdxcmds(ESqlStatementType.sstmdxaltercube, TBaseType.rrw_alter,"cube"," "," "," "," "," ");
1842    addmdxcmds(ESqlStatementType.sstmdxalterdimension, TBaseType.rrw_alter,"dimension"," "," "," "," "," ");
1843    addmdxcmds(ESqlStatementType.sstmdxcalculate, TBaseType.rrw_calculate," "," "," "," "," "," ");
1844    addmdxcmds(ESqlStatementType.sstmdxcall, TBaseType.rrw_call," "," "," "," "," "," ");
1845    addmdxcmds(ESqlStatementType.sstmdxcase, TBaseType.rrw_case," "," "," "," "," "," ");
1846    addmdxcmds(ESqlStatementType.sstmdxclearcalculations, TBaseType.rrw_clear,"calculations"," "," "," "," "," ");
1847    addmdxcmds(ESqlStatementType.sstmdxcreateaction, TBaseType.rrw_create,"action"," "," "," "," "," ");
1848    addmdxcmds(ESqlStatementType.sstmdxcreatemember, TBaseType.rrw_create,"calculated","member"," "," "," "," ");
1849    addmdxcmds(ESqlStatementType.sstmdxcreatecellcalculation, TBaseType.rrw_create,"cell","calculation"," "," "," "," ");
1850    addmdxcmds(ESqlStatementType.sstmdxcreatedimensionmember, TBaseType.rrw_create,"dimension","member"," "," "," "," ");
1851    addmdxcmds(ESqlStatementType.sstmdxcreateglobalcube, TBaseType.rrw_create,"global","cube"," "," "," "," ");
1852    addmdxcmds(ESqlStatementType.sstmdxcreateset, TBaseType.rrw_create,"hidden","set"," "," "," "," ");
1853    addmdxcmds(ESqlStatementType.sstmdxcreatemeasure, TBaseType.rrw_create,"measure"," "," "," "," "," ");
1854    addmdxcmds(ESqlStatementType.sstmdxcreatemember, TBaseType.rrw_create,"member"," "," "," "," "," ");
1855    addmdxcmds(ESqlStatementType.sstmdxcreatemember, TBaseType.rrw_create,"session","calculated","memeber"," "," "," ");
1856    addmdxcmds(ESqlStatementType.sstmdxcreatesessioncube, TBaseType.rrw_create,"session","cube"," "," "," "," ");
1857    addmdxcmds(ESqlStatementType.sstmdxcreatedimensionmember, TBaseType.rrw_create,"session","dimension","member"," "," "," ");
1858    addmdxcmds(ESqlStatementType.sstmdxcreateset, TBaseType.rrw_create,"session","hidden","set"," "," "," ");
1859    addmdxcmds(ESqlStatementType.sstmdxcreatemember, TBaseType.rrw_create,"session","memeber"," "," "," "," ");
1860    addmdxcmds(ESqlStatementType.sstmdxcreateset, TBaseType.rrw_create,"session","set"," "," "," "," ");
1861    addmdxcmds(ESqlStatementType.sstmdxcreateset, TBaseType.rrw_create,"set"," "," "," "," "," ");
1862    addmdxcmds(ESqlStatementType.sstmdxcreatesubcube, TBaseType.rrw_create,"subcube"," "," "," "," "," ");
1863    addmdxcmds(ESqlStatementType.sstmdxdrillthrough, TBaseType.rrw_drillthrough," "," "," "," "," "," ");
1864    addmdxcmds(ESqlStatementType.sstmdxdropaction, TBaseType.rrw_drop,"action"," "," "," "," "," ");
1865    addmdxcmds(ESqlStatementType.sstmdxdropmember, TBaseType.rrw_drop,"calculated","member"," "," "," "," ");
1866    addmdxcmds(ESqlStatementType.sstmdxdropcellcalculation, TBaseType.rrw_drop,"cell","calcution"," "," "," "," ");
1867    addmdxcmds(ESqlStatementType.sstmdxdropdimensionmember, TBaseType.rrw_drop,"dimension","member"," "," "," "," ");
1868    addmdxcmds(ESqlStatementType.sstmdxdropmember, TBaseType.rrw_drop,"member"," "," "," "," "," ");
1869    addmdxcmds(ESqlStatementType.sstmdxdropmember, TBaseType.rrw_drop,"session","member"," "," "," "," ");
1870    addmdxcmds(ESqlStatementType.sstmdxdropmember, TBaseType.rrw_drop,"session","calculated","member"," "," "," ");
1871    addmdxcmds(ESqlStatementType.sstmdxdropcellcalculation, TBaseType.rrw_drop,"session","cell","calcution"," "," "," ");
1872    addmdxcmds(ESqlStatementType.sstmdxdropset, TBaseType.rrw_drop,"set"," "," "," "," "," ");
1873    addmdxcmds(ESqlStatementType.sstmdxdropsubcube, TBaseType.rrw_drop,"subcube"," "," "," "," "," ");
1874    addmdxcmds(ESqlStatementType.sstmdxexisting, TBaseType.rrw_existing," "," "," "," "," "," ");
1875    addmdxcmds(ESqlStatementType.sstmdxfreeze, TBaseType.rrw_freeze," "," "," "," "," "," ");
1876    addmdxcmds(ESqlStatementType.sstmdxif, TBaseType.rrw_if," "," "," "," "," "," ");
1877    addmdxcmds(ESqlStatementType.sstmdxrefreshcube, TBaseType.rrw_refresh,"cube"," "," "," "," "," ");
1878    addmdxcmds(ESqlStatementType.sstmdxscope, TBaseType.rrw_scope," "," "," "," "," "," ");
1879    addmdxcmds(ESqlStatementType.sstmdxselect, TBaseType.rrw_select," "," "," "," "," "," ");
1880    addmdxcmds(ESqlStatementType.sstmdxupdate, TBaseType.rrw_update," "," "," "," "," "," ");
1881
1882}
1883
1884void initsybasecmds(){
1885// cmd must be sort alphabetically
1886    addsybasecmds(ESqlStatementType.sstmssqladdsignature, TBaseType.rrw_add,"counter","signature"," "," "," "," ");
1887    addsybasecmds(ESqlStatementType.sstmssqladdsignature, TBaseType.rrw_add,"signature"," "," "," "," "," ");
1888//alter
1889    addsybasecmds(ESqlStatementType.sstmssqlalterapplicationrole, TBaseType.rrw_alter,"application","role"," "," "," "," ");
1890    addsybasecmds(ESqlStatementType.sstmssqlalterassembly, TBaseType.rrw_alter,"assembly"," "," "," "," "," ");
1891    addsybasecmds(ESqlStatementType.sstmssqlalterasymmetrickey, TBaseType.rrw_alter,"asymmetric","key"," "," "," "," ");
1892    addsybasecmds(ESqlStatementType.sstmssqlalterauthorization, TBaseType.rrw_alter,"authorization"," "," "," "," "," ");
1893    addsybasecmds(ESqlStatementType.sstmssqlaltercertificate, TBaseType.rrw_alter,"certificate"," "," "," "," "," ");
1894    addsybasecmds(ESqlStatementType.sstmssqlaltercredential, TBaseType.rrw_alter,"credential"," "," "," "," "," ");
1895    addsybasecmds(ESqlStatementType.sstmssqlalterdatabase, TBaseType.rrw_alter,"database"," "," "," "," "," ");
1896    addsybasecmds(ESqlStatementType.sstmssqlalterendpoint, TBaseType.rrw_alter,"endpoint"," "," "," "," "," ");
1897    addsybasecmds(ESqlStatementType.sstmssqlalterfulltextcatalog, TBaseType.rrw_alter,"fulltext","catalog"," "," "," "," ");
1898    addsybasecmds(ESqlStatementType.sstmssqlalterfulltextindex, TBaseType.rrw_alter,"fulltext","index"," "," "," "," ");
1899    addsybasecmds(ESqlStatementType.sstmssqlalterfunction, TBaseType.rrw_alter,"function"," "," "," "," "," ");
1900    addsybasecmds(ESqlStatementType.sstmssqlalterindex, TBaseType.rrw_alter,"index"," "," "," "," "," ");
1901    addsybasecmds(ESqlStatementType.sstmssqlalterlogin, TBaseType.rrw_alter,"login"," "," "," "," "," ");
1902    addsybasecmds(ESqlStatementType.sstmssqlaltermasterkey, TBaseType.rrw_alter,"master","key"," "," "," "," ");
1903    addsybasecmds(ESqlStatementType.sstmssqlaltermessagetype, TBaseType.rrw_alter,"message","type"," "," "," "," ");
1904    addsybasecmds(ESqlStatementType.sstmssqlalterpartitionfunction, TBaseType.rrw_alter,"partition","function"," "," "," "," ");
1905    addsybasecmds(ESqlStatementType.sstmssqlalterpartitionscheme, TBaseType.rrw_alter,"partition","scheme"," "," "," "," ");
1906    addsybasecmds(ESqlStatementType.sstmssqlalterprocedure, TBaseType.rrw_alter,"proc"," "," "," "," "," ");
1907    addsybasecmds(ESqlStatementType.sstmssqlalterprocedure, TBaseType.rrw_alter,"procedure"," "," "," "," "," ");
1908    addsybasecmds(ESqlStatementType.sstmssqlalterqueue, TBaseType.rrw_alter,"queue"," "," "," "," "," ");
1909    addsybasecmds(ESqlStatementType.sstmssqlalterremoteservicebinding, TBaseType.rrw_alter,"remote","service","binding"," "," "," ");
1910    addsybasecmds(ESqlStatementType.sstmssqlalterrole, TBaseType.rrw_alter,"role"," "," "," "," "," ");
1911    addsybasecmds(ESqlStatementType.sstmssqlalterroute, TBaseType.rrw_alter,"route"," "," "," "," "," ");
1912    addsybasecmds(ESqlStatementType.sstmssqlalterschema, TBaseType.rrw_alter,"schema"," "," "," "," "," ");
1913    addsybasecmds(ESqlStatementType.sstmssqlalterservice, TBaseType.rrw_alter,"service"," "," "," "," "," ");
1914    addsybasecmds(ESqlStatementType.sstmssqlalterservicemasterkey, TBaseType.rrw_alter,"service","master","key"," "," "," ");
1915    addsybasecmds(ESqlStatementType.sstmssqlaltersymmetrickey, TBaseType.rrw_alter,"symmetric","key"," "," "," "," ");
1916    addsybasecmds(ESqlStatementType.sstaltertable, TBaseType.rrw_alter,"table"," "," "," "," "," ");
1917    addsybasecmds(ESqlStatementType.sstmssqlaltertrigger, TBaseType.rrw_alter,"trigger"," "," "," "," "," ");
1918    addsybasecmds(ESqlStatementType.sstmssqlalteruser, TBaseType.rrw_alter,"user"," "," "," "," "," ");
1919    addsybasecmds(ESqlStatementType.sstmssqlalterview, TBaseType.rrw_alter,"view"," "," "," "," "," ");
1920    addsybasecmds(ESqlStatementType.sstmssqlalterxmlschemacollection, TBaseType.rrw_alter,"xml","schema","collection"," "," "," ");
1921//backup
1922    addsybasecmds(ESqlStatementType.sstmssqlbackupdatabase, TBaseType.rrw_backup,"database"," "," "," "," "," ");
1923    addsybasecmds(ESqlStatementType.sstmssqlbackupcertificate, TBaseType.rrw_backup,"certificate"," "," "," "," "," ");
1924    addsybasecmds(ESqlStatementType.sstmssqlbackuplog, TBaseType.rrw_backup,"log"," "," "," "," "," ");
1925    addsybasecmds(ESqlStatementType.sstmssqlbackupmasterkey, TBaseType.rrw_backup,"master","key"," "," "," "," ");
1926    addsybasecmds(ESqlStatementType.sstmssqlbackupservicemasterkey, TBaseType.rrw_backup,"service","master","key"," "," "," ");
1927//begin
1928    addsybasecmds(ESqlStatementType.sstmssqlbegincatch, TBaseType.rrw_begin,"catch"," "," "," "," "," ");
1929    addsybasecmds(ESqlStatementType.sstmssqlbeginconversationtimer, TBaseType.rrw_begin,"conversation","timer"," "," "," "," ");
1930    addsybasecmds(ESqlStatementType.sstmssqlbegindialog, TBaseType.rrw_begin,"dialog"," "," "," "," "," ");
1931    addsybasecmds(ESqlStatementType.sstmssqlbegindistributed, TBaseType.rrw_begin,"distributed"," "," "," "," "," ");
1932    addsybasecmds(ESqlStatementType.sstmssqlbegintran, TBaseType.rrw_begin,"tran"," "," "," "," "," ");
1933    addsybasecmds(ESqlStatementType.sstmssqlbegintran, TBaseType.rrw_begin,"transaction"," "," "," "," "," ");
1934    addsybasecmds(ESqlStatementType.sstmssqlbegintry, TBaseType.rrw_begin,"try"," "," "," "," "," ");
1935//break
1936    addsybasecmds(ESqlStatementType.sstbreak, TBaseType.rrw_break," "," "," "," "," "," ");
1937//bulk insert
1938    addsybasecmds(ESqlStatementType.sstmssqlbulkinsert, TBaseType.rrw_bulk,"insert"," "," "," "," "," ");
1939
1940    addsybasecmds(ESqlStatementType.sstcall, TBaseType.rrw_call," "," "," "," "," "," ");
1941
1942//checkpoint
1943    addsybasecmds(ESqlStatementType.sstmssqlcheckpoint, TBaseType.rrw_checkpoint," "," "," "," "," "," ");
1944//close
1945    addsybasecmds(ESqlStatementType.sstmssqlclose, TBaseType.rrw_close," "," "," "," "," "," ");
1946    addsybasecmds(ESqlStatementType.sstmssqlclosesymmetrickey, TBaseType.rrw_close,"all", "symmetric", "keys"," "," "," ");
1947    addsybasecmds(ESqlStatementType.sstmssqlclosemasterkey, TBaseType.rrw_close,"master", "key"," "," "," "," ");
1948    addsybasecmds(ESqlStatementType.sstmssqlclosesymmetrickey, TBaseType.rrw_close,"symmetric", "key"," "," "," "," ");
1949//commit
1950    addsybasecmds(ESqlStatementType.sstmssqlcommit, TBaseType.rrw_commit," "," "," "," "," "," ");
1951    addsybasecmds(ESqlStatementType.sstmssqlcommit, TBaseType.rrw_commit,"work"," "," "," "," "," ");
1952    addsybasecmds(ESqlStatementType.sstmssqlcommit, TBaseType.rrw_commit,"tran"," "," "," "," "," ");
1953    addsybasecmds(ESqlStatementType.sstmssqlcommit, TBaseType.rrw_commit,"transaction"," "," "," "," "," ");
1954//continue
1955    addsybasecmds(ESqlStatementType.sstmssqlcontinue, TBaseType.rrw_continue," "," "," "," "," "," ");
1956//create
1957    addsybasecmds(ESqlStatementType.sstmssqlcreateaggregate, TBaseType.rrw_create,"aggregate"," "," "," "," "," ");
1958    addsybasecmds(ESqlStatementType.sstmssqlcreateapplicationrole, TBaseType.rrw_create,"application", "role"," "," "," "," ");
1959    addsybasecmds(ESqlStatementType.sstmssqlcreateassembly, TBaseType.rrw_create,"assembly"," "," "," "," "," ");
1960    addsybasecmds(ESqlStatementType.sstmssqlcreateasymmetrickey, TBaseType.rrw_create,"asymmetric", "key"," "," "," "," ");
1961    addsybasecmds(ESqlStatementType.sstmssqlcreatecertificate, TBaseType.rrw_create,"certificate"," "," "," "," "," ");
1962    addsybasecmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"clustered","index"," "," "," "," ");
1963    addsybasecmds(ESqlStatementType.sstmssqlcreatecontract, TBaseType.rrw_create,"contract"," "," "," "," "," ");
1964    addsybasecmds(ESqlStatementType.sstmssqlcreatecredential, TBaseType.rrw_create,"credential"," "," "," "," "," ");
1965    addsybasecmds(ESqlStatementType.sstcreatedatabase, TBaseType.rrw_create,"database"," "," "," "," "," ");
1966    addsybasecmds(ESqlStatementType.sstmssqlcreatedefault, TBaseType.rrw_create,"default"," "," "," "," "," ");
1967    addsybasecmds(ESqlStatementType.sstmssqlcreateendpoint, TBaseType.rrw_create,"endpoint"," "," "," "," "," ");
1968    addsybasecmds(ESqlStatementType.sstmssqlcreateeventnotification, TBaseType.rrw_create,"event", "notification"," "," "," "," ");
1969    addsybasecmds(ESqlStatementType.sstmssqlcreatefulltextcatalog, TBaseType.rrw_create,"fulltext", "catalog"," "," "," "," ");
1970    addsybasecmds(ESqlStatementType.sstmssqlcreatefulltextindex, TBaseType.rrw_create,"fulltext", "index"," "," "," "," ");
1971    addsybasecmds(ESqlStatementType.sstmssqlcreatefunction, TBaseType.rrw_create,"function"," "," "," "," "," ");
1972    addsybasecmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"index"," "," "," "," "," ");
1973    addsybasecmds(ESqlStatementType.sstmssqlcreatelogin, TBaseType.rrw_create,"login"," "," "," "," "," ");
1974    addsybasecmds(ESqlStatementType.sstmssqlcreatemasterkey, TBaseType.rrw_create,"master","key"," "," "," "," ");
1975    addsybasecmds(ESqlStatementType.sstmssqlcreatemessagetype, TBaseType.rrw_create,"message","type"," "," "," "," ");
1976    addsybasecmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"nonclustered","index"," "," "," "," ");
1977    addsybasecmds(ESqlStatementType.sstmssqlcreatefunction, TBaseType.rrw_create,"or","replace","function"," "," "," ");
1978    addsybasecmds(ESqlStatementType.sstmssqlcreateprocedure, TBaseType.rrw_create,"or","replace","proc"," "," "," ");
1979    addsybasecmds(ESqlStatementType.sstmssqlcreateprocedure, TBaseType.rrw_create,"or","replace","procedure"," "," "," ");
1980    addsybasecmds(ESqlStatementType.sstmssqlcreatepartitionfunction, TBaseType.rrw_create,"partition","function"," "," "," "," ");
1981    addsybasecmds(ESqlStatementType.sstmssqlcreatepartitionscheme, TBaseType.rrw_create,"partition","scheme"," "," "," "," ");
1982    addsybasecmds(ESqlStatementType.sstmssqlcreateprocedure, TBaseType.rrw_create,"proc"," "," "," "," "," ");
1983    addsybasecmds(ESqlStatementType.sstmssqlcreateprocedure, TBaseType.rrw_create,"procedure"," "," "," "," "," ");
1984    addsybasecmds(ESqlStatementType.sstmssqlcreatequeue, TBaseType.rrw_create,"queue"," "," "," "," "," ");
1985    addsybasecmds(ESqlStatementType.sstmssqlcreateremoteservicebinding, TBaseType.rrw_create,"remote", "service", "binding"," "," "," ");
1986    addsybasecmds(ESqlStatementType.sstmssqlcreaterole, TBaseType.rrw_create,"role"," "," "," "," "," ");
1987    addsybasecmds(ESqlStatementType.sstmssqlcreateroute, TBaseType.rrw_create,"route"," "," "," "," "," ");
1988    addsybasecmds(ESqlStatementType.sstmssqlcreaterule, TBaseType.rrw_create,"rule"," "," "," "," "," ");
1989    addsybasecmds(ESqlStatementType.sstmssqlcreateschema, TBaseType.rrw_create,"schema"," "," "," "," "," ");
1990    addsybasecmds(ESqlStatementType.sstmssqlcreateservice, TBaseType.rrw_create,"service"," "," "," "," "," ");
1991    addsybasecmds(ESqlStatementType.sstmssqlcreatestatistics, TBaseType.rrw_create,"statistics"," "," "," "," "," ");
1992    addsybasecmds(ESqlStatementType.sstmssqlcreatesymmetrickey, TBaseType.rrw_create,"symmetric", "key"," "," "," "," ");
1993    addsybasecmds(ESqlStatementType.sstmssqlcreatesynonym, TBaseType.rrw_create,"synonym"," "," "," "," "," ");
1994    addsybasecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"table"," "," "," "," "," ");
1995    addsybasecmds(ESqlStatementType.sstcreatetrigger, TBaseType.rrw_create,"trigger"," "," "," "," "," ");
1996    addsybasecmds(ESqlStatementType.sstmssqlcreatetype, TBaseType.rrw_create,"type"," "," "," "," "," ");
1997    addsybasecmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"unique","clustered","index"," "," "," ");
1998    addsybasecmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"unique","index"," "," "," "," ");
1999    addsybasecmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"unique","nonclustered","index"," "," "," ");
2000    addsybasecmds(ESqlStatementType.sstmssqlcreateuser, TBaseType.rrw_create,"user"," "," "," "," "," ");
2001    addsybasecmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,"view"," "," "," "," "," ");
2002    addsybasecmds(ESqlStatementType.sstmssqlcreatexmlschemacollection, TBaseType.rrw_create,"xml", "schema", "collection"," "," "," ");
2003// DBCC
2004    addsybasecmds(ESqlStatementType.sstmssqldbcc, TBaseType.rrw_dbcc," "," "," "," "," "," ");
2005//DEALLOCATE
2006    addsybasecmds(ESqlStatementType.sstmssqldeallocate, TBaseType.rrw_deallocate," "," "," "," "," "," ");
2007//DECLARE
2008    addsybasecmds(ESqlStatementType.sstmssqldeclare, TBaseType.rrw_declare," "," "," "," "," "," ");
2009//DELETE
2010    addsybasecmds(ESqlStatementType.sstdelete, TBaseType.rrw_delete," "," "," "," "," "," ");
2011
2012//DELETE statistics
2013    addsybasecmds(ESqlStatementType.sstsybaseDeleteStatistics, TBaseType.rrw_delete,"shared","statistics"," "," "," "," ");
2014    addsybasecmds(ESqlStatementType.sstsybaseDeleteStatistics, TBaseType.rrw_delete,"statistics"," "," "," "," "," ");
2015
2016//DENY
2017    addsybasecmds(ESqlStatementType.sstmssqldeny, TBaseType.rrw_deny," "," "," "," "," "," ");
2018//DISABLE TRIGGER
2019    addsybasecmds(ESqlStatementType.sstmssqldisabletrigger, TBaseType.rrw_disable,"trigger"," "," "," "," "," ");
2020//drop
2021    addsybasecmds(ESqlStatementType.sstmssqldropaggregate, TBaseType.rrw_drop,"aggregate"," "," "," "," "," ");
2022    addsybasecmds(ESqlStatementType.sstmssqldropapplicationrole, TBaseType.rrw_drop,"application", "role"," "," "," "," ");
2023    addsybasecmds(ESqlStatementType.sstmssqldropassembly, TBaseType.rrw_drop,"assembly"," "," "," "," "," ");
2024    addsybasecmds(ESqlStatementType.sstmssqldropasymmetrickey, TBaseType.rrw_drop,"asymmetric", "key"," "," "," "," ");
2025    addsybasecmds(ESqlStatementType.sstmssqldropcertificate, TBaseType.rrw_drop,"certificate"," "," "," "," "," ");
2026    addsybasecmds(ESqlStatementType.sstmssqldropcontract, TBaseType.rrw_drop,"contract"," "," "," "," "," ");
2027    addsybasecmds(ESqlStatementType.sstmssqldropsignature, TBaseType.rrw_drop,"counter", "signature"," "," "," "," ");
2028    addsybasecmds(ESqlStatementType.sstmssqldropcredential, TBaseType.rrw_drop,"credential"," "," "," "," "," ");
2029    addsybasecmds(ESqlStatementType.sstmssqldropdatabase, TBaseType.rrw_drop,"database"," "," "," "," "," ");
2030    addsybasecmds(ESqlStatementType.sstmssqldropdefault, TBaseType.rrw_drop,"default"," "," "," "," "," ");
2031    addsybasecmds(ESqlStatementType.sstmssqldropendpoint, TBaseType.rrw_drop,"endpoint"," "," "," "," "," ");
2032    addsybasecmds(ESqlStatementType.sstmssqldropeventnotification, TBaseType.rrw_drop,"event", "notification"," "," "," "," ");
2033    addsybasecmds(ESqlStatementType.sstmssqldropfulltextcatalog, TBaseType.rrw_drop,"fulltext", "catalog"," "," "," "," ");
2034    addsybasecmds(ESqlStatementType.sstmssqldropfulltextindex, TBaseType.rrw_drop,"fulltext", "index"," "," "," "," ");
2035    addsybasecmds(ESqlStatementType.sstmssqldropfunction, TBaseType.rrw_drop,"function"," "," "," "," "," ");
2036    addsybasecmds(ESqlStatementType.sstmssqldropindex, TBaseType.rrw_drop,"index"," "," "," "," "," ");
2037    addsybasecmds(ESqlStatementType.sstmssqldroplogin, TBaseType.rrw_drop,"login"," "," "," "," "," ");
2038    addsybasecmds(ESqlStatementType.sstmssqldropmasterkey, TBaseType.rrw_drop,"master", "key"," "," "," "," ");
2039    addsybasecmds(ESqlStatementType.sstmssqldropmessagetype, TBaseType.rrw_drop,"message", "type"," "," "," "," ");
2040    addsybasecmds(ESqlStatementType.sstmssqldroppartitionfunction, TBaseType.rrw_drop,"partition", "function"," "," "," "," ");
2041    addsybasecmds(ESqlStatementType.sstmssqldroppartitionscheme, TBaseType.rrw_drop,"partition", "scheme"," "," "," "," ");
2042    addsybasecmds(ESqlStatementType.sstmssqldropprocedure, TBaseType.rrw_drop,"proc"," "," "," "," "," ");
2043    addsybasecmds(ESqlStatementType.sstmssqldropprocedure, TBaseType.rrw_drop,"procedure"," "," "," "," "," ");
2044    addsybasecmds(ESqlStatementType.sstmssqldropqueue, TBaseType.rrw_drop,"queue"," "," "," "," "," ");
2045    addsybasecmds(ESqlStatementType.sstmssqldropremoteservicebinding, TBaseType.rrw_drop,"remote", "service", "binding"," "," "," ");
2046    addsybasecmds(ESqlStatementType.sstmssqldroprole, TBaseType.rrw_drop,"role"," "," "," "," "," ");
2047    addsybasecmds(ESqlStatementType.sstmssqldroproute, TBaseType.rrw_drop,"route"," "," "," "," "," ");
2048    addsybasecmds(ESqlStatementType.sstmssqldroprule, TBaseType.rrw_drop,"rule"," "," "," "," "," ");
2049    addsybasecmds(ESqlStatementType.sstmssqldropschema, TBaseType.rrw_drop,"schema"," "," "," "," "," ");
2050    addsybasecmds(ESqlStatementType.sstmssqldropservice, TBaseType.rrw_drop,"service"," "," "," "," "," ");
2051    addsybasecmds(ESqlStatementType.sstmssqldropsignature, TBaseType.rrw_drop,"signature"," "," "," "," "," ");
2052    addsybasecmds(ESqlStatementType.sstmssqldropstatistics, TBaseType.rrw_drop,"statistics"," "," "," "," "," ");
2053    addsybasecmds(ESqlStatementType.sstmssqldropsymmetrickey, TBaseType.rrw_drop,"symmetric", "key"," "," "," "," ");
2054    addsybasecmds(ESqlStatementType.sstmssqldropsynonym, TBaseType.rrw_drop,"synonym"," "," "," "," "," ");
2055    addsybasecmds(ESqlStatementType.sstmssqldroptable, TBaseType.rrw_drop,"table"," "," "," "," "," ");
2056    addsybasecmds(ESqlStatementType.sstmssqldroptrigger, TBaseType.rrw_drop,"trigger"," "," "," "," "," ");
2057    addsybasecmds(ESqlStatementType.sstmssqldroptype, TBaseType.rrw_drop,"type"," "," "," "," "," ");
2058    addsybasecmds(ESqlStatementType.sstmssqldropuser, TBaseType.rrw_drop,"user"," "," "," "," "," ");
2059    addsybasecmds(ESqlStatementType.sstmssqldropview, TBaseType.rrw_drop,"view"," "," "," "," "," ");
2060    addsybasecmds(ESqlStatementType.sstmssqldropxmlschemacollection, TBaseType.rrw_drop,"xml", "schema", "collection"," "," "," ");
2061
2062    addsybasecmds(ESqlStatementType.sstsybasedumpTran, TBaseType.rrw_sybase_dump,"tran"," "," "," "," "," ");
2063    addsybasecmds(ESqlStatementType.sstsybasedumpTran, TBaseType.rrw_sybase_dump,"transaction"," "," "," "," "," ");
2064//if
2065    addsybasecmds(ESqlStatementType.sstmssqlif, TBaseType.rrw_if," "," "," "," "," "," ");
2066//enable trigger
2067    addsybasecmds(ESqlStatementType.sstmssqlenabletrigger, TBaseType.rrw_enable,"trigger"," "," "," "," "," ");
2068//END CONVERSATION
2069// addsybasecmds(ESqlStatementType.sstMssqlEndCatch,TBaseType.rrw_end,'catch');
2070    addsybasecmds(ESqlStatementType.sstmssqlendconversation, TBaseType.rrw_end,"conversation"," "," "," "," "," ");
2071// addsybasecmds(ESqlStatementType.sstMssqlEndTry,TBaseType.rrw_end,'try');
2072//exec
2073//exec as
2074    addsybasecmds(ESqlStatementType.sstmssqlexec, TBaseType.rrw_exec," "," "," "," "," "," ");
2075    addsybasecmds(ESqlStatementType.sstmssqlexecuteas, TBaseType.rrw_exec,"as","caller"," "," "," "," ");
2076    addsybasecmds(ESqlStatementType.sstmssqlexecuteas, TBaseType.rrw_exec,"as","login"," "," "," "," ");
2077    addsybasecmds(ESqlStatementType.sstmssqlexecuteas, TBaseType.rrw_exec,"as","user"," "," "," "," ");
2078    addsybasecmds(ESqlStatementType.sstmssqlexec, TBaseType.rrw_execute, " "," "," "," "," "," ");
2079    addsybasecmds(ESqlStatementType.sstmssqlexecuteas, TBaseType.rrw_execute,"as","caller"," "," "," "," ");
2080    addsybasecmds(ESqlStatementType.sstmssqlexecuteas, TBaseType.rrw_execute,"as","login"," "," "," "," ");
2081    addsybasecmds(ESqlStatementType.sstmssqlexecuteas, TBaseType.rrw_execute,"as","user"," "," "," "," ");
2082//fetch
2083    addsybasecmds(ESqlStatementType.sstmssqlfetch, TBaseType.rrw_fetch," "," "," "," "," "," ");
2084//go
2085    addsybasecmds(ESqlStatementType.sstmssqlgo, TBaseType.rrw_go," "," "," "," "," "," ");
2086//goto
2087    addsybasecmds(ESqlStatementType.sstmssqlgoto, TBaseType.rrw_goto," "," "," "," "," "," ");
2088//GRANT
2089    addsybasecmds(ESqlStatementType.sstmssqlgrant, TBaseType.rrw_grant," "," "," "," "," "," ");
2090//GRANT
2091    addsybasecmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert," "," "," "," "," "," ");
2092
2093    addsybasecmds(ESqlStatementType.sstsybaseInsertBulk, TBaseType.rrw_insert,"bulk"," "," "," "," "," ");
2094//KILL
2095    addsybasecmds(ESqlStatementType.sstmssqlkill, TBaseType.rrw_kill," "," "," "," "," "," ");
2096//KILL
2097    addsybasecmds(ESqlStatementType.sstmssqlkill, TBaseType.rrw_kill," "," "," "," "," "," ");
2098    addsybasecmds(ESqlStatementType.sstmssqlkillquerynotificationsubscription, TBaseType.rrw_kill,"kill", "query", "notification", "subscription"," "," ");
2099    addsybasecmds(ESqlStatementType.sstmssqlkillstats, TBaseType.rrw_kill,"stats"," "," "," "," "," ");
2100
2101    addsybasecmds(ESqlStatementType.sstload,TBaseType.rrw_load,"table"," "," "," "," "," ");
2102//
2103 addsybasecmds(ESqlStatementType.sstsybaselocktable,TBaseType.rw_locktable,"table"," "," "," "," "," ");
2104//MOVE CONVERSATION
2105    addsybasecmds(ESqlStatementType.sstmssqlmoveconversation, TBaseType.rrw_move,"conversation"," "," "," "," "," ");
2106//merge
2107    addsybasecmds(ESqlStatementType.sstmerge, TBaseType.rrw_merge," "," "," "," "," "," ");
2108//open
2109    addsybasecmds(ESqlStatementType.sstmssqlopen, TBaseType.rrw_open," "," "," "," "," "," ");
2110    addsybasecmds(ESqlStatementType.sstmssqlopenmasterkey, TBaseType.rrw_open,"master", "key"," "," "," "," ");
2111    addsybasecmds(ESqlStatementType.sstmssqlopensymmetrickey, TBaseType.rrw_open,"symmetric", "key"," "," "," "," ");
2112//PRINT
2113    addsybasecmds(ESqlStatementType.sstmssqlprint, TBaseType.rrw_print," "," "," "," "," "," ");
2114//RAISERROR
2115    addsybasecmds(ESqlStatementType.sstmssqlraiserror, TBaseType.rrw_raiserror," "," "," "," "," "," ");
2116//READTEXT
2117    addsybasecmds(ESqlStatementType.sstmssqlreadtext, TBaseType.rrw_readtext," "," "," "," "," "," ");
2118//RECEIVE
2119    addsybasecmds(ESqlStatementType.sstmssqlreceive, TBaseType.rrw_receive," "," "," "," "," "," ");
2120//RECONFIGURE
2121    addsybasecmds(ESqlStatementType.sstmssqlreconfigure, TBaseType.rrw_reconfigure," "," "," "," "," "," ");
2122//RESTORE
2123    addsybasecmds(ESqlStatementType.sstmssqlrestoredatabase, TBaseType.rrw_restore,"database"," "," "," "," "," ");
2124    addsybasecmds(ESqlStatementType.sstmssqlrestorefilelistonly, TBaseType.rrw_restore,"filelistonly"," "," "," "," "," ");
2125    addsybasecmds(ESqlStatementType.sstmssqlrestoreheaderonly, TBaseType.rrw_restore,"headeronly"," "," "," "," "," ");
2126    addsybasecmds(ESqlStatementType.sstmssqlrestorelabelonly, TBaseType.rrw_restore,"labelonly"," "," "," "," "," ");
2127    addsybasecmds(ESqlStatementType.sstmssqlrestorelog, TBaseType.rrw_restore,"log"," "," "," "," "," ");
2128    addsybasecmds(ESqlStatementType.sstmssqlrestoremasterkey, TBaseType.rrw_restore,"master","key"," "," "," "," ");
2129    addsybasecmds(ESqlStatementType.sstmssqlrestorerewindonly, TBaseType.rrw_restore,"rewindonly"," "," "," "," "," ");
2130    addsybasecmds(ESqlStatementType.sstmssqlrestoreservicemasterkey, TBaseType.rrw_restore,"service","master","key"," "," "," ");
2131    addsybasecmds(ESqlStatementType.sstmssqlrestoreverifyonly, TBaseType.rrw_restore,"verifyonly"," "," "," "," "," ");
2132//RETURN
2133    addsybasecmds(ESqlStatementType.sstmssqlreturn, TBaseType.rrw_return," "," "," "," "," "," ");
2134//REVERT
2135    addsybasecmds(ESqlStatementType.sstmssqlrevert, TBaseType.rrw_revert," "," "," "," "," "," ");
2136//REVOKE
2137    addsybasecmds(ESqlStatementType.sstmssqlrevoke, TBaseType.rrw_revoke," "," "," "," "," "," ");
2138//ROLLBACK
2139    addsybasecmds(ESqlStatementType.sstmssqlrollback, TBaseType.rrw_rollback," "," "," "," "," "," ");
2140    addsybasecmds(ESqlStatementType.sstmssqlrollback, TBaseType.rrw_rollback,"tran"," "," "," "," "," ");
2141    addsybasecmds(ESqlStatementType.sstmssqlrollback, TBaseType.rrw_rollback,"transaction"," "," "," "," "," ");
2142    addsybasecmds(ESqlStatementType.sstmssqlrollback, TBaseType.rrw_rollback,"work"," "," "," "," "," ");
2143//SAVE
2144    addsybasecmds(ESqlStatementType.sstmssqlsavetran, TBaseType.rrw_save," "," "," "," "," "," ");
2145    addsybasecmds(ESqlStatementType.sstmssqlsavetran, TBaseType.rrw_save,"tran"," "," "," "," "," ");
2146    addsybasecmds(ESqlStatementType.sstmssqlsavetran, TBaseType.rrw_save,"transaction"," "," "," "," "," ");
2147//SELECT
2148    addsybasecmds(ESqlStatementType.sstselect, TBaseType.rrw_select," "," "," "," "," "," ");
2149//SEND ON CONVERSATION
2150    addsybasecmds(ESqlStatementType.sstmssqlsendonconversation, TBaseType.rrw_send,"on","conversation"," "," "," "," ");
2151//SET
2152    addsybasecmds(ESqlStatementType.sstmssqlset, TBaseType.rrw_set," "," "," "," "," "," ");
2153//SET
2154    addsybasecmds(ESqlStatementType.sstmssqlsetuser,TBaseType.rrw_setuser," "," "," "," "," "," ");
2155//SHUTDOWN
2156    addsybasecmds(ESqlStatementType.sstmssqlshutdown, TBaseType.rrw_shutdown," "," "," "," "," "," ");
2157//SIGN
2158//    addsybasecmds(ESqlStatementType.sstmssqlsign, rrw_sign," "," "," "," "," "," ");
2159//TRUNCATE TABLE
2160    addsybasecmds(ESqlStatementType.sstmssqltruncatetable, TBaseType.rrw_truncate,"table"," "," "," "," "," ");
2161//UPDATE
2162    addsybasecmds(ESqlStatementType.sstupdate, TBaseType.rrw_update," "," "," "," "," "," ");
2163//UPDATE all STATISTICS
2164    addsybasecmds(ESqlStatementType.sstmssqlupdatestatistics, TBaseType.rrw_update,"all","statistics"," "," "," "," ");
2165//UPDATE index STATISTICS
2166    addsybasecmds(ESqlStatementType.sstsybaseupdateindexstatistics, TBaseType.rrw_update,"index","statistics"," "," "," "," ");
2167//UPDATE STATISTICS
2168    addsybasecmds(ESqlStatementType.sstmssqlupdatestatistics, TBaseType.rrw_update,"statistics"," "," "," "," "," ");
2169//UPDATETEXT
2170    addsybasecmds(ESqlStatementType.sstmssqlupdatetext, TBaseType.rrw_updatetext," "," "," "," "," "," ");
2171//USE
2172    addsybasecmds(ESqlStatementType.sstmssqluse, TBaseType.rrw_use," "," "," "," "," "," ");
2173//WAITFOR
2174    addsybasecmds(ESqlStatementType.sstmssqlwaitfor, TBaseType.rrw_waitfor," "," "," "," "," "," ");
2175//WHILE
2176    addsybasecmds(ESqlStatementType.sstmssqlwhile, TBaseType.rrw_while," "," "," "," "," "," ");
2177//WITH, don't recongize here, let isMssqlSql do it
2178// addsybasecmds(ESqlStatementType.sstMssqlCTE,rrw_WITH,' ');
2179//WITH XMLNAMESPACES
2180    addsybasecmds(ESqlStatementType.sstmssqlwithxmlnamespaces, TBaseType.rrw_with,"xmlnamespaces"," "," "," "," "," ");
2181//WRITETEXT
2182    addsybasecmds(ESqlStatementType.sstsybaseWritetext, TBaseType.rrw_writetext," "," "," "," "," "," ");
2183
2184}
2185
2186void initmssqlcmds(){
2187// cmd must be sort alphabetically
2188    addmssqlcmds(ESqlStatementType.sstmssqladdsignature, TBaseType.rrw_add,"counter","signature"," "," "," "," ");
2189    addmssqlcmds(ESqlStatementType.sstmssqladdsignature, TBaseType.rrw_add,"signature"," "," "," "," "," ");
2190//alter
2191    addmssqlcmds(ESqlStatementType.sstmssqlalterapplicationrole, TBaseType.rrw_alter,"application","role"," "," "," "," ");
2192    addmssqlcmds(ESqlStatementType.sstmssqlalterassembly, TBaseType.rrw_alter,"assembly"," "," "," "," "," ");
2193    addmssqlcmds(ESqlStatementType.sstmssqlalterasymmetrickey, TBaseType.rrw_alter,"asymmetric","key"," "," "," "," ");
2194    addmssqlcmds(ESqlStatementType.sstmssqlalterauthorization, TBaseType.rrw_alter,"authorization"," "," "," "," "," ");
2195    addmssqlcmds(ESqlStatementType.sstmssqlaltercertificate, TBaseType.rrw_alter,"certificate"," "," "," "," "," ");
2196    addmssqlcmds(ESqlStatementType.sstmssqlaltercredential, TBaseType.rrw_alter,"credential"," "," "," "," "," ");
2197    addmssqlcmds(ESqlStatementType.sstmssqlalterdatabase, TBaseType.rrw_alter,"database"," "," "," "," "," ");
2198    addmssqlcmds(ESqlStatementType.sstmssqlalterendpoint, TBaseType.rrw_alter,"endpoint"," "," "," "," "," ");
2199    addmssqlcmds(ESqlStatementType.sstmssqlalterfulltextcatalog, TBaseType.rrw_alter,"fulltext","catalog"," "," "," "," ");
2200    addmssqlcmds(ESqlStatementType.sstmssqlalterfulltextindex, TBaseType.rrw_alter,"fulltext","index"," "," "," "," ");
2201    addmssqlcmds(ESqlStatementType.sstmssqlalterfunction, TBaseType.rrw_alter,"function"," "," "," "," "," ");
2202    addmssqlcmds(ESqlStatementType.sstmssqlalterindex, TBaseType.rrw_alter,"index"," "," "," "," "," ");
2203    addmssqlcmds(ESqlStatementType.sstmssqlalterlogin, TBaseType.rrw_alter,"login"," "," "," "," "," ");
2204    addmssqlcmds(ESqlStatementType.sstmssqlaltermasterkey, TBaseType.rrw_alter,"master","key"," "," "," "," ");
2205    addmssqlcmds(ESqlStatementType.sstmssqlaltermessagetype, TBaseType.rrw_alter,"message","type"," "," "," "," ");
2206    addmssqlcmds(ESqlStatementType.sstmssqlalterpartitionfunction, TBaseType.rrw_alter,"partition","function"," "," "," "," ");
2207    addmssqlcmds(ESqlStatementType.sstmssqlalterpartitionscheme, TBaseType.rrw_alter,"partition","scheme"," "," "," "," ");
2208    addmssqlcmds(ESqlStatementType.sstmssqlalterprocedure, TBaseType.rrw_alter,"proc"," "," "," "," "," ");
2209    addmssqlcmds(ESqlStatementType.sstmssqlalterprocedure, TBaseType.rrw_alter,"procedure"," "," "," "," "," ");
2210    addmssqlcmds(ESqlStatementType.sstmssqlalterqueue, TBaseType.rrw_alter,"queue"," "," "," "," "," ");
2211    addmssqlcmds(ESqlStatementType.sstmssqlalterremoteservicebinding, TBaseType.rrw_alter,"remote","service","binding"," "," "," ");
2212    addmssqlcmds(ESqlStatementType.sstmssqlalterrole, TBaseType.rrw_alter,"role"," "," "," "," "," ");
2213    addmssqlcmds(ESqlStatementType.sstmssqlalterroute, TBaseType.rrw_alter,"route"," "," "," "," "," ");
2214    addmssqlcmds(ESqlStatementType.sstmssqlalterschema, TBaseType.rrw_alter,"schema"," "," "," "," "," ");
2215    addmssqlcmds(ESqlStatementType.sstmssqlAlterSecurityPolicy, TBaseType.rrw_alter, "security", "policy", " ", " ", " ", " ");
2216    addmssqlcmds(ESqlStatementType.sstaltersequence, TBaseType.rrw_alter, "sequence", " ", " ", " ", " ", " ");
2217    addmssqlcmds(ESqlStatementType.sstmssqlalterservice, TBaseType.rrw_alter,"service"," "," "," "," "," ");
2218    addmssqlcmds(ESqlStatementType.sstmssqlalterservicemasterkey, TBaseType.rrw_alter,"service","master","key"," "," "," ");
2219    addmssqlcmds(ESqlStatementType.sstmssqlaltersymmetrickey, TBaseType.rrw_alter,"symmetric","key"," "," "," "," ");
2220    addmssqlcmds(ESqlStatementType.sstaltertable, TBaseType.rrw_alter,"table"," "," "," "," "," ");
2221    addmssqlcmds(ESqlStatementType.sstmssqlaltertrigger, TBaseType.rrw_alter,"trigger"," "," "," "," "," ");
2222    addmssqlcmds(ESqlStatementType.sstmssqlalteruser, TBaseType.rrw_alter,"user"," "," "," "," "," ");
2223    addmssqlcmds(ESqlStatementType.sstmssqlalterview, TBaseType.rrw_alter,"view"," "," "," "," "," ");
2224    addmssqlcmds(ESqlStatementType.sstmssqlalterxmlschemacollection, TBaseType.rrw_alter,"xml","schema","collection"," "," "," ");
2225//backup
2226    addmssqlcmds(ESqlStatementType.sstmssqlbackupcertificate, TBaseType.rrw_backup,"certificate"," "," "," "," "," ");
2227    addmssqlcmds(ESqlStatementType.sstmssqlbackupdatabase, TBaseType.rrw_backup,"database"," "," "," "," "," ");
2228    addmssqlcmds(ESqlStatementType.sstmssqlbackuplog, TBaseType.rrw_backup,"log"," "," "," "," "," ");
2229    addmssqlcmds(ESqlStatementType.sstmssqlbackupmasterkey, TBaseType.rrw_backup,"master","key"," "," "," "," ");
2230    addmssqlcmds(ESqlStatementType.sstmssqlbackupservicemasterkey, TBaseType.rrw_backup,"service","master","key"," "," "," ");
2231//begin
2232    addmssqlcmds(ESqlStatementType.sstmssqlbegincatch, TBaseType.rrw_begin,"catch"," "," "," "," "," ");
2233    addmssqlcmds(ESqlStatementType.sstmssqlbeginconversationtimer, TBaseType.rrw_begin,"conversation","timer"," "," "," "," ");
2234    addmssqlcmds(ESqlStatementType.sstmssqlbegindialog, TBaseType.rrw_begin,"dialog"," "," "," "," "," ");
2235    addmssqlcmds(ESqlStatementType.sstmssqlbegindistributed, TBaseType.rrw_begin,"distributed"," "," "," "," "," ");
2236    addmssqlcmds(ESqlStatementType.sstmssqlbegintran, TBaseType.rrw_begin,"tran"," "," "," "," "," ");
2237    addmssqlcmds(ESqlStatementType.sstmssqlbegintran, TBaseType.rrw_begin,"transaction"," "," "," "," "," ");
2238    addmssqlcmds(ESqlStatementType.sstmssqlbegintry, TBaseType.rrw_begin,"try"," "," "," "," "," ");
2239//break
2240    addmssqlcmds(ESqlStatementType.sstbreak, TBaseType.rrw_break," "," "," "," "," "," ");
2241//bulk insert
2242    addmssqlcmds(ESqlStatementType.sstmssqlbulkinsert, TBaseType.rrw_bulk,"insert"," "," "," "," "," ");
2243//checkpoint
2244    addmssqlcmds(ESqlStatementType.sstmssqlcheckpoint, TBaseType.rrw_checkpoint," "," "," "," "," "," ");
2245//close
2246    addmssqlcmds(ESqlStatementType.sstmssqlclose, TBaseType.rrw_close," "," "," "," "," "," ");
2247    addmssqlcmds(ESqlStatementType.sstmssqlclosesymmetrickey, TBaseType.rrw_close,"all", "symmetric", "keys"," "," "," ");
2248    addmssqlcmds(ESqlStatementType.sstmssqlclosemasterkey, TBaseType.rrw_close,"master", "key"," "," "," "," ");
2249    addmssqlcmds(ESqlStatementType.sstmssqlclosesymmetrickey, TBaseType.rrw_close,"symmetric", "key"," "," "," "," ");
2250//commit
2251    addmssqlcmds(ESqlStatementType.sstmssqlcommit, TBaseType.rrw_commit," "," "," "," "," "," ");
2252    addmssqlcmds(ESqlStatementType.sstmssqlcommit, TBaseType.rrw_commit,"work"," "," "," "," "," ");
2253    addmssqlcmds(ESqlStatementType.sstmssqlcommit, TBaseType.rrw_commit,"tran"," "," "," "," "," ");
2254    addmssqlcmds(ESqlStatementType.sstmssqlcommit, TBaseType.rrw_commit,"transaction"," "," "," "," "," ");
2255//continue
2256    addmssqlcmds(ESqlStatementType.sstmssqlcontinue, TBaseType.rrw_continue," "," "," "," "," "," ");
2257// copy into
2258    addmssqlcmds(ESqlStatementType.sstCopyInto, TBaseType.rrw_sqlserver_copyinto,"into"," "," "," "," "," ");
2259//create
2260    addmssqlcmds(ESqlStatementType.sstmssqlcreateaggregate, TBaseType.rrw_create,"aggregate"," "," "," "," "," ");
2261    addmssqlcmds(ESqlStatementType.sstmssqlcreateapplicationrole, TBaseType.rrw_create,"application", "role"," "," "," "," ");
2262    addmssqlcmds(ESqlStatementType.sstmssqlcreateassembly, TBaseType.rrw_create,"assembly"," "," "," "," "," ");
2263    addmssqlcmds(ESqlStatementType.sstmssqlcreateasymmetrickey, TBaseType.rrw_create,"asymmetric", "key"," "," "," "," ");
2264    addmssqlcmds(ESqlStatementType.sstmssqlcreatecertificate, TBaseType.rrw_create,"certificate"," "," "," "," "," ");
2265    addmssqlcmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"clustered","columnstore","index"," "," "," ");
2266    addmssqlcmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"clustered","index"," "," "," "," ");
2267    addmssqlcmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"columnstore","index"," "," "," "," ");
2268    addmssqlcmds(ESqlStatementType.sstmssqlcreatecontract, TBaseType.rrw_create,"contract"," "," "," "," "," ");
2269    addmssqlcmds(ESqlStatementType.sstcreatecredential, TBaseType.rrw_create,"credential"," "," "," "," "," ");
2270    addmssqlcmds(ESqlStatementType.sstcreatedatabase, TBaseType.rrw_create,"database"," "," "," "," "," ");
2271    addmssqlcmds(ESqlStatementType.sstcreatecredential, TBaseType.rrw_create,"database","scoped","credential"," "," "," ");
2272    addmssqlcmds(ESqlStatementType.sstmssqlcreatedefault, TBaseType.rrw_create,"default"," "," "," "," "," ");
2273    addmssqlcmds(ESqlStatementType.sstmssqlcreateendpoint, TBaseType.rrw_create,"endpoint"," "," "," "," "," ");
2274    addmssqlcmds(ESqlStatementType.sstmssqlcreateeventnotification, TBaseType.rrw_create,"event", "notification"," "," "," "," ");
2275    addmssqlcmds(ESqlStatementType.sstmssqlcreateeventsession, TBaseType.rrw_create,"event", "session"," "," "," "," ");
2276    addmssqlcmds(ESqlStatementType.sstmssqlcreateevexternalDataSource, TBaseType.rrw_create,"external", "data","source"," "," "," ");
2277    addmssqlcmds(ESqlStatementType.sstCreateFileFormat, TBaseType.rrw_create,"external","file","format"," "," "," ");
2278    addmssqlcmds(ESqlStatementType.sstmssqlcreateevexternalLanguage, TBaseType.rrw_create,"external", "language"," "," "," "," ");
2279    addmssqlcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"external","table"," "," "," "," ");
2280    addmssqlcmds(ESqlStatementType.sstmssqlcreatefulltextcatalog, TBaseType.rrw_create,"fulltext", "catalog"," "," "," "," ");
2281    addmssqlcmds(ESqlStatementType.sstmssqlcreatefulltextindex, TBaseType.rrw_create,"fulltext", "index"," "," "," "," ");
2282    addmssqlcmds(ESqlStatementType.sstmssqlcreatefunction, TBaseType.rrw_create,"function"," "," "," "," "," ");
2283    addmssqlcmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"index"," "," "," "," "," ");
2284    addmssqlcmds(ESqlStatementType.sstmssqlcreatelogin, TBaseType.rrw_create,"login"," "," "," "," "," ");
2285    addmssqlcmds(ESqlStatementType.sstmssqlcreatemasterkey, TBaseType.rrw_create,"master","key"," "," "," "," ");
2286    addmssqlcmds(ESqlStatementType.sstcreatematerializedview, TBaseType.rrw_create,"materialized","view"," "," "," "," ");
2287
2288    addmssqlcmds(ESqlStatementType.sstmssqlcreatemessagetype, TBaseType.rrw_create,"message","type"," "," "," "," ");
2289    addmssqlcmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"nonclustered","columnstore","index"," "," "," ");
2290    addmssqlcmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"nonclustered","index"," "," "," "," ");
2291
2292    addmssqlcmds(ESqlStatementType.sstmssqlcreatefunction, TBaseType.rrw_create,"or","alter","function"," "," "," ");
2293
2294    addmssqlcmds(ESqlStatementType.sstmssqlcreateprocedure, TBaseType.rrw_create,"or","alter","proc"," "," "," ");
2295    addmssqlcmds(ESqlStatementType.sstmssqlcreateprocedure, TBaseType.rrw_create,"or","alter","procedure"," "," "," ");
2296
2297    addmssqlcmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,"or","alter","view"," "," "," ");
2298    addmssqlcmds(ESqlStatementType.sstmssqlcreatepartitionfunction, TBaseType.rrw_create,"partition","function"," "," "," "," ");
2299    addmssqlcmds(ESqlStatementType.sstmssqlcreatepartitionscheme, TBaseType.rrw_create,"partition","scheme"," "," "," "," ");
2300    addmssqlcmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"primary","xml","index"," "," "," ");
2301    addmssqlcmds(ESqlStatementType.sstmssqlcreateprocedure, TBaseType.rrw_create,"proc"," "," "," "," "," ");
2302    addmssqlcmds(ESqlStatementType.sstmssqlcreateprocedure, TBaseType.rrw_create,"procedure"," "," "," "," "," ");
2303    addmssqlcmds(ESqlStatementType.sstmssqlcreatequeue, TBaseType.rrw_create,"queue"," "," "," "," "," ");
2304    addmssqlcmds(ESqlStatementType.sstmssqlcreateremoteservicebinding, TBaseType.rrw_create,"remote", "service", "binding"," "," "," ");
2305    addmssqlcmds(ESqlStatementType.sstmssqlcreaterole, TBaseType.rrw_create,"role"," "," "," "," "," ");
2306    addmssqlcmds(ESqlStatementType.sstmssqlcreateroute, TBaseType.rrw_create,"route"," "," "," "," "," ");
2307    addmssqlcmds(ESqlStatementType.sstmssqlcreaterule, TBaseType.rrw_create,"rule"," "," "," "," "," ");
2308    addmssqlcmds(ESqlStatementType.sstmssqlcreateschema, TBaseType.rrw_create,"schema"," "," "," "," "," ");
2309    addmssqlcmds(ESqlStatementType.sstmssqlCreateSecurityPolicy, TBaseType.rrw_create, "security", "policy", " ", " ", " ", " ");
2310    addmssqlcmds(ESqlStatementType.sstcreatesequence, TBaseType.rrw_create, "sequence", " ", " ", " ", " ", " ");
2311    addmssqlcmds(ESqlStatementType.sstmssqlcreateservice, TBaseType.rrw_create,"service"," "," "," "," "," ");
2312    addmssqlcmds(ESqlStatementType.sstmssqlcreatestatistics, TBaseType.rrw_create,"statistics"," "," "," "," "," ");
2313    addmssqlcmds(ESqlStatementType.sstmssqlcreatesymmetrickey, TBaseType.rrw_create,"symmetric", "key"," "," "," "," ");
2314    addmssqlcmds(ESqlStatementType.sstmssqlcreatesynonym, TBaseType.rrw_create,"synonym"," "," "," "," "," ");
2315    addmssqlcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"table"," "," "," "," "," ");
2316    addmssqlcmds(ESqlStatementType.sstcreatetrigger, TBaseType.rrw_create,"trigger"," "," "," "," "," ");
2317    addmssqlcmds(ESqlStatementType.sstmssqlcreatetype, TBaseType.rrw_create,"type"," "," "," "," "," ");
2318    addmssqlcmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"unique","clustered","index"," "," "," ");
2319    addmssqlcmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"unique","index"," "," "," "," ");
2320    addmssqlcmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"unique","nonclustered","index"," "," "," ");
2321    addmssqlcmds(ESqlStatementType.sstmssqlcreateuser, TBaseType.rrw_create,"user"," "," "," "," "," ");
2322    addmssqlcmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,"view"," "," "," "," "," ");
2323    addmssqlcmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"xml","index"," "," "," "," ");
2324    addmssqlcmds(ESqlStatementType.sstmssqlcreatexmlschemacollection, TBaseType.rrw_create,"xml", "schema", "collection"," "," "," ");
2325// DBCC
2326    addmssqlcmds(ESqlStatementType.sstmssqldbcc, TBaseType.rrw_dbcc," "," "," "," "," "," ");
2327//DEALLOCATE
2328    addmssqlcmds(ESqlStatementType.sstmssqldeallocate, TBaseType.rrw_deallocate," "," "," "," "," "," ");
2329//DECLARE
2330    addmssqlcmds(ESqlStatementType.sstmssqldeclare, TBaseType.rrw_declare," "," "," "," "," "," ");
2331//DELETE
2332    addmssqlcmds(ESqlStatementType.sstdelete, TBaseType.rrw_delete," "," "," "," "," "," ");
2333//DENY
2334    addmssqlcmds(ESqlStatementType.sstmssqldeny, TBaseType.rrw_deny," "," "," "," "," "," ");
2335//DISABLE TRIGGER
2336    addmssqlcmds(ESqlStatementType.sstmssqldisabletrigger, TBaseType.rrw_disable,"trigger"," "," "," "," "," ");
2337//drop
2338    addmssqlcmds(ESqlStatementType.sstmssqldropaggregate, TBaseType.rrw_drop,"aggregate"," "," "," "," "," ");
2339    addmssqlcmds(ESqlStatementType.sstmssqldropapplicationrole, TBaseType.rrw_drop,"application", "role"," "," "," "," ");
2340    addmssqlcmds(ESqlStatementType.sstmssqldropassembly, TBaseType.rrw_drop,"assembly"," "," "," "," "," ");
2341    addmssqlcmds(ESqlStatementType.sstmssqldropasymmetrickey, TBaseType.rrw_drop,"asymmetric", "key"," "," "," "," ");
2342    addmssqlcmds(ESqlStatementType.sstmssqldropcertificate, TBaseType.rrw_drop,"certificate"," "," "," "," "," ");
2343    addmssqlcmds(ESqlStatementType.sstmssqldropcontract, TBaseType.rrw_drop,"contract"," "," "," "," "," ");
2344    addmssqlcmds(ESqlStatementType.sstmssqldropsignature, TBaseType.rrw_drop,"counter", "signature"," "," "," "," ");
2345    addmssqlcmds(ESqlStatementType.sstmssqldropcredential, TBaseType.rrw_drop,"credential"," "," "," "," "," ");
2346    addmssqlcmds(ESqlStatementType.sstmssqldropdatabase, TBaseType.rrw_drop,"database"," "," "," "," "," ");
2347    addmssqlcmds(ESqlStatementType.sstmssqldropdefault, TBaseType.rrw_drop,"default"," "," "," "," "," ");
2348    addmssqlcmds(ESqlStatementType.sstmssqldropendpoint, TBaseType.rrw_drop,"endpoint"," "," "," "," "," ");
2349    addmssqlcmds(ESqlStatementType.sstmssqldropeventnotification, TBaseType.rrw_drop,"event", "notification"," "," "," "," ");
2350    addmssqlcmds(ESqlStatementType.sstmssqldropeventsession, TBaseType.rrw_drop,"event", "session"," "," "," "," ");
2351    addmssqlcmds(ESqlStatementType.sstmssqldropfulltextcatalog, TBaseType.rrw_drop,"fulltext", "catalog"," "," "," "," ");
2352    addmssqlcmds(ESqlStatementType.sstmssqldropfulltextindex, TBaseType.rrw_drop,"fulltext", "index"," "," "," "," ");
2353    addmssqlcmds(ESqlStatementType.sstmssqldropfunction, TBaseType.rrw_drop,"function"," "," "," "," "," ");
2354    addmssqlcmds(ESqlStatementType.sstmssqldropindex, TBaseType.rrw_drop,"index"," "," "," "," "," ");
2355    addmssqlcmds(ESqlStatementType.sstmssqldroplogin, TBaseType.rrw_drop,"login"," "," "," "," "," ");
2356    addmssqlcmds(ESqlStatementType.sstmssqldropmasterkey, TBaseType.rrw_drop,"master", "key"," "," "," "," ");
2357    addmssqlcmds(ESqlStatementType.sstmssqldropmessagetype, TBaseType.rrw_drop,"message", "type"," "," "," "," ");
2358    addmssqlcmds(ESqlStatementType.sstmssqldroppartitionfunction, TBaseType.rrw_drop,"partition", "function"," "," "," "," ");
2359    addmssqlcmds(ESqlStatementType.sstmssqldroppartitionscheme, TBaseType.rrw_drop,"partition", "scheme"," "," "," "," ");
2360    addmssqlcmds(ESqlStatementType.sstmssqldropprocedure, TBaseType.rrw_drop,"proc"," "," "," "," "," ");
2361    addmssqlcmds(ESqlStatementType.sstmssqldropprocedure, TBaseType.rrw_drop,"procedure"," "," "," "," "," ");
2362    addmssqlcmds(ESqlStatementType.sstmssqldropqueue, TBaseType.rrw_drop,"queue"," "," "," "," "," ");
2363    addmssqlcmds(ESqlStatementType.sstmssqldropremoteservicebinding, TBaseType.rrw_drop,"remote", "service", "binding"," "," "," ");
2364    addmssqlcmds(ESqlStatementType.sstmssqldroprole, TBaseType.rrw_drop,"role"," "," "," "," "," ");
2365    addmssqlcmds(ESqlStatementType.sstmssqldroproute, TBaseType.rrw_drop,"route"," "," "," "," "," ");
2366    addmssqlcmds(ESqlStatementType.sstmssqldroprule, TBaseType.rrw_drop,"rule"," "," "," "," "," ");
2367    addmssqlcmds(ESqlStatementType.sstmssqldropschema, TBaseType.rrw_drop,"schema"," "," "," "," "," ");
2368    addmssqlcmds(ESqlStatementType.sstmssqlDropSecurityPolicy, TBaseType.rrw_drop, "security", "policy", " ", " ", " ", " ");
2369    addmssqlcmds(ESqlStatementType.sstdropsequence, TBaseType.rrw_drop,"sequence"," "," "," "," "," ");
2370    addmssqlcmds(ESqlStatementType.sstmssqldropservice, TBaseType.rrw_drop,"service"," "," "," "," "," ");
2371    addmssqlcmds(ESqlStatementType.sstmssqldropsignature, TBaseType.rrw_drop,"signature"," "," "," "," "," ");
2372    addmssqlcmds(ESqlStatementType.sstmssqldropstatistics, TBaseType.rrw_drop,"statistics"," "," "," "," "," ");
2373    addmssqlcmds(ESqlStatementType.sstmssqldropsymmetrickey, TBaseType.rrw_drop,"symmetric", "key"," "," "," "," ");
2374    addmssqlcmds(ESqlStatementType.sstmssqldropsynonym, TBaseType.rrw_drop,"synonym"," "," "," "," "," ");
2375    addmssqlcmds(ESqlStatementType.sstmssqldroptable, TBaseType.rrw_drop,"table"," "," "," "," "," ");
2376    addmssqlcmds(ESqlStatementType.sstmssqldroptrigger, TBaseType.rrw_drop,"trigger"," "," "," "," "," ");
2377    addmssqlcmds(ESqlStatementType.sstmssqldroptype, TBaseType.rrw_drop,"type"," "," "," "," "," ");
2378    addmssqlcmds(ESqlStatementType.sstmssqldropuser, TBaseType.rrw_drop,"user"," "," "," "," "," ");
2379    addmssqlcmds(ESqlStatementType.sstmssqldropview, TBaseType.rrw_drop,"view"," "," "," "," "," ");
2380    addmssqlcmds(ESqlStatementType.sstmssqldropxmlschemacollection, TBaseType.rrw_drop,"xml", "schema", "collection"," "," "," ");
2381//enable trigger
2382    addmssqlcmds(ESqlStatementType.sstmssqlenabletrigger, TBaseType.rrw_enable,"trigger"," "," "," "," "," ");
2383//END CONVERSATION
2384// AddMssqlCmds(ESqlStatementType.sstMssqlEndCatch,TBaseType.rrw_end,'catch');
2385    addmssqlcmds(ESqlStatementType.sstmssqlendconversation, TBaseType.rrw_end,"conversation"," "," "," "," "," ");
2386// AddMssqlCmds(ESqlStatementType.sstMssqlEndTry,TBaseType.rrw_end,'try');
2387//exec
2388//exec as
2389    addmssqlcmds(ESqlStatementType.sstmssqlexec, TBaseType.rrw_exec," "," "," "," "," "," ");
2390    addmssqlcmds(ESqlStatementType.sstmssqlexecuteas, TBaseType.rrw_exec,"as","caller"," "," "," "," ");
2391    addmssqlcmds(ESqlStatementType.sstmssqlexecuteas, TBaseType.rrw_exec,"as","login"," "," "," "," ");
2392    addmssqlcmds(ESqlStatementType.sstmssqlexecuteas, TBaseType.rrw_exec,"as","user"," "," "," "," ");
2393    addmssqlcmds(ESqlStatementType.sstmssqlexec, TBaseType.rrw_execute, " "," "," "," "," "," ");
2394    addmssqlcmds(ESqlStatementType.sstmssqlexecuteas, TBaseType.rrw_execute,"as","caller"," "," "," "," ");
2395    addmssqlcmds(ESqlStatementType.sstmssqlexecuteas, TBaseType.rrw_execute,"as","login"," "," "," "," ");
2396    addmssqlcmds(ESqlStatementType.sstmssqlexecuteas, TBaseType.rrw_execute,"as","user"," "," "," "," ");
2397//fetch
2398    addmssqlcmds(ESqlStatementType.sstmssqlfetch, TBaseType.rrw_fetch," "," "," "," "," "," ");
2399//go
2400    addmssqlcmds(ESqlStatementType.sstmssqlgo, TBaseType.rrw_go," "," "," "," "," "," ");
2401//goto
2402    addmssqlcmds(ESqlStatementType.sstmssqlgoto, TBaseType.rrw_goto," "," "," "," "," "," ");
2403//GRANT
2404    addmssqlcmds(ESqlStatementType.sstmssqlgrant, TBaseType.rrw_grant," "," "," "," "," "," ");
2405
2406//if
2407    addmssqlcmds(ESqlStatementType.sstmssqlif, TBaseType.rrw_if," "," "," "," "," "," ");
2408
2409//GRANT
2410    addmssqlcmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert," "," "," "," "," "," ");
2411    addmssqlcmds(ESqlStatementType.sstmssqlinsertbulk, TBaseType.rrw_insert,"bulk"," "," "," "," "," ");
2412//KILL
2413    addmssqlcmds(ESqlStatementType.sstmssqlkill, TBaseType.rrw_kill," "," "," "," "," "," ");
2414//KILL
2415    addmssqlcmds(ESqlStatementType.sstmssqlkill, TBaseType.rrw_kill," "," "," "," "," "," ");
2416    addmssqlcmds(ESqlStatementType.sstmssqlkillquerynotificationsubscription, TBaseType.rrw_kill,"kill", "query", "notification", "subscription"," "," ");
2417    addmssqlcmds(ESqlStatementType.sstmssqlkillstats, TBaseType.rrw_kill,"stats"," "," "," "," "," ");
2418
2419//
2420 addmssqlcmds(ESqlStatementType.sstsybaselocktable,TBaseType.rw_locktable,"table"," "," "," "," "," ");
2421//MOVE CONVERSATION
2422    addmssqlcmds(ESqlStatementType.sstmssqlmoveconversation, TBaseType.rrw_move,"conversation"," "," "," "," "," ");
2423//merge
2424    addmssqlcmds(ESqlStatementType.sstmerge, TBaseType.rrw_merge," "," "," "," "," "," ");
2425//open
2426    addmssqlcmds(ESqlStatementType.sstmssqlopen, TBaseType.rrw_open," "," "," "," "," "," ");
2427    addmssqlcmds(ESqlStatementType.sstmssqlopenmasterkey, TBaseType.rrw_open,"master", "key"," "," "," "," ");
2428    addmssqlcmds(ESqlStatementType.sstmssqlopensymmetrickey, TBaseType.rrw_open,"symmetric", "key"," "," "," "," ");
2429//PRINT
2430    addmssqlcmds(ESqlStatementType.sstmssqlprint, TBaseType.rrw_print," "," "," "," "," "," ");
2431//RAISERROR
2432    addmssqlcmds(ESqlStatementType.sstmssqlraiserror, TBaseType.rrw_raiserror," "," "," "," "," "," ");
2433//READTEXT
2434    addmssqlcmds(ESqlStatementType.sstmssqlreadtext, TBaseType.rrw_readtext," "," "," "," "," "," ");
2435//RECEIVE
2436    addmssqlcmds(ESqlStatementType.sstmssqlreceive, TBaseType.rrw_receive," "," "," "," "," "," ");
2437//RECONFIGURE
2438    addmssqlcmds(ESqlStatementType.sstmssqlreconfigure, TBaseType.rrw_reconfigure," "," "," "," "," "," ");
2439//RESTORE
2440    addmssqlcmds(ESqlStatementType.sstmssqlrestoredatabase, TBaseType.rrw_restore,"database"," "," "," "," "," ");
2441    addmssqlcmds(ESqlStatementType.sstmssqlrestorefilelistonly, TBaseType.rrw_restore,"filelistonly"," "," "," "," "," ");
2442    addmssqlcmds(ESqlStatementType.sstmssqlrestoreheaderonly, TBaseType.rrw_restore,"headeronly"," "," "," "," "," ");
2443    addmssqlcmds(ESqlStatementType.sstmssqlrestorelabelonly, TBaseType.rrw_restore,"labelonly"," "," "," "," "," ");
2444    addmssqlcmds(ESqlStatementType.sstmssqlrestorelog, TBaseType.rrw_restore,"log"," "," "," "," "," ");
2445    addmssqlcmds(ESqlStatementType.sstmssqlrestoremasterkey, TBaseType.rrw_restore,"master","key"," "," "," "," ");
2446    addmssqlcmds(ESqlStatementType.sstmssqlrestorerewindonly, TBaseType.rrw_restore,"rewindonly"," "," "," "," "," ");
2447    addmssqlcmds(ESqlStatementType.sstmssqlrestoreservicemasterkey, TBaseType.rrw_restore,"service","master","key"," "," "," ");
2448    addmssqlcmds(ESqlStatementType.sstmssqlrestoreverifyonly, TBaseType.rrw_restore,"verifyonly"," "," "," "," "," ");
2449//RETURN
2450    addmssqlcmds(ESqlStatementType.sstmssqlreturn, TBaseType.rrw_return," "," "," "," "," "," ");
2451//REVERT
2452    addmssqlcmds(ESqlStatementType.sstmssqlrevert, TBaseType.rrw_revert," "," "," "," "," "," ");
2453//REVOKE
2454    addmssqlcmds(ESqlStatementType.sstmssqlrevoke, TBaseType.rrw_revoke," "," "," "," "," "," ");
2455//ROLLBACK
2456    addmssqlcmds(ESqlStatementType.sstmssqlrollback, TBaseType.rrw_rollback," "," "," "," "," "," ");
2457    addmssqlcmds(ESqlStatementType.sstmssqlrollback, TBaseType.rrw_rollback,"tran"," "," "," "," "," ");
2458    addmssqlcmds(ESqlStatementType.sstmssqlrollback, TBaseType.rrw_rollback,"transaction"," "," "," "," "," ");
2459    addmssqlcmds(ESqlStatementType.sstmssqlrollback, TBaseType.rrw_rollback,"work"," "," "," "," "," ");
2460//SAVE
2461    addmssqlcmds(ESqlStatementType.sstmssqlsavetran, TBaseType.rrw_save," "," "," "," "," "," ");
2462    addmssqlcmds(ESqlStatementType.sstmssqlsavetran, TBaseType.rrw_save,"tran"," "," "," "," "," ");
2463    addmssqlcmds(ESqlStatementType.sstmssqlsavetran, TBaseType.rrw_save,"transaction"," "," "," "," "," ");
2464//SELECT
2465    addmssqlcmds(ESqlStatementType.sstselect, TBaseType.rrw_select," "," "," "," "," "," ");
2466//SEND ON CONVERSATION
2467    addmssqlcmds(ESqlStatementType.sstmssqlsendonconversation, TBaseType.rrw_send,"on","conversation"," "," "," "," ");
2468//SET
2469    addmssqlcmds(ESqlStatementType.sstmssqlset, TBaseType.rrw_set," "," "," "," "," "," ");
2470//SET rowcount
2471    addmssqlcmds(ESqlStatementType.sstmssqlsetrowcount, TBaseType.rrw_set,"rowcount"," "," "," "," "," ");
2472//SET
2473    addmssqlcmds(ESqlStatementType.sstmssqlsetuser,TBaseType.rrw_setuser," "," "," "," "," "," ");
2474//SHUTDOWN
2475    addmssqlcmds(ESqlStatementType.sstmssqlshutdown, TBaseType.rrw_shutdown," "," "," "," "," "," ");
2476//SIGN
2477//    addmssqlcmds(ESqlStatementType.sstmssqlsign, rrw_sign," "," "," "," "," "," ");
2478
2479//throw
2480    addmssqlcmds(ESqlStatementType.sstmssqlthrow, TBaseType.rrw_sqlserver_throw," "," "," "," "," "," ");
2481
2482//TRUNCATE TABLE
2483    addmssqlcmds(ESqlStatementType.sstmssqltruncatetable, TBaseType.rrw_truncate,"table"," "," "," "," "," ");
2484//UPDATE
2485    addmssqlcmds(ESqlStatementType.sstupdate, TBaseType.rrw_update," "," "," "," "," "," ");
2486//UPDATE STATISTICS
2487    addmssqlcmds(ESqlStatementType.sstmssqlupdatestatistics, TBaseType.rrw_update,"statistics"," "," "," "," "," ");
2488//UPDATETEXT
2489    addmssqlcmds(ESqlStatementType.sstmssqlupdatetext, TBaseType.rrw_updatetext," "," "," "," "," "," ");
2490//USE
2491    addmssqlcmds(ESqlStatementType.sstmssqluse, TBaseType.rrw_use," "," "," "," "," "," ");
2492//WAITFOR
2493    addmssqlcmds(ESqlStatementType.sstmssqlwaitfor, TBaseType.rrw_waitfor," "," "," "," "," "," ");
2494//WHILE
2495    addmssqlcmds(ESqlStatementType.sstmssqlwhile, TBaseType.rrw_while," "," "," "," "," "," ");
2496//WITH, don't recongize here, let isMssqlSql do it
2497// AddMssqlCmds(ESqlStatementType.sstMssqlCTE,rrw_WITH,' ');
2498//WITH XMLNAMESPACES
2499  //  addmssqlcmds(ESqlStatementType.sstmssqlwithxmlnamespaces, TBaseType.rrw_with,"xmlnamespaces"," "," "," "," "," ");
2500//WRITETEXT
2501    addmssqlcmds(ESqlStatementType.sstmssqlwritetext, TBaseType.rrw_writetext," "," "," "," "," "," ");
2502
2503}
2504
2505void initdb2cmds(){
2506// cmd must be sort alphabetically
2507    adddb2cmds(ESqlStatementType.sstdb2allocatecursor, TBaseType.rrw_allocate,"cursor"," "," "," "," "," ");
2508    adddb2cmds(ESqlStatementType.sstdb2alterbufferpool, TBaseType.rrw_alter,"bufferpool"," "," "," "," "," ");
2509    adddb2cmds(ESqlStatementType.sstdb2alterdatabasepartitiongroup, TBaseType.rrw_alter,"database", "partition", "group"," "," "," ");
2510    adddb2cmds(ESqlStatementType.sstdb2alterfunction, TBaseType.rrw_alter,"function"," "," "," "," "," ");
2511    adddb2cmds(ESqlStatementType.sstdb2altermethod, TBaseType.rrw_alter,"method"," "," "," "," "," ");
2512    adddb2cmds(ESqlStatementType.sstdb2alternickname, TBaseType.rrw_alter,"nickname"," "," "," "," "," ");
2513    adddb2cmds(ESqlStatementType.sstdb2alterprocedure, TBaseType.rrw_alter,"procedure"," "," "," "," "," ");
2514    adddb2cmds(ESqlStatementType.sstdb2altersequence, TBaseType.rrw_alter,"sequence"," "," "," "," "," ");
2515    adddb2cmds(ESqlStatementType.sstdb2alterserver, TBaseType.rrw_alter,"server"," "," "," "," "," ");
2516    adddb2cmds(ESqlStatementType.sstaltertable, TBaseType.rrw_alter,"table"," "," "," "," "," ");
2517    adddb2cmds(ESqlStatementType.sstdb2altertablespace, TBaseType.rrw_alter,"tablespace"," "," "," "," "," ");
2518    adddb2cmds(ESqlStatementType.sstdb2altertype, TBaseType.rrw_alter,"type"," "," "," "," "," ");
2519    adddb2cmds(ESqlStatementType.sstdb2alterusermapping, TBaseType.rrw_alter,"user","mapping"," "," "," "," ");
2520    adddb2cmds(ESqlStatementType.sstdb2alterview, TBaseType.rrw_alter,"view"," "," "," "," "," ");
2521    adddb2cmds(ESqlStatementType.sstdb2alterwrapper, TBaseType.rrw_alter,"wrapper"," "," "," "," "," ");
2522    adddb2cmds(ESqlStatementType.sstdb2associatelocators, TBaseType.rrw_associate,"locators"," "," "," "," "," ");
2523    adddb2cmds(ESqlStatementType.sstdb2begindeclaresection, TBaseType.rrw_begin,"declare", "section"," "," "," "," ");
2524    adddb2cmds(ESqlStatementType.sstdb2call, TBaseType.rrw_call," "," "," "," "," "," ");
2525    adddb2cmds(ESqlStatementType.sstdb2case, TBaseType.rrw_case," "," "," "," "," "," ");
2526    adddb2cmds(ESqlStatementType.sstdb2close, TBaseType.rrw_close," "," "," "," "," "," ");
2527    adddb2cmds(ESqlStatementType.sstdb2comment, TBaseType.rrw_comment," "," "," "," "," "," ");
2528    adddb2cmds(ESqlStatementType.sstdb2commit, TBaseType.rrw_commit," "," "," "," "," "," ");
2529    adddb2cmds(ESqlStatementType.sstdb2connect, TBaseType.rrw_connect," "," "," "," "," "," ");
2530    adddb2cmds(ESqlStatementType.sstdb2createalias, TBaseType.rrw_create,"alias"," "," "," "," "," ");
2531    adddb2cmds(ESqlStatementType.sstcreateauditpolicy, TBaseType.rrw_create,"audit","policy"," "," "," "," ");
2532    adddb2cmds(ESqlStatementType.sstdb2createbufferpool, TBaseType.rrw_create,"bufferpool"," "," "," "," "," ");
2533    adddb2cmds(ESqlStatementType.sstcreatedatabase, TBaseType.rrw_create,"database", " ", " "," "," "," ");
2534    adddb2cmds(ESqlStatementType.sstdb2createdatabasepartitiongroup, TBaseType.rrw_create,"database", "partition", "group"," "," "," ");
2535    adddb2cmds(ESqlStatementType.sstdb2createdistincttype, TBaseType.rrw_create,"distinct", "type"," "," "," "," ");
2536    adddb2cmds(ESqlStatementType.sstdb2createeventmonitor, TBaseType.rrw_create,"eventmonitor"," "," "," "," "," ");
2537    adddb2cmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create,"function"," "," "," "," "," ");
2538    adddb2cmds(ESqlStatementType.sstdb2createfunctionmapping, TBaseType.rrw_create,"function", "mapping"," "," "," "," ");
2539    adddb2cmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"global","temporary","table"," "," "," ");
2540    adddb2cmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"index"," "," "," "," "," ");
2541    adddb2cmds(ESqlStatementType.sstdb2createindexextension, TBaseType.rrw_create,"index", "extension"," "," "," "," ");
2542    adddb2cmds(ESqlStatementType.sstcreateTablespace, TBaseType.rrw_create,"large","tablespace"," "," "," "," ");
2543    adddb2cmds(ESqlStatementType.sstdb2createmethod, TBaseType.rrw_create,"method"," "," "," "," "," ");
2544    adddb2cmds(ESqlStatementType.sstdb2createnickname, TBaseType.rrw_create,"nickname"," "," "," "," "," ");
2545    adddb2cmds(ESqlStatementType.sstdb2createalias, TBaseType.rrw_create,"or","replace","alias"," "," "," ");
2546    adddb2cmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create,"or","replace","function"," "," "," ");
2547    adddb2cmds(ESqlStatementType.sstcreateprocedure, TBaseType.rrw_create,"or","replace","procedure"," "," "," ");
2548    adddb2cmds(ESqlStatementType.sstdb2createalias, TBaseType.rrw_create,"or","replace","public","alias"," "," ");
2549    adddb2cmds(ESqlStatementType.sstdb2createtrigger, TBaseType.rrw_create,"or","replace","trigger"," "," "," ");
2550    adddb2cmds(ESqlStatementType.sstdb2createvariable, TBaseType.rrw_create,"or","replace","variable"," "," "," ");
2551    adddb2cmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,"or","replace","view"," "," "," ");
2552    adddb2cmds(ESqlStatementType.sstcreateprocedure, TBaseType.rrw_create,"procedure"," "," "," "," "," ");
2553    adddb2cmds(ESqlStatementType.sstdb2createalias, TBaseType.rrw_create,"public","alias"," "," "," "," ");
2554    adddb2cmds(ESqlStatementType.sstcreatesynonym, TBaseType.rrw_create,"public","synonym"," "," "," "," ");
2555    adddb2cmds(ESqlStatementType.sstcreaterole, TBaseType.rrw_create,"role"," "," "," "," "," ");
2556    adddb2cmds(ESqlStatementType.sstdb2createschema, TBaseType.rrw_create,"schema"," "," "," "," "," ");
2557    adddb2cmds(ESqlStatementType.sstdb2createsequence, TBaseType.rrw_create,"sequence"," "," "," "," "," ");
2558    adddb2cmds(ESqlStatementType.sstdb2createserver, TBaseType.rrw_create,"server"," "," "," "," "," ");
2559    adddb2cmds(ESqlStatementType.sstdb2createstogroup, TBaseType.rrw_create,"stogroup"," "," "," "," "," ");
2560    adddb2cmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"summary","table"," "," "," "," ");
2561    adddb2cmds(ESqlStatementType.sstcreatesynonym, TBaseType.rrw_create,"synonym"," "," "," "," "," ");
2562    adddb2cmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"table"," "," "," "," "," ");
2563    adddb2cmds(ESqlStatementType.sstcreateTablespace, TBaseType.rrw_create,"tablespace"," "," "," "," "," ");
2564    adddb2cmds(ESqlStatementType.sstdb2createtransform, TBaseType.rrw_create,"transform"," "," "," "," "," ");
2565    adddb2cmds(ESqlStatementType.sstdb2createtrigger, TBaseType.rrw_create,"trigger"," "," "," "," "," ");
2566    adddb2cmds(ESqlStatementType.sstdb2createtype, TBaseType.rrw_create,"type"," "," "," "," "," ");
2567    adddb2cmds(ESqlStatementType.sstdb2createtypemapping, TBaseType.rrw_create,"type", "mapping"," "," "," "," ");
2568    adddb2cmds(ESqlStatementType.sstdb2createusermapping, TBaseType.rrw_create,"user", "mapping"," "," "," "," ");
2569    adddb2cmds(ESqlStatementType.sstdb2createvariable, TBaseType.rrw_create,"variable"," "," "," "," "," ");
2570    adddb2cmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,"view"," "," "," "," "," ");
2571    adddb2cmds(ESqlStatementType.sstdb2createwrapper, TBaseType.rrw_create,"wrapper"," "," "," "," "," ");
2572    adddb2cmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"*","index"," "," "," "," ");
2573    adddb2cmds(ESqlStatementType.sstdb2declareglobaltemporarytable, TBaseType.rrw_declare, "global", "temporary", "table"," "," "," ");
2574    adddb2cmds(ESqlStatementType.sstdb2declarecursor, TBaseType.rrw_declare,"*","cursor"," "," "," "," ");
2575    adddb2cmds(ESqlStatementType.sstdelete, TBaseType.rrw_delete," "," "," "," "," "," ");
2576    adddb2cmds(ESqlStatementType.sstdb2describe, TBaseType.rrw_describe," "," "," "," "," "," ");
2577    adddb2cmds(ESqlStatementType.sstdb2disconnect, TBaseType.rrw_disconnect," "," "," "," "," "," ");
2578    adddb2cmds(ESqlStatementType.sstdb2drop, TBaseType.rrw_drop," "," "," "," "," "," ");
2579    adddb2cmds(ESqlStatementType.sstdropindex, TBaseType.rrw_drop,"index"," "," "," "," "," ");
2580    adddb2cmds(ESqlStatementType.sstdroptable, TBaseType.rrw_drop,"table"," "," "," "," "," ");
2581    adddb2cmds(ESqlStatementType.sstdropview, TBaseType.rrw_drop,"view"," "," "," "," "," ");
2582    adddb2cmds(ESqlStatementType.sstdb2enddeclaresection, TBaseType.rrw_end,"declare","section"," "," "," "," ");
2583    adddb2cmds(ESqlStatementType.sstdb2execute, TBaseType.rrw_execute," "," "," "," "," "," ");
2584    adddb2cmds(ESqlStatementType.sstdb2executeimmediate, TBaseType.rrw_execute,"immediate"," "," "," "," "," ");
2585    adddb2cmds(ESqlStatementType.sstdb2explain, TBaseType.rrw_explain," "," "," "," "," "," ");
2586    adddb2cmds(ESqlStatementType.sstdb2fetch, TBaseType.rrw_fetch," "," "," "," "," "," ");
2587    adddb2cmds(ESqlStatementType.sstdb2flusheventmonitor, TBaseType.rrw_flush, "event", "monitor"," "," "," "," ");
2588    adddb2cmds(ESqlStatementType.sstdb2flushpackagecache, TBaseType.rrw_flush,"package", "cache"," "," "," "," ");
2589    adddb2cmds(ESqlStatementType.sstdb2for, TBaseType.rrw_for," "," "," "," "," "," ");
2590    adddb2cmds(ESqlStatementType.sstdb2freelocator, TBaseType.rrw_free,"locator"," "," "," "," "," ");
2591    adddb2cmds(ESqlStatementType.sstgetdiagnostics, TBaseType.rrw_get,"diagnostics"," "," "," "," "," ");
2592    adddb2cmds(ESqlStatementType.sstdb2goto, TBaseType.rrw_goto," "," "," "," "," "," ");
2593    adddb2cmds(ESqlStatementType.sstdb2grant, TBaseType.rrw_grant," "," "," "," "," "," ");
2594    adddb2cmds(ESqlStatementType.sstdb2if, TBaseType.rrw_if," "," "," "," "," "," ");
2595    adddb2cmds(ESqlStatementType.sstdb2include, TBaseType.rrw_include," "," "," "," "," "," ");
2596    adddb2cmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert," "," "," "," "," "," ");
2597    adddb2cmds(ESqlStatementType.sstdb2iterate, TBaseType.rrw_iterate," "," "," "," "," "," ");
2598    adddb2cmds(ESqlStatementType.sstdb2labelOn, TBaseType.rrw_db2_label,"on"," "," "," "," "," ");
2599    adddb2cmds(ESqlStatementType.sstdb2leave, TBaseType.rrw_leave," "," "," "," "," "," ");
2600    adddb2cmds(ESqlStatementType.sstdb2locktable, TBaseType.rrw_lock,"table"," "," "," "," "," ");
2601    adddb2cmds(ESqlStatementType.sstdb2loop, TBaseType.rrw_loop," "," "," "," "," "," ");
2602    adddb2cmds(ESqlStatementType.sstmerge, TBaseType.rrw_merge," "," "," "," "," "," ");
2603    adddb2cmds(ESqlStatementType.sstdb2open, TBaseType.rrw_open," "," "," "," "," "," ");
2604    adddb2cmds(ESqlStatementType.sstdb2prepare, TBaseType.rrw_prepare," "," "," "," "," "," ");
2605    adddb2cmds(ESqlStatementType.sstdb2refreshtable, TBaseType.rrw_refresh,"table"," "," "," "," "," ");
2606    adddb2cmds(ESqlStatementType.sstdb2release, TBaseType.rrw_release," "," "," "," "," "," ");
2607    adddb2cmds(ESqlStatementType.sstdb2releasesavepoint, TBaseType.rrw_release,"savepoint"," "," "," "," "," ");
2608    adddb2cmds(ESqlStatementType.sstdb2rename, TBaseType.rrw_rename," "," "," "," "," "," ");
2609    adddb2cmds(ESqlStatementType.sstdb2renametablespace, TBaseType.rrw_rename,"tablespace"," "," "," "," "," ");
2610    adddb2cmds(ESqlStatementType.sstdb2repeat, TBaseType.rrw_repeat," "," "," "," "," "," ");
2611    adddb2cmds(ESqlStatementType.sstdb2resignal, TBaseType.rrw_resignal," "," "," "," "," "," ");
2612    adddb2cmds(ESqlStatementType.sstdb2return, TBaseType.rrw_return," "," "," "," "," "," ");
2613    adddb2cmds(ESqlStatementType.sstdb2revoke, TBaseType.rrw_revoke," "," "," "," "," "," ");
2614    adddb2cmds(ESqlStatementType.sstdb2rollback, TBaseType.rrw_rollback," "," "," "," "," "," ");
2615    adddb2cmds(ESqlStatementType.sstRunStats, TBaseType.rrw_db2_runstats," "," "," "," "," "," ");
2616    adddb2cmds(ESqlStatementType.sstdb2savepoint, TBaseType.rrw_savepoint," "," "," "," "," "," ");
2617    adddb2cmds(ESqlStatementType.sstselect, TBaseType.rrw_select," "," "," "," "," "," ");
2618    adddb2cmds(ESqlStatementType.sstdb2setconnection, TBaseType.rrw_set,"connection"," "," "," "," "," ");
2619    adddb2cmds(ESqlStatementType.sstdb2set, TBaseType.rrw_set," "," "," "," "," "," ");
2620    adddb2cmds(ESqlStatementType.sstdb2setconnection, TBaseType.rrw_set,"connection"," "," "," "," "," ");
2621    adddb2cmds(ESqlStatementType.sstdb2setcurrentdefaulttransformgroup, TBaseType.rrw_set,"current default transform group"," "," "," "," "," ");
2622    adddb2cmds(ESqlStatementType.sstdb2setcurrentdegree, TBaseType.rrw_set,"current", "degree"," "," "," "," ");
2623    adddb2cmds(ESqlStatementType.sstdb2setcurrentexplainmode, TBaseType.rrw_set,"current", "explain", "mode"," "," "," ");
2624    adddb2cmds(ESqlStatementType.sstdb2setcurrentexplainsnapshot, TBaseType.rrw_set,"current", "explain", "snapshot"," "," "," ");
2625    adddb2cmds(ESqlStatementType.sstdb2setcurrentisolation, TBaseType.rrw_set,"current", "isolation"," "," "," "," ");
2626    adddb2cmds(ESqlStatementType.sstdb2setcurrentlocktimeout, TBaseType.rrw_set,"current", "lock", "timeout"," "," "," ");
2627    adddb2cmds(ESqlStatementType.sstdb2setcurrentmaintainedtabletypesforoptimization, TBaseType.rrw_set,"current", "maintained", "table", "types"," "," ");
2628    adddb2cmds(ESqlStatementType.sstdb2setcurrentpackagepath, TBaseType.rrw_set,"current", "package", "path"," "," "," ");
2629    adddb2cmds(ESqlStatementType.sstdb2setcurrentpackageset, TBaseType.rrw_set,"current", "packageset"," "," "," "," ");
2630    adddb2cmds(ESqlStatementType.sstdb2setcurrentqueryoptimization, TBaseType.rrw_set,"current", "query", "optimization"," "," "," ");
2631    adddb2cmds(ESqlStatementType.sstdb2setcurrentrefreshage, TBaseType.rrw_set,"current", "refresh", "age"," "," "," ");
2632    adddb2cmds(ESqlStatementType.sstdb2setschema, TBaseType.rrw_set,"current","schema"," "," "," "," ");
2633    adddb2cmds(ESqlStatementType.sstdb2setencryptionpassword, TBaseType.rrw_set,"encryption", "password"," "," "," "," ");
2634    adddb2cmds(ESqlStatementType.sstdb2seteventmonitorstate, TBaseType.rrw_set,"event", "monitor", "state"," "," "," ");
2635    adddb2cmds(ESqlStatementType.sstdb2setintegrity, TBaseType.rrw_set,"integrity"," "," "," "," "," ");
2636    adddb2cmds(ESqlStatementType.sstdb2setpassthru, TBaseType.rrw_set,"passthru"," "," "," "," "," ");
2637    adddb2cmds(ESqlStatementType.sstdb2setpath, TBaseType.rrw_set,"path"," "," "," "," "," ");
2638    adddb2cmds(ESqlStatementType.sstdb2setschema, TBaseType.rrw_set,"schema"," "," "," "," "," ");
2639    adddb2cmds(ESqlStatementType.sstdb2setserveroption, TBaseType.rrw_set,"server", "option"," "," "," "," ");
2640    adddb2cmds(ESqlStatementType.sstdb2setsessionauthorization, TBaseType.rrw_set,"session", "authorization"," "," "," "," ");
2641    adddb2cmds(ESqlStatementType.sstdb2signal, TBaseType.rrw_signal," "," "," "," "," "," ");
2642    adddb2cmds(ESqlStatementType.sstdb2terminate, TBaseType.rrw_terminate," "," "," "," "," "," ");
2643//TRUNCATE TABLE
2644    adddb2cmds(ESqlStatementType.ssttruncatetable, TBaseType.rrw_truncate," "," "," "," "," "," ");
2645
2646    adddb2cmds(ESqlStatementType.sstupdate, TBaseType.rrw_update," "," "," "," "," "," ");
2647    adddb2cmds(ESqlStatementType.sstdb2updateCommand, TBaseType.rrw_update,"command"," "," "," "," "," ");
2648// AddDB2Cmds(sstDB2VALUES,rrw_VALUES);
2649// AddDB2Cmds(sstDB2WHENEVER,rrw_WHENEVER);
2650    adddb2cmds(ESqlStatementType.sstdb2while, TBaseType.rrw_while," "," "," "," "," "," ");
2651
2652}
2653
2654void initnetezzacmds(){
2655    addnetezzacmds(ESqlStatementType.sstAlterSchema, TBaseType.rrw_alter, "schema", " ", " ", " ", " ", " ");
2656    addnetezzacmds(ESqlStatementType.sstnetezzaAlterDatabase, TBaseType.rrw_alter, "database", " ", " ", " ", " ", " ");
2657    addnetezzacmds(ESqlStatementType.sstnetezzaAlterGroup, TBaseType.rrw_alter, "group", " ", " ", " ", " ", " ");
2658    addnetezzacmds(ESqlStatementType.sstnetezzaAlterHistoryConfiguration, TBaseType.rrw_alter, "history", " ", " ", " ", " ", " ");
2659    addnetezzacmds(ESqlStatementType.sstnetezzaAlterSequence, TBaseType.rrw_alter, "sequence", " ", " ", " ", " ", " ");
2660    addnetezzacmds(ESqlStatementType.sstaltersession, TBaseType.rrw_alter, "session", " ", " ", " ", " ", " ");
2661    addnetezzacmds(ESqlStatementType.sstAlterSynonym, TBaseType.rrw_alter, "synonym", " ", " ", " ", " ", " ");
2662    addnetezzacmds(ESqlStatementType.sstnetezzaAlterTable, TBaseType.rrw_alter, "table", " ", " ", " ", " ", " ");
2663    addnetezzacmds(ESqlStatementType.sstnetezzaAlterUser, TBaseType.rrw_alter, "user", " ", " ", " ", " ", " ");
2664    addnetezzacmds(ESqlStatementType.sstnetezzaAlterView, TBaseType.rrw_alter, "view", " ", " ", " ", " ", " ");
2665    addnetezzacmds(ESqlStatementType.sstnetezzaAlterView, TBaseType.rrw_alter, "views", " ", " ", " ", " ", " ");
2666    addnetezzacmds(ESqlStatementType.sstnetezzaBegin, TBaseType.rrw_begin, " ", " ", " ", " ", " ", " ");
2667    addnetezzacmds(ESqlStatementType.sstcall, TBaseType.rrw_call, " ", " ", " ", " ", " ", " ");
2668    addnetezzacmds(ESqlStatementType.sstnetezzaComment, TBaseType.rrw_comment, " ", " ", " ", " ", " ", " ");
2669    addnetezzacmds(ESqlStatementType.sstnetezzaCommit, TBaseType.rrw_commit, " ", " ", " ", " ", " ", " ");
2670    addnetezzacmds(ESqlStatementType.sstnetezzaCopy, TBaseType.rrw_netezza_copy, " ", " ", " ", " ", " ", " ");
2671    addnetezzacmds(ESqlStatementType.sstcreatedatabase, TBaseType.rrw_create, "database", " ", " ", " ", " ", " ");
2672    addnetezzacmds(ESqlStatementType.sstnetezzaCreateExternalTable, TBaseType.rrw_create, "external", "table", " ", " ", " ", " ");
2673    addnetezzacmds(ESqlStatementType.sstnetezzaCreateGruop, TBaseType.rrw_create, "group", " ", " ", " ", " ", " ");
2674    addnetezzacmds(ESqlStatementType.sstnetezzaCreateHistoryConfiguration, TBaseType.rrw_create, "history", "configuration", " ", " ", " ", " ");
2675    addnetezzacmds(ESqlStatementType.sstcreatematerializedview, TBaseType.rrw_create, "materialized", "view", " ", " ", " ", " ");
2676    addnetezzacmds(ESqlStatementType.sstcreatematerializedview, TBaseType.rrw_create, "or", "replace", "materialized", "view", " ", " ");
2677    addnetezzacmds(ESqlStatementType.sstcreateprocedure, TBaseType.rrw_create, "or", "replace", "procedure", " ", " ", " ");
2678    addnetezzacmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create, "or", "replace", "view", " ", " ", " ");
2679    addnetezzacmds(ESqlStatementType.sstcreateprocedure, TBaseType.rrw_create, "procedure", " ", " ", " ", " ", " ");
2680    addnetezzacmds(ESqlStatementType.sstcreatesequence, TBaseType.rrw_create, "sequence", " ", " ", " ", " ", " ");
2681    addnetezzacmds(ESqlStatementType.sstcreatesynonym, TBaseType.rrw_create, "synonym", " ", " ", " ", " ", " ");
2682    addnetezzacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "table", " ", " ", " ", " ", " ");
2683    addnetezzacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "temp", "table", " ", " ", " ", " ");
2684    addnetezzacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "temporary", "table", " ", " ", " ", " ");
2685    addnetezzacmds(ESqlStatementType.sstnetezzaCreateUser, TBaseType.rrw_create, "user", " ", " ", " ", " ", " ");
2686    addnetezzacmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create, "view", " ", " ", " ", " ", " ");
2687//    addnetezzacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "volatile", "table", " ", " ", " ", " ");
2688    addnetezzacmds(ESqlStatementType.sstdelete, TBaseType.rrw_delete , " ", " ", " ", " ", " ", " ");
2689    addnetezzacmds(ESqlStatementType.sstnetezzaDropConnection, TBaseType.rrw_drop, "connection", " ", " ", " ", " ", " ");
2690    addnetezzacmds(ESqlStatementType.sstdropdatabase, TBaseType.rrw_drop, "database", " ", " ", " ", " ", " ");
2691    addnetezzacmds(ESqlStatementType.sstnetezzaDropGroup, TBaseType.rrw_drop, "group", " ", " ", " ", " ", " ");
2692    addnetezzacmds(ESqlStatementType.sstnetezzaDropHistoryConfiguration, TBaseType.rrw_drop, "history", "configuration", " ", " ", " ", " ");
2693    addnetezzacmds(ESqlStatementType.sstdropprocedure, TBaseType.rrw_drop, "procedure", " ", " ", " ", " ", " ");
2694    addnetezzacmds(ESqlStatementType.sstnetezzaDropSchema, TBaseType.rrw_drop, "schema", " ", " ", " ", " ", " ");
2695    addnetezzacmds(ESqlStatementType.sstnetezzaDropSequence, TBaseType.rrw_drop, "sequence", " ", " ", " ", " ", " ");
2696    addnetezzacmds(ESqlStatementType.sstnetezzaDropSession, TBaseType.rrw_drop, "session", " ", " ", " ", " ", " ");
2697    addnetezzacmds(ESqlStatementType.sstdropsynonym, TBaseType.rrw_drop, "synonym", " ", " ", " ", " ", " ");
2698    addnetezzacmds(ESqlStatementType.sstnetezzaDropTable, TBaseType.rrw_drop, "table", " ", " ", " ", " ", " ");
2699    addnetezzacmds(ESqlStatementType.sstnetezzaDropUser, TBaseType.rrw_drop, "user", " ", " ", " ", " ", " ");
2700    addnetezzacmds(ESqlStatementType.sstnetezzaDropView, TBaseType.rrw_drop, "view", " ", " ", " ", " ", " ");
2701    addnetezzacmds(ESqlStatementType.sstexecutestmt, TBaseType.rrw_exec, " ", " ", " ", " ", " ", " ");
2702    addnetezzacmds(ESqlStatementType.sstexecutestmt, TBaseType.rrw_execute, " ", " ", " ", " ", " ", " ");
2703    addnetezzacmds(ESqlStatementType.sstExplain, TBaseType.rrw_explain, " ", " ", " ", " ", " ", " ");
2704    addnetezzacmds(ESqlStatementType.sstnetezzaGenerateStatistics, TBaseType.rrw_netezza_generate, "express", "statistics", " ", " ", " ", " ");
2705    addnetezzacmds(ESqlStatementType.sstnetezzaGenerateStatistics, TBaseType.rrw_netezza_generate, "statistics", " ", " ", " ", " ", " ");
2706    addnetezzacmds(ESqlStatementType.sstnetezzaGrant, TBaseType.rrw_grant, " ", " ", " ", " ", " ", " ");
2707    addnetezzacmds(ESqlStatementType.sstnetezzaGroomTable, TBaseType.rrw_netezza_groom, "table", " ", " ", " ", " ", " ");
2708    addnetezzacmds(ESqlStatementType.sstlocktable, TBaseType.rrw_lock, "table", " ", " ", " ", " ", " ");
2709    addnetezzacmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert, " ", " ", " ", " ", " ", " ");
2710    addnetezzacmds(ESqlStatementType.sstmerge, TBaseType.rrw_merge, " ", " ", " ", " ", " ", " ");
2711    addnetezzacmds(ESqlStatementType.sstnetezzaReset, TBaseType.rrw_reset, " ", " ", " ", " ", " ", " ");
2712    addnetezzacmds(ESqlStatementType.sstnetezzaRevoke, TBaseType.rrw_revoke, " ", " ", " ", " ", " ", " ");
2713    addnetezzacmds(ESqlStatementType.sstnetezzaRollback, TBaseType.rrw_rollback, " ", " ", " ", " ", " ", " ");
2714    addnetezzacmds(ESqlStatementType.sstselect, TBaseType.rrw_select, " ", " ", " ", " ", " ", " ");
2715    addnetezzacmds(ESqlStatementType.sstnetezzaSet, TBaseType.rrw_set, " ", " ", " ", " ", " ", " ");
2716    addnetezzacmds(ESqlStatementType.sstSetCatalog, TBaseType.rrw_set, "catalog", " ", " ", " ", " ", " ");
2717    addnetezzacmds(ESqlStatementType.sstSetSchema, TBaseType.rrw_set, "schema", " ", " ", " ", " ", " ");
2718    addnetezzacmds(ESqlStatementType.sstnetezzaShow, TBaseType.rrw_show, " ", " ", " ", " ", " ", " ");
2719    addnetezzacmds(ESqlStatementType.sstTruncate, TBaseType.rrw_truncate, " ", " ", " ", " ", " ", " ");
2720    addnetezzacmds(ESqlStatementType.sstupdate, TBaseType.rrw_update, " ", " ", " ", " ", " ", " ");
2721}
2722    void initgaussdbcmds(){
2723// cmd must be sorted alphabetically
2724        addgaussdbcmds(ESqlStatementType.sstpostgresqlabort, TBaseType.rrw_abort, " ", " ", " ", " ", " ", " ");
2725        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterAggregate, TBaseType.rrw_alter, "aggregate", " ", " ", " ", " ", " ");
2726        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterCollation, TBaseType.rrw_alter, "collation", " ", " ", " ", " ", " ");
2727        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterConversion, TBaseType.rrw_alter, "conversion", " ", " ", " ", " ", " ");
2728        addgaussdbcmds(ESqlStatementType.sstpostgresqlalterdatabase, TBaseType.rrw_alter, "database", " ", " ", " ", " ", " ");
2729        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterDefaultPrivileges, TBaseType.rrw_alter, "default", "privileges", " ", " ", " ", " ");
2730        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterDomain, TBaseType.rrw_alter, "domain", " ", " ", " ", " ", " ");
2731        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterEventTrigger, TBaseType.rrw_alter, "event", "trigger", " ", " ", " ", " ");
2732        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterExtension, TBaseType.rrw_alter, "extension", " ", " ", " ", " ", " ");
2733        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterForeignDataWrapper, TBaseType.rrw_alter, "foreign", "data", "wrapper", " ", " ", " ");
2734        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterForeignTable, TBaseType.rrw_alter, "foreign", "Table", " ", " ", " ", " ");
2735
2736        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterfunction, TBaseType.rrw_alter, "function", " ", " ", " ", " ", " ");
2737        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterGroup, TBaseType.rrw_alter, "group", " ", " ", " ", " ", " ");
2738        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterIndex, TBaseType.rrw_alter, "index", " ", " ", " ", " ", " ");
2739        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterLanguage, TBaseType.rrw_alter, "language", " ", " ", " ", " ", " ");
2740        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterLargeObject, TBaseType.rrw_alter, "large", "object", " ", " ", " ", " ");
2741        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterMaterializedView, TBaseType.rrw_alter, "materialized", "view", " ", " ", " ", " ");
2742        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterOperator, TBaseType.rrw_alter, "operator", " ", " ", " ", " ", " ");
2743        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterOperatorClass, TBaseType.rrw_alter, "operator", "class", " ", " ", " ", " ");
2744        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterOperatorFamily, TBaseType.rrw_alter, "operator", "family", " ", " ", " ", " ");
2745        addgaussdbcmds(ESqlStatementType.sstAlterPackage, TBaseType.rrw_alter, "package", " ", " ", " ", " ", " ");
2746        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterPolicy, TBaseType.rrw_alter, "policy", " ", " ", " ", " ", " ");
2747        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterLanguage, TBaseType.rrw_alter, "procedural", "language", " ", " ", " ", " ");
2748        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterProcedure, TBaseType.rrw_alter, "procedure", " ", " ", " ", " ", " ");
2749        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterPublication, TBaseType.rrw_alter, "publication", " ", " ", " ", " ", " ");
2750        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterRole, TBaseType.rrw_alter, "role", " ", " ", " ", " ", " ");
2751        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterRoutine, TBaseType.rrw_alter, "routine", " ", " ", " ", " ", " ");
2752        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterRule, TBaseType.rrw_alter, "rule", " ", " ", " ", " ", " ");
2753        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterSchema, TBaseType.rrw_alter, "schema", " ", " ", " ", " ", " ");
2754        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterSequence, TBaseType.rrw_alter, "sequence", " ", " ", " ", " ", " ");
2755        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterServer, TBaseType.rrw_alter, "server", " ", " ", " ", " ", " ");
2756        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterStatistics, TBaseType.rrw_alter, "statistics", " ", " ", " ", " ", " ");
2757        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterSubscription, TBaseType.rrw_alter, "subscription", " ", " ", " ", " ", " ");
2758        addgaussdbcmds(ESqlStatementType.sstAlterSynonym, TBaseType.rrw_alter, "synonym", " ", " ", " ", " ", " ");
2759        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterSystem, TBaseType.rrw_alter, "system", " ", " ", " ", " ", " ");
2760
2761        addgaussdbcmds(ESqlStatementType.sstaltertable, TBaseType.rrw_alter, "table", " ", " ", " ", " ", " ");
2762        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterTablespace, TBaseType.rrw_alter, "tablespace", " ", " ", " ", " ", " ");
2763
2764        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterTextSearchConfiguration, TBaseType.rrw_alter, "text", "search", "configuration", " ", " ", " ");
2765        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterTextSearchDictionary, TBaseType.rrw_alter, "text", "search", "dictionary", " ", " ", " ");
2766        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterTextSearchParser, TBaseType.rrw_alter, "text", "search", "parser", " ", " ", " ");
2767        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterTextSearchTemplate, TBaseType.rrw_alter, "text", "search", "template", " ", " ", " ");
2768        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterTrigger, TBaseType.rrw_alter, "trigger", " ", " ", " ", " ", " ");
2769        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterType, TBaseType.rrw_alter, "type", " ", " ", " ", " ", " ");
2770        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterUser, TBaseType.rrw_alter, "user", " ", " ", " ", " ", " ");
2771        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterUserMapping, TBaseType.rrw_alter, "user", "mapping", " ", " ", " ", " ");
2772        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterView, TBaseType.rrw_alter, "view", " ", " ", " ", " ", " ");
2773        addgaussdbcmds(ESqlStatementType.sstpostgresqlAnalyze, TBaseType.rrw_analyze, " ", " ", " ", " ", " ", " ");
2774
2775        // begin is recognized in isgaussdb() method.
2776      //  addgaussdbcmds(ESqlStatementType.sstpostgresqlBegin, TBaseType.rrw_begin, " ", " ", " ", " ", " ", " ");
2777
2778        addgaussdbcmds(ESqlStatementType.sstcall, TBaseType.rrw_call, " ", " ", " ", " ", " ", " ");
2779
2780        addgaussdbcmds(ESqlStatementType.sstpostgresqlCheckpoint, TBaseType.rrw_checkpoint, " ", " ", " ", " ", " ", " ");
2781        addgaussdbcmds(ESqlStatementType.sstpostgresqlClose, TBaseType.rrw_close, " ", " ", " ", " ", " ", " ");
2782
2783        addgaussdbcmds(ESqlStatementType.sstpostgresqlCluster, TBaseType.rrw_postgresql_cluster, " ", " ", " ", " ", " ", " ");
2784
2785        addgaussdbcmds(ESqlStatementType.sstpostgresqlComment, TBaseType.rrw_comment, " ", " ", " ", " ", " ", " ");
2786
2787        addgaussdbcmds(ESqlStatementType.sstpostgresqlCommit, TBaseType.rrw_commit, " ", " ", " ", " ", " ", " ");
2788        addgaussdbcmds(ESqlStatementType.sstpostgresqlCommitPrepared, TBaseType.rrw_commit, "prepared", " ", " ", " ", " ", " ");
2789        addgaussdbcmds(ESqlStatementType.sstpostgresqlCopy, TBaseType.rrw_postgresql_copy, " ", " ", " ", " ", " ", " ");
2790
2791        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateAccessMethod, TBaseType.rrw_create, "access", "method", " ", " ", " ", " ");
2792        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateAggregate, TBaseType.rrw_create, "aggregate", " ", " ", " ", " ", " ");
2793        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateAssertion, TBaseType.rrw_create, "assertion", " ", " ", " ", " ", " ");
2794        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateCast, TBaseType.rrw_create, "cast", " ", " ", " ", " ", " ");
2795        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateCollation, TBaseType.rrw_create, "collation", " ", " ", " ", " ", " ");
2796
2797        addgaussdbcmds(ESqlStatementType.sstcreatetrigger, TBaseType.rrw_create, "constraint", "trigger", " ", " ", " ", " ");
2798
2799        addgaussdbcmds(ESqlStatementType.sstpostgresqlConversion, TBaseType.rrw_create, "conversion", " ", " ", " ", " ", " ");
2800        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateDatabase, TBaseType.rrw_create, "database", " ", " ", " ", " ", " ");
2801        addgaussdbcmds(ESqlStatementType.sstpostgresqlConversion, TBaseType.rrw_create, "default", "conversion", " ", " ", " ", " ");
2802        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateDomain, TBaseType.rrw_create, "domain", " ", " ", " ", " ", " ");
2803        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateEventTrigger, TBaseType.rrw_create, "event", "trigger", " ", " ", " ", " ");
2804        addgaussdbcmds(ESqlStatementType.sstcreateExtension, TBaseType.rrw_create, "extension", " ", " ", " ", " ", " ");
2805
2806        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateForeignDataWrapper, TBaseType.rrw_create, "foreign", "data", "wrapper", " ", " ", " ");
2807        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateForeignTable, TBaseType.rrw_create, "foreign", "table", " ", " ", " ", " ");
2808        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateFunction, TBaseType.rrw_create, "function", " ", " ", " ", " ", " ");
2809
2810        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateIndex, TBaseType.rrw_create, "global", "index", " ", " ", " ", " ");
2811
2812        addgaussdbcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "global", "temp", "table", " ", " ", " ");
2813        addgaussdbcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "global", "temporary", "table", " ", " ", " ");
2814        addgaussdbcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "global", "unlocked", "table", " ", " ", " ");
2815        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateIndex, TBaseType.rrw_create, "global", "unique", "index", " ", " ", " ");
2816
2817        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateGroup, TBaseType.rrw_create, "group", " ", " ", " ", " ", " ");
2818
2819        addgaussdbcmds(ESqlStatementType.sstcreatematerializedview, TBaseType.rrw_create, "incremental", "materialized", "view", " ", " ", " ");
2820
2821        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateIndex, TBaseType.rrw_create, "index", " ", " ", " ", " ", " ");
2822        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateLanguage, TBaseType.rrw_create, "language", " ", " ", " ", " ", " ");
2823
2824        addgaussdbcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "local", "temp", "table", " ", " ", " ");
2825        addgaussdbcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "local", "temporary", "table", " ", " ", " ");
2826        addgaussdbcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "local", "unlocked", "table", " ", " ", " ");
2827
2828        addgaussdbcmds(ESqlStatementType.sstcreatematerializedview, TBaseType.rrw_create, "materialized", "view", " ", " ", " ", " ");
2829
2830        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateOperator, TBaseType.rrw_create, "operator", " ", " ", " ", " ", " ");
2831        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateOperatorClass, TBaseType.rrw_create, "operator", "class", " ", " ", " ", " ");
2832        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateOperatorFimaly, TBaseType.rrw_create, "operator", "family", " ", " ", " ", " ");
2833
2834        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateFunction, TBaseType.rrw_create, "or", "replace", "function", " ", " ", " ");
2835        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateLanguage, TBaseType.rrw_create, "or", "replace", "language", " ", " ", " ");
2836
2837        addgaussdbcmds(ESqlStatementType.sstplsql_createpackage, TBaseType.rrw_create,"or","replace","package"," "," "," ");
2838        addgaussdbcmds(ESqlStatementType.sstoraclecreatepackagebody, TBaseType.rrw_create,"or","replace","package","body"," "," ");
2839
2840
2841        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateLanguage, TBaseType.rrw_create, "or", "replace", "procedural", "language", " ", " ");
2842        addgaussdbcmds(ESqlStatementType.sstcreateprocedure, TBaseType.rrw_create, "or", "replace", "procedure", " ", " ", " ");
2843        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateRole, TBaseType.rrw_create, "or", "replace", "role ", " ", " ", " ");
2844        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateRule, TBaseType.rrw_create, "or", "replace", "rule ", " ", " ", " ");
2845        addgaussdbcmds(ESqlStatementType.sstcreatesynonym, TBaseType.rrw_create,"or","replace","synonym"," "," "," ");
2846
2847        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateView, TBaseType.rrw_create, "or", "replace", "temp", "view", " ", " ");
2848        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateView, TBaseType.rrw_create, "or", "replace", "temporary", "view", " ", " ");
2849        addgaussdbcmds(ESqlStatementType.sstcreatetrigger, TBaseType.rrw_create, "or", "replace", "trigger", " ", " ", " ");
2850        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateLanguage, TBaseType.rrw_create, "or", "replace", "trusted", "language", " ", " ");
2851        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateLanguage, TBaseType.rrw_create, "or", "replace", "trusted", "procedural", "language", " ");
2852        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateView, TBaseType.rrw_create, "or", "replace", "view", " ", " ", " ");
2853
2854        addgaussdbcmds(ESqlStatementType.sstplsql_createpackage, TBaseType.rrw_create,"package"," "," "," "," "," ");
2855        addgaussdbcmds(ESqlStatementType.sstoraclecreatepackagebody, TBaseType.rrw_create,"package","body"," "," "," "," ");
2856
2857        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreatePolicy, TBaseType.rrw_create, "policy", " ", " ", " ", " ", " ");
2858        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateLanguage, TBaseType.rrw_create, "procedural", "language", " ", " ", " ", " ");
2859        addgaussdbcmds(ESqlStatementType.sstcreateprocedure, TBaseType.rrw_create, "procedure", " ", " ", " ", " ", " ");
2860        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreatePublication, TBaseType.rrw_create, "publication", " ", " ", " ", " ", " ");
2861
2862        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateRole, TBaseType.rrw_create, "role", " ", " ", " ", " ", " ");
2863        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateRule, TBaseType.rrw_create, "rule", " ", " ", " ", " ", " ");
2864
2865
2866        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateSchema, TBaseType.rrw_create, "schema", " ", " ", " ", " ", " ");
2867
2868        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateSequence, TBaseType.rrw_create, "sequence", " ", " ", " ", " ", " ");
2869
2870
2871        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateServer, TBaseType.rrw_create, "server", " ", " ", " ", " ", " ");
2872        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateStatistics, TBaseType.rrw_create, "statistics", " ", " ", " ", " ", " ");
2873        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateSubscription, TBaseType.rrw_create, "subscription", " ", " ", " ", " ", " ");
2874        addgaussdbcmds(ESqlStatementType.sstcreatesynonym, TBaseType.rrw_create,"synonym"," "," "," "," "," ");
2875
2876        addgaussdbcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "table", " ", " ", " ", " ", " ");
2877
2878        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateTablespace, TBaseType.rrw_create, "tablespace", " ", " ", " ", " ", " ");
2879
2880        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateSequence, TBaseType.rrw_create, "temp", "sequence", " ", " ", " ", " ");
2881        addgaussdbcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "temp", "table", " ", " ", " ", " ");
2882        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateView, TBaseType.rrw_create, "temp", "view", " ", " ", " ", " ");
2883        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateSequence, TBaseType.rrw_create, "temporary", "sequence", " ", " ", " ", " ");
2884        addgaussdbcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "temporary", "table", " ", " ", " ", " ");
2885        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateView, TBaseType.rrw_create, "temporary", "view", " ", " ", " ", " ");
2886
2887        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateTextSearchConfiguration, TBaseType.rrw_create, "text", "search", "configuration", " ", " ", " ");
2888        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateTextSearchDictionary, TBaseType.rrw_create, "text", "search", "dictionary", " ", " ", " ");
2889        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateTextSearchParser, TBaseType.rrw_create, "text", "search", "parser", " ", " ", " ");
2890        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateTextSearchTemplate, TBaseType.rrw_create, "text", "search", "template", " ", " ", " ");
2891
2892        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateTransform, TBaseType.rrw_create, "transform", " ", " ", " ", " ", " ");
2893        addgaussdbcmds(ESqlStatementType.sstcreatetrigger, TBaseType.rrw_create, "trigger", " ", " ", " ", " ", " ");
2894
2895        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateLanguage, TBaseType.rrw_create, "trusted", "language", " ", " ", " ", " ");
2896        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateLanguage, TBaseType.rrw_create, "trusted", "procedural", "language", " ", " ", " ");
2897
2898        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateType, TBaseType.rrw_create, "type", " ", " ", " ", " ", " ");
2899
2900        addgaussdbcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "unlocked", "table", " ", " ", " ", " ");
2901        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateSequence, TBaseType.rrw_create, "unlogged", "sequence", " ", " ", " ", " ");
2902        addgaussdbcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "unlogged", "table", " ", " ", " ", " ");
2903
2904        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateUser, TBaseType.rrw_create, "user", " ", " ", " ", " ", " ");
2905
2906        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateUserMapping, TBaseType.rrw_create, "user", "mapping", " ", " ", " ", " ");
2907
2908        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateView, TBaseType.rrw_create, "view", " ", " ", " ", " ", " ");
2909
2910        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateIndex, TBaseType.rrw_create, "unique", "index", " ", " ", " ", " ");
2911
2912
2913        addgaussdbcmds(ESqlStatementType.sstpostgresqlDeallocate, TBaseType.rrw_deallocate, " ", " ", " ", " ", " ", " ");
2914
2915        addgaussdbcmds(ESqlStatementType.sstpostgresqlDeclare, TBaseType.rrw_declare, " ", " ", " ", " ", " ", " ");
2916
2917        addgaussdbcmds(ESqlStatementType.sstdelete, TBaseType.rrw_delete, " ", " ", " ", " ", " ", " ");
2918
2919        addgaussdbcmds(ESqlStatementType.sstpostgresqlDiscard, TBaseType.rrw_postgresql_discard, " ", " ", " ", " ", " ", " ");
2920
2921        addgaussdbcmds(ESqlStatementType.sstpostgresqlDo, TBaseType.rrw_do, " ", " ", " ", " ", " ", " ");
2922
2923        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropAccessMethod, TBaseType.rrw_drop, "access", "method", " ", " ", " ", " ");
2924        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropAggregate, TBaseType.rrw_drop, "aggregate", " ", " ", " ", " ", " ");
2925        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropAssertion, TBaseType.rrw_drop, "assertion", " ", " ", " ", " ", " ");
2926
2927        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropCast, TBaseType.rrw_drop, "cast", " ", " ", " ", " ", " ");
2928
2929        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropCollation, TBaseType.rrw_drop, "collation", " ", " ", " ", " ", " ");
2930
2931        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropConversion, TBaseType.rrw_drop, "conversion", " ", " ", " ", " ", " ");
2932
2933        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropDatabase, TBaseType.rrw_drop, "database", " ", " ", " ", " ", " ");
2934
2935        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropDomain, TBaseType.rrw_drop, "domain", " ", " ", " ", " ", " ");
2936        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropEventTrigger, TBaseType.rrw_drop, "event", "trigger", " ", " ", " ", " ");
2937        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropExtension, TBaseType.rrw_drop, "extension", " ", " ", " ", " ", " ");
2938
2939        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropForeignDataWrapper, TBaseType.rrw_drop, "foreign", "data", "wrapper", " ", " ", " ");
2940
2941        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropForeignTable, TBaseType.rrw_drop, "foreign", "table", " ", " ", " ", " ");
2942
2943        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropFunction, TBaseType.rrw_drop, "function", " ", " ", " ", " ", " ");
2944
2945        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropGroup, TBaseType.rrw_drop, "group", " ", " ", " ", " ", " ");
2946
2947        addgaussdbcmds(ESqlStatementType.sstdropindex, TBaseType.rrw_drop, "index", " ", " ", " ", " ", " ");
2948
2949        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropLanguage, TBaseType.rrw_drop, "language", " ", " ", " ", " ", " ");
2950
2951        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropMaterializedView, TBaseType.rrw_drop, "materialized", "view", " ", " ", " ", " ");
2952
2953        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropOperator, TBaseType.rrw_drop, "operator", " ", " ", " ", " ", " ");
2954        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropOperatorClass, TBaseType.rrw_drop, "operator", "class", " ", " ", " ", " ");
2955        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropOperatorFamily, TBaseType.rrw_drop, "operator", "family ", " ", " ", " ", " ");
2956
2957        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropOwned, TBaseType.rrw_drop, "owned", " ", " ", " ", " ", " ");
2958        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropPolicy, TBaseType.rrw_drop, "policy", " ", " ", " ", " ", " ");
2959        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropLanguage, TBaseType.rrw_drop, "procedural", "language", " ", " ", " ", " ");
2960        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropProcedure, TBaseType.rrw_drop, "procedure", " ", " ", " ", " ", " ");
2961        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropPublication, TBaseType.rrw_drop, "publication", " ", " ", " ", " ", " ");
2962
2963        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropRole, TBaseType.rrw_drop, "role", " ", " ", " ", " ", " ");
2964        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropRoutine, TBaseType.rrw_drop, "routine", " ", " ", " ", " ", " ");
2965        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropRule, TBaseType.rrw_drop, "rule", " ", " ", " ", " ", " ");
2966        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropSchema, TBaseType.rrw_drop, "schema", " ", " ", " ", " ", " ");
2967        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropSequence, TBaseType.rrw_drop, "sequence", " ", " ", " ", " ", " ");
2968        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropServer, TBaseType.rrw_drop, "server", " ", " ", " ", " ", " ");
2969        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropStatistics, TBaseType.rrw_drop, "statistics", " ", " ", " ", " ", " ");
2970        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropSubscription, TBaseType.rrw_drop, "subscription", " ", " ", " ", " ", " ");
2971        addgaussdbcmds(ESqlStatementType.sstdropsynonym, TBaseType.rrw_drop,"synonym"," "," "," "," "," ");
2972        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropTable, TBaseType.rrw_drop, "table", " ", " ", " ", " ", " ");
2973        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropTablespace, TBaseType.rrw_drop, "tablespace", " ", " ", " ", " ", " ");
2974
2975        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropTextSearchConfiguration, TBaseType.rrw_drop, "text", "search", "configuration", " ", " ", " ");
2976        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropTextSearchDictionary, TBaseType.rrw_drop, "text", "search", "dictionary", " ", " ", " ");
2977        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropTextSearchParser, TBaseType.rrw_drop, "text", "search", "parser", " ", " ", " ");
2978        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropTextSearchTemplate, TBaseType.rrw_drop, "text", "search", "template", " ", " ", " ");
2979        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropTransform, TBaseType.rrw_drop, "transform", " ", " ", " ", " ", " ");
2980        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropTrigger, TBaseType.rrw_drop, "trigger", " ", " ", " ", " ", " ");
2981        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropType, TBaseType.rrw_drop, "type", " ", " ", " ", " ", " ");
2982        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropUser, TBaseType.rrw_drop, "user", " ", " ", " ", " ", " ");
2983        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropUserMapping, TBaseType.rrw_drop, "user", "mapping", " ", " ", " ", " ");
2984        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropView, TBaseType.rrw_drop, "view", " ", " ", " ", " ", " ");
2985
2986        addgaussdbcmds(ESqlStatementType.sstpostgresqlEnd, TBaseType.rrw_end, " ", " ", " ", " ", " ", " ");
2987
2988        addgaussdbcmds(ESqlStatementType.sstpostgresqlExecute, TBaseType.rrw_execute, " ", " ", " ", " ", " ", " ");
2989
2990        addgaussdbcmds(ESqlStatementType.sstpostgresqlExplain, TBaseType.rrw_explain, " ", " ", " ", " ", " ", " ");
2991
2992        addgaussdbcmds(ESqlStatementType.sstFetchFrom, TBaseType.rrw_fetch, " ", " ", " ", " ", " ", " ");
2993
2994        addgaussdbcmds(ESqlStatementType.sstpostgresqlGrant, TBaseType.rrw_grant, " ", " ", " ", " ", " ", " ");
2995        addgaussdbcmds(ESqlStatementType.sstPostgresqlImport, TBaseType.rrw_postgresql_import, "foreign", "schema", " ", " ", " ", " ");
2996        addgaussdbcmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert, " ", " ", " ", " ", " ", " ");
2997
2998        addgaussdbcmds(ESqlStatementType.sstpostgresqlListen, TBaseType.rrw_postgresql_listen, " ", " ", " ", " ", " ", " ");
2999
3000        addgaussdbcmds(ESqlStatementType.sstpostgresqlLoad, TBaseType.rrw_load, " ", " ", " ", " ", " ", " ");
3001
3002        addgaussdbcmds(ESqlStatementType.sstpostgresqlLock, TBaseType.rrw_lock, " ", " ", " ", " ", " ", " ");
3003        addgaussdbcmds(ESqlStatementType.sstmerge, TBaseType.rrw_merge," "," "," "," "," "," ");
3004
3005        addgaussdbcmds(ESqlStatementType.sstpostgresqlMove, TBaseType.rrw_move, " ", " ", " ", " ", " ", " ");
3006
3007        addgaussdbcmds(ESqlStatementType.sstpostgresqlNotify, TBaseType.rrw_postgresql_notify, " ", " ", " ", " ", " ", " ");
3008
3009        addgaussdbcmds(ESqlStatementType.sstPostgresqlBlock, TBaseType.rrw_plpgsql_function_delimiter, " ", " ", " ", " ", " ", " ");
3010
3011
3012        addgaussdbcmds(ESqlStatementType.sstpostgresqlPrepare, TBaseType.rrw_prepare, " ", " ", " ", " ", " ", " ");
3013
3014        addgaussdbcmds(ESqlStatementType.sstpostgresqlPrepareTransaction, TBaseType.rrw_prepare, "transaction", " ", " ", " ", " ", " ");
3015
3016        addgaussdbcmds(ESqlStatementType.sstpostgresqlReassignOwned, TBaseType.rrw_postgresql_reassign, "owned", " ", " ", " ", " ", " ");
3017
3018        addgaussdbcmds(ESqlStatementType.sstpostgresqlRefreshMaterializedView, TBaseType.rrw_refresh, "incremental","materialized", "view",  " ", " ", " ");
3019        addgaussdbcmds(ESqlStatementType.sstpostgresqlRefreshMaterializedView, TBaseType.rrw_refresh, "materialized", "view", " ", " ", " ", " ");
3020
3021        addgaussdbcmds(ESqlStatementType.sstReindex, TBaseType.rrw_postgresql_reindex, " ", " ", " ", " ", " ", " ");
3022
3023        addgaussdbcmds(ESqlStatementType.sstpostgresqlReleaseSavepoint, TBaseType.rrw_release, " ", " ", " ", " ", " ", " ");
3024        addgaussdbcmds(ESqlStatementType.sstpostgresqlReleaseSavepoint, TBaseType.rrw_release, "savepoint", " ", " ", " ", " ", " ");
3025
3026        addgaussdbcmds(ESqlStatementType.sstpostgresqlReset, TBaseType.rrw_reset, " ", " ", " ", " ", " ", " ");
3027
3028        addgaussdbcmds(ESqlStatementType.sstpostgresqlRevoke, TBaseType.rrw_revoke, " ", " ", " ", " ", " ", " ");
3029
3030        addgaussdbcmds(ESqlStatementType.sstpostgresqlRollback, TBaseType.rrw_rollback, " ", " ", " ", " ", " ", " ");
3031        addgaussdbcmds(ESqlStatementType.sstpostgresqlRollbackPrepared, TBaseType.rrw_rollback, "prepared", " ", " ", " ", " ", " ");
3032        addgaussdbcmds(ESqlStatementType.sstpostgresqlRollbackToSavepoint, TBaseType.rrw_rollback, "to", "savepoint", " ", " ", " ", " ");
3033        addgaussdbcmds(ESqlStatementType.sstsavepoint, TBaseType.rrw_savepoint, " ", " ", " ", " ", " ", " ");
3034
3035        addgaussdbcmds(ESqlStatementType.sstpostgresqlSecurityLabel, TBaseType.rrw_postgresql_security, "label", " ", " ", " ", " ", " ");
3036
3037
3038        addgaussdbcmds(ESqlStatementType.sstselect, TBaseType.rrw_select, " ", " ", " ", " ", " ", " ");
3039
3040        addgaussdbcmds(ESqlStatementType.sstpostgresqlSet, TBaseType.rrw_set, " ", " ", " ", " ", " ", " ");
3041
3042        addgaussdbcmds(ESqlStatementType.sstpostgresqlSetConstraints, TBaseType.rrw_set, "constraints", " ", " ", " ", " ", " ");
3043        addgaussdbcmds(ESqlStatementType.sstpostgresqlSetRole, TBaseType.rrw_set, "local", "role", " ", " ", " ", " ");
3044        addgaussdbcmds(ESqlStatementType.sstpostgresqlSetSessionAuthorization, TBaseType.rrw_set, "local", "session", "authorization", " ", " ", " ");
3045        addgaussdbcmds(ESqlStatementType.sstpostgresqlSetRole, TBaseType.rrw_set, "role", " ", " ", " ", " ", " ");
3046        addgaussdbcmds(ESqlStatementType.sstpostgresqlSetSearchPath, TBaseType.rrw_set, "search_path", " ", " ", " ", " ", " ");
3047        addgaussdbcmds(ESqlStatementType.sstpostgresqlSetSessionAuthorization, TBaseType.rrw_set, "session", "authorization", " ", " ", " ", " ");
3048        addgaussdbcmds(ESqlStatementType.sstpostgresqlSetTransaction, TBaseType.rrw_set, "session", "characteristics", "as", "transaction", " ", " ");
3049        addgaussdbcmds(ESqlStatementType.sstpostgresqlSetRole, TBaseType.rrw_set, "session", "role", " ", " ", " ", " ");
3050        addgaussdbcmds(ESqlStatementType.sstpostgresqlSetSessionAuthorization, TBaseType.rrw_set, "session", "session", "authorization", " ", " ", " ");
3051
3052        addgaussdbcmds(ESqlStatementType.sstpostgresqlSetTransaction, TBaseType.rrw_set, "transaction", " ", " ", " ", " ", " ");
3053        addgaussdbcmds(ESqlStatementType.sstpostgresqlShow, TBaseType.rrw_show, " ", " ", " ", " ", " ", " ");
3054        addgaussdbcmds(ESqlStatementType.sstpostgresqlShowSearchPath, TBaseType.rrw_show, "search_path", " ", " ", " ", " ", " ");
3055        // addgaussdbcmds(ESqlStatementType.sstpostgresqlStartTransaction, TBaseType.rrw_start, "transaction", " ", " ", " ", " ", " ");
3056        addgaussdbcmds(ESqlStatementType.sstPostgresqlTable, TBaseType.rrw_table, " ", " ", " ", " ", " ", " ");
3057        addgaussdbcmds(ESqlStatementType.sstStartTransaction, TBaseType.rrw_start, "transaction", " ", " ", " ", " ", " ");
3058        addgaussdbcmds(ESqlStatementType.sstpostgresqlTruncate, TBaseType.rrw_truncate, " ", " ", " ", " ", " ", " ");
3059
3060        addgaussdbcmds(ESqlStatementType.sstpostgresqlUnlisten, TBaseType.rrw_postgresql_unlisten, " ", " ", " ", " ", " ", " ");
3061
3062        addgaussdbcmds(ESqlStatementType.sstupdate, TBaseType.rrw_update, " ", " ", " ", " ", " ", " ");
3063        addgaussdbcmds(ESqlStatementType.sstVacuum, TBaseType.rrw_postgresql_vacuum, " ", " ", " ", " ", " ", " ");
3064        addgaussdbcmds(ESqlStatementType.sstValues, TBaseType.rrw_values, " ", " ", " ", " ", " ", " ");
3065
3066    }
3067
3068    void initpostgresqlcmds(){
3069// cmd must be sorted alphabetically
3070        addpostgresqlcmds(ESqlStatementType.sstpostgresqlabort, TBaseType.rrw_abort, " ", " ", " ", " ", " ", " ");
3071        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterAggregate, TBaseType.rrw_alter, "aggregate", " ", " ", " ", " ", " ");
3072        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterCollation, TBaseType.rrw_alter, "collation", " ", " ", " ", " ", " ");
3073        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterConversion, TBaseType.rrw_alter, "conversion", " ", " ", " ", " ", " ");
3074        addpostgresqlcmds(ESqlStatementType.sstpostgresqlalterdatabase, TBaseType.rrw_alter, "database", " ", " ", " ", " ", " ");
3075        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterDefaultPrivileges, TBaseType.rrw_alter, "default", "privileges", " ", " ", " ", " ");
3076        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterDomain, TBaseType.rrw_alter, "domain", " ", " ", " ", " ", " ");
3077        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterEventTrigger, TBaseType.rrw_alter, "event", "trigger", " ", " ", " ", " ");
3078        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterExtension, TBaseType.rrw_alter, "extension", " ", " ", " ", " ", " ");
3079        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterForeignDataWrapper, TBaseType.rrw_alter, "foreign", "data", "wrapper", " ", " ", " ");
3080        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterForeignTable, TBaseType.rrw_alter, "foreign", "Table", " ", " ", " ", " ");
3081
3082        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterfunction, TBaseType.rrw_alter, "function", " ", " ", " ", " ", " ");
3083        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterGroup, TBaseType.rrw_alter, "group", " ", " ", " ", " ", " ");
3084        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterIndex, TBaseType.rrw_alter, "index", " ", " ", " ", " ", " ");
3085        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterLanguage, TBaseType.rrw_alter, "language", " ", " ", " ", " ", " ");
3086        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterLargeObject, TBaseType.rrw_alter, "large", "object", " ", " ", " ", " ");
3087        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterMaterializedView, TBaseType.rrw_alter, "materialized", "view", " ", " ", " ", " ");
3088        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterOperator, TBaseType.rrw_alter, "operator", " ", " ", " ", " ", " ");
3089        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterOperatorClass, TBaseType.rrw_alter, "operator", "class", " ", " ", " ", " ");
3090        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterOperatorFamily, TBaseType.rrw_alter, "operator", "family", " ", " ", " ", " ");
3091        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterPolicy, TBaseType.rrw_alter, "policy", " ", " ", " ", " ", " ");
3092        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterLanguage, TBaseType.rrw_alter, "procedural", "language", " ", " ", " ", " ");
3093        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterProcedure, TBaseType.rrw_alter, "procedure", " ", " ", " ", " ", " ");
3094        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterPublication, TBaseType.rrw_alter, "publication", " ", " ", " ", " ", " ");
3095        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterRole, TBaseType.rrw_alter, "role", " ", " ", " ", " ", " ");
3096        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterRoutine, TBaseType.rrw_alter, "routine", " ", " ", " ", " ", " ");
3097        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterRule, TBaseType.rrw_alter, "rule", " ", " ", " ", " ", " ");
3098        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterSchema, TBaseType.rrw_alter, "schema", " ", " ", " ", " ", " ");
3099        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterSequence, TBaseType.rrw_alter, "sequence", " ", " ", " ", " ", " ");
3100        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterServer, TBaseType.rrw_alter, "server", " ", " ", " ", " ", " ");
3101        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterStatistics, TBaseType.rrw_alter, "statistics", " ", " ", " ", " ", " ");
3102        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterSubscription, TBaseType.rrw_alter, "subscription", " ", " ", " ", " ", " ");
3103        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterSystem, TBaseType.rrw_alter, "system", " ", " ", " ", " ", " ");
3104
3105        addpostgresqlcmds(ESqlStatementType.sstaltertable, TBaseType.rrw_alter, "table", " ", " ", " ", " ", " ");
3106        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterTablespace, TBaseType.rrw_alter, "tablespace", " ", " ", " ", " ", " ");
3107
3108        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterTextSearchConfiguration, TBaseType.rrw_alter, "text", "search", "configuration", " ", " ", " ");
3109        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterTextSearchDictionary, TBaseType.rrw_alter, "text", "search", "dictionary", " ", " ", " ");
3110        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterTextSearchParser, TBaseType.rrw_alter, "text", "search", "parser", " ", " ", " ");
3111        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterTextSearchTemplate, TBaseType.rrw_alter, "text", "search", "template", " ", " ", " ");
3112        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterTrigger, TBaseType.rrw_alter, "trigger", " ", " ", " ", " ", " ");
3113        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterType, TBaseType.rrw_alter, "type", " ", " ", " ", " ", " ");
3114        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterUser, TBaseType.rrw_alter, "user", " ", " ", " ", " ", " ");
3115        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterUserMapping, TBaseType.rrw_alter, "user", "mapping", " ", " ", " ", " ");
3116        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterView, TBaseType.rrw_alter, "view", " ", " ", " ", " ", " ");
3117        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAnalyze, TBaseType.rrw_analyze, " ", " ", " ", " ", " ", " ");
3118
3119        addpostgresqlcmds(ESqlStatementType.sstpostgresqlBegin, TBaseType.rrw_begin, " ", " ", " ", " ", " ", " ");
3120
3121        addpostgresqlcmds(ESqlStatementType.sstcall, TBaseType.rrw_call, " ", " ", " ", " ", " ", " ");
3122
3123        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCheckpoint, TBaseType.rrw_checkpoint, " ", " ", " ", " ", " ", " ");
3124        addpostgresqlcmds(ESqlStatementType.sstpostgresqlClose, TBaseType.rrw_close, " ", " ", " ", " ", " ", " ");
3125
3126        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCluster, TBaseType.rrw_postgresql_cluster, " ", " ", " ", " ", " ", " ");
3127
3128        addpostgresqlcmds(ESqlStatementType.sstpostgresqlComment, TBaseType.rrw_comment, " ", " ", " ", " ", " ", " ");
3129
3130        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCommit, TBaseType.rrw_commit, " ", " ", " ", " ", " ", " ");
3131        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCommitPrepared, TBaseType.rrw_commit, "prepared", " ", " ", " ", " ", " ");
3132        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCopy, TBaseType.rrw_postgresql_copy, " ", " ", " ", " ", " ", " ");
3133
3134        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateAccessMethod, TBaseType.rrw_create, "access", "method", " ", " ", " ", " ");
3135        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateAggregate, TBaseType.rrw_create, "aggregate", " ", " ", " ", " ", " ");
3136        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateAssertion, TBaseType.rrw_create, "assertion", " ", " ", " ", " ", " ");
3137        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateCast, TBaseType.rrw_create, "cast", " ", " ", " ", " ", " ");
3138        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateCollation, TBaseType.rrw_create, "collation", " ", " ", " ", " ", " ");
3139
3140        addpostgresqlcmds(ESqlStatementType.sstcreatetrigger, TBaseType.rrw_create, "constraint", "trigger", " ", " ", " ", " ");
3141
3142        addpostgresqlcmds(ESqlStatementType.sstpostgresqlConversion, TBaseType.rrw_create, "conversion", " ", " ", " ", " ", " ");
3143        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateDatabase, TBaseType.rrw_create, "database", " ", " ", " ", " ", " ");
3144        addpostgresqlcmds(ESqlStatementType.sstpostgresqlConversion, TBaseType.rrw_create, "default", "conversion", " ", " ", " ", " ");
3145        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateDomain, TBaseType.rrw_create, "domain", " ", " ", " ", " ", " ");
3146        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateEventTrigger, TBaseType.rrw_create, "event", "trigger", " ", " ", " ", " ");
3147        addpostgresqlcmds(ESqlStatementType.sstcreateExtension, TBaseType.rrw_create, "extension", " ", " ", " ", " ", " ");
3148
3149        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateForeignDataWrapper, TBaseType.rrw_create, "foreign", "data", "wrapper", " ", " ", " ");
3150        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateForeignTable, TBaseType.rrw_create, "foreign", "table", " ", " ", " ", " ");
3151        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateFunction, TBaseType.rrw_create, "function", " ", " ", " ", " ", " ");
3152
3153        addpostgresqlcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "global", "temp", "table", " ", " ", " ");
3154        addpostgresqlcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "global", "temporary", "table", " ", " ", " ");
3155        addpostgresqlcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "global", "unlocked", "table", " ", " ", " ");
3156
3157        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateGroup, TBaseType.rrw_create, "group", " ", " ", " ", " ", " ");
3158
3159
3160        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateIndex, TBaseType.rrw_create, "index", " ", " ", " ", " ", " ");
3161        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateLanguage, TBaseType.rrw_create, "language", " ", " ", " ", " ", " ");
3162
3163        addpostgresqlcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "local", "temp", "table", " ", " ", " ");
3164        addpostgresqlcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "local", "temporary", "table", " ", " ", " ");
3165        addpostgresqlcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "local", "unlocked", "table", " ", " ", " ");
3166
3167        addpostgresqlcmds(ESqlStatementType.sstcreatematerializedview, TBaseType.rrw_create, "materialized", "view", " ", " ", " ", " ");
3168
3169        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateOperator, TBaseType.rrw_create, "operator", " ", " ", " ", " ", " ");
3170        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateOperatorClass, TBaseType.rrw_create, "operator", "class", " ", " ", " ", " ");
3171        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateOperatorFimaly, TBaseType.rrw_create, "operator", "family", " ", " ", " ", " ");
3172
3173        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateFunction, TBaseType.rrw_create, "or", "replace", "function", " ", " ", " ");
3174        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateLanguage, TBaseType.rrw_create, "or", "replace", "language", " ", " ", " ");
3175        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateLanguage, TBaseType.rrw_create, "or", "replace", "procedural", "language", " ", " ");
3176        addpostgresqlcmds(ESqlStatementType.sstcreateprocedure, TBaseType.rrw_create, "or", "replace", "procedure", " ", " ", " ");
3177        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateRole, TBaseType.rrw_create, "or", "replace", "role ", " ", " ", " ");
3178        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateRule, TBaseType.rrw_create, "or", "replace", "rule ", " ", " ", " ");
3179        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateView, TBaseType.rrw_create, "or", "replace", "temp", "view", " ", " ");
3180        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateView, TBaseType.rrw_create, "or", "replace", "temporary", "view", " ", " ");
3181        addpostgresqlcmds(ESqlStatementType.sstcreatetrigger, TBaseType.rrw_create, "or", "replace", "trigger", " ", " ", " ");
3182        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateLanguage, TBaseType.rrw_create, "or", "replace", "trusted", "language", " ", " ");
3183        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateLanguage, TBaseType.rrw_create, "or", "replace", "trusted", "procedural", "language", " ");
3184        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateView, TBaseType.rrw_create, "or", "replace", "view", " ", " ", " ");
3185        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreatePolicy, TBaseType.rrw_create, "policy", " ", " ", " ", " ", " ");
3186        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateLanguage, TBaseType.rrw_create, "procedural", "language", " ", " ", " ", " ");
3187        addpostgresqlcmds(ESqlStatementType.sstcreateprocedure, TBaseType.rrw_create, "procedure", " ", " ", " ", " ", " ");
3188        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreatePublication, TBaseType.rrw_create, "publication", " ", " ", " ", " ", " ");
3189
3190        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateRole, TBaseType.rrw_create, "role", " ", " ", " ", " ", " ");
3191        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateRule, TBaseType.rrw_create, "rule", " ", " ", " ", " ", " ");
3192
3193
3194        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateSchema, TBaseType.rrw_create, "schema", " ", " ", " ", " ", " ");
3195
3196        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateSequence, TBaseType.rrw_create, "sequence", " ", " ", " ", " ", " ");
3197
3198
3199        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateServer, TBaseType.rrw_create, "server", " ", " ", " ", " ", " ");
3200        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateStatistics, TBaseType.rrw_create, "statistics", " ", " ", " ", " ", " ");
3201        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateSubscription, TBaseType.rrw_create, "subscription", " ", " ", " ", " ", " ");
3202
3203        addpostgresqlcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "table", " ", " ", " ", " ", " ");
3204
3205        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateTablespace, TBaseType.rrw_create, "tablespace", " ", " ", " ", " ", " ");
3206
3207        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateSequence, TBaseType.rrw_create, "temp", "sequence", " ", " ", " ", " ");
3208        addpostgresqlcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "temp", "table", " ", " ", " ", " ");
3209        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateView, TBaseType.rrw_create, "temp", "view", " ", " ", " ", " ");
3210        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateSequence, TBaseType.rrw_create, "temporary", "sequence", " ", " ", " ", " ");
3211        addpostgresqlcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "temporary", "table", " ", " ", " ", " ");
3212        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateView, TBaseType.rrw_create, "temporary", "view", " ", " ", " ", " ");
3213
3214        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateTextSearchConfiguration, TBaseType.rrw_create, "text", "search", "configuration", " ", " ", " ");
3215        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateTextSearchDictionary, TBaseType.rrw_create, "text", "search", "dictionary", " ", " ", " ");
3216        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateTextSearchParser, TBaseType.rrw_create, "text", "search", "parser", " ", " ", " ");
3217        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateTextSearchTemplate, TBaseType.rrw_create, "text", "search", "template", " ", " ", " ");
3218
3219        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateTransform, TBaseType.rrw_create, "transform", " ", " ", " ", " ", " ");
3220        addpostgresqlcmds(ESqlStatementType.sstcreatetrigger, TBaseType.rrw_create, "trigger", " ", " ", " ", " ", " ");
3221
3222        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateLanguage, TBaseType.rrw_create, "trusted", "language", " ", " ", " ", " ");
3223        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateLanguage, TBaseType.rrw_create, "trusted", "procedural", "language", " ", " ", " ");
3224
3225        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateType, TBaseType.rrw_create, "type", " ", " ", " ", " ", " ");
3226
3227        addpostgresqlcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "unlocked", "table", " ", " ", " ", " ");
3228        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateSequence, TBaseType.rrw_create, "unlogged", "sequence", " ", " ", " ", " ");
3229        addpostgresqlcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "unlogged", "table", " ", " ", " ", " ");
3230
3231        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateUser, TBaseType.rrw_create, "user", " ", " ", " ", " ", " ");
3232
3233        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateUserMapping, TBaseType.rrw_create, "user", "mapping", " ", " ", " ", " ");
3234
3235        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateView, TBaseType.rrw_create, "view", " ", " ", " ", " ", " ");
3236
3237        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateIndex, TBaseType.rrw_create, "unique", "index", " ", " ", " ", " ");
3238
3239
3240        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDeallocate, TBaseType.rrw_deallocate, " ", " ", " ", " ", " ", " ");
3241
3242        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDeclare, TBaseType.rrw_declare, " ", " ", " ", " ", " ", " ");
3243
3244        addpostgresqlcmds(ESqlStatementType.sstdelete, TBaseType.rrw_delete, " ", " ", " ", " ", " ", " ");
3245
3246        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDiscard, TBaseType.rrw_postgresql_discard, " ", " ", " ", " ", " ", " ");
3247
3248        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDo, TBaseType.rrw_do, " ", " ", " ", " ", " ", " ");
3249
3250        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropAccessMethod, TBaseType.rrw_drop, "access", "method", " ", " ", " ", " ");
3251        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropAggregate, TBaseType.rrw_drop, "aggregate", " ", " ", " ", " ", " ");
3252        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropAssertion, TBaseType.rrw_drop, "assertion", " ", " ", " ", " ", " ");
3253
3254        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropCast, TBaseType.rrw_drop, "cast", " ", " ", " ", " ", " ");
3255
3256        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropCollation, TBaseType.rrw_drop, "collation", " ", " ", " ", " ", " ");
3257
3258        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropConversion, TBaseType.rrw_drop, "conversion", " ", " ", " ", " ", " ");
3259
3260        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropDatabase, TBaseType.rrw_drop, "database", " ", " ", " ", " ", " ");
3261
3262        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropDomain, TBaseType.rrw_drop, "domain", " ", " ", " ", " ", " ");
3263        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropEventTrigger, TBaseType.rrw_drop, "event", "trigger", " ", " ", " ", " ");
3264        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropExtension, TBaseType.rrw_drop, "extension", " ", " ", " ", " ", " ");
3265
3266        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropTable, TBaseType.rrw_drop, "external", "table", " ", " ", " ", " ");
3267
3268        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropForeignDataWrapper, TBaseType.rrw_drop, "foreign", "data", "wrapper", " ", " ", " ");
3269
3270        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropForeignTable, TBaseType.rrw_drop, "foreign", "table", " ", " ", " ", " ");
3271
3272        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropFunction, TBaseType.rrw_drop, "function", " ", " ", " ", " ", " ");
3273
3274        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropGroup, TBaseType.rrw_drop, "group", " ", " ", " ", " ", " ");
3275
3276        addpostgresqlcmds(ESqlStatementType.sstdropindex, TBaseType.rrw_drop, "index", " ", " ", " ", " ", " ");
3277
3278        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropLanguage, TBaseType.rrw_drop, "language", " ", " ", " ", " ", " ");
3279
3280        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropMaterializedView, TBaseType.rrw_drop, "materialized", "view", " ", " ", " ", " ");
3281
3282        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropOperator, TBaseType.rrw_drop, "operator", " ", " ", " ", " ", " ");
3283        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropOperatorClass, TBaseType.rrw_drop, "operator", "class", " ", " ", " ", " ");
3284        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropOperatorFamily, TBaseType.rrw_drop, "operator", "family ", " ", " ", " ", " ");
3285
3286        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropOwned, TBaseType.rrw_drop, "owned", " ", " ", " ", " ", " ");
3287        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropPolicy, TBaseType.rrw_drop, "policy", " ", " ", " ", " ", " ");
3288        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropLanguage, TBaseType.rrw_drop, "procedural", "language", " ", " ", " ", " ");
3289        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropProcedure, TBaseType.rrw_drop, "procedure", " ", " ", " ", " ", " ");
3290        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropPublication, TBaseType.rrw_drop, "publication", " ", " ", " ", " ", " ");
3291
3292        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropRole, TBaseType.rrw_drop, "role", " ", " ", " ", " ", " ");
3293        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropRoutine, TBaseType.rrw_drop, "routine", " ", " ", " ", " ", " ");
3294        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropRule, TBaseType.rrw_drop, "rule", " ", " ", " ", " ", " ");
3295        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropSchema, TBaseType.rrw_drop, "schema", " ", " ", " ", " ", " ");
3296        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropSequence, TBaseType.rrw_drop, "sequence", " ", " ", " ", " ", " ");
3297        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropServer, TBaseType.rrw_drop, "server", " ", " ", " ", " ", " ");
3298        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropStatistics, TBaseType.rrw_drop, "statistics", " ", " ", " ", " ", " ");
3299        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropSubscription, TBaseType.rrw_drop, "subscription", " ", " ", " ", " ", " ");
3300        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropTable, TBaseType.rrw_drop, "table", " ", " ", " ", " ", " ");
3301        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropTablespace, TBaseType.rrw_drop, "tablespace", " ", " ", " ", " ", " ");
3302
3303        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropTextSearchConfiguration, TBaseType.rrw_drop, "text", "search", "configuration", " ", " ", " ");
3304        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropTextSearchDictionary, TBaseType.rrw_drop, "text", "search", "dictionary", " ", " ", " ");
3305        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropTextSearchParser, TBaseType.rrw_drop, "text", "search", "parser", " ", " ", " ");
3306        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropTextSearchTemplate, TBaseType.rrw_drop, "text", "search", "template", " ", " ", " ");
3307        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropTransform, TBaseType.rrw_drop, "transform", " ", " ", " ", " ", " ");
3308        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropTrigger, TBaseType.rrw_drop, "trigger", " ", " ", " ", " ", " ");
3309        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropType, TBaseType.rrw_drop, "type", " ", " ", " ", " ", " ");
3310        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropUser, TBaseType.rrw_drop, "user", " ", " ", " ", " ", " ");
3311        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropUserMapping, TBaseType.rrw_drop, "user", "mapping", " ", " ", " ", " ");
3312        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropView, TBaseType.rrw_drop, "view", " ", " ", " ", " ", " ");
3313
3314        addpostgresqlcmds(ESqlStatementType.sstpostgresqlEnd, TBaseType.rrw_end, " ", " ", " ", " ", " ", " ");
3315
3316        addpostgresqlcmds(ESqlStatementType.sstpostgresqlExecute, TBaseType.rrw_execute, " ", " ", " ", " ", " ", " ");
3317
3318        addpostgresqlcmds(ESqlStatementType.sstpostgresqlExplain, TBaseType.rrw_explain, " ", " ", " ", " ", " ", " ");
3319
3320        addpostgresqlcmds(ESqlStatementType.sstFetchFrom, TBaseType.rrw_fetch, " ", " ", " ", " ", " ", " ");
3321
3322        addpostgresqlcmds(ESqlStatementType.sstpostgresqlGrant, TBaseType.rrw_grant, " ", " ", " ", " ", " ", " ");
3323        addpostgresqlcmds(ESqlStatementType.sstPostgresqlImport, TBaseType.rrw_postgresql_import, "foreign", "schema", " ", " ", " ", " ");
3324        addpostgresqlcmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert, " ", " ", " ", " ", " ", " ");
3325
3326        addpostgresqlcmds(ESqlStatementType.sstpostgresqlListen, TBaseType.rrw_postgresql_listen, " ", " ", " ", " ", " ", " ");
3327
3328        addpostgresqlcmds(ESqlStatementType.sstpostgresqlLoad, TBaseType.rrw_load, " ", " ", " ", " ", " ", " ");
3329
3330        addpostgresqlcmds(ESqlStatementType.sstpostgresqlLock, TBaseType.rrw_lock, " ", " ", " ", " ", " ", " ");
3331
3332        addpostgresqlcmds(ESqlStatementType.sstmerge, TBaseType.rrw_merge," "," "," "," "," "," ");
3333
3334        addpostgresqlcmds(ESqlStatementType.sstpostgresqlMove, TBaseType.rrw_move, " ", " ", " ", " ", " ", " ");
3335
3336        addpostgresqlcmds(ESqlStatementType.sstpostgresqlNotify, TBaseType.rrw_postgresql_notify, " ", " ", " ", " ", " ", " ");
3337
3338        addpostgresqlcmds(ESqlStatementType.sstPostgresqlBlock, TBaseType.rrw_plpgsql_function_delimiter, " ", " ", " ", " ", " ", " ");
3339
3340
3341        addpostgresqlcmds(ESqlStatementType.sstpostgresqlPrepare, TBaseType.rrw_prepare, " ", " ", " ", " ", " ", " ");
3342
3343        addpostgresqlcmds(ESqlStatementType.sstpostgresqlPrepareTransaction, TBaseType.rrw_prepare, "transaction", " ", " ", " ", " ", " ");
3344
3345        addpostgresqlcmds(ESqlStatementType.sstpostgresqlReassignOwned, TBaseType.rrw_postgresql_reassign, "owned", " ", " ", " ", " ", " ");
3346
3347        addpostgresqlcmds(ESqlStatementType.sstpostgresqlRefreshMaterializedView, TBaseType.rrw_refresh, "materialized", "view", " ", " ", " ", " ");
3348
3349        addpostgresqlcmds(ESqlStatementType.sstReindex, TBaseType.rrw_postgresql_reindex, " ", " ", " ", " ", " ", " ");
3350
3351        addpostgresqlcmds(ESqlStatementType.sstpostgresqlReleaseSavepoint, TBaseType.rrw_release, " ", " ", " ", " ", " ", " ");
3352        addpostgresqlcmds(ESqlStatementType.sstpostgresqlReleaseSavepoint, TBaseType.rrw_release, "savepoint", " ", " ", " ", " ", " ");
3353
3354        addpostgresqlcmds(ESqlStatementType.sstpostgresqlReset, TBaseType.rrw_reset, " ", " ", " ", " ", " ", " ");
3355
3356        addpostgresqlcmds(ESqlStatementType.sstpostgresqlRevoke, TBaseType.rrw_revoke, " ", " ", " ", " ", " ", " ");
3357
3358        addpostgresqlcmds(ESqlStatementType.sstpostgresqlRollback, TBaseType.rrw_rollback, " ", " ", " ", " ", " ", " ");
3359        addpostgresqlcmds(ESqlStatementType.sstpostgresqlRollbackPrepared, TBaseType.rrw_rollback, "prepared", " ", " ", " ", " ", " ");
3360        addpostgresqlcmds(ESqlStatementType.sstpostgresqlRollbackToSavepoint, TBaseType.rrw_rollback, "to", "savepoint", " ", " ", " ", " ");
3361        addpostgresqlcmds(ESqlStatementType.sstpostgresqlSavepoint, TBaseType.rrw_savepoint, " ", " ", " ", " ", " ", " ");
3362
3363        addpostgresqlcmds(ESqlStatementType.sstpostgresqlSecurityLabel, TBaseType.rrw_postgresql_security, "label", " ", " ", " ", " ", " ");
3364
3365
3366        addpostgresqlcmds(ESqlStatementType.sstselect, TBaseType.rrw_select, " ", " ", " ", " ", " ", " ");
3367
3368        addpostgresqlcmds(ESqlStatementType.sstpostgresqlSet, TBaseType.rrw_set, " ", " ", " ", " ", " ", " ");
3369
3370        addpostgresqlcmds(ESqlStatementType.sstpostgresqlSetConstraints, TBaseType.rrw_set, "constraints", " ", " ", " ", " ", " ");
3371        addpostgresqlcmds(ESqlStatementType.sstpostgresqlSetRole, TBaseType.rrw_set, "local", "role", " ", " ", " ", " ");
3372        addpostgresqlcmds(ESqlStatementType.sstpostgresqlSetSessionAuthorization, TBaseType.rrw_set, "local", "session", "authorization", " ", " ", " ");
3373        addpostgresqlcmds(ESqlStatementType.sstpostgresqlSetRole, TBaseType.rrw_set, "role", " ", " ", " ", " ", " ");
3374        addpostgresqlcmds(ESqlStatementType.sstpostgresqlSetSearchPath, TBaseType.rrw_set, "search_path", " ", " ", " ", " ", " ");
3375        addpostgresqlcmds(ESqlStatementType.sstpostgresqlSetSessionAuthorization, TBaseType.rrw_set, "session", "authorization", " ", " ", " ", " ");
3376        addpostgresqlcmds(ESqlStatementType.sstpostgresqlSetTransaction, TBaseType.rrw_set, "session", "characteristics", "as", "transaction", " ", " ");
3377        addpostgresqlcmds(ESqlStatementType.sstpostgresqlSetRole, TBaseType.rrw_set, "session", "role", " ", " ", " ", " ");
3378        addpostgresqlcmds(ESqlStatementType.sstpostgresqlSetSessionAuthorization, TBaseType.rrw_set, "session", "session", "authorization", " ", " ", " ");
3379
3380        addpostgresqlcmds(ESqlStatementType.sstpostgresqlSetTransaction, TBaseType.rrw_set, "transaction", " ", " ", " ", " ", " ");
3381        addpostgresqlcmds(ESqlStatementType.sstpostgresqlShow, TBaseType.rrw_show, " ", " ", " ", " ", " ", " ");
3382        addpostgresqlcmds(ESqlStatementType.sstpostgresqlShowSearchPath, TBaseType.rrw_show, "search_path", " ", " ", " ", " ", " ");
3383       // addpostgresqlcmds(ESqlStatementType.sstpostgresqlStartTransaction, TBaseType.rrw_start, "transaction", " ", " ", " ", " ", " ");
3384        addpostgresqlcmds(ESqlStatementType.sstPostgresqlTable, TBaseType.rrw_table, " ", " ", " ", " ", " ", " ");
3385        addpostgresqlcmds(ESqlStatementType.sstStartTransaction, TBaseType.rrw_start, "transaction", " ", " ", " ", " ", " ");
3386        addpostgresqlcmds(ESqlStatementType.sstpostgresqlTruncate, TBaseType.rrw_truncate, " ", " ", " ", " ", " ", " ");
3387
3388        addpostgresqlcmds(ESqlStatementType.sstpostgresqlUnlisten, TBaseType.rrw_postgresql_unlisten, " ", " ", " ", " ", " ", " ");
3389
3390        addpostgresqlcmds(ESqlStatementType.sstupdate, TBaseType.rrw_update, " ", " ", " ", " ", " ", " ");
3391        addpostgresqlcmds(ESqlStatementType.sstVacuum, TBaseType.rrw_postgresql_vacuum, " ", " ", " ", " ", " ", " ");
3392        addpostgresqlcmds(ESqlStatementType.sstValues, TBaseType.rrw_values, " ", " ", " ", " ", " ", " ");
3393
3394    }
3395
3396    void initbigquerycmds() {
3397// cmd must be sorted alphabetically
3398        addbigquerycmds(ESqlStatementType.sstalterview, TBaseType.rrw_alter, "view", " ", " ", " ", " ", " ");
3399        addbigquerycmds(ESqlStatementType.sstaltertable, TBaseType.rrw_alter, "table", " ", " ", " ", " ", " ");
3400
3401        addbigquerycmds(ESqlStatementType.sstBegin, TBaseType.rrw_begin, " ", " ", " ", " ", " ", " ");
3402        addbigquerycmds(ESqlStatementType.sstbegintran, TBaseType.rrw_begin, "transaction", " ", " ", " ", " ", " ");
3403
3404        addbigquerycmds(ESqlStatementType.sstcall, TBaseType.rrw_call, " ", " ", " ", " ", " ", " ");
3405        addbigquerycmds(ESqlStatementType.sst_casestmt, TBaseType.rrw_case, " ", " ", " ", " ", " ", " ");
3406        addbigquerycmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "external", "table", " ", " ", " ", " ");
3407        addbigquerycmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create, "function", " ", " ", " ", " ", " ");
3408        addbigquerycmds(ESqlStatementType.sstcreatematerializedview, TBaseType.rrw_create, "materialized", "view", " ", " ", " ", " ");
3409        addbigquerycmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "or", "replace", "external", "table", " ", " ");
3410        addbigquerycmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "or", "replace", "temporary", "table", " ", " ");
3411        addbigquerycmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create, "or", "replace", "function", " ", " ", " ");
3412        addbigquerycmds(ESqlStatementType.sstcreatematerializedview, TBaseType.rrw_create, "or", "replace", "materialized", "view", " ", " ");
3413        addbigquerycmds(ESqlStatementType.sstcreateprocedure, TBaseType.rrw_create, "or", "replace", "procedure", " ", " ", " ");
3414        addbigquerycmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "or", "replace", "table", " ", " ", " ");
3415        addbigquerycmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create, "or", "replace", "table", "function", " ", " ");
3416        addbigquerycmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create, "or", "replace", "temp", "function", " ", " ");
3417        addbigquerycmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "or", "replace", "temp", "table", " ", " ");
3418        addbigquerycmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create, "or", "replace", "temporary", "function", " ", " ");
3419        addbigquerycmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create, "or", "replace", "view", " ", " ", " ");
3420        addbigquerycmds(ESqlStatementType.sstcreateprocedure, TBaseType.rrw_create, "procedure", " ", " ", " ", " ", " ");
3421        addbigquerycmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "table", " ", " ", " ", " ", " ");
3422        addbigquerycmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create, "table", "function", " ", " ", " ", " ");
3423        addbigquerycmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create, "temp", "function", " ", " ", " ", " ");
3424        addbigquerycmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "temp", "table", " ", " ", " ", " ");
3425        addbigquerycmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create, "temporary", "function", " ", " ", " ", " ");
3426        addbigquerycmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "temporary", "table", " ", " ", " ", " ");
3427        addbigquerycmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "snapshot", "table", " ", " ", " ", " ");
3428        addbigquerycmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create, "view", " ", " ", " ", " ", " ");
3429        addbigquerycmds(ESqlStatementType.sstBigQueryDeclare, TBaseType.rrw_declare," "," "," "," "," "," ");
3430        addbigquerycmds(ESqlStatementType.sstdelete, TBaseType.rrw_delete, " ", " ", " ", " ", " ", " ");
3431        addbigquerycmds(ESqlStatementType.sstdroptable, TBaseType.rrw_drop, "external", "table", " ", " ", " ", " ");
3432        addbigquerycmds(ESqlStatementType.sstdropfunction, TBaseType.rrw_drop, "function", " ", " ", " ", " ", " ");
3433        addbigquerycmds(ESqlStatementType.sstDropMaterializedView, TBaseType.rrw_drop, "materialized", "view", " ", " ", " ", " ");
3434        addbigquerycmds(ESqlStatementType.sstdropprocedure, TBaseType.rrw_drop, "procedure", " ", " ", " ", " ", " ");
3435        addbigquerycmds(ESqlStatementType.sstdroptable, TBaseType.rrw_drop, "table", " ", " ", " ", " ", " ");
3436        addbigquerycmds(ESqlStatementType.sstdropview, TBaseType.rrw_drop, "view", " ", " ", " ", " ", " ");
3437
3438        addbigquerycmds(ESqlStatementType.sstExecute, TBaseType.rrw_execute,  "immediate"," "," "," "," "," ");
3439
3440        addbigquerycmds(ESqlStatementType.sstBigQueryExportData, TBaseType.rrw_bigquery_export, "data", " ", " ", " ", " ", " ");
3441        addbigquerycmds(ESqlStatementType.sstForStmt, TBaseType.rrw_for, " ", " ", " ", " ", " ", " ");
3442        addbigquerycmds(ESqlStatementType.sst_ifstmt, TBaseType.rrw_if, " ", " ", " ", " ", " ", " ");
3443        addbigquerycmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert, " ", " ", " ", " ", " ", " ");
3444        addbigquerycmds(ESqlStatementType.sst_loopstmt, TBaseType.rrw_loop, " ", " ", " ", " ", " ", " ");
3445        addbigquerycmds(ESqlStatementType.sstmerge, TBaseType.rrw_merge, " ", " ", " ", " ", " ", " ");
3446        addbigquerycmds(ESqlStatementType.sstRepeat, TBaseType.rrw_repeat, " ", " ", " ", " ", " ", " ");
3447        addbigquerycmds(ESqlStatementType.sstselect, TBaseType.rrw_select, " ", " ", " ", " ", " ", " ");
3448        addbigquerycmds(ESqlStatementType.sstset, TBaseType.rrw_set, " ", " ", " ", " ", " ", " ");
3449        addbigquerycmds(ESqlStatementType.sstTruncate, TBaseType.rrw_truncate, " ", " ", " ", " ", " ", " ");
3450        addbigquerycmds(ESqlStatementType.sstupdate, TBaseType.rrw_update, " ", " ", " ", " ", " ", " ");
3451        addbigquerycmds(ESqlStatementType.sstWhilestmt, TBaseType.rrw_while, " ", " ", " ", " ", " ", " ");
3452    }
3453
3454void initsnowflakecmds(){
3455// cmd must be sorted alphabetically
3456    addsnowflakecmds(ESqlStatementType.sstAlterAccount, TBaseType.rrw_alter, "account", " ", " ", " ", " ", " ");
3457    addsnowflakecmds(ESqlStatementType.sstalterdatabase, TBaseType.rrw_alter, "database", " ", " ", " ", " ", " ");
3458    addsnowflakecmds(ESqlStatementType.sstaltertable, TBaseType.rrw_alter, "external", "table", " ", " ", " ", " ");
3459    addsnowflakecmds(ESqlStatementType.sstAlterFileFormat, TBaseType.rrw_alter, "file", "format", " ", " ", " ", " ");
3460    addsnowflakecmds(ESqlStatementType.sstalterfunction, TBaseType.rrw_alter, "function", " ", " ", " ", " ", " ");
3461    addsnowflakecmds(ESqlStatementType.sstAlterMaterializedView, TBaseType.rrw_alter,"materialized","view"," "," "," "," ");
3462    addsnowflakecmds(ESqlStatementType.sstAlterNetworkPolicy, TBaseType.rrw_alter, "network", "policy", " ", " ", " ", " ");
3463    addsnowflakecmds(ESqlStatementType.sstAlterPipe, TBaseType.rrw_alter, "pipe", " ", " ", " ", " ", " ");
3464    addsnowflakecmds(ESqlStatementType.sstAlterResourceMonitor, TBaseType.rrw_alter, "resource", "monitor", " ", " ", " ", " ");
3465    addsnowflakecmds(ESqlStatementType.sstAlterRole, TBaseType.rrw_alter, "role", " ", " ", " ", " ", " ");
3466    addsnowflakecmds(ESqlStatementType.sstAlterTask, TBaseType.rrw_alter, "task", " ", " ", " ", " ", " ");
3467    addsnowflakecmds(ESqlStatementType.sstAlterSchema, TBaseType.rrw_alter, "schema", " ", " ", " ", " ", " ");
3468    addsnowflakecmds(ESqlStatementType.sstaltersession, TBaseType.rrw_alter, "session", " ", " ", " ", " ", " ");
3469    addsnowflakecmds(ESqlStatementType.sstaltersequence, TBaseType.rrw_alter, "sequence", " ", " ", " ", " ", " ");
3470    addsnowflakecmds(ESqlStatementType.sstAlterShare, TBaseType.rrw_alter, "share", " ", " ", " ", " ", " ");
3471    addsnowflakecmds(ESqlStatementType.sstAlterStage, TBaseType.rrw_alter, "stage", " ", " ", " ", " ", " ");
3472    addsnowflakecmds(ESqlStatementType.sstaltertable, TBaseType.rrw_alter, "table", " ", " ", " ", " ", " ");
3473    addsnowflakecmds(ESqlStatementType.sstalteruser, TBaseType.rrw_alter, "user", " ", " ", " ", " ", " ");
3474    addsnowflakecmds(ESqlStatementType.sstalterview, TBaseType.rrw_alter, "view", " ", " ", " ", " ", " ");
3475    addsnowflakecmds(ESqlStatementType.sstAlterWarehouse, TBaseType.rrw_alter, "warehouse", " ", " ", " ", " ", " ");
3476
3477    addsnowflakecmds(ESqlStatementType.sstBegin, TBaseType.rrw_begin, " ", " ", " ", " ", " ", " ");
3478    addsnowflakecmds(ESqlStatementType.sstbegintran, TBaseType.rrw_snowflake_begin_transaction, " ", " ", " ", " ", " ", " ");
3479
3480    addsnowflakecmds(ESqlStatementType.sstbegintran, TBaseType.rrw_begin, "work", " ", " ", " ", " ", " ");
3481    addsnowflakecmds(ESqlStatementType.sstbegintran, TBaseType.rrw_begin, "transaction", " ", " ", " ", " ", " ");
3482
3483    addsnowflakecmds(ESqlStatementType.sstcall, TBaseType.rrw_call, " ", " ", " ", " ", " ", " ");
3484    addsnowflakecmds(ESqlStatementType.sstcomment, TBaseType.rrw_comment, " ", " ", " ", " ", " ", " ");
3485
3486    addsnowflakecmds(ESqlStatementType.sstcommit, TBaseType.rrw_commit, " ", " ", " ", " ", " ", " ");
3487    addsnowflakecmds(ESqlStatementType.sstCopyInto, TBaseType.rrw_snowflake_copy, "into", " ", " ", " ", " ", " ");
3488
3489    addsnowflakecmds(ESqlStatementType.sstcreatedatabase, TBaseType.rrw_create, "database", " ", " ", " ", " ", " ");
3490    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "dynamic", "table", " ", " ", " ", " ");
3491    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "external", "table", " ", " ", " ", " ");
3492    addsnowflakecmds(ESqlStatementType.sstCreateFileFormat, TBaseType.rrw_create, "file", "format", " ", " ", " ", " ");
3493    addsnowflakecmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create, "function", " ", " ", " ", " ", " ");
3494    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "global", "table", " ", " ", " ", " ");
3495    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "global", "temp", "table", " ", " ", " ");
3496    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "global", "temporary", "table", " ", " ", " ");
3497    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "hybrid", "table", " ", " ", " ", " ");
3498    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "local", "table", " ", " ", " ", " ");
3499    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "local", "temp", "table", " ", " ", " ");
3500    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "local", "temporary", "table", " ", " ", " ");
3501    addsnowflakecmds(ESqlStatementType.sstcreatematerializedview, TBaseType.rrw_create,"materialized","view"," "," "," "," ");
3502    addsnowflakecmds(ESqlStatementType.sstCreateNetworkPolicy, TBaseType.rrw_create, "network", "policy", " ", " ", " ", " ");
3503    addsnowflakecmds(ESqlStatementType.sstCreatePipe, TBaseType.rrw_create, "or", "replace", "pipe", " ", " ", " ");
3504    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "or", "replace", "external", "table", " ", " ");
3505    addsnowflakecmds(ESqlStatementType.sstcreatedatabase, TBaseType.rrw_create, "or", "replace", "database", " ", " ", " ");
3506    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "or", "replace", "dynamic", "table", " ", " ");
3507    addsnowflakecmds(ESqlStatementType.sstCreateFileFormat, TBaseType.rrw_create, "or", "replace", "file", "format", " ", " ");
3508    addsnowflakecmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create, "or", "replace", "function", " ", " ", " ");
3509    addsnowflakecmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create, "or", "replace", "force", "view", " ", " ");
3510    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "or", "replace", "global","temporary", "table",  " ");
3511    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "or", "replace", "hybrid", "table", " ", " ");
3512    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "or", "replace", "local","temporary", "table",  " ");
3513    addsnowflakecmds(ESqlStatementType.sstcreatematerializedview, TBaseType.rrw_create,"or", "replace","materialized","view"," "," ");
3514    addsnowflakecmds(ESqlStatementType.sstCreateNetworkPolicy, TBaseType.rrw_create, "or", "replace", "network", "policy", " ", " ");
3515    addsnowflakecmds(ESqlStatementType.sstcreateprocedure, TBaseType.rrw_create,"or", "replace", "procedure", " ", " ", " ");
3516    addsnowflakecmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create, "or", "replace", "recursive", "view", " ", " ");
3517
3518    addsnowflakecmds(ESqlStatementType.sstCreateResourceMonitor, TBaseType.rrw_create, "or", "replace","resource", "monitor",  " ", " ");
3519    addsnowflakecmds(ESqlStatementType.sstcreaterole,             TBaseType.rrw_create, "or", "replace","role",  " ", " ", " ");
3520    addsnowflakecmds(ESqlStatementType.sstcreateschema, TBaseType.rrw_create, "or", "replace","schema", " ", " ", " ");
3521    addsnowflakecmds(ESqlStatementType.sstcreatematerializedview, TBaseType.rrw_create,"or", "replace","secure","materialized","view"," ");
3522    addsnowflakecmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create, "or", "replace", "secure", "view", " ", " ");
3523    addsnowflakecmds(ESqlStatementType.sstcreatesequence, TBaseType.rrw_create, "or", "replace","sequence", " ", " ", " ");
3524    addsnowflakecmds(ESqlStatementType.sstCreateShare, TBaseType.rrw_create, "or", "replace","share", " ", " ", " ");
3525    addsnowflakecmds(ESqlStatementType.sstCreateStage, TBaseType.rrw_create, "or", "replace","stage", " ", " ", " ");
3526    addsnowflakecmds(ESqlStatementType.sstCreateStream, TBaseType.rrw_create, "or", "replace","stream", " ", " ", " ");
3527    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "or", "replace", "table", " ", " ", " ");
3528    addsnowflakecmds(ESqlStatementType.sstCreateTask, TBaseType.rrw_create, "or", "replace", "task", " ", " ", " ");
3529    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "or", "replace", "temp", "table", " ", " ");
3530    addsnowflakecmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create, "or", "replace", "temp", "view", " ", " ");
3531    addsnowflakecmds(ESqlStatementType.sstCreateStage, TBaseType.rrw_create, "or", "replace","temporary", "stage", " ", " ");
3532    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "or", "replace", "temporary", "table", " ", " ");
3533    addsnowflakecmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create, "or", "replace", "temporary", "view", " ", " ");
3534    addsnowflakecmds(ESqlStatementType.sstcreatedatabase, TBaseType.rrw_create, "or", "replace", "transient", "database", " ", " ");
3535    addsnowflakecmds(ESqlStatementType.sstcreateschema, TBaseType.rrw_create, "or", "replace", "transient", "schema", " ", " ");
3536    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "or", "replace", "transient", "table", " ", " ");
3537    addsnowflakecmds(ESqlStatementType.sstcreateuser, TBaseType.rrw_create, "or", "replace","user", " ", " ", " ");
3538    addsnowflakecmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create, "or", "replace", "view", " ", " ", " ");
3539    addsnowflakecmds(ESqlStatementType.sstCreateWarehouse, TBaseType.rrw_create, "or", "replace", "warehouse", " ", " ", " ");
3540    addsnowflakecmds(ESqlStatementType.sstCreatePipe, TBaseType.rrw_create, "pipe", " ", " ", " ", " ", " ");
3541    addsnowflakecmds(ESqlStatementType.sstcreateprocedure, TBaseType.rrw_create, "procedure", " ", " ", " ", " ", " ");
3542    addsnowflakecmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create, "recursive", "view", " ", " ", " ", " ");
3543    addsnowflakecmds(ESqlStatementType.sstCreateResourceMonitor, TBaseType.rrw_create, "resource", "monitor", " ", " ", " ", " ");
3544    addsnowflakecmds(ESqlStatementType.sstcreaterole, TBaseType.rrw_create, "role", " ", " ", " ", " ", " ");
3545    addsnowflakecmds(ESqlStatementType.sstcreateschema, TBaseType.rrw_create, "schema", " ", " ", " ", " ", " ");
3546    addsnowflakecmds(ESqlStatementType.sstcreatematerializedview, TBaseType.rrw_create,"secure","materialized","view"," "," "," ");
3547    addsnowflakecmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create, "secure", "view", " ", " ", " ", " ");
3548    addsnowflakecmds(ESqlStatementType.sstcreatesequence, TBaseType.rrw_create, "sequence", " ", " ", " ", " ", " ");
3549    addsnowflakecmds(ESqlStatementType.sstCreateShare, TBaseType.rrw_create, "share", " ", " ", " ", " ", " ");
3550    addsnowflakecmds(ESqlStatementType.sstCreateStage, TBaseType.rrw_create, "stage", " ", " ", " ", " ", " ");
3551    addsnowflakecmds(ESqlStatementType.sstCreateStream, TBaseType.rrw_create, "stream", " ", " ", " ", " ", " ");
3552    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "table", " ", " ", " ", " ", " ");
3553    addsnowflakecmds(ESqlStatementType.sstCreateTask, TBaseType.rrw_create, "task", " ", " ", " ", " ", " ");
3554    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "temp", "table", " ", " ", " ", " ");
3555    addsnowflakecmds(ESqlStatementType.sstCreateStage, TBaseType.rrw_create,"temporary", "stage", " ", " ", " ", " ");
3556    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "temporary", "table", " ", " ", " ", " ");
3557    addsnowflakecmds(ESqlStatementType.sstcreatedatabase, TBaseType.rrw_create, "transient", "database", " ", " ", " ", " ");
3558    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "transient", "dynamic", "table", " ", " ", " ");
3559    addsnowflakecmds(ESqlStatementType.sstcreateschema, TBaseType.rrw_create, "transient","schema", " ", " ", " ", " ");
3560    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "transient", "table", " ", " "," "," ");
3561    addsnowflakecmds(ESqlStatementType.sstcreateuser, TBaseType.rrw_create, "user", " ", " ", " ", " ", " ");
3562    addsnowflakecmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create, "view", " ", " ", " ", " ", " ");
3563    addsnowflakecmds(ESqlStatementType.sstCreateWarehouse, TBaseType.rrw_create, "warehouse", " ", " ", " ", " ", " ");
3564
3565    addsnowflakecmds(ESqlStatementType.sstdelete, TBaseType.rrw_delete, " ", " ", " ", " ", " ", " ");
3566
3567    addsnowflakecmds(ESqlStatementType.sstDescFileFormat, TBaseType.rrw_snowflake_desc, "file", "format", " ", " ", " ", " ");
3568    addsnowflakecmds(ESqlStatementType.sstDescFunction, TBaseType.rrw_snowflake_desc, "function", " ", " ", " ", " ", " ");
3569    addsnowflakecmds(ESqlStatementType.sstDescNetworkPolicy, TBaseType.rrw_snowflake_desc, "network", "policy", " ", " ", " ", " ");
3570    addsnowflakecmds(ESqlStatementType.sstDescPipe, TBaseType.rrw_snowflake_desc, "pipe", " ", " ", " ", " ", " ");
3571    addsnowflakecmds(ESqlStatementType.sstDescResult, TBaseType.rrw_snowflake_desc, "result", " ", " ", " ", " ", " ");
3572    addsnowflakecmds(ESqlStatementType.sstDescShare, TBaseType.rrw_snowflake_desc, "share", " ", " ", " ", " ", " ");
3573    addsnowflakecmds(ESqlStatementType.sstDescStage, TBaseType.rrw_snowflake_desc, "stage", " ", " ", " ", " ", " ");
3574    addsnowflakecmds(ESqlStatementType.sstDescStorage, TBaseType.rrw_snowflake_desc, "storage", " ", " ", " ", " ", " ");
3575    addsnowflakecmds(ESqlStatementType.sstDescTable, TBaseType.rrw_snowflake_desc, "table", " ", " ", " ", " ", " ");
3576    addsnowflakecmds(ESqlStatementType.sstDescUser, TBaseType.rrw_snowflake_desc, "user", " ", " ", " ", " ", " ");
3577    addsnowflakecmds(ESqlStatementType.sstDescView, TBaseType.rrw_snowflake_desc, "view", " ", " ", " ", " ", " ");
3578
3579    addsnowflakecmds(ESqlStatementType.sstDescFileFormat, TBaseType.rrw_describe, "file", "format", " ", " ", " ", " ");
3580    addsnowflakecmds(ESqlStatementType.sstDescFunction, TBaseType.rrw_describe, "function", " ", " ", " ", " ", " ");
3581    addsnowflakecmds(ESqlStatementType.sstDescNetworkPolicy, TBaseType.rrw_describe, "network", "policy", " ", " ", " ", " ");
3582    addsnowflakecmds(ESqlStatementType.sstDescPipe, TBaseType.rrw_describe, "pipe", " ", " ", " ", " ", " ");
3583    addsnowflakecmds(ESqlStatementType.sstDescResult, TBaseType.rrw_describe, "result", " ", " ", " ", " ", " ");
3584    addsnowflakecmds(ESqlStatementType.sstDescShare, TBaseType.rrw_describe, "share", " ", " ", " ", " ", " ");
3585    addsnowflakecmds(ESqlStatementType.sstDescStage, TBaseType.rrw_describe, "stage", " ", " ", " ", " ", " ");
3586    addsnowflakecmds(ESqlStatementType.sstDescStorage, TBaseType.rrw_describe, "storage", " ", " ", " ", " ", " ");
3587    addsnowflakecmds(ESqlStatementType.sstDescTable, TBaseType.rrw_describe, "table", " ", " ", " ", " ", " ");
3588    addsnowflakecmds(ESqlStatementType.sstDescUser, TBaseType.rrw_describe, "user", " ", " ", " ", " ", " ");
3589    addsnowflakecmds(ESqlStatementType.sstDescView, TBaseType.rrw_describe, "view", " ", " ", " ", " ", " ");
3590
3591    addsnowflakecmds(ESqlStatementType.sstdropdatabase, TBaseType.rrw_drop, "database", " ", " ", " ", " ", " ");
3592    addsnowflakecmds(ESqlStatementType.sstDropFileFormat, TBaseType.rrw_drop, "file", "format", " ", " ", " ", " ");
3593    addsnowflakecmds(ESqlStatementType.sstdropfunction, TBaseType.rrw_drop, "function", " ", " ", " ", " ", " ");
3594    addsnowflakecmds(ESqlStatementType.sstDropMaterializedView, TBaseType.rrw_drop, "materialized", "view", " ", " ", " ", " ");
3595    addsnowflakecmds(ESqlStatementType.sstDropNetworkPolicy, TBaseType.rrw_drop, "network", "policy", " ", " ", " ", " ");
3596    addsnowflakecmds(ESqlStatementType.sstDropPipe, TBaseType.rrw_drop, "pipe", " ", " ", " ", " ", " ");
3597    addsnowflakecmds(ESqlStatementType.sstdropprocedure, TBaseType.rrw_drop, "procedure", " ", " ", " ", " ", " ");
3598    addsnowflakecmds(ESqlStatementType.sstDropResourceMonitor, TBaseType.rrw_drop, "resource", "monitor", " ", " ", " ", " ");
3599    addsnowflakecmds(ESqlStatementType.sstdroprole, TBaseType.rrw_drop, "role", " ", " ", " ", " ", " ");
3600    addsnowflakecmds(ESqlStatementType.sstdropschema, TBaseType.rrw_drop, "schema", " ", " ", " ", " ", " ");
3601    addsnowflakecmds(ESqlStatementType.sstDropShare, TBaseType.rrw_drop, "share", " ", " ", " ", " ", " ");
3602    addsnowflakecmds(ESqlStatementType.sstDropStage, TBaseType.rrw_drop, "stage", " ", " ", " ", " ", " ");
3603    addsnowflakecmds(ESqlStatementType.sstDropStream, TBaseType.rrw_drop, "stream", " ", " ", " ", " ", " ");
3604    addsnowflakecmds(ESqlStatementType.sstDropStreamlit, TBaseType.rrw_drop, "streamlit", " ", " ", " ", " ", " ");
3605    addsnowflakecmds(ESqlStatementType.sstdroptable, TBaseType.rrw_drop, "table", " ", " ", " ", " ", " ");
3606
3607    addsnowflakecmds(ESqlStatementType.sstdropuser, TBaseType.rrw_drop, "user", " ", " ", " ", " ", " ");
3608    addsnowflakecmds(ESqlStatementType.sstdropview, TBaseType.rrw_drop, "view", " ", " ", " ", " ", " ");
3609    addsnowflakecmds(ESqlStatementType.sstDropWarehouse, TBaseType.rrw_drop, "warehouse", " ", " ", " ", " ", " ");
3610
3611    addsnowflakecmds(ESqlStatementType.sstExecute, TBaseType.rrw_execute,  "immediate"," "," "," "," "," ");
3612
3613    addsnowflakecmds(ESqlStatementType.sstGet, TBaseType.rrw_get, " ", " ", " ", " ", " ", " ");
3614
3615    addsnowflakecmds(ESqlStatementType.sstGrant, TBaseType.rrw_grant, " ", " ", " ", " ", " ", " ");
3616
3617    addsnowflakecmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert, " ", " ", " ", " ", " ", " ");
3618
3619    addsnowflakecmds(ESqlStatementType.sstList, TBaseType.rrw_snowflake_list, " ", " ", " ", " ", " ", " ");
3620    addsnowflakecmds(ESqlStatementType.sstList, TBaseType.rrw_snowflake_ls, " ", " ", " ", " ", " ", " ");
3621
3622    addsnowflakecmds(ESqlStatementType.sstmerge, TBaseType.rrw_merge, " ", " ", " ", " ", " ", " ");
3623
3624    addsnowflakecmds(ESqlStatementType.sstSnowflakePseudoExprStmt, TBaseType.rrw_snowflake_pseudo_stmt_sign, " ", " ", " ", " ", " ", " ");
3625    addsnowflakecmds(ESqlStatementType.sstPut, TBaseType.rrw_snowflake_put, " ", " ", " ", " ", " ", " ");
3626
3627    addsnowflakecmds(ESqlStatementType.sstRemove, TBaseType.rrw_snowflake_remove, " ", " ", " ", " ", " ", " ");
3628
3629    addsnowflakecmds(ESqlStatementType.sstRevoke, TBaseType.rrw_revoke, " ", " ", " ", " ", " ", " ");
3630    addsnowflakecmds(ESqlStatementType.sstRemove, TBaseType.rrw_snowflake_rm, " ", " ", " ", " ", " ", " ");
3631    addsnowflakecmds(ESqlStatementType.sstrollback, TBaseType.rrw_rollback, " ", " ", " ", " ", " ", " ");
3632
3633
3634    addsnowflakecmds(ESqlStatementType.sstselect, TBaseType.rrw_select, " ", " ", " ", " ", " ", " ");
3635
3636    addsnowflakecmds(ESqlStatementType.sstset, TBaseType.rrw_set, " ", " ", " ", " ", " ", " ");
3637
3638    addsnowflakecmds(ESqlStatementType.sstShowColumns, TBaseType.rrw_show, "columns", " ", " ", " ", " ", " ");
3639    addsnowflakecmds(ESqlStatementType.sstShowDatabases, TBaseType.rrw_show, "databases", " ", " ", " ", " ", " ");
3640    addsnowflakecmds(ESqlStatementType.sstShowFileFormats, TBaseType.rrw_show, "file", "formats", " ", " ", " ", " ");
3641    addsnowflakecmds(ESqlStatementType.sstShowFunctions, TBaseType.rrw_show, "functions", " ", " ", " ", " ", " ");
3642    addsnowflakecmds(ESqlStatementType.sstShowGrants, TBaseType.rrw_show, "grants", " ", " ", " ", " ", " ");
3643    addsnowflakecmds(ESqlStatementType.sstShowLocks, TBaseType.rrw_show, "locks", " ", " ", " ", " ", " ");
3644    addsnowflakecmds(ESqlStatementType.sstShowNetworkPolicies, TBaseType.rrw_show, "network", "policies", " ", " ", " ", " ");
3645    addsnowflakecmds(ESqlStatementType.sstShowObjects, TBaseType.rrw_show, "objects", " ", " ", " ", " ", " ");
3646    addsnowflakecmds(ESqlStatementType.sstShowParameters, TBaseType.rrw_show, "parameters", " ", " ", " ", " ", " ");
3647    addsnowflakecmds(ESqlStatementType.sstShowPipes, TBaseType.rrw_show, "pipes", " ", " ", " ", " ", " ");
3648    addsnowflakecmds(ESqlStatementType.sstShowProcedures, TBaseType.rrw_show, "procedures", " ", " ", " ", " ", " ");
3649    addsnowflakecmds(ESqlStatementType.sstShowResourceMonitors, TBaseType.rrw_show, "resource", "monitors", " ", " ", " ", " ");
3650    addsnowflakecmds(ESqlStatementType.sstShowRoles, TBaseType.rrw_show, "roles", " ", " ", " ", " ", " ");
3651    addsnowflakecmds(ESqlStatementType.sstShowSchemas, TBaseType.rrw_show, "schemas", " ", " ", " ", " ", " ");
3652    addsnowflakecmds(ESqlStatementType.sstShowSequences, TBaseType.rrw_show, "sequences", " ", " ", " ", " ", " ");
3653    addsnowflakecmds(ESqlStatementType.sstShowShares, TBaseType.rrw_show, "shares", " ", " ", " ", " ", " ");
3654    addsnowflakecmds(ESqlStatementType.sstShowStages, TBaseType.rrw_show, "stages", " ", " ", " ", " ", " ");
3655    addsnowflakecmds(ESqlStatementType.sstShowStreams, TBaseType.rrw_show, "streams", " ", " ", " ", " ", " ");
3656    addsnowflakecmds(ESqlStatementType.sstShowTables, TBaseType.rrw_show, "tables", " ", " ", " ", " ", " ");
3657    addsnowflakecmds(ESqlStatementType.sstShowTasks, TBaseType.rrw_show, "tasks", " ", " ", " ", " ", " ");
3658    addsnowflakecmds(ESqlStatementType.sstShowDatabases, TBaseType.rrw_show, "terse", "databases", " ", " ", " ", " ");
3659    addsnowflakecmds(ESqlStatementType.sstShowStreams, TBaseType.rrw_show, "terse", "streams", " ", " ", " ", " ");
3660    addsnowflakecmds(ESqlStatementType.sstShowTasks, TBaseType.rrw_show, "terse", "tasks", " ", " ", " ", " ");
3661    addsnowflakecmds(ESqlStatementType.sstShowTransactions, TBaseType.rrw_show, "transactions", " ", " ", " ", " ", " ");
3662    addsnowflakecmds(ESqlStatementType.sstShowUserFunctions, TBaseType.rrw_show, "user", "functions", " ", " ", " ", " ");
3663    addsnowflakecmds(ESqlStatementType.sstShowUsers, TBaseType.rrw_show, "users", " ", " ", " ", " ", " ");
3664    addsnowflakecmds(ESqlStatementType.sstShowVariables, TBaseType.rrw_show, "variables", " ", " ", " ", " ", " ");
3665    addsnowflakecmds(ESqlStatementType.sstShowViews, TBaseType.rrw_show, "views", " ", " ", " ", " ", " ");
3666    addsnowflakecmds(ESqlStatementType.sstShowWarehouses, TBaseType.rrw_show, "warehouses", " ", " ", " ", " ", " ");
3667    addsnowflakecmds(ESqlStatementType.sstbegintran, TBaseType.rrw_start, "transaction", " ", " ", " ", " ", " ");
3668    addsnowflakecmds(ESqlStatementType.sstpostgresqlTruncate, TBaseType.rrw_truncate, " ", " ", " ", " ", " ", " ");
3669
3670    addsnowflakecmds(ESqlStatementType.sstUndropDatabase, TBaseType.rrw_snowflake_undrop, "database", " ", " ", " ", " ", " ");
3671    addsnowflakecmds(ESqlStatementType.sstUndropSchema, TBaseType.rrw_snowflake_undrop, "schema", " ", " ", " ", " ", " ");
3672    addsnowflakecmds(ESqlStatementType.sstUndropTable, TBaseType.rrw_snowflake_undrop, "table", " ", " ", " ", " ", " ");
3673
3674    addsnowflakecmds(ESqlStatementType.sstunset, TBaseType.rrw_snowflake_unset, " ", " ", " ", " ", " ", " ");
3675    addsnowflakecmds(ESqlStatementType.sstupdate, TBaseType.rrw_update, " ", " ", " ", " ", " ", " ");
3676    addsnowflakecmds(ESqlStatementType.sstUse, TBaseType.rrw_use, " ", " ", " ", " ", " ", " ");
3677    addsnowflakecmds(ESqlStatementType.sstUseSecondaryRoles, TBaseType.rrw_use, "secondary", "roles", " ", " ", " ", " ");
3678}
3679
3680void initredshiftcmds() {
3681// cmd must be sorted alphabetically
3682    addredshiftcmds(ESqlStatementType.sstredshiftAbort, TBaseType.rrw_abort, " ", " ", " ", " ", " ", " ");
3683    addredshiftcmds(ESqlStatementType.sstredshiftAbort, TBaseType.rrw_abort, "transaction", " ", " ", " ", " ", " ");
3684    addredshiftcmds(ESqlStatementType.sstredshiftAbort, TBaseType.rrw_abort, "work", " ", " ", " ", " ", " ");
3685    addredshiftcmds(ESqlStatementType.sstalterdatabase, TBaseType.rrw_alter, "database", " ", " ", " ", " ", " ");
3686    addredshiftcmds(ESqlStatementType.sstredshiftAlterGroup, TBaseType.rrw_alter, "group", " ", " ", " ", " ", " ");
3687    addredshiftcmds(ESqlStatementType.sstredshiftAlterSchema, TBaseType.rrw_alter, "schema", " ", " ", " ", " ", " ");
3688    addredshiftcmds(ESqlStatementType.sstaltertable, TBaseType.rrw_alter, "table", " ", " ", " ", " ", " ");
3689    addredshiftcmds(ESqlStatementType.sstredshiftAlterUser, TBaseType.rrw_alter, "user", " ", " ", " ", " ", " ");
3690    addredshiftcmds(ESqlStatementType.sstredshiftAnalyze, TBaseType.rrw_analyze, " ", " ", " ", " ", " ", " ");
3691    addredshiftcmds(ESqlStatementType.sstredshiftAnalyzeCompression, TBaseType.rrw_analyze, "Compression", " ", " ", " ", " ", " ");
3692    addredshiftcmds(ESqlStatementType.sstredshiftBegin, TBaseType.rrw_begin, " ", " ", " ", " ", " ", " ");
3693    addredshiftcmds(ESqlStatementType.sstredshiftCancel, TBaseType.rrw_redshift_cancel, " ", " ", " ", " ", " ", " ");
3694    addredshiftcmds(ESqlStatementType.sstcall, TBaseType.rrw_call, " ", " ", " ", " ", " ", " ");
3695
3696    addredshiftcmds(ESqlStatementType.sstredshiftClose, TBaseType.rrw_close, " ", " ", " ", " ", " ", " ");
3697    addredshiftcmds(ESqlStatementType.sstredshiftComment, TBaseType.rrw_comment, "on", " ", " ", " ", " ", " ");
3698    addredshiftcmds(ESqlStatementType.sstredshiftCommit, TBaseType.rrw_commit, " ", " ", " ", " ", " ", " ");
3699    addredshiftcmds(ESqlStatementType.sstredshiftCopy, TBaseType.rrw_redshift_copy, " ", " ", " ", " ", " ", " ");
3700    addredshiftcmds(ESqlStatementType.sstredshiftCreateSchema, TBaseType.rrw_create, "external", "schema", " ", " ", " ", " ");
3701    addredshiftcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "external", "table", " ", " ", " ", " ");
3702    addredshiftcmds(ESqlStatementType.sstcreatedatabase, TBaseType.rrw_create, "database", " ", " ", " ", " ", " ");
3703    addredshiftcmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create, "function", " ", " ", " ", " ", " ");
3704    addredshiftcmds(ESqlStatementType.sstredshiftCreateGroup, TBaseType.rrw_create, "group", " ", " ", " ", " ", " ");
3705    addredshiftcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "local", "table", " ", " ", " ", " ");
3706    addredshiftcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "local","temp", "table", " ", " ", " ");
3707    addredshiftcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "local","temporary", "table", " ", " ", " ");
3708    addredshiftcmds(ESqlStatementType.sstcreatematerializedview, TBaseType.rrw_create,"materialized","view"," "," "," "," ");
3709    addredshiftcmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create, "or", "replace","function", " ", " ", " ");
3710    addredshiftcmds(ESqlStatementType.sstcreatematerializedview, TBaseType.rrw_create,"or", "replace","materialized","view"," "," ");
3711    addredshiftcmds(ESqlStatementType.sstcreateprocedure, TBaseType.rrw_create, "or", "replace","procedure", " ", " ", " ");
3712    addredshiftcmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create, "or", "replace", "view", " ", " ", " ");
3713    addredshiftcmds(ESqlStatementType.sstcreateprocedure, TBaseType.rrw_create, "procedure", " ", " ", " ", " ", " ");
3714    addredshiftcmds(ESqlStatementType.sstredshiftCreateSchema, TBaseType.rrw_create, "schema", " ", " ", " ", " ", " ");
3715    addredshiftcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "table", " ", " ", " ", " ", " ");
3716    addredshiftcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "temp", "table", " ", " ", " ", " ");
3717    addredshiftcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "temporary", "table", " ", " ", " ", " ");
3718    addredshiftcmds(ESqlStatementType.sstredshiftCreateUser, TBaseType.rrw_create, "user", " ", " ", " ", " ", " ");
3719    addredshiftcmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create, "view", " ", " ", " ", " ", " ");
3720    addredshiftcmds(ESqlStatementType.sstredshiftDeallocate, TBaseType.rrw_deallocate, " ", " ", " ", " ", " ", " ");
3721    addredshiftcmds(ESqlStatementType.sstredshiftDeclare, TBaseType.rrw_declare, " ", " ", " ", " ", " ", " ");
3722    addredshiftcmds(ESqlStatementType.sstdelete, TBaseType.rrw_delete, " ", " ", " ", " ", " ", " ");
3723    addredshiftcmds(ESqlStatementType.sstredshiftDropDatabase, TBaseType.rrw_drop, "database", " ", " ", " ", " ", " ");
3724    addredshiftcmds(ESqlStatementType.sstredshiftDropGroup, TBaseType.rrw_drop, "group", " ", " ", " ", " ", " ");
3725    addredshiftcmds(ESqlStatementType.sstredshiftDropSchema, TBaseType.rrw_drop, "schema", " ", " ", " ", " ", " ");
3726    addredshiftcmds(ESqlStatementType.sstdroptable, TBaseType.rrw_drop, "table", " ", " ", " ", " ", " ");
3727    addredshiftcmds(ESqlStatementType.sstredshiftDropUser, TBaseType.rrw_drop, "user", " ", " ", " ", " ", " ");
3728    addredshiftcmds(ESqlStatementType.sstdropview, TBaseType.rrw_drop, "view", " ", " ", " ", " ", " ");
3729    addredshiftcmds(ESqlStatementType.sstredshiftEnd, TBaseType.rrw_end, " ", " ", " ", " ", " ", " ");
3730    addredshiftcmds(ESqlStatementType.sstExecutePreparedStmt, TBaseType.rrw_execute, " ", " ", " ", " ", " ", " ");
3731    addredshiftcmds(ESqlStatementType.sstExplain, TBaseType.rrw_explain, " ", " ", " ", " ", " ", " ");
3732    addredshiftcmds(ESqlStatementType.sstFetchFrom, TBaseType.rrw_fetch, " ", " ", " ", " ", " ", " ");
3733    addredshiftcmds(ESqlStatementType.sstGrant, TBaseType.rrw_grant, " ", " ", " ", " ", " ", " ");
3734    addredshiftcmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert, "into", " ", " ", " ", " ", " ");
3735    addredshiftcmds(ESqlStatementType.sstredshiftLock, TBaseType.rrw_lock, " ", " ", " ", " ", " ", " ");
3736    addredshiftcmds(ESqlStatementType.sstmerge, TBaseType.rrw_merge," "," "," "," "," "," ");
3737
3738    addredshiftcmds(ESqlStatementType.sstredshiftPrepare, TBaseType.rrw_prepare, " ", " ", " ", " ", " ", " ");
3739    addredshiftcmds(ESqlStatementType.sstredshiftReset, TBaseType.rrw_reset, " ", " ", " ", " ", " ", " ");
3740    addredshiftcmds(ESqlStatementType.sstRevoke, TBaseType.rrw_revoke, " ", " ", " ", " ", " ", " ");
3741    addredshiftcmds(ESqlStatementType.sstredshiftRollback, TBaseType.rrw_rollback, " ", " ", " ", " ", " ", " ");
3742    addredshiftcmds(ESqlStatementType.sstselect, TBaseType.rrw_select, " ", " ", " ", " ", " ", " ");
3743    addredshiftcmds(ESqlStatementType.sstredshiftSet, TBaseType.rrw_set, " ", " ", " ", " ", " ", " ");
3744    addredshiftcmds(ESqlStatementType.sstredshiftSetSessionAuthorization, TBaseType.rrw_set, "Authorization", " ", " ", " ", " ", " ");
3745    addredshiftcmds(ESqlStatementType.sstredshiftSetSessionCharacteristics, TBaseType.rrw_set, "Characteristics", " ", " ", " ", " ", " ");
3746    addredshiftcmds(ESqlStatementType.sstredshiftSetSessionAuthorization, TBaseType.rrw_set, "local", "Authorization", " ", " ", " ", " ");
3747    addredshiftcmds(ESqlStatementType.sstredshiftShow, TBaseType.rrw_show, " ", " ", " ", " ", " ", " ");
3748    addredshiftcmds(ESqlStatementType.sstStartTransaction, TBaseType.rrw_start, "Transaction", " ", " ", " ", " ", " ");
3749    addredshiftcmds(ESqlStatementType.sstTruncate, TBaseType.rrw_truncate, " ", " ", " ", " ", " ", " ");
3750    addredshiftcmds(ESqlStatementType.sstredshiftUnload, TBaseType.rrw_redshift_unload, " ", " ", " ", " ", " ", " ");
3751    addredshiftcmds(ESqlStatementType.sstupdate, TBaseType.rrw_update, " ", " ", " ", " ", " ", " ");
3752    addredshiftcmds(ESqlStatementType.sstredshiftVacuum, TBaseType.rrw_redshift_vacuum, " ", " ", " ", " ", " ", " ");
3753}
3754
3755void initgreenplumcmds(){
3756// cmd must be sorted alphabetically
3757    addgreenplumcmds(ESqlStatementType.sstpostgresqlabort, TBaseType.rrw_abort, " ", " ", " ", " ", " ", " ");
3758    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterAggregate, TBaseType.rrw_alter, "aggregate", " ", " ", " ", " ", " ");
3759    //addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterCollation, TBaseType.rrw_alter, "collation", " ", " ", " ", " ", " ");
3760    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterConversion, TBaseType.rrw_alter, "conversion", " ", " ", " ", " ", " ");
3761    addgreenplumcmds(ESqlStatementType.sstpostgresqlalterdatabase, TBaseType.rrw_alter, "database", " ", " ", " ", " ", " ");
3762    //addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterDefaultPrivileges, TBaseType.rrw_alter, "default", "privileges", " ", " ", " ", " ");
3763    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterDomain, TBaseType.rrw_alter, "domain", " ", " ", " ", " ", " ");
3764
3765    addgreenplumcmds(ESqlStatementType.sstgreenplumAlterExternalTable, TBaseType.rrw_alter, "external", "table", " ", " ", " ", " ");
3766    addgreenplumcmds(ESqlStatementType.sstgreenplumAlterFilespace, TBaseType.rrw_alter, "filespace", " ", " ", " ", " ", " ");
3767
3768//    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterEventTrigger, TBaseType.rrw_alter, "event", "trigger", " ", " ", " ", " ");
3769//    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterExtension, TBaseType.rrw_alter, "extension", " ", " ", " ", " ", " ");
3770//    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterForeignDataWrapper, TBaseType.rrw_alter, "foreign", "data", "wrapper", " ", " ", " ");
3771//    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterForeignTable, TBaseType.rrw_alter, "foreign", "Table", " ", " ", " ", " ");
3772
3773    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterfunction, TBaseType.rrw_alter, "function", " ", " ", " ", " ", " ");
3774    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterGroup, TBaseType.rrw_alter, "group", " ", " ", " ", " ", " ");
3775    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterIndex, TBaseType.rrw_alter, "index", " ", " ", " ", " ", " ");
3776    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterLanguage, TBaseType.rrw_alter, "language", " ", " ", " ", " ", " ");
3777//    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterLargeObject, TBaseType.rrw_alter, "large", "object", " ", " ", " ", " ");
3778    //addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterMaterializedView, TBaseType.rrw_alter, "materialized", "view", " ", " ", " ", " ");
3779    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterOperator, TBaseType.rrw_alter, "operator", " ", " ", " ", " ", " ");
3780    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterOperatorClass, TBaseType.rrw_alter, "operator", "class", " ", " ", " ", " ");
3781    //addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterOperatorFamily, TBaseType.rrw_alter, "operator", "family", " ", " ", " ", " ");
3782    //addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterLanguage, TBaseType.rrw_alter, "procedural", "language", " ", " ", " ", " ");
3783    addgreenplumcmds(ESqlStatementType.sstgreenplumAlterProtocol, TBaseType.rrw_alter, "protocol", " ", " ", " ", " ", " ");
3784    addgreenplumcmds(ESqlStatementType.sstgreenplumAlterResourceQueue, TBaseType.rrw_alter, "resource", "queue", " ", " ", " ", " ");
3785    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterRole, TBaseType.rrw_alter, "role", " ", " ", " ", " ", " ");
3786    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterSchema, TBaseType.rrw_alter, "schema", " ", " ", " ", " ", " ");
3787    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterSequence, TBaseType.rrw_alter, "sequence", " ", " ", " ", " ", " ");
3788    //addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterServer, TBaseType.rrw_alter, "server", " ", " ", " ", " ", " ");
3789    addgreenplumcmds(ESqlStatementType.sstaltertable, TBaseType.rrw_alter, "table", " ", " ", " ", " ", " ");
3790    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterTablespace, TBaseType.rrw_alter, "tablespace", " ", " ", " ", " ", " ");
3791
3792//    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterTextSearchConfiguration, TBaseType.rrw_alter, "text", "search", "configuration", " ", " ", " ");
3793//    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterTextSearchDictionary, TBaseType.rrw_alter, "text", "search", "dictionary", " ", " ", " ");
3794//    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterTextSearchParser, TBaseType.rrw_alter, "text", "search", "parser", " ", " ", " ");
3795//    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterTextSearchTemplate, TBaseType.rrw_alter, "text", "search", "template", " ", " ", " ");
3796    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterTrigger, TBaseType.rrw_alter, "trigger", " ", " ", " ", " ", " ");
3797
3798    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterType, TBaseType.rrw_alter, "type", " ", " ", " ", " ", " ");
3799    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterUser, TBaseType.rrw_alter, "user", " ", " ", " ", " ", " ");
3800//    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterUserMapping, TBaseType.rrw_alter, "user", "mapping", " ", " ", " ", " ");
3801//    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterView, TBaseType.rrw_alter, "view", " ", " ", " ", " ", " ");
3802    addgreenplumcmds(ESqlStatementType.sstpostgresqlAnalyze, TBaseType.rrw_greenplum_analyse, " ", " ", " ", " ", " ", " ");
3803    addgreenplumcmds(ESqlStatementType.sstpostgresqlAnalyze, TBaseType.rrw_analyze, " ", " ", " ", " ", " ", " ");
3804
3805    addgreenplumcmds(ESqlStatementType.sstpostgresqlBegin, TBaseType.rrw_begin, " ", " ", " ", " ", " ", " ");
3806    addgreenplumcmds(ESqlStatementType.sstcall, TBaseType.rrw_call, " ", " ", " ", " ", " ", " ");
3807
3808    addgreenplumcmds(ESqlStatementType.sstpostgresqlCheckpoint, TBaseType.rrw_checkpoint, " ", " ", " ", " ", " ", " ");
3809    addgreenplumcmds(ESqlStatementType.sstpostgresqlClose, TBaseType.rrw_close, " ", " ", " ", " ", " ", " ");
3810
3811    addgreenplumcmds(ESqlStatementType.sstpostgresqlCluster, TBaseType.rrw_greenplum_cluster, " ", " ", " ", " ", " ", " ");
3812
3813    addgreenplumcmds(ESqlStatementType.sstpostgresqlComment, TBaseType.rrw_comment, "on", " ", " ", " ", " ", " ");
3814
3815    addgreenplumcmds(ESqlStatementType.sstpostgresqlCommit, TBaseType.rrw_commit, " ", " ", " ", " ", " ", " ");
3816    //addgreenplumcmds(ESqlStatementType.sstpostgresqlCommitPrepared, TBaseType.rrw_commit, "prepared", " ", " ", " ", " ", " ");
3817    addgreenplumcmds(ESqlStatementType.sstpostgresqlCopy, TBaseType.rrw_greenplum_copy, " ", " ", " ", " ", " ", " ");
3818
3819    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateAggregate, TBaseType.rrw_create, "aggregate", " ", " ", " ", " ", " ");
3820    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateCast, TBaseType.rrw_create, "cast", " ", " ", " ", " ", " ");
3821
3822    //addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateCollation, TBaseType.rrw_create, "collation", " ", " ", " ", " ", " ");
3823
3824    addgreenplumcmds(ESqlStatementType.sstcreatetrigger, TBaseType.rrw_create, "constraint", "trigger", " ", " ", " ", " ");
3825
3826    addgreenplumcmds(ESqlStatementType.sstpostgresqlConversion, TBaseType.rrw_create, "conversion", " ", " ", " ", " ", " ");
3827    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateDatabase, TBaseType.rrw_create, "database", " ", " ", " ", " ", " ");
3828    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateDomain, TBaseType.rrw_create, "domain", " ", " ", " ", " ", " ");
3829    //addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateEventTrigger, TBaseType.rrw_create, "event", "trigger", " ", " ", " ", " ");
3830    addgreenplumcmds(ESqlStatementType.sstcreateExtension, TBaseType.rrw_create, "extension", " ", " ", " ", " ", " ");
3831
3832//    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateForeignDataWrapper, TBaseType.rrw_create, "foreign", "data", "wrapper", " ", " ", " ");
3833//    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateForeignTable, TBaseType.rrw_create, "foreign", "table", " ", " ", " ", " ");
3834    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateExternalTable, TBaseType.rrw_create, "external", "table", " ", " ", " ", " ");
3835    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateExternalTable, TBaseType.rrw_create, "external", "temp", "table", " ", " ", " ");
3836    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateExternalTable, TBaseType.rrw_create, "external", "temporary", "table", " ", " ", " ");
3837    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateExternalTable, TBaseType.rrw_create, "external", "web", "table", " ", " ", " ");
3838    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateExternalTable, TBaseType.rrw_create, "external", "web", "temp", "table", " ", " ");
3839    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateExternalTable, TBaseType.rrw_create, "external", "web", "temporary", "table", " ", " ");
3840    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateFilespace, TBaseType.rrw_create, "filespace", " ", " ", " ", " ", " ");
3841
3842    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateFunction, TBaseType.rrw_create, "function", " ", " ", " ", " ", " ");
3843
3844    addgreenplumcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "global", "temp", "table", " ", " ", " ");
3845    addgreenplumcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "global", "temporary", "table", " ", " ", " ");
3846    addgreenplumcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "global", "unlocked", "table", " ", " ", " ");
3847
3848    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateGroup, TBaseType.rrw_create, "group", " ", " ", " ", " ", " ");
3849
3850
3851    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateIndex, TBaseType.rrw_create, "index", " ", " ", " ", " ", " ");
3852    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateLanguage, TBaseType.rrw_create, "language", " ", " ", " ", " ", " ");
3853
3854    addgreenplumcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "local", "temp", "table", " ", " ", " ");
3855    addgreenplumcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "local", "temporary", "table", " ", " ", " ");
3856    addgreenplumcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "local", "unlocked", "table", " ", " ", " ");
3857
3858    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateMaterializedView, TBaseType.rrw_create, "materialized", "view", " ", " ", " ", " ");
3859
3860    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateOperator, TBaseType.rrw_create, "operator", " ", " ", " ", " ", " ");
3861//    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateOperatorClass, TBaseType.rrw_create, "operator", "class", " ", " ", " ", " ");
3862//    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateOperatorFimaly, TBaseType.rrw_create, "operator", "family", " ", " ", " ", " ");
3863
3864    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateExternalTable, TBaseType.rrw_create, "readable", "external", "table", " ", " ", " ");
3865    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateExternalTable, TBaseType.rrw_create, "readable", "external", "temp", "table", " ", " ");
3866    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateExternalTable, TBaseType.rrw_create, "readable", "external", "temporary", "table", " ", " ");
3867    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateExternalTable, TBaseType.rrw_create, "readable","external", "web", "table", " ", " ");
3868    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateExternalTable, TBaseType.rrw_create, "readable","external", "web", "temp", "table", " ");
3869    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateExternalTable, TBaseType.rrw_create, "readable","external", "web", "temporary", "table", " ");
3870    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateExternalTable, TBaseType.rrw_create, "writable", "external", "table", " ", " ", " ");
3871    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateExternalTable, TBaseType.rrw_create, "writable", "external", "temp", "table", " ", " ");
3872    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateExternalTable, TBaseType.rrw_create, "writable", "external", "temporary", "table", " ", " ");
3873    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateExternalTable, TBaseType.rrw_create, "writable","external", "web", "table", " ", " ");
3874    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateExternalTable, TBaseType.rrw_create, "writable","external", "web", "temp", "table", " ");
3875    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateExternalTable, TBaseType.rrw_create, "writable","external", "web", "temporary", "table", " ");
3876
3877    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateResourceQueue, TBaseType.rrw_create, "resource", "queue", " ", " ", " ", " ");
3878
3879    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateFunction, TBaseType.rrw_create, "or", "replace", "function", " ", " ", " ");
3880    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateLanguage, TBaseType.rrw_create, "or", "replace", "language", " ", " ", " ");
3881    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateRole, TBaseType.rrw_create, "or", "replace", "role ", " ", " ", " ");
3882    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateView, TBaseType.rrw_create, "or", "replace", "temp", "view", " ", " ");
3883    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateView, TBaseType.rrw_create, "or", "replace", "temporary", "view", " ", " ");
3884    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateLanguage, TBaseType.rrw_create, "or", "replace", "trusted", "language", " ", " ");
3885    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateView, TBaseType.rrw_create, "or", "replace", "view", " ", " ", " ");
3886
3887    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateRole, TBaseType.rrw_create, "role", " ", " ", " ", " ", " ");
3888    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateRule, TBaseType.rrw_create, "rule", " ", " ", " ", " ", " ");
3889
3890
3891    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateSchema, TBaseType.rrw_create, "schema", " ", " ", " ", " ", " ");
3892
3893    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateSequence, TBaseType.rrw_create, "sequence", " ", " ", " ", " ", " ");
3894
3895
3896    //addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateServer, TBaseType.rrw_create, "server", " ", " ", " ", " ", " ");
3897
3898    addgreenplumcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "table", " ", " ", " ", " ", " ");
3899
3900    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateTablespace, TBaseType.rrw_create, "tablespace", " ", " ", " ", " ", " ");
3901
3902    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateSequence, TBaseType.rrw_create, "temp", "sequence", " ", " ", " ", " ");
3903    addgreenplumcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "temp", "table", " ", " ", " ", " ");
3904    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateView, TBaseType.rrw_create, "temp", "view", " ", " ", " ", " ");
3905    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateSequence, TBaseType.rrw_create, "temporary", "sequence", " ", " ", " ", " ");
3906    addgreenplumcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "temporary", "table", " ", " ", " ", " ");
3907    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateView, TBaseType.rrw_create, "temporary", "view", " ", " ", " ", " ");
3908
3909//    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateTextSearchConfiguration, TBaseType.rrw_create, "text", "search", "configuration", " ", " ", " ");
3910//    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateTextSearchDictionary, TBaseType.rrw_create, "text", "search", "dictionary", " ", " ", " ");
3911//    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateTextSearchParser, TBaseType.rrw_create, "text", "search", "parser", " ", " ", " ");
3912//    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateTextSearchTemplate, TBaseType.rrw_create, "text", "search", "template", " ", " ", " ");
3913
3914    addgreenplumcmds(ESqlStatementType.sstcreatetrigger, TBaseType.rrw_create, "trigger", " ", " ", " ", " ", " ");
3915
3916    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateLanguage, TBaseType.rrw_create, "trusted", "language", " ", " ", " ", " ");
3917
3918    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateType, TBaseType.rrw_create, "type", " ", " ", " ", " ", " ");
3919
3920    addgreenplumcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "unlocked", "table", " ", " ", " ", " ");
3921
3922    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateUser, TBaseType.rrw_create, "user", " ", " ", " ", " ", " ");
3923
3924//    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateUserMapping, TBaseType.rrw_create, "user", "mapping", " ", " ", " ", " ");
3925
3926    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateView, TBaseType.rrw_create, "view", " ", " ", " ", " ", " ");
3927
3928    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateIndex, TBaseType.rrw_create, "unique", "index", " ", " ", " ", " ");
3929
3930    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateExternalTable, TBaseType.rrw_create, "writable", "external", "table", " ", " ", " ");
3931    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateExternalTable, TBaseType.rrw_create, "writable", "external", "web", "table", " ", " ");
3932
3933    addgreenplumcmds(ESqlStatementType.sstpostgresqlDeallocate, TBaseType.rrw_deallocate, " ", " ", " ", " ", " ", " ");
3934
3935    addgreenplumcmds(ESqlStatementType.sstpostgresqlDeclare, TBaseType.rrw_declare, " ", " ", " ", " ", " ", " ");
3936
3937    addgreenplumcmds(ESqlStatementType.sstdelete, TBaseType.rrw_delete, " ", " ", " ", " ", " ", " ");
3938
3939//    addgreenplumcmds(ESqlStatementType.sstpostgresqlDiscard, TBaseType.rrw_discard, " ", " ", " ", " ", " ", " ");
3940    addgreenplumcmds(ESqlStatementType.sstpostgresqlDo, TBaseType.rrw_do, " ", " ", " ", " ", " ", " ");
3941
3942    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropAggregate, TBaseType.rrw_drop, "aggregate", " ", " ", " ", " ", " ");
3943
3944    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropCast, TBaseType.rrw_drop, "cast", " ", " ", " ", " ", " ");
3945
3946//    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropCollation, TBaseType.rrw_drop, "collation", " ", " ", " ", " ", " ");
3947
3948    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropConversion, TBaseType.rrw_drop, "conversion", " ", " ", " ", " ", " ");
3949
3950    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropDatabase, TBaseType.rrw_drop, "database", " ", " ", " ", " ", " ");
3951
3952    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropDomain, TBaseType.rrw_drop, "domain", " ", " ", " ", " ", " ");
3953
3954    addgreenplumcmds(ESqlStatementType.sstgreenplumDropExternalTable, TBaseType.rrw_drop, "external", "table", " ", " ", " ", " ");
3955
3956    addgreenplumcmds(ESqlStatementType.sstgreenplumDropExternalTable, TBaseType.rrw_drop, "external", "web", "table", " ", " ", " ");
3957
3958    addgreenplumcmds(ESqlStatementType.sstgreenplumDropFilespace, TBaseType.rrw_drop, "filespace", " ", " ", " ", " ", " ");
3959
3960//    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropExtension, TBaseType.rrw_drop, "extension", " ", " ", " ", " ", " ");
3961//    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropForeignDataWrapper, TBaseType.rrw_drop, "foreign", "data", "wrapper", " ", " ", " ");
3962//    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropForeignTable, TBaseType.rrw_drop, "foreign", "table", " ", " ", " ", " ");
3963
3964    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropFunction, TBaseType.rrw_drop, "function", " ", " ", " ", " ", " ");
3965
3966    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropGroup, TBaseType.rrw_drop, "group", " ", " ", " ", " ", " ");
3967
3968    addgreenplumcmds(ESqlStatementType.sstdropindex, TBaseType.rrw_drop, "index", " ", " ", " ", " ", " ");
3969
3970    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropLanguage, TBaseType.rrw_drop, "language", " ", " ", " ", " ", " ");
3971
3972    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropMaterializedView, TBaseType.rrw_drop, "materialized", "view", " ", " ", " ", " ");
3973
3974    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropOperator, TBaseType.rrw_drop, "operator", " ", " ", " ", " ", " ");
3975//    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropOperatorClass, TBaseType.rrw_drop, "operator", "class", " ", " ", " ", " ");
3976//    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropOperatorFamily, TBaseType.rrw_drop, "operator", "family ", " ", " ", " ", " ");
3977
3978    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropOwned, TBaseType.rrw_drop, "owned", " ", " ", " ", " ", " ");
3979
3980
3981    addgreenplumcmds(ESqlStatementType.sstgreenplumDropResourceQueue, TBaseType.rrw_drop, "resource", "queue", " ", " ", " ", " ");
3982    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropLanguage, TBaseType.rrw_drop, "procedural", "language", " ", " ", " ", " ");
3983
3984    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropRole, TBaseType.rrw_drop, "role", " ", " ", " ", " ", " ");
3985    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropRule, TBaseType.rrw_drop, "rule", " ", " ", " ", " ", " ");
3986    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropSchema, TBaseType.rrw_drop, "schema", " ", " ", " ", " ", " ");
3987    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropSequence, TBaseType.rrw_drop, "sequence", " ", " ", " ", " ", " ");
3988    //addgreenplumcmds(ESqlStatementType.sstpostgresqlDropServer, TBaseType.rrw_drop, "server", " ", " ", " ", " ", " ");
3989    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropTable, TBaseType.rrw_drop, "table", " ", " ", " ", " ", " ");
3990    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropTablespace, TBaseType.rrw_drop, "tablespace", " ", " ", " ", " ", " ");
3991
3992//    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropTextSearchConfiguration, TBaseType.rrw_drop, "text", "search", "configuration", " ", " ", " ");
3993//    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropTextSearchDictionary, TBaseType.rrw_drop, "text", "search", "dictionary", " ", " ", " ");
3994//    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropTextSearchParser, TBaseType.rrw_drop, "text", "search", "parser", " ", " ", " ");
3995//    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropTextSearchTemplate, TBaseType.rrw_drop, "text", "search", "template", " ", " ", " ");
3996
3997    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropTrigger, TBaseType.rrw_drop, "trigger", " ", " ", " ", " ", " ");
3998    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropType, TBaseType.rrw_drop, "type", " ", " ", " ", " ", " ");
3999    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropUser, TBaseType.rrw_drop, "user", " ", " ", " ", " ", " ");
4000    //addgreenplumcmds(ESqlStatementType.sstpostgresqlDropUserMapping, TBaseType.rrw_drop, "user", "mapping", " ", " ", " ", " ");
4001    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropView, TBaseType.rrw_drop, "view", " ", " ", " ", " ", " ");
4002
4003    addgreenplumcmds(ESqlStatementType.sstpostgresqlEnd, TBaseType.rrw_end, " ", " ", " ", " ", " ", " ");
4004
4005    addgreenplumcmds(ESqlStatementType.sstpostgresqlExecute, TBaseType.rrw_execute, " ", " ", " ", " ", " ", " ");
4006
4007    addgreenplumcmds(ESqlStatementType.sstpostgresqlExplain, TBaseType.rrw_explain, " ", " ", " ", " ", " ", " ");
4008
4009    addgreenplumcmds(ESqlStatementType.sstFetchFrom, TBaseType.rrw_fetch, " ", " ", " ", " ", " ", " ");
4010
4011    addgreenplumcmds(ESqlStatementType.sstpostgresqlGrant, TBaseType.rrw_grant, " ", " ", " ", " ", " ", " ");
4012
4013    addgreenplumcmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert, " ", " ", " ", " ", " ", " ");
4014
4015//    addgreenplumcmds(ESqlStatementType.sstpostgresqlListen, TBaseType.rrw_listen, " ", " ", " ", " ", " ", " ");
4016
4017    addgreenplumcmds(ESqlStatementType.sstpostgresqlLoad, TBaseType.rrw_load, " ", " ", " ", " ", " ", " ");
4018
4019    addgreenplumcmds(ESqlStatementType.sstpostgresqlLock, TBaseType.rrw_lock, " ", " ", " ", " ", " ", " ");
4020
4021    addgreenplumcmds(ESqlStatementType.sstpostgresqlMove, TBaseType.rrw_move, " ", " ", " ", " ", " ", " ");
4022
4023    //addgreenplumcmds(ESqlStatementType.sstpostgresqlNotify, TBaseType.rrw_notify, " ", " ", " ", " ", " ", " ");
4024
4025    addgreenplumcmds(ESqlStatementType.sstpostgresqlPrepare, TBaseType.rrw_prepare, " ", " ", " ", " ", " ", " ");
4026
4027//    addgreenplumcmds(ESqlStatementType.sstpostgresqlPrepareTransaction, TBaseType.rrw_prepare, "transaction", " ", " ", " ", " ", " ");
4028
4029    addgreenplumcmds(ESqlStatementType.sstpostgresqlReassignOwned, TBaseType.rrw_greenplum_reassign, "owned", " ", " ", " ", " ", " ");
4030
4031    addgreenplumcmds(ESqlStatementType.sstpostgresqlRefreshMaterializedView, TBaseType.rrw_refresh, "materialized", "view", " ", " ", " ", " ");
4032
4033    addgreenplumcmds(ESqlStatementType.sstpostgresqlReindex, TBaseType.rrw_greenplum_reindex, " ", " ", " ", " ", " ", " ");
4034
4035    addgreenplumcmds(ESqlStatementType.sstpostgresqlReleaseSavepoint, TBaseType.rrw_release, " ", " ", " ", " ", " ", " ");
4036    addgreenplumcmds(ESqlStatementType.sstpostgresqlReleaseSavepoint, TBaseType.rrw_release, "savepoint", " ", " ", " ", " ", " ");
4037
4038    addgreenplumcmds(ESqlStatementType.sstpostgresqlReset, TBaseType.rrw_reset, " ", " ", " ", " ", " ", " ");
4039
4040    addgreenplumcmds(ESqlStatementType.sstpostgresqlRevoke, TBaseType.rrw_revoke, " ", " ", " ", " ", " ", " ");
4041
4042    addgreenplumcmds(ESqlStatementType.sstpostgresqlRollback, TBaseType.rrw_rollback, " ", " ", " ", " ", " ", " ");
4043//    addgreenplumcmds(ESqlStatementType.sstpostgresqlRollbackPrepared, TBaseType.rrw_rollback, "prepared", " ", " ", " ", " ", " ");
4044
4045    addgreenplumcmds(ESqlStatementType.sstpostgresqlSavepoint, TBaseType.rrw_savepoint, " ", " ", " ", " ", " ", " ");
4046
4047//    addgreenplumcmds(ESqlStatementType.sstpostgresqlSecurityLabel, TBaseType.rrw_security, "label", " ", " ", " ", " ", " ");
4048
4049    addgreenplumcmds(ESqlStatementType.sstselect, TBaseType.rrw_select, " ", " ", " ", " ", " ", " ");
4050
4051    addgreenplumcmds(ESqlStatementType.sstpostgresqlSet, TBaseType.rrw_set, " ", " ", " ", " ", " ", " ");
4052
4053//    addgreenplumcmds(ESqlStatementType.sstpostgresqlSetConstraints, TBaseType.rrw_set, "constraints", " ", " ", " ", " ", " ");
4054    addgreenplumcmds(ESqlStatementType.sstpostgresqlSetRole, TBaseType.rrw_set, "local", "role", " ", " ", " ", " ");
4055    addgreenplumcmds(ESqlStatementType.sstpostgresqlSetSessionAuthorization, TBaseType.rrw_set, "local", "session", "authorization", " ", " ", " ");
4056    addgreenplumcmds(ESqlStatementType.sstpostgresqlSetRole, TBaseType.rrw_set, "role", " ", " ", " ", " ", " ");
4057
4058    addgreenplumcmds(ESqlStatementType.sstpostgresqlSetSessionAuthorization, TBaseType.rrw_set, "session", "authorization", " ", " ", " ", " ");
4059    addgreenplumcmds(ESqlStatementType.sstpostgresqlSetTransaction, TBaseType.rrw_set, "session", "characteristics", "as", "transaction", " ", " ");
4060    addgreenplumcmds(ESqlStatementType.sstpostgresqlSetRole, TBaseType.rrw_set, "session", "role", " ", " ", " ", " ");
4061    addgreenplumcmds(ESqlStatementType.sstpostgresqlSetSessionAuthorization, TBaseType.rrw_set, "session", "session", "authorization", " ", " ", " ");
4062
4063    addgreenplumcmds(ESqlStatementType.sstpostgresqlSetTransaction, TBaseType.rrw_set, "transaction", " ", " ", " ", " ", " ");
4064
4065    addgreenplumcmds(ESqlStatementType.sstgreenplumShow, TBaseType.rrw_show, " ", " ", " ", " ", " ", " ");
4066
4067    addgreenplumcmds(ESqlStatementType.sstgreenplumStartTransaction, TBaseType.rrw_start, "transaction", " ", " ", " ", " ", " ");
4068
4069    addgreenplumcmds(ESqlStatementType.sstpostgresqlTruncate, TBaseType.rrw_truncate, " ", " ", " ", " ", " ", " ");
4070
4071    //addgreenplumcmds(ESqlStatementType.sstpostgresqlUnlisten, TBaseType.rrw_unlisten, " ", " ", " ", " ", " ", " ");
4072
4073    addgreenplumcmds(ESqlStatementType.sstupdate, TBaseType.rrw_update, " ", " ", " ", " ", " ", " ");
4074
4075    addgreenplumcmds(ESqlStatementType.sstgreenplumVacuum, TBaseType.rrw_greenplum_vacuum, " ", " ", " ", " ", " ", " ");
4076    addgreenplumcmds(ESqlStatementType.sstValues, TBaseType.rrw_values, " ", " ", " ", " ", " ", " ");
4077
4078}
4079
4080
4081void initoraclecmds(){
4082// cmd must be sort alphabetically
4083    addoraclecmds(ESqlStatementType.sstoraclealtercluster, TBaseType.rrw_alter,"cluster"," "," "," "," "," ");
4084    addoraclecmds(ESqlStatementType.sstoraclealterdatabase, TBaseType.rrw_alter,"database"," "," "," "," "," ");
4085    addoraclecmds(ESqlStatementType.sstoraclealterdimension, TBaseType.rrw_alter,"dimension"," "," "," "," "," ");
4086    addoraclecmds(ESqlStatementType.sstoraclealterdiskgroup, TBaseType.rrw_alter,"diskgroup"," "," "," "," "," ");
4087    addoraclecmds(ESqlStatementType.sstoraclealterfunction, TBaseType.rrw_alter,"function"," "," "," "," "," ");
4088    addoraclecmds(ESqlStatementType.sstoraclealterindex, TBaseType.rrw_alter,"index"," "," "," "," "," ");
4089    addoraclecmds(ESqlStatementType.sstoraclealterindextype, TBaseType.rrw_alter,"indextype"," "," "," "," "," ");
4090    addoraclecmds(ESqlStatementType.sstoraclealterjava, TBaseType.rrw_alter,"java"," "," "," "," "," ");
4091    addoraclecmds(ESqlStatementType.sstAlterMaterializedView, TBaseType.rrw_alter,"materialized","view"," "," "," "," ");
4092    addoraclecmds(ESqlStatementType.sstoraclealtermaterializedviewlog, TBaseType.rrw_alter,"materialized","view","log"," "," "," ");
4093    addoraclecmds(ESqlStatementType.sstoraclealteroperator, TBaseType.rrw_alter,"operator"," "," "," "," "," ");
4094    addoraclecmds(ESqlStatementType.sstoraclealteroutline, TBaseType.rrw_alter,"outline"," "," "," "," "," ");
4095    addoraclecmds(ESqlStatementType.sstoraclealterpackage, TBaseType.rrw_alter,"package"," "," "," "," "," ");
4096    addoraclecmds(ESqlStatementType.sstoraclealterprocedure, TBaseType.rrw_alter,"procedure"," "," "," "," "," ");
4097    addoraclecmds(ESqlStatementType.sstoraclealterprofile, TBaseType.rrw_alter,"profile"," "," "," "," "," ");
4098    addoraclecmds(ESqlStatementType.sstoraclealterresourcecost, TBaseType.rrw_alter,"resource","cost"," "," "," "," ");
4099    addoraclecmds(ESqlStatementType.sstoraclealterrole, TBaseType.rrw_alter,"role"," "," "," "," "," ");
4100    addoraclecmds(ESqlStatementType.sstoraclealterrollbacksegment, TBaseType.rrw_alter,"rollback","segment"," "," "," "," ");
4101    addoraclecmds(ESqlStatementType.sstoraclealtersequence, TBaseType.rrw_alter,"sequence"," "," "," "," "," ");
4102    addoraclecmds(ESqlStatementType.sstoraclealtersession, TBaseType.rrw_alter,"session"," "," "," "," "," ");
4103    addoraclecmds(ESqlStatementType.sstoraclealtersystem, TBaseType.rrw_alter,"system"," "," "," "," "," ");
4104    addoraclecmds(ESqlStatementType.sstaltertable, TBaseType.rrw_alter,"table"," "," "," "," "," ");
4105    addoraclecmds(ESqlStatementType.sstoraclealtertablespace, TBaseType.rrw_alter,"tablespace"," "," "," "," "," ");
4106    addoraclecmds(ESqlStatementType.sstaltertrigger, TBaseType.rrw_alter,"trigger"," "," "," "," "," ");
4107    addoraclecmds(ESqlStatementType.sstoraclealtertype, TBaseType.rrw_alter,"type"," "," "," "," "," ");
4108    addoraclecmds(ESqlStatementType.sstoraclealteruser, TBaseType.rrw_alter,"user"," "," "," "," "," ");
4109    addoraclecmds(ESqlStatementType.sstoraclealterview, TBaseType.rrw_alter,"view"," "," "," "," "," ");
4110    addoraclecmds(ESqlStatementType.sstoracleanalyze, TBaseType.rrw_analyze," "," "," "," "," "," ");
4111    addoraclecmds(ESqlStatementType.sstoracleassociatestatistics, TBaseType.rrw_associate,"statistics"," "," "," "," "," ");
4112    addoraclecmds(ESqlStatementType.sstoracleaudit, TBaseType.rrw_audit," "," "," "," "," "," ");
4113    addoraclecmds(ESqlStatementType.sstoraclecall, TBaseType.rrw_call," "," "," "," "," "," ");
4114    addoraclecmds(ESqlStatementType.sstCommentOn, TBaseType.rrw_comment," "," "," "," "," "," ");
4115    addoraclecmds(ESqlStatementType.sstoraclecommit, TBaseType.rrw_commit," "," "," "," "," "," ");
4116    addoraclecmds(ESqlStatementType.sstoraclecreatetablespace, TBaseType.rrw_create,"bigfile","tablespace"," "," "," "," ");
4117    addoraclecmds(ESqlStatementType.sstoraclecreateindex, TBaseType.rrw_create,"bitmap","index"," "," "," "," ");
4118    addoraclecmds(ESqlStatementType.sstoraclecreatecluster, TBaseType.rrw_create,"cluster"," "," "," "," "," ");
4119    addoraclecmds(ESqlStatementType.sstoraclecreatecontext, TBaseType.rrw_create,"context"," "," "," "," "," ");
4120    addoraclecmds(ESqlStatementType.sstoraclecreatecontrolfile, TBaseType.rrw_create,"controlfile"," "," "," "," "," ");
4121    addoraclecmds(ESqlStatementType.sstplsql_createfunction, TBaseType.rrw_create,"editionable","function"," "," "," "," ");
4122    addoraclecmds(ESqlStatementType.sstplsql_createpackage, TBaseType.rrw_create,"editionable","package"," "," "," "," ");
4123    addoraclecmds(ESqlStatementType.sstoraclecreatepackagebody, TBaseType.rrw_create,"editionable","package","body"," "," "," ");
4124    addoraclecmds(ESqlStatementType.sstplsql_createprocedure, TBaseType.rrw_create,"editionable","procedure"," "," "," "," ");
4125    addoraclecmds(ESqlStatementType.sstoraclecreateview, TBaseType.rrw_create,"editioning","view"," "," "," "," ");
4126    addoraclecmds(ESqlStatementType.sstoraclecreatedatabase, TBaseType.rrw_create,"database"," "," "," "," "," ");
4127    addoraclecmds(ESqlStatementType.sstoraclecreatedatabaselink, TBaseType.rrw_create,"database","link"," "," "," "," ");
4128    addoraclecmds(ESqlStatementType.sstoraclecreatedimension, TBaseType.rrw_create,"dimension"," "," "," "," "," ");
4129    addoraclecmds(ESqlStatementType.sstoraclecreatedirectory, TBaseType.rrw_create,"directory"," "," "," "," "," ");
4130    addoraclecmds(ESqlStatementType.sstoraclecreatediskgroup, TBaseType.rrw_create,"diskgroup"," "," "," "," "," ");
4131    addoraclecmds(ESqlStatementType.sstoraclecreateview, TBaseType.rrw_create,"force","view"," "," "," "," ");
4132    addoraclecmds(ESqlStatementType.sstplsql_createfunction, TBaseType.rrw_create,"function"," "," "," "," "," ");
4133    addoraclecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"global","temp","table"," "," "," ");
4134    addoraclecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"global","temporary","table"," "," "," ");
4135    addoraclecmds(ESqlStatementType.sstoraclecreateindex, TBaseType.rrw_create,"index"," "," "," "," "," ");
4136    addoraclecmds(ESqlStatementType.sstoraclecreateindextype, TBaseType.rrw_create,"indextype"," "," "," "," "," ");
4137    addoraclecmds(ESqlStatementType.sstoraclecreatejava, TBaseType.rrw_create,"java"," "," "," "," "," ");
4138    addoraclecmds(ESqlStatementType.sstoraclecreatelibrary, TBaseType.rrw_create,"library"," "," "," "," "," ");
4139    addoraclecmds(ESqlStatementType.sstcreatematerializedview, TBaseType.rrw_create,"materialized","view"," "," "," "," ");
4140    addoraclecmds(ESqlStatementType.sstoraclecreatematerializedviewlog, TBaseType.rrw_create, "materialized","view","log"," "," "," ");
4141    addoraclecmds(ESqlStatementType.sstoraclecreateview, TBaseType.rrw_create,"noforce","view"," "," "," "," ");
4142    addoraclecmds(ESqlStatementType.sstplsql_createfunction, TBaseType.rrw_create,"noneditionable","function"," "," "," "," ");
4143    addoraclecmds(ESqlStatementType.sstplsql_createpackage, TBaseType.rrw_create,"noneditionable","package"," "," "," "," ");
4144    addoraclecmds(ESqlStatementType.sstoraclecreatepackagebody, TBaseType.rrw_create,"noneditionable","package","body"," "," "," ");
4145    addoraclecmds(ESqlStatementType.sstplsql_createprocedure, TBaseType.rrw_create,"noneditionable","procedure"," "," "," "," ");
4146    addoraclecmds(ESqlStatementType.sstoraclecreateoperator, TBaseType.rrw_create,"operator"," "," "," "," "," ");
4147    addoraclecmds(ESqlStatementType.sstoraclecreatecontext, TBaseType.rrw_create,"or","replace","context"," "," "," ");
4148    addoraclecmds(ESqlStatementType.sstoraclecreateview, TBaseType.rrw_create,"or","replace","editionable","editioning","view"," ");
4149    addoraclecmds(ESqlStatementType.sstplsql_createfunction, TBaseType.rrw_create,"or","replace","editionable","function"," "," ");
4150    addoraclecmds(ESqlStatementType.sstplsql_createpackage, TBaseType.rrw_create,"or","replace","editionable","package"," "," ");
4151    addoraclecmds(ESqlStatementType.sstoraclecreatepackagebody, TBaseType.rrw_create,"or","replace","editionable","package","body"," ");
4152    addoraclecmds(ESqlStatementType.sstplsql_createprocedure, TBaseType.rrw_create,"or","replace","editionable","procedure"," "," ");
4153    addoraclecmds(ESqlStatementType.sstplsql_createtrigger, TBaseType.rrw_create,"or","replace","editionable","trigger"," "," ");
4154    addoraclecmds(ESqlStatementType.sstoraclecreateview, TBaseType.rrw_create,"or","replace","editionable","view"," "," ");
4155    addoraclecmds(ESqlStatementType.sstoraclecreateview, TBaseType.rrw_create,"or","replace","editioning","view"," "," ");
4156    addoraclecmds(ESqlStatementType.sstoraclecreatedirectory, TBaseType.rrw_create,"or","replace","directory"," "," "," ");
4157    addoraclecmds(ESqlStatementType.sstoraclecreateview, TBaseType.rrw_create,"or","replace","force","view"," "," ");
4158    addoraclecmds(ESqlStatementType.sstoraclecreateview, TBaseType.rrw_create,"or","replace","force","editionable","view"," ");
4159    addoraclecmds(ESqlStatementType.sstoraclecreateview, TBaseType.rrw_create,"or","replace","force","editionable","editioning","view");
4160    addoraclecmds(ESqlStatementType.sstoraclecreateview, TBaseType.rrw_create,"or","replace","force","editioning","view"," ");
4161    addoraclecmds(ESqlStatementType.sstoraclecreateview, TBaseType.rrw_create,"or","replace","force","noneditionable","view"," ");
4162    addoraclecmds(ESqlStatementType.sstplsql_createfunction, TBaseType.rrw_create,"or","replace","function"," "," "," ");
4163    addoraclecmds(ESqlStatementType.sstoraclecreatelibrary, TBaseType.rrw_create,"or","replace","library"," "," "," ");
4164    addoraclecmds(ESqlStatementType.sstoraclecreateview, TBaseType.rrw_create,"or","replace","noforce","view"," "," ");
4165    addoraclecmds(ESqlStatementType.sstplsql_createfunction, TBaseType.rrw_create,"or","replace","noneditionable","function"," "," ");
4166    addoraclecmds(ESqlStatementType.sstplsql_createpackage, TBaseType.rrw_create,"or","replace","noneditionable","package"," "," ");
4167    addoraclecmds(ESqlStatementType.sstoraclecreatepackagebody, TBaseType.rrw_create,"or","replace","noneditionable","package","body"," ");
4168    addoraclecmds(ESqlStatementType.sstplsql_createprocedure, TBaseType.rrw_create,"or","replace","noneditionable","procedure"," "," ");
4169    addoraclecmds(ESqlStatementType.sstoraclecreatesynonym, TBaseType.rrw_create,"or","replace","noneditionable","public","synonym"," ");
4170    addoraclecmds(ESqlStatementType.sstplsql_createtrigger, TBaseType.rrw_create,"or","replace","noneditionable","trigger"," "," ");
4171    addoraclecmds(ESqlStatementType.sstoraclecreateview, TBaseType.rrw_create,"or","replace","noneditionable","view"," "," ");
4172    addoraclecmds(ESqlStatementType.sstplsql_createpackage, TBaseType.rrw_create,"or","replace","package"," "," "," ");
4173    addoraclecmds(ESqlStatementType.sstoraclecreatepackagebody, TBaseType.rrw_create,"or","replace","package","body"," "," ");
4174    addoraclecmds(ESqlStatementType.sstplsql_createprocedure, TBaseType.rrw_create,"or","replace","procedure"," "," "," ");
4175    addoraclecmds(ESqlStatementType.sstoraclecreatesynonym, TBaseType.rrw_create,"or","replace","public","synonym"," "," ");
4176    addoraclecmds(ESqlStatementType.sstoraclecreatesynonym, TBaseType.rrw_create,"or","replace","synonym"," "," "," ");
4177    addoraclecmds(ESqlStatementType.sstplsql_createtrigger, TBaseType.rrw_create,"or","replace","trigger"," "," "," ");
4178    addoraclecmds(ESqlStatementType.sstplsql_createtype_placeholder, TBaseType.rrw_create,"or","replace","type"," "," "," ");
4179    addoraclecmds(ESqlStatementType.sstplsql_createtypebody, TBaseType.rrw_create,"or","replace","type","body"," "," ");
4180    addoraclecmds(ESqlStatementType.sstoraclecreateview, TBaseType.rrw_create,"or","replace","view"," "," "," ");
4181    addoraclecmds(ESqlStatementType.sstoraclecreateoutline, TBaseType.rrw_create,"outline"," "," "," "," "," ");
4182    addoraclecmds(ESqlStatementType.sstplsql_createpackage, TBaseType.rrw_create,"package"," "," "," "," "," ");
4183    addoraclecmds(ESqlStatementType.sstoraclecreatepackagebody, TBaseType.rrw_create,"package","body"," "," "," "," ");
4184    addoraclecmds(ESqlStatementType.sstoraclecreatepfile, TBaseType.rrw_create,"pfile"," "," "," "," "," ");
4185    addoraclecmds(ESqlStatementType.sstplsql_createprocedure, TBaseType.rrw_create,"procedure"," "," "," "," "," ");
4186    addoraclecmds(ESqlStatementType.sstoraclecreateprofile, TBaseType.rrw_create,"profile"," "," "," "," "," ");
4187    addoraclecmds(ESqlStatementType.sstoraclecreatedatabaselink, TBaseType.rrw_create,"public","database","link"," "," "," ");
4188    addoraclecmds(ESqlStatementType.sstoraclecreatesynonym, TBaseType.rrw_create,"public","synonym"," "," "," "," ");
4189    addoraclecmds(ESqlStatementType.sstoraclecreaterestorepoint, TBaseType.rrw_create,"resotre","point"," "," "," "," ");
4190    addoraclecmds(ESqlStatementType.sstoraclecreaterole, TBaseType.rrw_create,"role"," "," "," "," "," ");
4191    addoraclecmds(ESqlStatementType.sstoraclecreaterollbacksegment, TBaseType.rrw_create,"rollback","segment"," "," "," "," ");
4192    addoraclecmds(ESqlStatementType.sstoraclecreatedatabaselink, TBaseType.rrw_create,"shared","database","link"," "," "," ");
4193    addoraclecmds(ESqlStatementType.sstoraclecreatedatabaselink, TBaseType.rrw_create,"shared","public","database","link"," "," ");
4194    addoraclecmds(ESqlStatementType.sstoraclecreateschema, TBaseType.rrw_create,"schema"," "," "," "," "," ");
4195    addoraclecmds(ESqlStatementType.sstoraclecreatesequence, TBaseType.rrw_create,"sequence"," "," "," "," "," ");
4196    addoraclecmds(ESqlStatementType.sstoraclecreatetablespace, TBaseType.rrw_create,"smallfile","tablespace"," "," "," "," ");
4197    addoraclecmds(ESqlStatementType.sstoraclecreatespfile, TBaseType.rrw_create,"spfile"," "," "," "," "," ");
4198    addoraclecmds(ESqlStatementType.sstoraclecreatesynonym, TBaseType.rrw_create,"synonym"," "," "," "," "," ");
4199    addoraclecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"table"," "," "," "," "," ");
4200    addoraclecmds(ESqlStatementType.sstoraclecreatetablespace, TBaseType.rrw_create,"tablespace"," "," "," "," "," ");
4201    addoraclecmds(ESqlStatementType.sstoraclecreatetablespace, TBaseType.rrw_create,"temporary","tablespace"," "," "," "," ");
4202    addoraclecmds(ESqlStatementType.sstplsql_createtrigger, TBaseType.rrw_create,"trigger"," "," "," "," "," ");
4203    addoraclecmds(ESqlStatementType.sstplsql_createtype_placeholder, TBaseType.rrw_create,"type"," "," "," "," "," ");
4204    addoraclecmds(ESqlStatementType.sstplsql_createtypebody, TBaseType.rrw_create,"type","body"," "," "," "," ");
4205    addoraclecmds(ESqlStatementType.sstoraclecreatetablespace, TBaseType.rrw_create,"undo","tablespace"," "," "," "," ");
4206    addoraclecmds(ESqlStatementType.sstoraclecreateindex, TBaseType.rrw_create,"unique","index"," "," "," "," ");
4207    addoraclecmds(ESqlStatementType.sstoraclecreateuser, TBaseType.rrw_create,"user"," "," "," "," "," ");
4208    addoraclecmds(ESqlStatementType.sstoraclecreateview, TBaseType.rrw_create,"view"," "," "," "," "," ");
4209    addoraclecmds(ESqlStatementType.sstplsql_createpackage, TBaseType.rrw_custom,"package"," "," "," "," "," ");
4210    addoraclecmds(ESqlStatementType.sstoraclecreatepackagebody, TBaseType.rrw_custom,"package","body"," "," "," "," ");
4211    addoraclecmds(ESqlStatementType.sstdelete, TBaseType.rrw_delete," "," "," "," "," "," ");
4212    addoraclecmds(ESqlStatementType.sstoracledisassociatestatistics, TBaseType.rrw_disassociate, "statistics"," "," "," "," "," ");
4213    addoraclecmds(ESqlStatementType.sstoracledropcluster, TBaseType.rrw_drop,"cluster"," "," "," "," "," ");
4214    addoraclecmds(ESqlStatementType.sstoracledropcontext, TBaseType.rrw_drop,"context"," "," "," "," "," ");
4215    addoraclecmds(ESqlStatementType.sstoracledropdatabase, TBaseType.rrw_drop,"database"," "," "," "," "," ");
4216    addoraclecmds(ESqlStatementType.sstoracledropdatabaselink, TBaseType.rrw_drop,"database","link"," "," "," "," ");
4217    addoraclecmds(ESqlStatementType.sstoracledropdimension, TBaseType.rrw_drop,"dimension"," "," "," "," "," ");
4218    addoraclecmds(ESqlStatementType.sstoracledropdirectory, TBaseType.rrw_drop,"directory"," "," "," "," "," ");
4219    addoraclecmds(ESqlStatementType.sstoracledropdiskgroup, TBaseType.rrw_drop,"diskgroup"," "," "," "," "," ");
4220    addoraclecmds(ESqlStatementType.sstoracledropfunction, TBaseType.rrw_drop,"function"," "," "," "," "," ");
4221    addoraclecmds(ESqlStatementType.sstoracledropindex, TBaseType.rrw_drop,"index"," "," "," "," "," ");
4222    addoraclecmds(ESqlStatementType.sstoracledropindextype, TBaseType.rrw_drop,"indextype"," "," "," "," "," ");
4223    addoraclecmds(ESqlStatementType.sstoracledropjava, TBaseType.rrw_drop,"java"," "," "," "," "," ");
4224    addoraclecmds(ESqlStatementType.sstoracledroplibrary, TBaseType.rrw_drop,"library"," "," "," "," "," ");
4225    addoraclecmds(ESqlStatementType.sstoracledropmaterializedview, TBaseType.rrw_drop,"materialized","view"," "," "," "," ");
4226    addoraclecmds(ESqlStatementType.sstoracledropmaterializedviewlog, TBaseType.rrw_drop,"materialized","view","log"," "," "," ");
4227    addoraclecmds(ESqlStatementType.sstoracledropoperator, TBaseType.rrw_drop,"operator"," "," "," "," "," ");
4228    addoraclecmds(ESqlStatementType.sstoracledropoutline, TBaseType.rrw_drop,"outline"," "," "," "," "," ");
4229    addoraclecmds(ESqlStatementType.sstoracledroppackage, TBaseType.rrw_drop,"package"," "," "," "," "," ");
4230    addoraclecmds(ESqlStatementType.sstoracledropprocedure, TBaseType.rrw_drop,"procedure"," "," "," "," "," ");
4231    addoraclecmds(ESqlStatementType.sstoracledropprofile, TBaseType.rrw_drop,"profile"," "," "," "," "," ");
4232    addoraclecmds(ESqlStatementType.sstoracledropdatabaselink, TBaseType.rrw_drop,"public","database","link"," "," "," ");
4233    addoraclecmds(ESqlStatementType.sstoracledropsynonym, TBaseType.rrw_drop,"public","synonym"," "," "," "," ");
4234    addoraclecmds(ESqlStatementType.sstoracledroprestorepoint, TBaseType.rrw_drop,"restore","point"," "," "," "," ");
4235    addoraclecmds(ESqlStatementType.sstoracledroprole, TBaseType.rrw_drop,"role"," "," "," "," "," ");
4236    addoraclecmds(ESqlStatementType.sstoracledroprollbacksegment, TBaseType.rrw_drop,"rollback","segment"," "," "," "," ");
4237    addoraclecmds(ESqlStatementType.sstoracledropsequence, TBaseType.rrw_drop,"sequence"," "," "," "," "," ");
4238    addoraclecmds(ESqlStatementType.sstoracledropsynonym, TBaseType.rrw_drop,"synonym"," "," "," "," "," ");
4239    addoraclecmds(ESqlStatementType.sstoracledroptable, TBaseType.rrw_drop,"table"," "," "," "," "," ");
4240    addoraclecmds(ESqlStatementType.sstoracledroptablespace, TBaseType.rrw_drop,"tablespace"," "," "," "," "," ");
4241    addoraclecmds(ESqlStatementType.sstoracledroptrigger, TBaseType.rrw_drop,"trigger"," "," "," "," "," ");
4242    addoraclecmds(ESqlStatementType.sstoracledroptype, TBaseType.rrw_drop,"type"," "," "," "," "," ");
4243    addoraclecmds(ESqlStatementType.sstoracledroptypebody, TBaseType.rrw_drop,"type","body"," "," "," "," ");
4244    addoraclecmds(ESqlStatementType.sstoracledropuser, TBaseType.rrw_drop,"user"," "," "," "," "," ");
4245    addoraclecmds(ESqlStatementType.sstoracledropview, TBaseType.rrw_drop,"view"," "," "," "," "," ");
4246    addoraclecmds(ESqlStatementType.sstoracleexecuteprocedure, TBaseType.rrw_execute," "," "," "," "," "," ");
4247    addoraclecmds(ESqlStatementType.sstplsql_execimmestmt, TBaseType.rrw_execute,"immediate"," "," "," "," "," ");
4248    addoraclecmds(ESqlStatementType.sstExplain, TBaseType.rrw_explain,"plan"," "," "," "," "," ");
4249    addoraclecmds(ESqlStatementType.sstoracleflashbackdatabase, TBaseType.rrw_flashback,"database"," "," "," "," "," ");
4250    addoraclecmds(ESqlStatementType.sstoracleflashbacktable, TBaseType.rrw_flashback,"table"," "," "," "," "," ");
4251    addoraclecmds(ESqlStatementType.sstoraclegrant, TBaseType.rrw_grant," "," "," "," "," "," ");
4252    addoraclecmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert," "," "," "," "," "," ");
4253    addoraclecmds(ESqlStatementType.sstoraclelocktable, TBaseType.rrw_lock,"table"," "," "," "," "," ");
4254    addoraclecmds(ESqlStatementType.sstmerge, TBaseType.rrw_merge," "," "," "," "," "," ");
4255    addoraclecmds(ESqlStatementType.sstoraclenoaudit, TBaseType.rrw_noaudit," "," "," "," "," "," ");
4256    addoraclecmds(ESqlStatementType.sstoraclepurge, TBaseType.rrw_purge," "," "," "," "," "," ");
4257    addoraclecmds(ESqlStatementType.sstoraclerename, TBaseType.rrw_rename," "," "," "," "," "," ");
4258    addoraclecmds(ESqlStatementType.sstoraclerevoke, TBaseType.rrw_revoke," "," "," "," "," "," ");
4259    addoraclecmds(ESqlStatementType.sstoraclerollback, TBaseType.rrw_rollback," "," "," "," "," "," ");
4260    addoraclecmds(ESqlStatementType.sstoraclesavepoint, TBaseType.rrw_savepoint," "," "," "," "," "," ");
4261    addoraclecmds(ESqlStatementType.sstselect, TBaseType.rrw_select," "," "," "," "," "," ");
4262    addoraclecmds(ESqlStatementType.sstoraclesetconstraint, TBaseType.rrw_set,"constraint"," "," "," "," "," ");
4263    addoraclecmds(ESqlStatementType.sstoraclesetconstraint, TBaseType.rrw_set,"constraints"," "," "," "," "," ");
4264    addoraclecmds(ESqlStatementType.sstoraclesetrole, TBaseType.rrw_set,"role"," "," "," "," "," ");
4265    addoraclecmds(ESqlStatementType.sstoraclesettransaction, TBaseType.rrw_set,"transaction"," "," "," "," "," ");
4266    addoraclecmds(ESqlStatementType.sstTruncate, TBaseType.rrw_truncate," "," "," "," "," "," ");
4267    addoraclecmds(ESqlStatementType.sstplsql_createtype_placeholder, TBaseType.rrw_type2," "," "," "," "," "," ");
4268    addoraclecmds(ESqlStatementType.sstupdate, TBaseType.rrw_update," "," "," "," "," "," ");
4269
4270}
4271
4272void initinformixcmds(){
4273// cmd must be sort alphabetically
4274    addinformixcmds(ESqlStatementType.sstinformixAllocateCollection, TBaseType.rrw_allocate,"collection"," "," "," "," "," ");
4275    addinformixcmds(ESqlStatementType.sstinformixAllocateDescriptor, TBaseType.rrw_allocate,"descriptor"," "," "," "," "," ");
4276    addinformixcmds(ESqlStatementType.sstinformixAlterAccess_Method, TBaseType.rrw_alter,"access_method"," "," "," "," "," ");
4277    addinformixcmds(ESqlStatementType.sstinformixAlterFragment, TBaseType.rrw_alter,"fragment"," "," "," "," "," ");
4278    addinformixcmds(ESqlStatementType.sstinformixAlterFunction, TBaseType.rrw_alter,"function"," "," "," "," "," ");
4279    addinformixcmds(ESqlStatementType.sstinformixAlterIndex, TBaseType.rrw_alter,"index"," "," "," "," "," ");
4280    addinformixcmds(ESqlStatementType.sstinformixAlterProcedure, TBaseType.rrw_alter,"procedure"," "," "," "," "," ");
4281    addinformixcmds(ESqlStatementType.sstinformixAlterRoutine, TBaseType.rrw_alter,"routine"," "," "," "," "," ");
4282    addinformixcmds(ESqlStatementType.sstinformixAlterSecurityLabelComponent, TBaseType.rrw_alter,"security","label","component"," "," "," ");
4283    addinformixcmds(ESqlStatementType.sstinformixAlterSequence, TBaseType.rrw_alter,"sequence"," "," "," "," "," ");
4284    addinformixcmds(ESqlStatementType.sstinformixAlterTable, TBaseType.rrw_alter,"table"," "," "," "," "," ");
4285    addinformixcmds(ESqlStatementType.sstinformixAlterTrustedContext, TBaseType.rrw_alter,"trusted","context"," "," "," "," ");
4286    addinformixcmds(ESqlStatementType.sstinformixAlterUser, TBaseType.rrw_alter,"user"," "," "," "," "," ");
4287    addinformixcmds(ESqlStatementType.sstinformixBegin, TBaseType.rrw_begin," "," "," "," "," "," ");
4288    addinformixcmds(ESqlStatementType.sstinformixClose, TBaseType.rrw_close," "," "," "," "," "," ");
4289    addinformixcmds(ESqlStatementType.sstinformixCloseDatabase, TBaseType.rrw_close,"database"," "," "," "," "," ");
4290    addinformixcmds(ESqlStatementType.sstinformixCommit, TBaseType.rrw_commit," "," "," "," "," "," ");
4291    addinformixcmds(ESqlStatementType.sstinformixConnect, TBaseType.rrw_informix_connect_to," "," "," "," "," "," ");
4292    addinformixcmds(ESqlStatementType.sstinformixCreateAccess_Method, TBaseType.rrw_create,"access_method"," "," "," "," "," ");
4293    addinformixcmds(ESqlStatementType.sstinformixCreateAggregate, TBaseType.rrw_create,"aggregate"," "," "," "," "," ");
4294    addinformixcmds(ESqlStatementType.sstinformixCreateCast, TBaseType.rrw_create,"cast"," "," "," "," "," ");
4295    addinformixcmds(ESqlStatementType.sstinformixCreateIndex, TBaseType.rrw_create,"cluster","index"," "," "," "," ");
4296    addinformixcmds(ESqlStatementType.sstinformixCreateDatabase, TBaseType.rrw_create,"database"," "," "," "," "," ");
4297    addinformixcmds(ESqlStatementType.sstinformixCreateFunction, TBaseType.rrw_create,"dba","function"," "," "," "," ");
4298    addinformixcmds(ESqlStatementType.sstinformixCreateProcedure, TBaseType.rrw_create,"dba","procedure"," "," "," "," ");
4299    addinformixcmds(ESqlStatementType.sstinformixCreateDefaultUser, TBaseType.rrw_create,"default","user"," "," "," "," ");
4300    addinformixcmds(ESqlStatementType.sstinformixCreateIndex, TBaseType.rrw_create,"distinct","cluster","index"," "," "," ");
4301    addinformixcmds(ESqlStatementType.sstinformixCreateIndex, TBaseType.rrw_create,"distinct","index"," "," "," "," ");
4302    addinformixcmds(ESqlStatementType.sstinformixCreateDistinctType, TBaseType.rrw_create,"distinct","type"," "," "," "," ");
4303    addinformixcmds(ESqlStatementType.sstinformixCreateExternalTable, TBaseType.rrw_create,"external","table"," "," "," "," ");
4304    addinformixcmds(ESqlStatementType.sstinformixCreateFunction, TBaseType.rrw_create,"function"," "," "," "," "," ");
4305    addinformixcmds(ESqlStatementType.sstinformixCreateFunctionFrom, TBaseType.rrw_create,"function","from"," "," "," "," ");
4306    addinformixcmds(ESqlStatementType.sstinformixCreateIndex, TBaseType.rrw_create,"index"," "," "," "," "," ");
4307    addinformixcmds(ESqlStatementType.sstinformixCreateOpaqueType, TBaseType.rrw_create,"opaque","type"," "," "," "," ");
4308    addinformixcmds(ESqlStatementType.sstinformixCreateOpclass, TBaseType.rrw_create,"opclass"," "," "," "," "," ");
4309    addinformixcmds(ESqlStatementType.sstinformixCreateSynonym, TBaseType.rrw_create,"private","synonym"," "," "," "," ");
4310    addinformixcmds(ESqlStatementType.sstinformixCreateProcedure, TBaseType.rrw_create,"procedure"," "," "," "," "," ");
4311    addinformixcmds(ESqlStatementType.sstinformixCreateProcedureFrom, TBaseType.rrw_create,"procedure","from"," "," "," "," ");
4312    addinformixcmds(ESqlStatementType.sstinformixCreateSynonym, TBaseType.rrw_create,"public","synonym"," "," "," "," ");
4313    addinformixcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"raw","table"," "," "," "," ");
4314    addinformixcmds(ESqlStatementType.sstinformixCreateRole, TBaseType.rrw_create,"role"," "," "," "," "," ");
4315    addinformixcmds(ESqlStatementType.sstinformixCreateRoutineFrom, TBaseType.rrw_create,"routine","from"," "," "," "," ");
4316    addinformixcmds(ESqlStatementType.sstinformixCreateRowType, TBaseType.rrw_create,"row","type"," "," "," "," ");
4317    addinformixcmds(ESqlStatementType.sstinformixCreateSchema, TBaseType.rrw_create,"schema"," "," "," "," "," ");
4318    addinformixcmds(ESqlStatementType.sstinformixCreateSecurityLabel, TBaseType.rrw_create,"security","label"," "," "," "," ");
4319    addinformixcmds(ESqlStatementType.sstinformixCreateSecurityLabelComponent, TBaseType.rrw_create,"security","label","component"," "," "," ");
4320    addinformixcmds(ESqlStatementType.sstinformixCreateSecurityPolicy, TBaseType.rrw_create,"security","policy"," "," "," "," ");
4321    addinformixcmds(ESqlStatementType.sstinformixCreateSequence, TBaseType.rrw_create,"sequence"," "," "," "," "," ");
4322    addinformixcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"standard","table"," "," "," "," ");
4323    addinformixcmds(ESqlStatementType.sstinformixCreateSynonym, TBaseType.rrw_create,"synonym"," "," "," "," "," ");
4324    addinformixcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"table"," "," "," "," "," ");
4325    addinformixcmds(ESqlStatementType.sstinformixCreateTempTable, TBaseType.rrw_create,"temp","table"," "," "," "," ");
4326    addinformixcmds(ESqlStatementType.sstcreatetrigger, TBaseType.rrw_create,"trigger"," "," "," "," "," ");
4327    addinformixcmds(ESqlStatementType.sstinformixCreateTrustedContext, TBaseType.rrw_create,"trusted","context"," "," "," "," ");
4328    addinformixcmds(ESqlStatementType.sstinformixCreateIndex, TBaseType.rrw_create,"unique","cluster","index"," "," "," ");
4329    addinformixcmds(ESqlStatementType.sstinformixCreateIndex, TBaseType.rrw_create,"unique","index"," "," "," "," ");
4330    addinformixcmds(ESqlStatementType.sstinformixCreateUser, TBaseType.rrw_create,"user"," "," "," "," "," ");
4331    addinformixcmds(ESqlStatementType.sstinformixCreateView, TBaseType.rrw_create,"view"," "," "," "," "," ");
4332    addinformixcmds(ESqlStatementType.sstinformixCreateXaDatasource, TBaseType.rrw_create,"xadatasource"," "," "," "," "," ");
4333    addinformixcmds(ESqlStatementType.sstinformixCreateXaDatasourceType, TBaseType.rrw_create,"xadatasource","type"," "," "," "," ");
4334    //addinformixcmds(ESqlStatementType.sstinformixDatabase, TBaseType.rrw_database," "," "," "," "," "," ");
4335    addinformixcmds(ESqlStatementType.sstinformixDeallocateCollection, TBaseType.rrw_deallocate,"collection"," "," "," "," "," ");
4336    addinformixcmds(ESqlStatementType.sstinformixDeallocateDescriptor, TBaseType.rrw_deallocate, "descriptor"," "," "," "," "," ");
4337    addinformixcmds(ESqlStatementType.sstinformixDeallocateRow, TBaseType.rrw_deallocate,"row"," "," "," "," "," ");
4338    addinformixcmds(ESqlStatementType.sstinformixDeclare, TBaseType.rrw_declare," "," "," "," "," "," ");
4339    addinformixcmds(ESqlStatementType.sstdelete, TBaseType.rrw_delete," "," "," "," "," "," ");
4340    addinformixcmds(ESqlStatementType.sstinformixDescribe, TBaseType.rrw_describe," "," "," "," "," "," ");
4341    addinformixcmds(ESqlStatementType.sstinformixDescribeInput, TBaseType.rrw_describe,"input"," "," "," "," "," ");
4342    addinformixcmds(ESqlStatementType.sstinformixDisconnect, TBaseType.rrw_disconnect," "," "," "," "," "," ");
4343    addinformixcmds(ESqlStatementType.sstinformixDropAccess_Method, TBaseType.rrw_drop,"access_method"," "," "," "," "," ");
4344    addinformixcmds(ESqlStatementType.sstinformixDropAggregate, TBaseType.rrw_drop,"aggregate"," "," "," "," "," ");
4345    addinformixcmds(ESqlStatementType.sstinformixDropCast, TBaseType.rrw_drop,"cast"," "," "," "," "," ");
4346    addinformixcmds(ESqlStatementType.sstdropdatabase, TBaseType.rrw_drop,"database"," "," "," "," "," ");
4347    addinformixcmds(ESqlStatementType.sstinformixDropFunction, TBaseType.rrw_drop,"function"," "," "," "," "," ");
4348    addinformixcmds(ESqlStatementType.sstinformixDropIndex, TBaseType.rrw_drop,"index"," "," "," "," "," ");
4349    addinformixcmds(ESqlStatementType.sstinformixDropOpclass, TBaseType.rrw_drop,"opclass"," "," "," "," "," ");
4350    addinformixcmds(ESqlStatementType.sstinformixDropProcedure, TBaseType.rrw_drop,"procedure"," "," "," "," "," ");
4351    addinformixcmds(ESqlStatementType.sstinformixDropRole, TBaseType.rrw_drop,"role"," "," "," "," "," ");
4352    addinformixcmds(ESqlStatementType.sstinformixDropRoutine, TBaseType.rrw_drop,"routine"," "," "," "," "," ");
4353    addinformixcmds(ESqlStatementType.sstinformixDropRowType, TBaseType.rrw_drop,"row","type"," "," "," "," ");
4354    addinformixcmds(ESqlStatementType.sstinformixDropSecurity, TBaseType.rrw_drop,"security"," "," "," "," "," ");
4355    addinformixcmds(ESqlStatementType.sstinformixDropSequence, TBaseType.rrw_drop,"sequence"," "," "," "," "," ");
4356    addinformixcmds(ESqlStatementType.sstinformixDropSynonym, TBaseType.rrw_drop,"synonym"," "," "," "," "," ");
4357    addinformixcmds(ESqlStatementType.sstinformixDropTable, TBaseType.rrw_drop,"table"," "," "," "," "," ");
4358    addinformixcmds(ESqlStatementType.sstinformixDropTrigger, TBaseType.rrw_drop,"trigger"," "," "," "," "," ");
4359    addinformixcmds(ESqlStatementType.sstinformixDropTrustedContext, TBaseType.rrw_drop,"trusted","context"," "," "," "," ");
4360    addinformixcmds(ESqlStatementType.sstinformixDropType, TBaseType.rrw_drop,"type"," "," "," "," "," ");
4361    addinformixcmds(ESqlStatementType.sstinformixDropUser, TBaseType.rrw_drop,"user"," "," "," "," "," ");
4362    addinformixcmds(ESqlStatementType.sstinformixDropView, TBaseType.rrw_drop,"view"," "," "," "," "," ");
4363    addinformixcmds(ESqlStatementType.sstinformixDropXaDatasource, TBaseType.rrw_drop,"xadatasource"," "," "," "," "," ");
4364    addinformixcmds(ESqlStatementType.sstinformixDropXaDatasourceType, TBaseType.rrw_drop,"xadatasource","type"," "," "," "," ");
4365    addinformixcmds(ESqlStatementType.sstinformixExecute, TBaseType.rrw_exec," "," "," "," "," "," ");
4366    addinformixcmds(ESqlStatementType.sstinformixExecute, TBaseType.rrw_execute," "," "," "," "," "," ");
4367    addinformixcmds(ESqlStatementType.sstinformixExecuteFunction, TBaseType.rrw_execute,"function"," "," "," "," "," ");
4368    addinformixcmds(ESqlStatementType.sstinformixExecuteImmediate, TBaseType.rrw_execute,"immediate"," "," "," "," "," ");
4369    addinformixcmds(ESqlStatementType.sstinformixExecuteProcedure, TBaseType.rrw_execute,"procedure"," "," "," "," "," ");
4370    addinformixcmds(ESqlStatementType.sstinformixFetch, TBaseType.rrw_fetch," "," "," "," "," "," ");
4371    addinformixcmds(ESqlStatementType.sstinformixFlush, TBaseType.rrw_flush," "," "," "," "," "," ");
4372    addinformixcmds(ESqlStatementType.sstinformixFree, TBaseType.rrw_free," "," "," "," "," "," ");
4373    addinformixcmds(ESqlStatementType.sstinformixGetDescriptor, TBaseType.rrw_get,"descriptor"," "," "," "," "," ");
4374    addinformixcmds(ESqlStatementType.sstinformixGetDiagnostics, TBaseType.rrw_get,"diagnostics"," "," "," "," "," ");
4375    addinformixcmds(ESqlStatementType.sstinformixGrant, TBaseType.rrw_grant," "," "," "," "," "," ");
4376    addinformixcmds(ESqlStatementType.sstinformixGrantFragment, TBaseType.rrw_grant,"fragment"," "," "," "," "," ");
4377    addinformixcmds(ESqlStatementType.sstinformixInfo, TBaseType.rrw_informix_info," "," "," "," "," "," ");
4378    addinformixcmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert, " "," "," "," "," "," ");
4379    addinformixcmds(ESqlStatementType.sstinformixLoad, TBaseType.rrw_load," "," "," "," "," "," ");
4380    addinformixcmds(ESqlStatementType.sstinformixLockTable, TBaseType.rrw_lock,"table"," "," "," "," "," ");
4381    addinformixcmds(ESqlStatementType.sstmerge, TBaseType.rrw_merge," "," "," "," "," "," ");
4382    addinformixcmds(ESqlStatementType.sstinformixOpen, TBaseType.rrw_open," "," "," "," "," "," ");
4383    addinformixcmds(ESqlStatementType.sstinformixOutput, TBaseType.rrw_informix_output," "," "," "," "," "," ");
4384    addinformixcmds(ESqlStatementType.sstinformixPrepare, TBaseType.rrw_prepare," "," "," "," "," "," ");
4385    addinformixcmds(ESqlStatementType.sstinformixPut, TBaseType.rrw_informix_put," "," "," "," "," "," ");
4386    addinformixcmds(ESqlStatementType.sstinformixReleaseSavepoint, TBaseType.rrw_release,"savepoint"," "," "," "," "," ");
4387    addinformixcmds(ESqlStatementType.sstinformixRenameColumn, TBaseType.rrw_rename,"column"," "," "," "," "," ");
4388    addinformixcmds(ESqlStatementType.sstinformixRenameDatabase, TBaseType.rrw_rename,"database"," "," "," "," "," ");
4389    addinformixcmds(ESqlStatementType.sstinformixRenameIndex, TBaseType.rrw_rename,"index"," "," "," "," "," ");
4390    addinformixcmds(ESqlStatementType.sstinformixRenameSecurity, TBaseType.rrw_rename,"security"," "," "," "," "," ");
4391    addinformixcmds(ESqlStatementType.sstinformixRenameSequence, TBaseType.rrw_rename,"sequence"," "," "," "," "," ");
4392    addinformixcmds(ESqlStatementType.sstinformixRenameTable, TBaseType.rrw_rename,"table"," "," "," "," "," ");
4393    addinformixcmds(ESqlStatementType.sstinformixRenameTrustedContext, TBaseType.rrw_rename,"trusted","context"," "," "," "," ");
4394    addinformixcmds(ESqlStatementType.sstinformixRenameUser, TBaseType.rrw_rename,"user"," "," "," "," "," ");
4395    addinformixcmds(ESqlStatementType.sstinformixRevoke, TBaseType.rrw_revoke," "," "," "," "," "," ");
4396    addinformixcmds(ESqlStatementType.sstinformixRevokeFragment, TBaseType.rrw_revoke,"fragment"," "," "," "," "," ");
4397    addinformixcmds(ESqlStatementType.sstinformixRollbackWork, TBaseType.rrw_rollback," "," "," "," "," "," ");
4398    addinformixcmds(ESqlStatementType.sstinformixRollbackWork, TBaseType.rrw_rollback,"work"," "," "," "," "," ");
4399    addinformixcmds(ESqlStatementType.sstinformixSaveExternalDirectives, TBaseType.rrw_save,"external","directives"," "," "," "," ");
4400    addinformixcmds(ESqlStatementType.sstinformixSavepoint, TBaseType.rrw_savepoint," "," "," "," "," "," ");
4401    addinformixcmds(ESqlStatementType.sstselect, TBaseType.rrw_select," "," "," "," "," "," ");
4402    addinformixcmds(ESqlStatementType.sstinformixSetAutofree, TBaseType.rrw_set,"autofree"," "," "," "," "," ");
4403    addinformixcmds(ESqlStatementType.sstinformixSetCollation, TBaseType.rrw_set,"collation"," "," "," "," "," ");
4404    addinformixcmds(ESqlStatementType.sstinformixSetConnection, TBaseType.rrw_set,"connection"," "," "," "," "," ");
4405    addinformixcmds(ESqlStatementType.sstinformixSetConstraints, TBaseType.rrw_set,"constraints"," "," "," "," "," ");
4406    addinformixcmds(ESqlStatementType.sstinformixSetDatabaseObject, TBaseType.rrw_set,"database","object"," "," "," "," ");
4407    addinformixcmds(ESqlStatementType.sstinformixSetDataskip, TBaseType.rrw_set,"dataskip"," "," "," "," "," ");
4408    addinformixcmds(ESqlStatementType.sstinformixSetDebugFile, TBaseType.rrw_set,"debug","file"," "," "," "," ");
4409    addinformixcmds(ESqlStatementType.sstinformixSetDeferred_Prepare, TBaseType.rrw_set,"defferred_prepare"," "," "," "," "," ");
4410    addinformixcmds(ESqlStatementType.sstinformixSetDescriptor, TBaseType.rrw_set,"descriptor"," "," "," "," "," ");
4411    addinformixcmds(ESqlStatementType.sstinformixSetEncryptionPassword, TBaseType.rrw_set,"encryption","password"," "," "," "," ");
4412    addinformixcmds(ESqlStatementType.sstinformixSetEnvironment, TBaseType.rrw_set,"environment"," "," "," "," "," ");
4413    addinformixcmds(ESqlStatementType.sstinformixSetExplain, TBaseType.rrw_set,"explain"," "," "," "," "," ");
4414    addinformixcmds(ESqlStatementType.sstinformixSetIndexes, TBaseType.rrw_set,"indexes"," "," "," "," "," ");
4415    addinformixcmds(ESqlStatementType.sstinformixSetIsolation, TBaseType.rrw_set,"isolation"," "," "," "," "," ");
4416    addinformixcmds(ESqlStatementType.sstinformixSetLockMode, TBaseType.rrw_set,"lock","mode"," "," "," "," ");
4417    addinformixcmds(ESqlStatementType.sstinformixSetLog, TBaseType.rrw_set,"log"," "," "," "," "," ");
4418    addinformixcmds(ESqlStatementType.sstinformixSetOptimization, TBaseType.rrw_set,"optimization"," "," "," "," "," ");
4419    addinformixcmds(ESqlStatementType.sstinformixSetPDQPriority, TBaseType.rrw_set,"pdqpriority"," "," "," "," "," ");
4420    addinformixcmds(ESqlStatementType.sstinformixSetRole, TBaseType.rrw_set,"role"," "," "," "," "," ");
4421    addinformixcmds(ESqlStatementType.sstinformixSetSessionAuthorization, TBaseType.rrw_set,"session","authorization"," "," "," "," ");
4422    addinformixcmds(ESqlStatementType.sstinformixSetStatementCache, TBaseType.rrw_set,"statement","cache"," "," "," "," ");
4423    addinformixcmds(ESqlStatementType.sstinformixSetTransaction, TBaseType.rrw_set,"transaction"," "," "," "," "," ");
4424    addinformixcmds(ESqlStatementType.sstinformixSetTransactionMode, TBaseType.rrw_set,"transaction","mode"," "," "," "," ");
4425    addinformixcmds(ESqlStatementType.sstinformixSetTriggers, TBaseType.rrw_set,"triggers"," "," "," "," "," ");
4426    addinformixcmds(ESqlStatementType.sstinformixSetUserPassword, TBaseType.rrw_set,"user","password"," "," "," "," ");
4427    addinformixcmds(ESqlStatementType.sstinformixStartViolationsTable, TBaseType.rrw_start,"violations","table"," "," "," "," ");
4428    addinformixcmds(ESqlStatementType.sstinformixStopViolationsTable, TBaseType.rrw_stop,"violations","table"," "," "," "," ");
4429    addinformixcmds(ESqlStatementType.sstTruncate, TBaseType.rrw_truncate," "," "," "," "," "," ");
4430    addinformixcmds(ESqlStatementType.sstinformixUnload, TBaseType.rrw_informix_unload," "," "," "," "," "," ");
4431    addinformixcmds(ESqlStatementType.sstinformixUnlockTable, TBaseType.rrw_unlock,"table"," "," "," "," "," ");
4432    addinformixcmds(ESqlStatementType.sstupdate, TBaseType.rrw_update," "," "," "," "," "," ");
4433    addinformixcmds(ESqlStatementType.sstinformixUpdateStatistics, TBaseType.rrw_update,"statistics"," "," "," "," "," ");
4434    addinformixcmds(ESqlStatementType.sstinformixWhenever, TBaseType.rrw_informix_whenever," "," "," "," "," "," ");
4435}
4436    public void initcouchbasecmds() {
4437        addcouchbasecmds(ESqlStatementType.sstBuildIndex,   TBaseType.rrw_couchbase_build, "index"," ", " ", " ", " ", " ");
4438        addcouchbasecmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create, "index", " ", " ", " ", " ", " ");
4439        addcouchbasecmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create, "primary", "index", " ", " ", " ", " ");
4440        addcouchbasecmds(ESqlStatementType.sstdelete, TBaseType.rrw_delete, " ", " ", " ", " ", " ", " ");
4441        addcouchbasecmds(ESqlStatementType.sstdropindex, TBaseType.rrw_drop, "index", " ", " ", " ", " ", " ");
4442        addcouchbasecmds(ESqlStatementType.sstdropindex, TBaseType.rrw_drop, "primary", "index", " ", " ", " ", " ");
4443        addcouchbasecmds(ESqlStatementType.sstExecutePreparedStmt, TBaseType.rrw_execute, " ", " ", " ", " ", " ", " ");
4444        addcouchbasecmds(ESqlStatementType.sstExplain, TBaseType.rrw_explain, " ", " ", " ", " ", " ", " ");
4445        addcouchbasecmds(ESqlStatementType.sstinfer, TBaseType.rrw_couchbase_infer, " ", " ", " ", " ", " ", " ");
4446        addcouchbasecmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert, " ", " ", " ", " ", " ", " ");
4447        addcouchbasecmds(ESqlStatementType.sstmerge, TBaseType.rrw_merge, " ", " ", " ", " ", " ", " ");
4448        addcouchbasecmds(ESqlStatementType.sstprepare, TBaseType.rrw_prepare, " ", " ", " ", " ", " ", " ");
4449        addcouchbasecmds(ESqlStatementType.sstselect, TBaseType.rrw_select, " ", " ", " ", " ", " ", " ");
4450        addcouchbasecmds(ESqlStatementType.sstupdate, TBaseType.rrw_update, " ", " ", " ", " ", " ", " ");
4451        addcouchbasecmds(ESqlStatementType.sstupsert, TBaseType.rrw_couchbase_upsert, " ", " ", " ", " ", " ", " ");
4452    }
4453
4454    void initverticacmds(){
4455
4456        addverticacmds(ESqlStatementType.sstActivateDirectedQuery, TBaseType.rrw_vertica_activate, "directed", "query",      " ", " ", " ", " ");
4457
4458        addverticacmds(ESqlStatementType.sstAlterAccessPolicy,   TBaseType.rrw_alter, "access",          "policy", " ", " ", " ", " ");
4459        addverticacmds(ESqlStatementType.sstAlterAuthentication, TBaseType.rrw_alter, "authentication", " ",      " ", " ", " ", " ");
4460        addverticacmds(ESqlStatementType.sstalterdatabase, TBaseType.rrw_alter, "database", " ", " ", " ", " ", " ");
4461        addverticacmds(ESqlStatementType.sstAlterFaultGroup, TBaseType.rrw_alter, "fault", "group", " ", " ", " ", " ");
4462        addverticacmds(ESqlStatementType.sstalterfunction, TBaseType.rrw_alter, "function", " ", " ", " ", " ", " ");
4463        addverticacmds(ESqlStatementType.sstAlterLibrary, TBaseType.rrw_alter, "library", " ", " ", " ", " ", " ");
4464        addverticacmds(ESqlStatementType.sstAlterNode, TBaseType.rrw_alter, "node", " ", " ", " ", " ", " ");
4465        addverticacmds(ESqlStatementType.sstAlterNetworkInterface, TBaseType.rrw_alter, "network", "interface", " ", " ", " ", " ");
4466        addverticacmds(ESqlStatementType.sstAlterProjection, TBaseType.rrw_alter, "projection", " ", " ", " ", " ", " ");
4467        addverticacmds(ESqlStatementType.sstAlterProfile, TBaseType.rrw_alter, "profile", " ", " ", " ", " ", " ");
4468        addverticacmds(ESqlStatementType.sstAlterResourcePool, TBaseType.rrw_alter, "resource", "pool", " ", " ", " ", " ");
4469        addverticacmds(ESqlStatementType.sstAlterRole, TBaseType.rrw_alter, "role", " ", " ", " ", " ", " ");
4470        addverticacmds(ESqlStatementType.sstAlterSchema, TBaseType.rrw_alter, "schema", " ", " ", " ", " ", " ");
4471        addverticacmds(ESqlStatementType.sstaltersequence, TBaseType.rrw_alter, "sequence", " ", " ", " ", " ", " ");
4472        addverticacmds(ESqlStatementType.sstaltersession, TBaseType.rrw_alter, "session", " ", " ", " ", " ", " ");
4473        addverticacmds(ESqlStatementType.sstAlterSubnet, TBaseType.rrw_alter, "subnet", " ", " ", " ", " ", " ");
4474        addverticacmds(ESqlStatementType.sstaltertable, TBaseType.rrw_alter, "table", " ", " ", " ", " ", " ");
4475        addverticacmds(ESqlStatementType.sstalteruser, TBaseType.rrw_alter, "user", " ", " ", " ", " ", " ");
4476        addverticacmds(ESqlStatementType.sstalterview, TBaseType.rrw_alter, "view", " ", " ", " ", " ", " ");
4477
4478        addverticacmds(ESqlStatementType.sstBegin, TBaseType.rrw_begin, " ", " ", " ", " ", " ", " ");
4479        addverticacmds(ESqlStatementType.sstcall, TBaseType.rrw_call, " ", " ", " ", " ", " ", " ");
4480
4481        addverticacmds(ESqlStatementType.sstCommentOn, TBaseType.rrw_comment, "on", " ", " ", " ", " ", " ");
4482        addverticacmds(ESqlStatementType.sstcommit, TBaseType.rrw_commit, " ", " ", " ", " ", " ", " ");
4483        addverticacmds(ESqlStatementType.sstconnect, TBaseType.rrw_connect, "to", " ", " ", " ", " ", " ");
4484        addverticacmds(ESqlStatementType.sstCopy, TBaseType.rrw_vertica_copy, " ", " ", " ", " ", " ", " ");
4485
4486        addverticacmds(ESqlStatementType.sstCreateAccessPolicy,   TBaseType.rrw_create, "access",          "policy", " ", " ", " ", " ");
4487        addverticacmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create , "aggregate", "function", " ", " ", " ", " ");
4488        addverticacmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create , "analytic", "function", " ", " ", " ", " ");
4489        addverticacmds(ESqlStatementType.sstCreateAuthentication, TBaseType.rrw_create, "authentication", " ",      " ", " ", " ", " ");
4490        addverticacmds(ESqlStatementType.sstCreateDirectedQuery, TBaseType.rrw_create, "directed", "query",      " ", " ", " ", " ");
4491        addverticacmds(ESqlStatementType.sstCreateExternalTable, TBaseType.rrw_create, "external", "table",      " ", " ", " ", " ");
4492        addverticacmds(ESqlStatementType.sstCreateFaultGroup, TBaseType.rrw_create , "fault", "group", " ", " ", " ", " ");
4493        addverticacmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create , "filter", " ", " ", " ", " ", " ");
4494        addverticacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create , "flex", "table", " ", " ", " ", " ");
4495        addverticacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create , "flexible", "table", " ", " ", " ", " ");
4496
4497        addverticacmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create , "function", " ", " ", " ", " ", " ");
4498        addverticacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create , "global", "temp", "table", " ", " ", " ");
4499        addverticacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create , "global", "temporary", "table", " ", " ", " ");
4500        addverticacmds(ESqlStatementType.sstCreateHCatalogSchema, TBaseType.rrw_create , "hcatalog", "schema", " ", " ", " ", " ");
4501        addverticacmds(ESqlStatementType.sstCreateLibrary, TBaseType.rrw_create, "library", " ", " ", " ", " ", " ");
4502        addverticacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create , "local", "temp", "table", " ", " ", " ");
4503        addverticacmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create , "local", "temp", "view", " ", " ", " ");
4504        addverticacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create , "local", "temporary", "table", " ", " ", " ");
4505        addverticacmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create , "local", "temporary", "view", " ", " ", " ");
4506        addverticacmds(ESqlStatementType.sstCreateLocation, TBaseType.rrw_create , "location", " ", " ", " ", " ", " ");
4507        addverticacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create , "managed", "external", "table", " ", " ", " ");
4508        addverticacmds(ESqlStatementType.sstCreateNetworkInterface, TBaseType.rrw_create, "network", "interface", " ", " ", " ", " ");
4509        addverticacmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create , "or", "replace", "aggregate", "function", " ", " ");
4510        addverticacmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create , "or", "replace", "function", " ", " ", " ");
4511        addverticacmds(ESqlStatementType.sstCreateLibrary, TBaseType.rrw_create , "or", "replace", "library", " ", " ", " ");
4512        addverticacmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create , "or", "replace", "local", "temp", "view", " ");
4513        addverticacmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create , "or", "replace", "local", "temporary", "view", " ");
4514        addverticacmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create , "or", "replace", "view", " ", " ", " ");
4515        addverticacmds(ESqlStatementType.sstcreateprocedure, TBaseType.rrw_create , "or", "replace", "procedure", " ", " ", " ");
4516
4517        addverticacmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create , "parser", " ", " ", " ", " ", " ");
4518        addverticacmds(ESqlStatementType.sstcreateprocedure, TBaseType.rrw_create , "procedure", " ", " ", " ", " ", " ");
4519        addverticacmds(ESqlStatementType.sstCreateProfile, TBaseType.rrw_create , "profile", " ", " ", " ", " ", " ");
4520        addverticacmds(ESqlStatementType.sstCreateProjection, TBaseType.rrw_create , "projection", " ", " ", " ", " ", " ");
4521        addverticacmds(ESqlStatementType.sstCreateResourcePool, TBaseType.rrw_create , "resource", "pool", " ", " ", " ", " ");
4522        addverticacmds(ESqlStatementType.sstcreaterole, TBaseType.rrw_create , "role", " ", " ", " ", " ", " ");
4523        addverticacmds(ESqlStatementType.sstcreateschema, TBaseType.rrw_create , "schema", " ", " ", " ", " ", " ");
4524        addverticacmds(ESqlStatementType.sstcreatesequence, TBaseType.rrw_create , "sequence", " ", " ", " ", " ", " ");
4525        addverticacmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create , "source", " ", " ", " ", " ", " ");
4526        addverticacmds(ESqlStatementType.sstCreateSubnet, TBaseType.rrw_create , "subnet", " ", " ", " ", " ", " ");
4527
4528        addverticacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create , "table", " ", " ", " ", " ", " ");
4529        addverticacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create , "temp", "table", " ", " ", " ", " ");
4530        addverticacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create , "temporary", "table", " ", " ", " ", " ");
4531        addverticacmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create , "text", "index", " ", " ", " ", " ");
4532        addverticacmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create , "transform", "function", " ", " ", " ", " ");
4533        addverticacmds(ESqlStatementType.sstcreateuser, TBaseType.rrw_create , "user", " ", " ", " ", " ", " ");
4534        addverticacmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create , "view", " ", " ", " ", " ", " ");
4535
4536        addverticacmds(ESqlStatementType.sstDeActivateDirectedQuery, TBaseType.rrw_vertica_deactivate, "directed", "query",      " ", " ", " ", " ");
4537
4538        addverticacmds(ESqlStatementType.sstdelete, TBaseType.rrw_delete , " ", " ", " ", " ", " ", " ");
4539        addverticacmds(ESqlStatementType.sstDisconnect, TBaseType.rrw_disconnect , " ", " ", " ", " ", " ", " ");
4540
4541        addverticacmds(ESqlStatementType.sstDeActivateDirectedQuery, TBaseType.rrw_drop, "directed", "query",      " ", " ", " ", " ");
4542        addverticacmds(ESqlStatementType.sstDropAccessPolicy,   TBaseType.rrw_drop, "access","policy", " ", " ", " ", " ");
4543        addverticacmds(ESqlStatementType.sstDropAggregateFunction, TBaseType.rrw_drop, "aggregate","function", " ", " ", " ", " ");
4544        addverticacmds(ESqlStatementType.sstDropAuthentication, TBaseType.rrw_drop, "authentication"," ", " ", " ", " ", " ");
4545
4546        addverticacmds(ESqlStatementType.sstDropFaultGroup, TBaseType.rrw_drop, "fault","group", " ", " ", " ", " ");
4547
4548        addverticacmds(ESqlStatementType.sstdropfunction, TBaseType.rrw_drop, "function"," ", " ", " ", " ", " ");
4549        addverticacmds(ESqlStatementType.sstDropLibrary, TBaseType.rrw_drop, "library"," ", " ", " ", " ", " ");
4550        addverticacmds(ESqlStatementType.sstDropNetworkInterface, TBaseType.rrw_drop, "network","interface", " ", " ", " ", " ");
4551        addverticacmds(ESqlStatementType.sstdropprocedure, TBaseType.rrw_drop, "procedure"," ", " ", " ", " ", " ");
4552        addverticacmds(ESqlStatementType.sstDropProfile, TBaseType.rrw_drop, "profile"," ", " ", " ", " ", " ");
4553        addverticacmds(ESqlStatementType.sstDropProjection, TBaseType.rrw_drop, "projection"," ", " ", " ", " ", " ");
4554        addverticacmds(ESqlStatementType.sstDropResourcePool, TBaseType.rrw_drop, "resource","pool", " ", " ", " ", " ");
4555        addverticacmds(ESqlStatementType.sstdroprole, TBaseType.rrw_drop, "role"," ", " ", " ", " ", " ");
4556        addverticacmds(ESqlStatementType.sstdropschema, TBaseType.rrw_drop, "schema"," ", " ", " ", " ", " ");
4557        addverticacmds(ESqlStatementType.sstdropsequence, TBaseType.rrw_drop, "sequence"," ", " ", " ", " ", " ");
4558        addverticacmds(ESqlStatementType.sstDropSubnet, TBaseType.rrw_drop, "subnet"," ", " ", " ", " ", " ");
4559        addverticacmds(ESqlStatementType.sstdroptable, TBaseType.rrw_drop, "table"," ", " ", " ", " ", " ");
4560        addverticacmds(ESqlStatementType.sstDropTextIndex, TBaseType.rrw_drop, "text","index", " ", " ", " ", " ");
4561        addverticacmds(ESqlStatementType.sstDropTransformFunction, TBaseType.rrw_drop, "transform","function", " ", " ", " ", " ");
4562        addverticacmds(ESqlStatementType.sstdropuser, TBaseType.rrw_drop, "user"," ", " ", " ", " ", " ");
4563        addverticacmds(ESqlStatementType.sstdropview, TBaseType.rrw_drop, "view"," ", " ", " ", " ", " ");
4564
4565        addverticacmds(ESqlStatementType.sstEnd, TBaseType.rrw_end, " ", " "," ", " ", " ", " ");
4566        addverticacmds(ESqlStatementType.sstExplain, TBaseType.rrw_explain, " ", " "," ", " ", " ", " ");
4567        addverticacmds(ESqlStatementType.sstExportToVertica, TBaseType.rrw_vertica_export, "to", "vertica"," ", " ", " ", " ");
4568        addverticacmds(ESqlStatementType.sstGrant, TBaseType.rrw_grant, " ", " "," ", " ", " ", " ");
4569        addverticacmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert, " ", " "," ", " ", " ", " ");
4570        addverticacmds(ESqlStatementType.sstmerge, TBaseType.rrw_merge, " ", " "," ", " ", " ", " ");
4571        addverticacmds(ESqlStatementType.sstProfile, TBaseType.rrw_vertica_profile, " ", " "," ", " ", " ", " ");
4572        addverticacmds(ESqlStatementType.sstReleaseSavepoint, TBaseType.rrw_release, " ", " "," ", " ", " ", " ");
4573        addverticacmds(ESqlStatementType.sstRevoke, TBaseType.rrw_revoke, " ", " "," ", " ", " ", " ");
4574        addverticacmds(ESqlStatementType.sstrollback, TBaseType.rrw_rollback, " ", " "," ", " ", " ", " ");
4575        addverticacmds(ESqlStatementType.sstsavepoint, TBaseType.rrw_savepoint, " ", " "," ", " ", " ", " ");
4576        addverticacmds(ESqlStatementType.sstselect, TBaseType.rrw_select, " ", " "," ", " ", " ", " ");
4577        addverticacmds(ESqlStatementType.sstset, TBaseType.rrw_set, "datestyle", "to"," ", " ", " ", " ");
4578        addverticacmds(ESqlStatementType.sstset, TBaseType.rrw_set, "escape_string_warning", "to"," ", " ", " ", " ");
4579        addverticacmds(ESqlStatementType.sstset, TBaseType.rrw_set, "intervalstyle", "to"," ", " ", " ", " ");
4580        addverticacmds(ESqlStatementType.sstset, TBaseType.rrw_set, "locale", " "," ", " ", " ", " ");
4581        addverticacmds(ESqlStatementType.sstset, TBaseType.rrw_set, "role", " "," ", " ", " ", " ");
4582        addverticacmds(ESqlStatementType.sstset, TBaseType.rrw_set, "search_path", " "," ", " ", " ", " ");
4583        addverticacmds(ESqlStatementType.sstset, TBaseType.rrw_set, "session", " "," ", " ", " ", " ");
4584        addverticacmds(ESqlStatementType.sstset, TBaseType.rrw_set, "standard_conforming_strings", " "," ", " ", " ", " ");
4585        addverticacmds(ESqlStatementType.sstset, TBaseType.rrw_set, "time", "zone"," ", " ", " ", " ");
4586        addverticacmds(ESqlStatementType.sstShow, TBaseType.rrw_show, " ", " "," ", " ", " ", " ");
4587        addverticacmds(ESqlStatementType.sstStartTransaction, TBaseType.rrw_start, " ", " "," ", " ", " ", " ");
4588        addverticacmds(ESqlStatementType.sstTruncate, TBaseType.rrw_truncate, "table", " "," ", " ", " ", " ");
4589        addverticacmds(ESqlStatementType.sstupdate, TBaseType.rrw_update, " ", " "," ", " ", " ", " ");
4590
4591
4592       // addverticacmds(ESqlStatementType.sstGetDirectedQuery, TBaseType.rrw_get, "directed", "query",      " ", " ", " ", " ");
4593       // addverticacmds(ESqlStatementType.sstSaveQuery, TBaseType.rrw_save, "query", " "," ", " ", " ", " ");
4594
4595    }
4596
4597    void inithanacmds(){
4598//alter
4599        addhanacmds(ESqlStatementType.sstalterauditpolicy, TBaseType.rrw_alter, "audit", "policy", " ", " ", " ", " ");
4600        addhanacmds(ESqlStatementType.sstaltercredential, TBaseType.rrw_alter, "credential", " ", " ", " ", " ", " ");
4601        addhanacmds(ESqlStatementType.sstalterdatabase, TBaseType.rrw_alter, "database", " ", " ", " ", " ", " ");
4602        addhanacmds(ESqlStatementType.sstalterfulltextindex, TBaseType.rrw_alter, "fulltext", "index", " ", " ", " ", " ");
4603        addhanacmds(ESqlStatementType.sstalterfunction, TBaseType.rrw_alter, "function", " ", " ", " ", " ", " ");
4604        addhanacmds(ESqlStatementType.sstalterindex, TBaseType.rrw_alter, "index", " ", " ", " ", " ", " ");
4605        addhanacmds(ESqlStatementType.sstalterldapprovider, TBaseType.rrw_alter, "ldap", "provider", " ", " ", " ", " ");
4606        addhanacmds(ESqlStatementType.sstalterjwtprovider, TBaseType.rrw_alter, "jwt", "provider", " ", " ", " ", " ");
4607        addhanacmds(ESqlStatementType.sstalterpse, TBaseType.rrw_alter, "pse", " ", " ", " ", " ", " ");
4608        addhanacmds(ESqlStatementType.sstalterprocedure, TBaseType.rrw_alter, "procedure", " ", " ", " ", " ", " ");
4609        addhanacmds(ESqlStatementType.sstalterremotesource, TBaseType.rrw_alter, "remote", "source", " ", " ", " ", " ");
4610        addhanacmds(ESqlStatementType.sstAlterRole, TBaseType.rrw_alter, "role", " ", " ", " ", " ", " ");
4611        addhanacmds(ESqlStatementType.sstaltersamlprovider, TBaseType.rrw_alter, "saml", "provider", " ", " ", " ", " ");
4612        addhanacmds(ESqlStatementType.sstaltersequence, TBaseType.rrw_alter, "sequence", " ", " ", " ", " ", " ");
4613        addhanacmds(ESqlStatementType.sstalterstatistics, TBaseType.rrw_alter, "statistics", " ", " ", " ", " ", " ");
4614        addhanacmds(ESqlStatementType.sstalterstructuredprivilege, TBaseType.rrw_alter, "structured", "privilege", " ", " ", " ", " ");
4615        addhanacmds(ESqlStatementType.sstaltersystem, TBaseType.rrw_alter, "system", " ", " ", " ", " ", " ");
4616        addhanacmds(ESqlStatementType.sstaltertable, TBaseType.rrw_alter, "table", " ", " ", " ", " ", " ");
4617        addhanacmds(ESqlStatementType.sstalteruser, TBaseType.rrw_alter, "user", " ", " ", " ", " ", " ");
4618        addhanacmds(ESqlStatementType.sstalterusergroup, TBaseType.rrw_alter, "usergroup", " ", " ", " ", " ", " ");
4619        addhanacmds(ESqlStatementType.sstalterview, TBaseType.rrw_alter, "view", " ", " ", " ", " ", " ");
4620        addhanacmds(ESqlStatementType.sstalterviewcache, TBaseType.rrw_alter, "view", "cache", " ", " ", " ", " ");
4621        addhanacmds(ESqlStatementType.sstaltervirtualtable, TBaseType.rrw_alter, "virtual", "table", " ", " ", " ", " ");
4622        addhanacmds(ESqlStatementType.sstalterworkloadclass, TBaseType.rrw_alter, "workload", "class", " ", " ", " ", " ");
4623        addhanacmds(ESqlStatementType.sstalterworkloadmapping, TBaseType.rrw_alter, "workload", "mapping", " ", " ", " ", " ");
4624
4625//backup
4626        addhanacmds(ESqlStatementType.sstbackupcancel, TBaseType.rrw_backup,"cancel"," "," "," "," "," ");
4627        addhanacmds(ESqlStatementType.sstbackupcatalogdelete, TBaseType.rrw_backup, "catalog", "delete", " ", " ", " ", " ");
4628        addhanacmds(ESqlStatementType.sstbackupcheck, TBaseType.rrw_backup,"check"," "," "," "," "," ");
4629        addhanacmds(ESqlStatementType.sstbackupcheckaccess, TBaseType.rrw_backup, "check", "access", " ", " ", " ", " ");
4630        addhanacmds(ESqlStatementType.sstbackupdata, TBaseType.rrw_backup, "data", " ", " ", " ", " ", " ");
4631        addhanacmds(ESqlStatementType.sstbackuplistdata, TBaseType.rrw_backup, "list", "data", " ", " ", " ", " ");
4632
4633        addhanacmds(ESqlStatementType.sstcall, TBaseType.rrw_call, " ", " ", " ", " ", " ", " ");
4634
4635//commit
4636        addhanacmds(ESqlStatementType.sstcomment, TBaseType.rrw_comment, "on", " ", " ", " ", " ", " ");
4637        addhanacmds(ESqlStatementType.sstcommit, TBaseType.rrw_commit, " ", " ", " ", " ", " ", " ");
4638        addhanacmds(ESqlStatementType.sstconnect, TBaseType.rrw_connect, " ", " ", " ", " ", " ", " ");
4639
4640//create
4641        addhanacmds(ESqlStatementType.sstcreateauditpolicy, TBaseType.rrw_create, "audit", "policy", " ", " ", " ", " ");
4642        addhanacmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create, "btree", "index", " ", " ", " ", " ");
4643        addhanacmds(ESqlStatementType.sstcreatecertificate, TBaseType.rrw_create, "certificate", " ", " ", " ", " ", " ");
4644        addhanacmds(ESqlStatementType.sstcreatecollection, TBaseType.rrw_create, "collection", " ", " ", " ", " ", " ");
4645        addhanacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "column", "table", " ", " ", " ", " ");
4646        addhanacmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create, "cpbtree", "index", " ", " ", " ", " ");
4647        addhanacmds(ESqlStatementType.sstcreatecredential, TBaseType.rrw_create, "credential", " ", " ", " ", " ", " ");
4648        addhanacmds(ESqlStatementType.sstcreatedatabase, TBaseType.rrw_create, "database", " ", " ", " ", " ", " ");
4649        addhanacmds(ESqlStatementType.sstcreatefulltextindex, TBaseType.rrw_create, "fulltext", "index", " ", " ", " ", " ");
4650        addhanacmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create, "function", " ", " ", " ", " ", " ");
4651        addhanacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "global", "temporary", "column", "table", " ", " ");
4652        addhanacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"global","temporary","table"," "," "," ");
4653        addhanacmds(ESqlStatementType.sstcreategraphworkspace, TBaseType.rrw_create, "graph", "workspace", " ", " ", " ", " ");
4654        addhanacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"history","column","table"," "," "," ");
4655        addhanacmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create, "index", " ", " ", " ", " ", " ");
4656        addhanacmds(ESqlStatementType.sstcreateJWTProvider, TBaseType.rrw_create, "jwt", "provider", " ", " ", " ", " ");
4657        addhanacmds(ESqlStatementType.sstcreateLDAPProvider, TBaseType.rrw_create, "ldap", "provider", " ", " ", " ", " ");
4658        addhanacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"local","temporary","column","table"," "," ");
4659        addhanacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "local", "temporary", "table", " ", " ", " ");
4660        addhanacmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create, "or", "replace", "force", "editionable", "view", " ");
4661        addhanacmds(ESqlStatementType.sstcreatesynonym, TBaseType.rrw_create, "or", "replace", "public", "synonym", " ", " ");
4662        addhanacmds(ESqlStatementType.sstcreatesynonym, TBaseType.rrw_create, "or", "replace", "synonym", " ", " ", " ");
4663        addhanacmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create, "or", "replace", "view", " ", " ", " ");
4664        addhanacmds(ESqlStatementType.sstcreateprocedure, TBaseType.rrw_create, "procedure", " ", " ", " ", " ", " ");
4665        addhanacmds(ESqlStatementType.sstcreatepse, TBaseType.rrw_create, "pse", " ", " ", " ", " ", " ");
4666        addhanacmds(ESqlStatementType.sstcreatesynonym, TBaseType.rrw_create, "public", "synonym", " ", " ", " ", " ");
4667        addhanacmds(ESqlStatementType.sstcreateremotesource, TBaseType.rrw_create, "remote", "source", " ", " ", " ", " ");
4668        addhanacmds(ESqlStatementType.sstcreateuser, TBaseType.rrw_create, "restricted", "user", " ", " ", " ", " ");
4669        addhanacmds(ESqlStatementType.sstcreaterole, TBaseType.rrw_create, "role", " ", " ", " ", " ", " ");
4670        addhanacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "row", "table", " ", " ", " ", " ");
4671        addhanacmds(ESqlStatementType.sstcreatesamlprovider, TBaseType.rrw_create, "saml", "provider", " ", " ", " ", " ");
4672        addhanacmds(ESqlStatementType.sstcreateschema, TBaseType.rrw_create, "schema", " ", " ", " ", " ", " ");
4673        addhanacmds(ESqlStatementType.sstcreatesequence, TBaseType.rrw_create, "sequence", " ", " ", " ", " ", " ");
4674        addhanacmds(ESqlStatementType.sstcreatestatistics, TBaseType.rrw_create, "statistics", " ", " ", " ", " ", " ");
4675        addhanacmds(ESqlStatementType.sstcreatestructuredprivilege, TBaseType.rrw_create, "structured", "privilege", " ", " ", " ", " ");
4676        addhanacmds(ESqlStatementType.sstcreatesynonym, TBaseType.rrw_create, "synonym", " ", " ", " ", " ", " ");
4677        addhanacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "table", " ", " ", " ", " ", " ");
4678        addhanacmds(ESqlStatementType.sstcreatetrigger, TBaseType.rrw_create, "trigger", " ", " ", " ", " ", " ");
4679        addhanacmds(ESqlStatementType.sstcreatetype, TBaseType.rrw_create, "type", " ", " ", " ", " ", " ");
4680        addhanacmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create, "unique", "index", " ", " ", " ", " ");
4681        addhanacmds(ESqlStatementType.sstcreateuser, TBaseType.rrw_create, "user", " ", " ", " ", " ", " ");
4682        addhanacmds(ESqlStatementType.sstcreateusergroup, TBaseType.rrw_create, "usergroup", " ", " ", " ", " ", " ");
4683        addhanacmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create, "view", " ", " ", " ", " ", " ");
4684        addhanacmds(ESqlStatementType.sstcreatevirtualfunction, TBaseType.rrw_create, "virtual", "function", " ", " ", " ", " ");
4685        addhanacmds(ESqlStatementType.sstcreatevirtualtable, TBaseType.rrw_create, "virtual", "table", " ", " ", " ", " ");
4686        addhanacmds(ESqlStatementType.sstcreateworkloadclass, TBaseType.rrw_create, "workload", "class", " ", " ", " ", " ");
4687        addhanacmds(ESqlStatementType.sstcreateworkloadmapping, TBaseType.rrw_create, "workload", "mapping", " ", " ", " ", " ");
4688
4689//DELETE
4690        addhanacmds(ESqlStatementType.sstdelete, TBaseType.rrw_delete, " ", " ", " ", " ", " ", " ");
4691
4692        addhanacmds(ESqlStatementType.sstdobeginend, TBaseType.rrw_do, "begin", " ", " ", " ", " ", " ");
4693
4694//drop
4695        addhanacmds(ESqlStatementType.sstdropauditpolicy, TBaseType.rrw_drop, "audit", "policy", " ", " ", " ", " ");
4696        addhanacmds(ESqlStatementType.sstdropcertificate, TBaseType.rrw_drop, "certificate", " ", " ", " ", " ", " ");
4697        addhanacmds(ESqlStatementType.sstdropcollection, TBaseType.rrw_drop, "collection", " ", " ", " ", " ", " ");
4698        addhanacmds(ESqlStatementType.sstdropcredential, TBaseType.rrw_drop, "credential", " ", " ", " ", " ", " ");
4699        addhanacmds(ESqlStatementType.sstdropdatabase, TBaseType.rrw_drop, "database", " ", " ", " ", " ", " ");
4700        addhanacmds(ESqlStatementType.sstdropfulltextindex, TBaseType.rrw_drop, "fulltext", "index", " ", " ", " ", " ");
4701        addhanacmds(ESqlStatementType.sstdropfunction, TBaseType.rrw_drop, "function", " ", " ", " ", " ", " ");
4702        addhanacmds(ESqlStatementType.sstdropgraphworkspace, TBaseType.rrw_drop, "graph", "workspace", " ", " ", " ", " ");
4703        addhanacmds(ESqlStatementType.sstdropindex, TBaseType.rrw_drop, "index", " ", " ", " ", " ", " ");
4704        addhanacmds(ESqlStatementType.sstdropJWTProvider, TBaseType.rrw_drop, "jwt", "provider", " ", " ", " ", " ");
4705        addhanacmds(ESqlStatementType.sstdropLDAPProvider, TBaseType.rrw_drop, "ldap", "provider", " ", " ", " ", " ");
4706        addhanacmds(ESqlStatementType.sstdropprocedure, TBaseType.rrw_drop, "procedure", " ", " ", " ", " ", " ");
4707        addhanacmds(ESqlStatementType.sstdroppse, TBaseType.rrw_drop, "pse", " ", " ", " ", " ", " ");
4708        addhanacmds(ESqlStatementType.sstdropsynonym, TBaseType.rrw_drop, "public", "synonym", " ", " ", " ", " ");
4709        addhanacmds(ESqlStatementType.sstdropremotesource, TBaseType.rrw_drop, "remote", "source", " ", " ", " ", " ");
4710        addhanacmds(ESqlStatementType.sstdroprole, TBaseType.rrw_drop, "role", " ", " ", " ", " ", " ");
4711        addhanacmds(ESqlStatementType.sstdropsamlprovider, TBaseType.rrw_drop, "saml", "provider", " ", " ", " ", " ");
4712        addhanacmds(ESqlStatementType.sstdropschema, TBaseType.rrw_drop, "schema", " ", " ", " ", " ", " ");
4713        addhanacmds(ESqlStatementType.sstdropsequence, TBaseType.rrw_drop, "sequence", " ", " ", " ", " ", " ");
4714        addhanacmds(ESqlStatementType.sstdropstatistics, TBaseType.rrw_drop, "statistics", " ", " ", " ", " ", " ");
4715        addhanacmds(ESqlStatementType.sstdropstructuredprivilege, TBaseType.rrw_drop, "structured", "privilege", " ", " ", " ", " ");
4716        addhanacmds(ESqlStatementType.sstdropsynonym, TBaseType.rrw_drop, "synonym", " ", " ", " ", " ", " ");
4717        addhanacmds(ESqlStatementType.sstdroptable, TBaseType.rrw_drop, "table", " ", " ", " ", " ", " ");
4718        addhanacmds(ESqlStatementType.sstdroptrigger, TBaseType.rrw_drop, "trigger", " ", " ", " ", " ", " ");
4719        addhanacmds(ESqlStatementType.sstdroptype, TBaseType.rrw_drop, "type", " ", " ", " ", " ", " ");
4720        addhanacmds(ESqlStatementType.sstdropuser, TBaseType.rrw_drop, "user", " ", " ", " ", " ", " ");
4721        addhanacmds(ESqlStatementType.sstdropusergroup, TBaseType.rrw_drop, "usergroup", " ", " ", " ", " ", " ");
4722        addhanacmds(ESqlStatementType.sstdropview, TBaseType.rrw_drop, "view", " ", " ", " ", " ", " ");
4723        addhanacmds(ESqlStatementType.sstdropworkloadclass, TBaseType.rrw_drop, "workload", "class", " ", " ", " ", " ");
4724        addhanacmds(ESqlStatementType.sstdropworkloadmapping, TBaseType.rrw_drop, "workload", "mapping", " ", " ", " ", " ");
4725
4726        addhanacmds(ESqlStatementType.sstExplain, TBaseType.rrw_explain, "plan", " ", " ", " ", " ", " ");
4727        addhanacmds(ESqlStatementType.sstexport, TBaseType.rrw_hana_export, " ", " ", " ", " ", " ", " ");
4728
4729//GRANT
4730        addhanacmds(ESqlStatementType.sstGrant, TBaseType.rrw_grant, " ", " ", " ", " ", " ", " ");
4731
4732        addhanacmds(ESqlStatementType.sstimport, TBaseType.rrw_hana_import, " ", " ", " ", " ", " ", " ");
4733        addhanacmds(ESqlStatementType.sstimportfrom, TBaseType.rrw_hana_import, "from", " ", " ", " ", " ", " ");
4734        addhanacmds(ESqlStatementType.sstimportscan, TBaseType.rrw_hana_import, "scan", " ", " ", " ", " ", " ");
4735
4736//insert
4737        addhanacmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert, " ", " ", " ", " ", " ", " ");
4738
4739//
4740        addhanacmds(ESqlStatementType.sstload, TBaseType.rrw_load, " ", " ", " ", " ", " ", " ");
4741        addhanacmds(ESqlStatementType.sstlocktable, TBaseType.rrw_lock, "table", " ", " ", " ", " ", " ");
4742
4743        addhanacmds(ESqlStatementType.sstmerge, TBaseType.rrw_merge, "into", " ", " ", " ", " ", " ");
4744
4745        addhanacmds(ESqlStatementType.sstmergedelta, TBaseType.rrw_merge, "delta", " ", " ", " ", " ", " ");
4746        addhanacmds(ESqlStatementType.sstmergedelta, TBaseType.rrw_merge,"history","delta"," "," "," "," ");
4747
4748        addhanacmds(ESqlStatementType.sstrecoverdata, TBaseType.rrw_hana_recover,"data"," "," "," "," "," ");
4749        addhanacmds(ESqlStatementType.sstrecoverdatabase, TBaseType.rrw_hana_recover, "database", " ", " ", " ", " ", " ");
4750        addhanacmds(ESqlStatementType.sstrefreshstatistics, TBaseType.rrw_refresh, "statistics", " ", " ", " ", " ", " ");
4751        addhanacmds(ESqlStatementType.sstrenamecollection, TBaseType.rrw_rename,"collection"," "," "," "," "," ");
4752        addhanacmds(ESqlStatementType.sstrenamecolumn, TBaseType.rrw_rename,"column"," "," "," "," "," ");
4753        addhanacmds(ESqlStatementType.sstrenamedatabase, TBaseType.rrw_rename,"database"," "," "," "," "," ");
4754        addhanacmds(ESqlStatementType.sstrenameindex, TBaseType.rrw_rename,"index"," "," "," "," "," ");
4755        addhanacmds(ESqlStatementType.sstrenametable, TBaseType.rrw_rename,"table"," "," "," "," "," ");
4756        addhanacmds(ESqlStatementType.sstreplace, TBaseType.rrw_replace, " ", " ", " ", " ", " ", " ");
4757
4758        addhanacmds(ESqlStatementType.sstRevoke, TBaseType.rrw_revoke, " ", " ", " ", " ", " ", " ");
4759
4760        addhanacmds(ESqlStatementType.sstrollback, TBaseType.rrw_rollback, " ", " ", " ", " ", " ", " ");
4761
4762        addhanacmds(ESqlStatementType.sstsavepoint, TBaseType.rrw_savepoint, " ", " ", " ", " ", " ", " ");
4763//SELECT
4764        addhanacmds(ESqlStatementType.sstselect, TBaseType.rrw_select, " ", " ", " ", " ", " ", " ");
4765
4766//SET
4767        addhanacmds(ESqlStatementType.sstset, TBaseType.rrw_set, " ", " ", " ", " ", " ", " ");
4768        addhanacmds(ESqlStatementType.sssethistorysession, TBaseType.rrw_set, "history", "session", " ", " ", " ", " ");
4769        addhanacmds(ESqlStatementType.sstsetpse, TBaseType.rrw_set, "pse", " ", " ", " ", " ", " ");
4770        addhanacmds(ESqlStatementType.sstsetschema, TBaseType.rrw_set, "schema", " ", " ", " ", " ", " ");
4771        addhanacmds(ESqlStatementType.sstsetsystemlicense, TBaseType.rrw_set, "system", "license", " ", " ", " ", " ");
4772        addhanacmds(ESqlStatementType.sstsettransaction, TBaseType.rrw_set, "transaction", " ", " ", " ", " ", " ");
4773        addhanacmds(ESqlStatementType.sstsettransactionautocommit, TBaseType.rrw_set, "transaction", "autocommit", " ", " ", " ", " ");
4774
4775        addhanacmds(ESqlStatementType.sstStartTransaction, TBaseType.rrw_start, "transaction", " ", " ", " ", " ", " ");
4776
4777
4778//TRUNCATE TABLE
4779        addhanacmds(ESqlStatementType.ssttruncatecollection, TBaseType.rrw_truncate, "collection", " ", " ", " ", " ", " ");
4780        addhanacmds(ESqlStatementType.ssttruncatetable, TBaseType.rrw_truncate, "table", " ", " ", " ", " ", " ");
4781        addhanacmds(ESqlStatementType.sstunload, TBaseType.rrw_hana_unload, " ", " ", " ", " ", " ", " ");
4782        addhanacmds(ESqlStatementType.sstunset, TBaseType.rrw_hana_unset, " ", " ", " ", " ", " ", " ");
4783        addhanacmds(ESqlStatementType.sstunsetpse, TBaseType.rrw_hana_unset, "pse", " ", " ", " ", " ", " ");
4784        addhanacmds(ESqlStatementType.sstunsetsystemlicense, TBaseType.rrw_hana_unset, "system", "license", " ", " ", " ", " ");
4785
4786//UPDATE
4787        addhanacmds(ESqlStatementType.sstupdate, TBaseType.rrw_update, " ", " ", " ", " ", " ", " ");
4788
4789        addhanacmds(ESqlStatementType.sstupsert, TBaseType.rrw_hana_upsert, " ", " ", " ", " ", " ", " ");
4790        addhanacmds(ESqlStatementType.sstvalidateLDAPProvider, TBaseType.rrw_hana_validate, "ldap", "provider", " ", " ", " ", " ");
4791        addhanacmds(ESqlStatementType.sstvalidateUser, TBaseType.rrw_hana_validate, "user", " ", " ", " ", " ", " ");
4792
4793    }
4794
4795ESqlStatementType findsybasecmd(TSourceToken ptoken){
4796    if (sybasecmds.size() == 0) {initsybasecmds();}
4797    return finddbcmd(ptoken,sybasecmds);
4798}
4799
4800    ESqlStatementType findmssqlcmd(TSourceToken ptoken){
4801        if (mssqlcmds.size() == 0) {initmssqlcmds();}
4802        return finddbcmd(ptoken,mssqlcmds);
4803    }
4804
4805    ESqlStatementType findteradatacmd(TSourceToken ptoken){
4806    if (teradatacmds.size() == 0) {initteradatacmds();}
4807    return finddbcmd(ptoken,teradatacmds);
4808}
4809
4810ESqlStatementType findpostgresqlcmd(TSourceToken ptoken){
4811    if (postgresqlcmds.size() == 0) {initpostgresqlcmds();}
4812    return finddbcmd(ptoken,postgresqlcmds);
4813}
4814
4815    ESqlStatementType findredshiftcmd(TSourceToken ptoken){
4816        if (redshiftcmds.size() == 0) {initredshiftcmds();}
4817        return finddbcmd(ptoken,redshiftcmds);
4818    }
4819
4820
4821    ESqlStatementType findgreenplumcmd(TSourceToken ptoken){
4822    if (greenplumcmds.size() == 0) {initgreenplumcmds();}
4823    return finddbcmd(ptoken,greenplumcmds);
4824}
4825
4826
4827ESqlStatementType findnetezzacmd(TSourceToken ptoken){
4828    if (netezzacmds.size() == 0) {initnetezzacmds();}
4829    return finddbcmd(ptoken,netezzacmds);
4830}
4831
4832ESqlStatementType findsparksqlcmd(TSourceToken ptoken){
4833        if (sparksqlcmds.size() == 0) {initsparksqlcmds();}
4834        return finddbcmd(ptoken,sparksqlcmds);
4835    }
4836
4837ESqlStatementType finddatabrickscmd(TSourceToken ptoken){
4838    if (databrickscmds.size() == 0) {initdatabrickscmds();}
4839    return finddbcmd(ptoken,databrickscmds);
4840}
4841    ESqlStatementType findgaussdbcmd(TSourceToken ptoken){
4842        if (gaussdbcmds.size() == 0) {initgaussdbcmds();}
4843        return finddbcmd(ptoken,gaussdbcmds);
4844    }
4845ESqlStatementType findprestocmd(TSourceToken ptoken){
4846    if (prestocmds.size() == 0) {initprestocmds();}
4847    return finddbcmd(ptoken,prestocmds);
4848}
4849
4850ESqlStatementType findathenacmd(TSourceToken ptoken){
4851    if (athenacmds.size() == 0) {initathenacmds();}
4852    return finddbcmd(ptoken,athenacmds);
4853}
4854
4855ESqlStatementType findmysqlcmd(TSourceToken ptoken){
4856    if (mysqlcmds.size() == 0) {initmysqlcmds();}
4857    return finddbcmd(ptoken,mysqlcmds);
4858}
4859
4860ESqlStatementType findhivecmd(TSourceToken ptoken){
4861        if (hivecmds.size() == 0) {inithivecmds();}
4862        return finddbcmd(ptoken,hivecmds);
4863    }
4864
4865ESqlStatementType finddb2cmd(TSourceToken ptoken){
4866            if (db2cmds.size() == 0) {initdb2cmds();}
4867            return finddbcmd(ptoken,db2cmds);
4868        }
4869
4870
4871ESqlStatementType findoraclecmd(TSourceToken ptoken){
4872            if (oraclecmds.size() == 0) {initoraclecmds();}
4873            return finddbcmd(ptoken,oraclecmds);
4874        }
4875
4876ESqlStatementType findmdxcmd(TSourceToken ptoken){
4877                    if (mdxcmds.size() == 0) {initmdxcmds();}
4878                    return finddbcmd(ptoken,mdxcmds);
4879                }
4880
4881ESqlStatementType findinformixcmd(TSourceToken ptoken){
4882                    if (informixcmds.size() == 0) {initinformixcmds();}
4883                    return finddbcmd(ptoken,informixcmds);
4884                }
4885
4886ESqlStatementType findhanacmd(TSourceToken ptoken){
4887    if (hanacmds.size() == 0) {inithanacmds();}
4888    return finddbcmd(ptoken,hanacmds);
4889}
4890
4891ESqlStatementType findverticacmd(TSourceToken ptoken){
4892    if (verticacmds.size() == 0) {initverticacmds();}
4893    return finddbcmd(ptoken,verticacmds);
4894}
4895
4896ESqlStatementType findcouchbasecmd(TSourceToken ptoken){
4897    if (couchbasecmds.size() == 0) {initcouchbasecmds();}
4898    return finddbcmd(ptoken,couchbasecmds);
4899}
4900
4901ESqlStatementType findsnowflakecmd(TSourceToken ptoken){
4902    if (snowflakecmds.size() == 0) {initsnowflakecmds();}
4903    return finddbcmd(ptoken,snowflakecmds);
4904}
4905
4906ESqlStatementType findbigquerycmd(TSourceToken ptoken){
4907    if (bigquerycmds.size() == 0) {initbigquerycmds();}
4908    return finddbcmd(ptoken,bigquerycmds);
4909}
4910
4911TCustomSqlStatement isnetezza(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
4912    TCustomSqlStatement ret = null;
4913
4914    gnewsqlstatementtype = ESqlStatementType.sstinvalid;
4915
4916    if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
4917       || (pcst.tokencode  == TBaseType.cmtslashstar)
4918       || (pcst.tokencode  == TBaseType.lexspace)
4919       || (pcst.tokencode  == TBaseType.lexnewline)
4920        || (pcst.tokentype == ETokenType.ttsemicolon) )
4921    {
4922      return null;
4923    }
4924
4925    int lcpos = pcst.posinlist;
4926    TSourceTokenList lcsourcetokenlist = pcst.container;
4927    TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
4928
4929    //subquery after semicolon or at first line
4930    if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
4931      {
4932        int k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
4933        if ( k >0 )
4934          {
4935            ret = new TSelectSqlStatement(pdbvendor);
4936          }
4937
4938          k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_with,1,"("); // ( with
4939          if ( k >0 )
4940          {
4941              ret = new TSelectSqlStatement(pdbvendor);
4942          }
4943
4944        return ret;
4945      }
4946
4947    //cte
4948    if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
4949      {
4950        ret = findcte(pcst,pdbvendor);
4951        if ( (ret != null) )  return ret;
4952      }
4953
4954    gnewsqlstatementtype = findnetezzacmd(pcst);
4955
4956    TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
4957    switch (gnewsqlstatementtype) {    //
4958        case sstinvalid:
4959          {
4960            ret = null;
4961
4962            if ( pstate == EFindSqlStateType.stnormal )
4963              {
4964              }
4965              break;
4966          }
4967        case sstselect:
4968          {
4969            boolean lcisnewsql = true;
4970
4971            if ( pstate != EFindSqlStateType.stnormal )
4972              {
4973                // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
4974                if ( (lcprevsolidtoken != null) )
4975                  {
4976                    if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
4977                      lcisnewsql = false; //subqery
4978                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
4979                      lcisnewsql = false;
4980                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
4981                      lcisnewsql = false;
4982                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
4983                      lcisnewsql = false;
4984                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
4985                      lcisnewsql = false;
4986                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
4987                      lcisnewsql = false;
4988                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
4989                      {
4990                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
4991                          lcisnewsql = false;
4992                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
4993                          lcisnewsql = false;
4994                      }
4995
4996                    if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
4997                      {
4998                        TSourceToken lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
4999                        if ( (lcpprevsolidtoken != null) )
5000                          {
5001                            if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
5002                              lcisnewsql = false;
5003                          }
5004                      }
5005
5006                  }
5007
5008
5009                if ( (lccurrentsqlstatement != null) )
5010                  {
5011                    if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
5012                      lcisnewsql = false;
5013                  }
5014
5015              }
5016
5017            if ( lcisnewsql )
5018              ret = new TSelectSqlStatement(pdbvendor);
5019
5020            break;
5021          }
5022        case sstinsert:
5023          {
5024            boolean lcisnewsql = true;
5025            if ( pstate != EFindSqlStateType.stnormal )
5026              {
5027                if ( (lccurrentsqlstatement != null) )
5028                  {
5029
5030                  }
5031              }
5032
5033            if ( lcisnewsql )
5034              ret = new TInsertSqlStatement(pdbvendor);
5035
5036            break;
5037          }
5038        case sstupdate:
5039          {
5040            boolean lcisnewsql = true;
5041            if ( pstate != EFindSqlStateType.stnormal )
5042              {
5043                lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
5044                if ( (lcprevsolidtoken != null) )
5045                  { //
5046                    if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
5047                      lcisnewsql = false;
5048                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
5049                      lcisnewsql = false;
5050                  }
5051
5052                TSourceToken lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
5053                if ( (lcnextsolidtoken != null) )
5054                  {
5055                    if ( lcnextsolidtoken.tokentype == ETokenType.ttleftparenthesis)
5056                      {
5057                        int k = lcsourcetokenlist.solidtokenafterpos(lcnextsolidtoken.posinlist,TBaseType.rrw_select,1,"(");
5058                        if ( k  == 0 ) lcisnewsql = false;
5059                      }
5060                  }
5061
5062
5063                if ( (lccurrentsqlstatement != null) )
5064                  {
5065                  }
5066              }
5067
5068            if ( lcisnewsql )
5069              {
5070                ret = new TUpdateSqlStatement(pdbvendor);
5071                ret.dummytag = 1; // means set clause in update is not found yet, used to seperate set clause from set statement
5072              }
5073            break;
5074          }
5075        case sstdelete:
5076          {
5077            boolean lcisnewsql = true;
5078
5079            if ( pstate != EFindSqlStateType.stnormal )
5080              {
5081                lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
5082                if ( (lcprevsolidtoken != null) )
5083                  {
5084                    if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
5085                      lcisnewsql = false;
5086                  }
5087
5088                if ( (lccurrentsqlstatement != null) )
5089                  {
5090                  }
5091              }
5092
5093            if ( lcisnewsql )
5094              ret = new TDeleteSqlStatement(pdbvendor);
5095
5096            break;
5097          }
5098        case sstTruncate:
5099          {
5100            ret = new TTruncateStatement(pdbvendor);
5101            ret.sqlstatementtype = gnewsqlstatementtype;
5102            break;
5103          }
5104        case sstcreatetable:
5105        case sstnetezzaCreateExternalTable:
5106          {
5107            ret = new TCreateTableSqlStatement(pdbvendor);
5108            break;
5109          }
5110        case sstcreateview:
5111          {
5112            ret = new TCreateViewSqlStatement(pdbvendor);
5113              break;
5114          }
5115        case sstcreatematerializedview:{
5116            ret = new TCreateMaterializedSqlStatement(pdbvendor);
5117            break;
5118        }
5119        case sstcreatedatabase:
5120          {
5121            ret = new TCreateDatabaseSqlStatement(pdbvendor);
5122              break;
5123          }
5124        case sstdroptable:
5125          {
5126            ret = new TDropTableSqlStatement(pdbvendor);
5127              break;
5128          }
5129        case sstdropview:
5130          {
5131           ret = new TDropViewSqlStatement(pdbvendor);
5132              break;
5133          }
5134        case sstaltertable:
5135          {
5136            ret = new TAlterTableStatement(pdbvendor);
5137              break;
5138          }
5139        case sstaltersession:
5140          {
5141            ret = new TAlterSessionStatement(pdbvendor);
5142              break;
5143          }
5144        case sstnetezzaGroomTable:
5145        {
5146            ret = new TNetezzaGroomTable(pdbvendor);
5147            break;
5148        }
5149        case sstnetezzaGenerateStatistics:
5150        {
5151            ret = new TNetezzaGenerateStatistics(pdbvendor);
5152            break;
5153        }
5154        case sstnetezzaAlterTable:
5155        {
5156            ret = new TAlterTableStatement(pdbvendor);
5157            break;
5158        }
5159        case sstnetezzaDropSchema:
5160        {
5161            ret = new TDropSchemaSqlStatement(pdbvendor);
5162            break;
5163        }
5164        case sstnetezzaCreateUser:
5165        {
5166            ret = new TCreateUserStmt(pdbvendor);
5167            break;
5168        }
5169        case sstnetezzaAlterView:
5170        {
5171            ret = new TAlterViewStatement(pdbvendor);
5172            break;
5173        }
5174        case sstnetezzaAlterDatabase:
5175        {
5176            ret = new TAlterDatabaseStmt(pdbvendor);
5177            break;
5178        }
5179        case sstAlterSchema:
5180        {
5181            ret = new TAlterSchemaStmt(pdbvendor);
5182            break;
5183        }
5184        case sstAlterSynonym:
5185        {
5186            ret = new TAlterSynonymStmt(pdbvendor);
5187            break;
5188        }
5189        case sstnetezzaDropTable:
5190        {
5191            ret = new TDropTableSqlStatement(pdbvendor);
5192            break;
5193        }
5194        case sstnetezzaDropView:
5195        {
5196            ret = new TDropViewSqlStatement(pdbvendor);
5197            break;
5198        }
5199        case sstmerge:
5200        {
5201            ret = new TMergeSqlStatement(pdbvendor);
5202            break;
5203        }
5204        case sstdropprocedure:
5205        {
5206            ret = new TDropProcedureStmt(pdbvendor);
5207            break;
5208        }
5209        case sstdropsynonym:
5210            ret = new TDropSynonymStmt(pdbvendor);
5211            break;
5212        case sstdropdatabase:
5213            ret = new TDropDatabaseStmt(pdbvendor);
5214            break;
5215        case sstcall:
5216            ret = new TCallStatement(pdbvendor);
5217            break;
5218        case sstcreatesynonym:
5219            ret = new TCreateSynonymStmt(pdbvendor);
5220            break;
5221        case sstcreatesequence:
5222            ret = new TCreateSequenceStmt(pdbvendor);
5223            break;
5224        case sstnetezzaDropSequence:
5225            ret = new TDropSequenceStmt(pdbvendor);
5226            break;
5227        case sstnetezzaGrant:
5228            ret = new TGrantStmt(pdbvendor);
5229            break;
5230        case sstexecutestmt:
5231            ret = new TExecuteSqlStatement(pdbvendor);
5232            break;
5233        case sstlocktable:
5234            ret = new TLockTableStmt(pdbvendor);
5235            break;
5236        case sstnetezzaComment:
5237            ret = new TCommentOnSqlStmt(pdbvendor);
5238            break;
5239        case sstcreateprocedure:
5240            ret = new TCreateProcedureStmt(pdbvendor);
5241            break;
5242        case sstnetezzaCopy:
5243            ret = new TCopyStmt(pdbvendor);
5244            break;
5245        case sstExplain:
5246            ret = new TExplainPlan(pdbvendor);
5247            break;
5248        case sstSetCatalog:
5249            ret = new TSetCatalogStmt(pdbvendor);
5250            break;
5251        case sstSetSchema:
5252            ret = new TSetSchemaStmt(pdbvendor);
5253            break;
5254        case sstnetezzaCommit:
5255        case sstnetezzaRollback:
5256        case sstnetezzaRevoke:
5257        default:
5258          {
5259            ret = new TUnknownSqlStatement(pdbvendor);
5260            ret.sqlstatementtype = gnewsqlstatementtype;
5261            break;
5262          }
5263    }    // case
5264
5265    return ret;
5266}
5267
5268    TCustomSqlStatement isredshift(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
5269        TCustomSqlStatement ret = null;
5270
5271        gnewsqlstatementtype = ESqlStatementType.sstinvalid;
5272
5273        if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
5274                || (pcst.tokencode  == TBaseType.cmtslashstar)
5275                || (pcst.tokencode  == TBaseType.lexspace)
5276                || (pcst.tokencode  == TBaseType.lexnewline)
5277                || (pcst.tokentype == ETokenType.ttsemicolon) )
5278        {
5279            return null;
5280        }
5281
5282        int lcpos = pcst.posinlist;
5283        TSourceTokenList lcsourcetokenlist = pcst.container;
5284        TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
5285
5286        //subquery after semicolon or at first line
5287        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
5288        {
5289            int k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
5290            if ( k >0 )
5291            {
5292                ret = new TSelectSqlStatement(pdbvendor);
5293            }
5294
5295            return ret;
5296        }
5297
5298        //cte
5299        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
5300        {
5301            ret = findcte(pcst,pdbvendor);
5302            if ( (ret != null) )  return ret;
5303        }
5304
5305        gnewsqlstatementtype = findredshiftcmd(pcst);
5306
5307        TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
5308        switch (gnewsqlstatementtype) {    //
5309            case sstinvalid:
5310            {
5311                ret = null;
5312                break;
5313            }
5314            case sstselect:
5315            {
5316                boolean lcisnewsql = true;
5317
5318                if ( pstate != EFindSqlStateType.stnormal )
5319                {
5320                    // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
5321                    if ( (lcprevsolidtoken != null) )
5322                    {
5323                        if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
5324                            lcisnewsql = false; //subqery
5325                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
5326                            lcisnewsql = false;
5327                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
5328                            lcisnewsql = false;
5329                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
5330                            lcisnewsql = false;
5331                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
5332                            lcisnewsql = false;
5333                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
5334                            lcisnewsql = false;
5335                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
5336                        {
5337                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
5338                                lcisnewsql = false;
5339                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
5340                                lcisnewsql = false;
5341                        }
5342
5343                        if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
5344                        {
5345                            TSourceToken lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
5346                            if ( (lcpprevsolidtoken != null) )
5347                            {
5348                                if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
5349                                    lcisnewsql = false;
5350                            }
5351                        }
5352
5353                    }
5354
5355
5356                    if ( (lccurrentsqlstatement != null) )
5357                    {
5358                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
5359                            lcisnewsql = false;
5360                    }
5361
5362                }
5363
5364                if ( lcisnewsql )
5365                    ret = new TSelectSqlStatement(pdbvendor);
5366
5367                break;
5368            }
5369            case sstinsert:
5370            {
5371                boolean lcisnewsql = true;
5372                if ( pstate != EFindSqlStateType.stnormal )
5373                {
5374                    if ( (lccurrentsqlstatement != null) )
5375                    {
5376
5377                    }
5378                }
5379
5380                if ( lcisnewsql )
5381                    ret = new TInsertSqlStatement(pdbvendor);
5382
5383                break;
5384            }
5385            case sstupdate:
5386            {
5387                boolean lcisnewsql = true;
5388                if ( pstate != EFindSqlStateType.stnormal )
5389                {
5390                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
5391                    if ( (lcprevsolidtoken != null) )
5392                    { //
5393                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
5394                            lcisnewsql = false;
5395                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
5396                            lcisnewsql = false;
5397                    }
5398
5399                    TSourceToken lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
5400                    if ( (lcnextsolidtoken != null) )
5401                    {
5402                        if ( lcnextsolidtoken.tokentype == ETokenType.ttleftparenthesis)
5403                        {
5404                            int k = lcsourcetokenlist.solidtokenafterpos(lcnextsolidtoken.posinlist,TBaseType.rrw_select,1,"(");
5405                            if ( k  == 0 ) lcisnewsql = false;
5406                        }
5407                    }
5408
5409
5410                    if ( (lccurrentsqlstatement != null) )
5411                    {
5412                    }
5413                }
5414
5415                if ( lcisnewsql )
5416                {
5417                    ret = new TUpdateSqlStatement(pdbvendor);
5418                    ret.dummytag = 1; // means set clause in update is not found yet, used to seperate set clause from set statement
5419                }
5420                break;
5421            }
5422            case sstdelete:
5423            {
5424                boolean lcisnewsql = true;
5425
5426                if ( pstate != EFindSqlStateType.stnormal )
5427                {
5428                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
5429                    if ( (lcprevsolidtoken != null) )
5430                    {
5431                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
5432                            lcisnewsql = false;
5433                    }
5434
5435                    if ( (lccurrentsqlstatement != null) )
5436                    {
5437                    }
5438                }
5439
5440                if ( lcisnewsql )
5441                    ret = new TDeleteSqlStatement(pdbvendor);
5442
5443                break;
5444            }
5445            case sstredshiftAbort:
5446            {
5447                ret = new TRedshiftAbort(pdbvendor);
5448                ret.sqlstatementtype = gnewsqlstatementtype;
5449                break;
5450            }
5451            case sstalterdatabase:
5452            {
5453                ret = new TAlterDatabaseStmt(pdbvendor);
5454                break;
5455            }
5456            case sstredshiftAlterGroup:
5457            {
5458                ret = new TAlterGroup(pdbvendor);
5459                break;
5460            }
5461            case sstredshiftAlterSchema:
5462            {
5463                ret = new TRedshiftAlterSchema(pdbvendor);
5464                break;
5465            }
5466            case sstaltertable:
5467            {
5468                ret = new TAlterTableStatement(pdbvendor);
5469                break;
5470            }
5471            case sstredshiftAlterUser:
5472            {
5473                ret = new TRedshiftAlterUser(pdbvendor);
5474                break;
5475            }
5476            case sstredshiftAnalyze:
5477            {
5478                ret = new TRedshiftAnalyze(pdbvendor);
5479                break;
5480            }
5481            case sstredshiftAnalyzeCompression:
5482            {
5483                ret = new TRedshiftAnalyzeCompression(pdbvendor);
5484                break;
5485            }
5486            case sstredshiftBegin:
5487            {
5488                ret = new TRedshiftBegin(pdbvendor);
5489                break;
5490            }
5491            case sstredshiftCancel:
5492            {
5493                ret = new TRedshiftCancel(pdbvendor);
5494                break;
5495            }
5496            case sstredshiftClose:
5497            {
5498                ret = new TCloseStmt(pdbvendor);
5499                break;
5500            }
5501            case sstredshiftComment:
5502            {
5503                ret = new TRedshiftComment(pdbvendor);
5504                break;
5505            }
5506            case sstredshiftCommit:
5507            {
5508                ret = new TRedshiftCommit(pdbvendor);
5509                break;
5510            }
5511            case sstredshiftCopy:
5512            {
5513                ret = new TRedshiftCopy(pdbvendor);
5514                break;
5515            }
5516            case sstcreatedatabase:
5517            {
5518                ret = new TCreateDatabaseSqlStatement(pdbvendor);
5519                break;
5520            }
5521            case sstredshiftCreateGroup:
5522            {
5523                ret = new TCreateGroup(pdbvendor);
5524                break;
5525            }
5526            case sstredshiftCreateSchema:
5527            {
5528                ret = new TCreateSchemaSqlStatement(pdbvendor);
5529                break;
5530            }
5531            case sstcreatetable:
5532            {
5533                ret = new TCreateTableSqlStatement(pdbvendor);
5534                break;
5535            }
5536            case sstredshiftCreateUser:
5537            {
5538                ret = new TRedshiftCreateUser(pdbvendor);
5539                break;
5540            }
5541            case sstcreateview:
5542            {
5543                ret = new TCreateViewSqlStatement(pdbvendor);
5544                break;
5545            }
5546            case sstredshiftDeallocate:
5547            {
5548                ret = new TRedshiftDeallocate(pdbvendor);
5549                break;
5550            }
5551            case sstredshiftDeclare:
5552            {
5553                ret = new TRedshiftDeclare(pdbvendor);
5554                break;
5555            }
5556            case sstredshiftDropDatabase:
5557            {
5558                ret = new TDropDatabaseStmt(pdbvendor);
5559                break;
5560            }
5561            case sstredshiftDropGroup:
5562            {
5563                ret = new TDropGroup(pdbvendor);
5564                break;
5565            }
5566            case sstredshiftDropSchema:
5567            {
5568                ret = new TRedshiftDropSchema(pdbvendor);
5569                break;
5570            }
5571            case sstdroptable:
5572            {
5573                ret = new TDropTableSqlStatement(pdbvendor);
5574                break;
5575            }
5576            case sstredshiftDropUser:
5577            {
5578                ret = new TRedshiftDropUser(pdbvendor);
5579                break;
5580            }
5581            case sstdropview:
5582            {
5583                ret = new TDropViewSqlStatement(pdbvendor);
5584                break;
5585            }
5586            case sstredshiftEnd:
5587            {
5588                ret = new TRedshiftEnd(pdbvendor);
5589                break;
5590            }
5591            case sstExecutePreparedStmt:
5592            {
5593                ret = new TExecuteSqlStatement(pdbvendor);
5594                break;
5595            }
5596            case sstExplain:
5597            {
5598                ret = new TExplainPlan(pdbvendor);
5599                break;
5600            }
5601            case sstFetchFrom:
5602            {
5603                ret = new TFetchFromStmt(pdbvendor);
5604                break;
5605            }
5606            case sstGrant:
5607            {
5608                ret = new TGrantStmt(pdbvendor);
5609                break;
5610            }
5611            case sstredshiftLock:
5612            {
5613                ret = new TLockTableStmt(pdbvendor);
5614                break;
5615            }
5616            case sstredshiftPrepare:
5617            {
5618                ret = new TRedshiftPrepare(pdbvendor);
5619                break;
5620            }
5621            case sstredshiftReset:
5622            {
5623                ret = new TRedshiftReset(pdbvendor);
5624                break;
5625            }
5626            case sstRevoke:
5627            {
5628                ret = new TRevokeStmt(pdbvendor);
5629                break;
5630            }
5631            case sstredshiftRollback:
5632            {
5633                ret = new TRedshiftRollback(pdbvendor);
5634                break;
5635            }
5636            case sstredshiftSet:
5637            {
5638                ret = new TSetStmt(pdbvendor);
5639                break;
5640            }
5641            case sstredshiftSetSessionAuthorization:
5642            {
5643                ret = new TRedshiftSessionAuthorization(pdbvendor);
5644                break;
5645            }
5646            case sstredshiftShow:
5647            {
5648                ret = new TShowStmt(pdbvendor);
5649                break;
5650            }
5651            case sstStartTransaction:
5652            {
5653                ret = new TStartTransactionStmt(pdbvendor);
5654                break;
5655            }
5656            case sstTruncate:
5657            {
5658                ret = new TTruncateStatement(pdbvendor);
5659                break;
5660            }
5661            case sstredshiftUnload:
5662            {
5663                ret = new TUnloadStmt(pdbvendor);
5664                break;
5665            }
5666            case sstredshiftVacuum:
5667            {
5668                ret = new TRedshiftVacuum(pdbvendor);
5669                break;
5670            }
5671            case sstcreatefunction:
5672                ret = new TCreateFunctionStmt(pdbvendor);
5673                break;
5674            case sstcreateprocedure:
5675                ret = new TCreateProcedureStmt(pdbvendor);
5676                break;
5677            case sstcreatematerializedview:{
5678                ret = new TCreateMaterializedSqlStatement(pdbvendor);
5679                break;
5680            }
5681            case sstcall:
5682                ret = new TCallStatement(pdbvendor);
5683                break;
5684            case sstmerge:
5685            {
5686                ret = new TMergeSqlStatement(pdbvendor);
5687                break;
5688            }
5689            default:
5690            {
5691                ret = new TUnknownSqlStatement(pdbvendor);
5692                ret.sqlstatementtype = gnewsqlstatementtype;
5693                break;
5694            }
5695        }    // case
5696
5697        return ret;
5698    }
5699    TCustomSqlStatement isgaussdb(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
5700        TCustomSqlStatement ret = null;
5701
5702        gnewsqlstatementtype = ESqlStatementType.sstinvalid;
5703
5704        if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
5705                || (pcst.tokencode  == TBaseType.cmtslashstar)
5706                || (pcst.tokencode  == TBaseType.lexspace)
5707                || (pcst.tokencode  == TBaseType.lexnewline)
5708                || (pcst.tokentype == ETokenType.ttsemicolon) )
5709        {
5710            return null;
5711        }
5712
5713        int lcpos = pcst.posinlist;
5714        TSourceTokenList lcsourcetokenlist = pcst.container;
5715        TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
5716
5717        //subquery after semicolon or at first line
5718        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
5719        {
5720            int k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
5721            if ( k >0 )
5722            {
5723                ret = new TSelectSqlStatement(pdbvendor);
5724            }else{
5725                k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_with,1,"(");
5726                if ( k >0 )
5727                { // syntax like: (with ... )
5728                    ret = new TSelectSqlStatement(pdbvendor);
5729                }
5730            }
5731
5732            return ret;
5733        }
5734
5735        //cte
5736        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
5737        {
5738            ret = findcte(pcst,pdbvendor);
5739            if ( (ret != null) )  return ret;
5740        }
5741
5742        gnewsqlstatementtype = findgaussdbcmd(pcst);
5743
5744        TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
5745        switch (gnewsqlstatementtype) {    //
5746            case sstinvalid:
5747            {
5748                ret = null;
5749
5750                if ( pstate == EFindSqlStateType.stnormal )
5751                {
5752                    if ( pcst.tokencode == TBaseType.label_begin )
5753                    {
5754                        ret = new TCommonBlock(pdbvendor);
5755                        gnewsqlstatementtype = ret.sqlstatementtype;
5756
5757                    }
5758                    else if ( pcst.tokencode == TBaseType.rrw_declare )
5759                    {
5760                        ret = new TCommonBlock(pdbvendor);
5761                        gnewsqlstatementtype = ret.sqlstatementtype;
5762                    }
5763                    else if ( pcst.tokencode == TBaseType.rrw_begin )
5764                    {
5765                        // https://support.huaweicloud.com/distributed-devg-v3-opengauss/gaussdb-12-0498.html
5766                        // 有两种可能 1:开启匿名块,或 2:开启事务
5767                        boolean isBlock = true;
5768                        TSourceToken st = pcst.nextSolidToken();
5769                        if (st != null){
5770                            if ((st.tokencode == ';')
5771                                    ||(st.toString().equalsIgnoreCase("work"))
5772                                    ||(st.toString().equalsIgnoreCase("transaction"))
5773                            ){
5774                                isBlock = false;
5775                            }
5776                        }
5777                        if (isBlock){
5778                            ret = new TCommonBlock(pdbvendor);
5779                            gnewsqlstatementtype = ret.sqlstatementtype;
5780                        }else{
5781                            ret = new TStartTransactionStmt(pdbvendor);
5782                            gnewsqlstatementtype = ret.sqlstatementtype;
5783                            pcst.tokencode = TBaseType.GAUSSDB_BEGIN_TRANSACTION;
5784                        }
5785
5786                    }
5787                    else if ( pcst.tokencode == TBaseType.rrw_procedure )
5788                    {
5789                        ret = new TCreateProcedureStmt(pdbvendor);
5790                        // ret.sqlstatementtype = ESqlStatementType.sstplsql_createprocedure;
5791                        gnewsqlstatementtype = ret.sqlstatementtype;
5792                    }
5793                    else if ( pcst.tokencode == TBaseType.rrw_function )
5794                    {
5795                        ret = new TPlsqlCreateFunction(pdbvendor);
5796                        // ret.sqlstatementtype = ESqlStatementType.sstplsql_createfunction;
5797                        gnewsqlstatementtype = ret.sqlstatementtype;
5798                    }
5799                    else if ( pcst.tokencode == TBaseType.rrw_package )
5800                    {
5801                        ret = new TPlsqlCreatePackage(pdbvendor);
5802                        // ret.sqlstatementtype = ESqlStatementType.sstplsql_createpackage;
5803                        gnewsqlstatementtype = ret.sqlstatementtype;
5804                    }
5805                }
5806                break;
5807            }
5808            case sstpostgresqlDeclare:{
5809                // https://support.huaweicloud.com/distributed-devg-v3-opengauss/gaussdb-12-0554.html
5810                // declare cursor_name [ BINARY ] [ NO SCROLL ] CURSOR ..., 这是单个的定义游标语句
5811                // 下面这种类型的定义才是开始一个 匿名块
5812                // [DECLARE [declare_statements]]
5813                //BEGIN
5814                //execution_statements
5815                //END;
5816
5817                // 判断逻辑如下:
5818                // 1. 如果 declare 后直接跟 CURSOR, 那就是开启一个 匿名块
5819                // 2. 如果 declare 后直接跟的是一个 identifier, 那再检查之后的第2或3或4个token是否为 CURSOR,
5820                // 如果是,该语句为 单个的定义游标语句,否则为  匿名块
5821
5822                boolean isBlock = true;
5823                TSourceToken st = pcst.nextSolidToken();
5824                if (st != null){
5825                    if (st.tokencode == TBaseType.GAUSSDB_CURSOR){
5826                        isBlock = true;
5827                    }else if (st.tokencode == TBaseType.ident){
5828                        st = st.nextSolidToken();
5829                        if (st != null){
5830                            if ((st.tokencode == TBaseType.GAUSSDB_CURSOR)
5831                                    ||(st.tokencode == TBaseType.rrw_binary)
5832                                    ||(st.toString().equalsIgnoreCase("no"))
5833                            ){
5834                                isBlock = false;
5835                            }
5836                        }
5837                    }
5838                }
5839                if (isBlock){
5840                    ret = new TCommonBlock(pdbvendor);
5841                    gnewsqlstatementtype = ret.sqlstatementtype;
5842                }else{
5843                    ret = new TDeclareCursorStmt(pdbvendor);
5844                    gnewsqlstatementtype = ret.sqlstatementtype;
5845                    pcst.tokencode = TBaseType.GAUSSDB_DECLARE_SINGLE_STMT;
5846                }
5847
5848                break;
5849            }
5850            case sstmerge:
5851            {
5852                ret = new TMergeSqlStatement(pdbvendor);
5853                ret.sqlstatementtype = gnewsqlstatementtype;
5854                break;
5855            }
5856            case sstcreatesynonym:
5857                ret = new TCreateSynonymStmt(pdbvendor);
5858                break;
5859            case sstdropsynonym:
5860                ret = new TDropSynonymStmt(pdbvendor);
5861                break;
5862            case sstAlterPackage:
5863                ret = new TAlterPackageStmt(pdbvendor);
5864                break;
5865            case sstpostgresqlRefreshMaterializedView:
5866                ret = new TRefreshMaterializedViewStmt(pdbvendor);
5867                break;
5868            case sstAlterSynonym:
5869                ret = new TAlterSynonymStmt(pdbvendor);
5870                break;
5871            case sstsavepoint:
5872            {
5873                ret = new TSavepointStmt(pdbvendor);
5874                ret.sqlstatementtype = gnewsqlstatementtype;
5875                break;
5876            }
5877            case sstselect:
5878            {
5879                boolean lcisnewsql = true;
5880
5881                if ( pstate != EFindSqlStateType.stnormal )
5882                {
5883                    // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
5884                    if ( (lcprevsolidtoken != null) )
5885                    {
5886                        if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
5887                            lcisnewsql = false; //subqery
5888                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
5889                            lcisnewsql = false;
5890                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
5891                            lcisnewsql = false;
5892                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
5893                            lcisnewsql = false;
5894                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
5895                            lcisnewsql = false;
5896                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
5897                            lcisnewsql = false;
5898                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
5899                        {
5900                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
5901                                lcisnewsql = false;
5902                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
5903                                lcisnewsql = false;
5904                        }
5905
5906                        if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
5907                        {
5908                            TSourceToken lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
5909                            if ( (lcpprevsolidtoken != null) )
5910                            {
5911                                if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
5912                                    lcisnewsql = false;
5913                            }
5914                        }
5915
5916                    }
5917
5918
5919                    if ( (lccurrentsqlstatement != null) )
5920                    {
5921                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
5922                            lcisnewsql = false;
5923                    }
5924
5925                }
5926
5927                if ( lcisnewsql )
5928                    ret = new TSelectSqlStatement(pdbvendor);
5929
5930                break;
5931            }
5932            case sstinsert:
5933            {
5934                boolean lcisnewsql = true;
5935                if ( pstate != EFindSqlStateType.stnormal )
5936                {
5937                    if ( (lccurrentsqlstatement != null) )
5938                    {
5939
5940                    }
5941                }
5942
5943                if ( lcisnewsql )
5944                    ret = new TInsertSqlStatement(pdbvendor);
5945
5946                break;
5947            }
5948            case sstupdate:
5949            {
5950                boolean lcisnewsql = true;
5951                if ( pstate != EFindSqlStateType.stnormal )
5952                {
5953                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
5954                    if ( (lcprevsolidtoken != null) )
5955                    { //
5956                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
5957                            lcisnewsql = false;
5958                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
5959                            lcisnewsql = false;
5960                    }
5961
5962                    TSourceToken lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
5963                    if ( (lcnextsolidtoken != null) )
5964                    {
5965                        if ( lcnextsolidtoken.tokentype == ETokenType.ttleftparenthesis)
5966                        {
5967                            int k = lcsourcetokenlist.solidtokenafterpos(lcnextsolidtoken.posinlist,TBaseType.rrw_select,1,"(");
5968                            if ( k  == 0 ) lcisnewsql = false;
5969                        }
5970                    }
5971
5972
5973                    if ( (lccurrentsqlstatement != null) )
5974                    {
5975                    }
5976                }
5977
5978                if ( lcisnewsql )
5979                {
5980                    ret = new TUpdateSqlStatement(pdbvendor);
5981                    ret.dummytag = 1; // means set clause in update is not found yet, used to seperate set clause from set statement
5982                }
5983                break;
5984            }
5985            case sstdelete:
5986            {
5987                boolean lcisnewsql = true;
5988
5989                if ( pstate != EFindSqlStateType.stnormal )
5990                {
5991                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
5992                    if ( (lcprevsolidtoken != null) )
5993                    {
5994                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
5995                            lcisnewsql = false;
5996                    }
5997
5998                    if ( (lccurrentsqlstatement != null) )
5999                    {
6000                    }
6001                }
6002
6003                if ( lcisnewsql )
6004                    ret = new TDeleteSqlStatement(pdbvendor);
6005
6006                break;
6007            }
6008            case sstoraclecommit:
6009            {
6010                ret = new TUnknownSqlStatement(pdbvendor);
6011                ret.sqlstatementtype = gnewsqlstatementtype;
6012                break;
6013            }
6014            case sstoraclerollback:
6015            {
6016                ret = new TUnknownSqlStatement(pdbvendor);
6017                ret.sqlstatementtype = gnewsqlstatementtype;
6018                break;
6019            }
6020            case sstoraclesavepoint:
6021            {
6022                ret = new TUnknownSqlStatement(pdbvendor);
6023                ret.sqlstatementtype = gnewsqlstatementtype;
6024                break;
6025            }
6026            case sstoraclerevoke:
6027            {
6028                ret = new TUnknownSqlStatement(pdbvendor);
6029                ret.sqlstatementtype = gnewsqlstatementtype;
6030                break;
6031            }
6032            case sstoraclegrant:
6033            {
6034                ret = new TUnknownSqlStatement(pdbvendor);
6035                //ret = new TGrantStmt(pdbvendor);
6036                ret.sqlstatementtype = gnewsqlstatementtype;
6037                break;
6038            }
6039            case sstoracleanalyze:
6040            {
6041                ret = new TUnknownSqlStatement(pdbvendor);
6042                ret.sqlstatementtype = gnewsqlstatementtype;
6043                break;
6044            }
6045            case sstoracletruncate:
6046            {
6047                ret = new TUnknownSqlStatement(pdbvendor);
6048                ret.sqlstatementtype = gnewsqlstatementtype;
6049                break;
6050            }
6051            case sstcreatetable:
6052            {
6053                ret = new TCreateTableSqlStatement(pdbvendor);
6054                break;
6055            }
6056            case sstoraclecreateview:
6057            {
6058                ret = new TCreateViewSqlStatement(pdbvendor);
6059                break;
6060            }
6061            case sstcreatematerializedview:{
6062                ret = new TCreateMaterializedSqlStatement(pdbvendor);
6063                break;
6064            }
6065            case sstoraclecreateindex:
6066            {
6067                ret = new TCreateIndexSqlStatement(pdbvendor);
6068                break;
6069            }
6070            case sstoraclecreatedatabase:
6071            {
6072                ret = new TCreateDatabaseSqlStatement(pdbvendor);
6073                break;
6074            }
6075            case sstoracledroptable:
6076            {
6077                ret = new TDropTableSqlStatement(pdbvendor);
6078                break;
6079            }
6080            case sstoracledropview:
6081            {
6082                ret = new TDropViewSqlStatement(pdbvendor);
6083                break;
6084            }
6085            case sstoracledropindex:
6086            {
6087                ret = new TDropIndexSqlStatement(pdbvendor);
6088                break;
6089            }
6090            case sstaltertable:
6091            {
6092                ret = new TAlterTableStatement(pdbvendor);
6093                break;
6094            }
6095            case sstoraclealtersession:
6096            {
6097                ret = new TAlterSessionStatement(pdbvendor);
6098                break;
6099            }
6100            case sstplsql_createprocedure:
6101            {
6102                ret = new TPlsqlCreateProcedure(pdbvendor);
6103                ret.sqlstatementtype = gnewsqlstatementtype;
6104                // System.out.println(gnewsqlstatementtype);
6105                break;
6106            }
6107            case sstplsql_createfunction:
6108            {
6109                ret = new TPlsqlCreateFunction(pdbvendor);
6110                ret.sqlstatementtype = gnewsqlstatementtype;
6111                // System.out.println(gnewsqlstatementtype);
6112                break;
6113            }
6114            case sstplsql_createpackage:
6115            {
6116                ret = new TPlsqlCreatePackage(pdbvendor);
6117                ret.sqlstatementtype = gnewsqlstatementtype;
6118                // System.out.println(gnewsqlstatementtype);
6119                break;
6120            }
6121            case sstoraclecreatepackagebody:
6122            {
6123                ret = new TPlsqlCreatePackage(pdbvendor);
6124                ret.sqlstatementtype = gnewsqlstatementtype;
6125                //ret.sqlstatementtype = ESqlStatementType.sstplsql_createpackage;
6126                break;
6127            }
6128            case sstplsql_createtrigger:
6129            {
6130                ret = new TPlsqlCreateTrigger(pdbvendor);
6131                ret.sqlstatementtype = gnewsqlstatementtype;
6132                // System.out.println(gnewsqlstatementtype);
6133                break;
6134            }
6135            case sstplsql_execimmestmt:
6136            {
6137                ret = new TExecImmeStmt(pdbvendor);
6138                // ret.sqlstatementtype = gnewsqlstatementtype;
6139                // System.out.println(gnewsqlstatementtype);
6140                break;
6141            }
6142            case sstplsql_createtype_placeholder:
6143            {
6144                ret = new TPlsqlCreateType_Placeholder(pdbvendor);
6145                ret.sqlstatementtype = gnewsqlstatementtype;
6146                // System.out.println(gnewsqlstatementtype);
6147                break;
6148            }
6149            case sstplsql_createtypebody:
6150            {
6151                ret = new TPlsqlCreateTypeBody(pdbvendor);
6152                ret.sqlstatementtype = gnewsqlstatementtype;
6153                break;
6154            }
6155            case sstCommentOn:
6156            {
6157                ret = new TCommentOnSqlStmt(pdbvendor);
6158                break;
6159            }
6160            case sstoraclecreatesequence:
6161            {
6162                ret = new TCreateSequenceStmt(pdbvendor);
6163                break;
6164            }
6165            case sstoraclecreatesynonym:
6166            {
6167                ret = new TCreateSynonymStmt(pdbvendor);
6168                break;
6169            }
6170            case sstoraclecreatedirectory:
6171            {
6172                ret = new TOracleCreateDirectoryStmt(pdbvendor);
6173                break;
6174            }
6175            case sstpostgresqlCreateIndex:
6176                ret = new TCreateIndexSqlStatement(pdbvendor);
6177                break;
6178            case sstpostgresqlCreateView:
6179                ret = new TCreateViewSqlStatement(pdbvendor);
6180                break;
6181            case sstpostgresqlCreateFunction:
6182                ret = new TCreateFunctionStmt(pdbvendor);
6183                break;
6184            case sstcreatetrigger:
6185                ret = new TCreateTriggerStmt(pdbvendor);
6186                break;
6187            case sstpostgresqlMove:
6188                ret = new TMoveStmt(pdbvendor);
6189                break;
6190            case sstpostgresqlTruncate:
6191                ret = new TTruncateStatement(pdbvendor);
6192                break;
6193            case sstpostgresqlExecute:
6194                ret = new TExecuteSqlStatement(pdbvendor);
6195                break;
6196            case sstpostgresqlDropTable:
6197                ret = new TDropTableSqlStatement(pdbvendor);
6198                break;
6199            case sstPostgresqlBlock:
6200                ret = new TCommonBlock(pdbvendor);
6201                break;
6202            case sstVacuum:
6203                ret = new TVacuumStmt(pdbvendor);
6204                break;
6205            case sstReindex:
6206                ret = new TReindexStmt(pdbvendor);
6207                break;
6208            case sstcreateprocedure:
6209                ret = new TCreateProcedureStmt(pdbvendor);
6210                break;
6211            case sstpostgresqlCommit:
6212                ret = new TCommitStmt(pdbvendor);
6213                break;
6214            case sstpostgresqlCreateSchema:
6215                ret = new TCreateSchemaSqlStatement(pdbvendor);
6216                break;
6217            case sstpostgresqlDropSchema:
6218                ret = new TDropSchemaSqlStatement(pdbvendor);
6219                break;
6220            case sstpostgresqlShowSearchPath:
6221                ret = new TShowSearchPathStmt(pdbvendor);
6222                break;
6223            case sstpostgresqlCopy:
6224                ret = new TCopyStmt(pdbvendor);
6225                break;
6226            case sstcall:
6227                ret = new TCallStatement(pdbvendor);
6228                break;
6229            case sstpostgresqlAlterSchema:
6230                ret = new TAlterSchemaStmt(pdbvendor);
6231                break;
6232            case sstpostgresqlAlterfunction:
6233                ret = new TAlterFunctionStmt(pdbvendor);
6234                break;
6235            case sstStartTransaction:
6236            {
6237                ret = new TStartTransactionStmt(pdbvendor);
6238                break;
6239            }
6240            case sstpostgresqlComment:
6241                ret = new TCommentOnSqlStmt(pdbvendor);
6242                break;
6243            case sstpostgresqlShow:
6244                ret = new TShowStmt(pdbvendor);
6245                break;
6246            case sstpostgresqlSetSearchPath:
6247            case sstpostgresqlSet:
6248                ret = new TSetStmt(pdbvendor);
6249                break;
6250            case sstpostgresqlDropFunction:
6251                ret = new TDropFunctionStmt(pdbvendor);
6252                break;
6253            case sstpostgresqlDropTrigger:
6254                ret = new TDropTriggerSqlStatement(pdbvendor);
6255                break;
6256            case sstpostgresqlDropProcedure:
6257                ret = new TDropProcedureStmt(pdbvendor);
6258                break;
6259            case sstdropindex:
6260                ret = new TDropIndexSqlStatement(pdbvendor);
6261                break;
6262            case sstpostgresqlDropSequence:
6263                ret = new TDropSequenceStmt(pdbvendor);
6264                break;
6265            case sstpostgresqlDropView:
6266                ret = new TDropViewSqlStatement(pdbvendor);
6267                break;
6268            case sstpostgresqlCreateSequence:
6269                ret = new TCreateSequenceStmt(pdbvendor);
6270                break;
6271            case sstpostgresqlCreateType:
6272                ret = new TCreateTypeStmt(pdbvendor);
6273                break;
6274            case sstcreateExtension:
6275                ret = new TCreateExtensionStmt(pdbvendor);
6276                break;
6277            case sstPostgresqlTable:
6278                ret = new TPostgresqlTableStmt(pdbvendor);
6279                break;
6280            case sstpostgresqlEnd:
6281                ret = new TEndTran(pdbvendor);
6282                break;
6283            case sstpostgresqlDo:
6284                boolean lcisnewsql = false;
6285
6286                if ( pstate == EFindSqlStateType.stnormal )
6287                {
6288                    TSourceToken lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
6289                    if ( (lcnextsolidtoken != null) )
6290                    {
6291                        if ( lcnextsolidtoken.tokencode == TBaseType.rrw_postgresql_function_delimiter )
6292                            lcisnewsql = true;
6293                    }
6294                }
6295
6296                if ( lcisnewsql )
6297                    ret = new TDoExecuteBlockStmt(pdbvendor);
6298
6299                break;
6300            default:
6301            {
6302                ret = new TUnknownSqlStatement(pdbvendor);
6303                ret.sqlstatementtype = gnewsqlstatementtype;
6304                break;
6305            }
6306        }    // case
6307
6308        return ret;
6309    }
6310    TCustomSqlStatement ispostgresql(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
6311        TCustomSqlStatement ret = null;
6312
6313        gnewsqlstatementtype = ESqlStatementType.sstinvalid;
6314
6315        if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
6316                || (pcst.tokencode  == TBaseType.cmtslashstar)
6317                || (pcst.tokencode  == TBaseType.lexspace)
6318                || (pcst.tokencode  == TBaseType.lexnewline)
6319                || (pcst.tokentype == ETokenType.ttsemicolon) )
6320        {
6321            return null;
6322        }
6323
6324        int lcpos = pcst.posinlist;
6325        TSourceTokenList lcsourcetokenlist = pcst.container;
6326        TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
6327
6328        //subquery after semicolon or at first line
6329        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
6330        {
6331            int k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
6332            if ( k >0 )
6333            {
6334                ret = new TSelectSqlStatement(pdbvendor);
6335            }
6336
6337            return ret;
6338        }
6339
6340        //cte
6341        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
6342        {
6343            ret = findcte(pcst,pdbvendor);
6344            if ( (ret != null) )  return ret;
6345        }
6346
6347        gnewsqlstatementtype = findpostgresqlcmd(pcst);
6348
6349        TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
6350        switch (gnewsqlstatementtype) {    //
6351            case sstinvalid:
6352            {
6353                ret = null;
6354
6355                if ( pstate == EFindSqlStateType.stnormal )
6356                {
6357                    if ( pcst.tokencode == TBaseType.label_begin )
6358                    {
6359                        ret = new TCommonBlock(pdbvendor);
6360                        gnewsqlstatementtype = ret.sqlstatementtype;
6361                    }
6362                    else if ( pcst.tokencode == TBaseType.rrw_declare )
6363                    {
6364                        ret = new TCommonBlock(pdbvendor);
6365                        gnewsqlstatementtype = ret.sqlstatementtype;
6366                    }
6367                    else if ( pcst.tokencode == TBaseType.rrw_begin )
6368                    {
6369                        ret = new TCommonBlock(pdbvendor);
6370                        gnewsqlstatementtype = ret.sqlstatementtype;
6371                    }
6372                    else if ( pcst.tokencode == TBaseType.rrw_procedure )
6373                    {
6374                        ret = new TCreateProcedureStmt(pdbvendor);
6375                        // ret.sqlstatementtype = ESqlStatementType.sstplsql_createprocedure;
6376                        gnewsqlstatementtype = ret.sqlstatementtype;
6377                    }
6378                    else if ( pcst.tokencode == TBaseType.rrw_function )
6379                    {
6380                        ret = new TPlsqlCreateFunction(pdbvendor);
6381                        // ret.sqlstatementtype = ESqlStatementType.sstplsql_createfunction;
6382                        gnewsqlstatementtype = ret.sqlstatementtype;
6383                    }
6384                    else if ( pcst.tokencode == TBaseType.rrw_package )
6385                    {
6386                        ret = new TPlsqlCreatePackage(pdbvendor);
6387                        // ret.sqlstatementtype = ESqlStatementType.sstplsql_createpackage;
6388                        gnewsqlstatementtype = ret.sqlstatementtype;
6389                    }
6390                }
6391                break;
6392            }
6393            case sstselect:
6394            {
6395                boolean lcisnewsql = true;
6396
6397                if ( pstate != EFindSqlStateType.stnormal )
6398                {
6399                    // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
6400                    if ( (lcprevsolidtoken != null) )
6401                    {
6402                        if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
6403                            lcisnewsql = false; //subqery
6404                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
6405                            lcisnewsql = false;
6406                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
6407                            lcisnewsql = false;
6408                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
6409                            lcisnewsql = false;
6410                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
6411                            lcisnewsql = false;
6412                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
6413                            lcisnewsql = false;
6414                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
6415                        {
6416                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
6417                                lcisnewsql = false;
6418                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
6419                                lcisnewsql = false;
6420                        }
6421
6422
6423                        if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
6424                        {
6425                            TSourceToken lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
6426                            if ( (lcpprevsolidtoken != null) )
6427                            {
6428                                if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
6429                                    lcisnewsql = false;
6430                            }
6431                        }
6432
6433                    }
6434
6435
6436                    if ( (lccurrentsqlstatement != null) )
6437                    {
6438                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
6439                            lcisnewsql = false;
6440                    }
6441
6442                }
6443
6444                if ( lcisnewsql )
6445                    ret = new TSelectSqlStatement(pdbvendor);
6446
6447                break;
6448            }
6449            case sstinsert:
6450            {
6451                boolean lcisnewsql = true;
6452                if ( pstate != EFindSqlStateType.stnormal )
6453                {
6454                    if ( (lccurrentsqlstatement != null) )
6455                    {
6456
6457                    }
6458                }
6459
6460                if ( lcisnewsql )
6461                    ret = new TInsertSqlStatement(pdbvendor);
6462
6463                break;
6464            }
6465            case sstupdate:
6466            {
6467                boolean lcisnewsql = true;
6468                if ( pstate != EFindSqlStateType.stnormal )
6469                {
6470                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
6471                    if ( (lcprevsolidtoken != null) )
6472                    { //
6473                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
6474                            lcisnewsql = false;
6475                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
6476                            lcisnewsql = false;
6477                    }
6478
6479                    TSourceToken lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
6480                    if ( (lcnextsolidtoken != null) )
6481                    {
6482                        if ( lcnextsolidtoken.tokentype == ETokenType.ttleftparenthesis)
6483                        {
6484                            int k = lcsourcetokenlist.solidtokenafterpos(lcnextsolidtoken.posinlist,TBaseType.rrw_select,1,"(");
6485                            if ( k  == 0 ) lcisnewsql = false;
6486                        }
6487                    }
6488
6489
6490                    if ( (lccurrentsqlstatement != null) )
6491                    {
6492                    }
6493                }
6494
6495                if ( lcisnewsql )
6496                {
6497                    ret = new TUpdateSqlStatement(pdbvendor);
6498                    ret.dummytag = 1; // means set clause in update is not found yet, used to seperate set clause from set statement
6499                }
6500                break;
6501            }
6502            case sstdelete:
6503            {
6504                boolean lcisnewsql = true;
6505
6506                if ( pstate != EFindSqlStateType.stnormal )
6507                {
6508                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
6509                    if ( (lcprevsolidtoken != null) )
6510                    {
6511                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
6512                            lcisnewsql = false;
6513                    }
6514
6515                    if ( (lccurrentsqlstatement != null) )
6516                    {
6517                    }
6518                }
6519
6520                if ( lcisnewsql )
6521                    ret = new TDeleteSqlStatement(pdbvendor);
6522
6523                break;
6524            }
6525            case sstmerge:
6526            {
6527                ret = new TMergeSqlStatement(pdbvendor);
6528                ret.sqlstatementtype = gnewsqlstatementtype;
6529                break;
6530            }
6531            case sstoraclecommit:
6532            {
6533                ret = new TUnknownSqlStatement(pdbvendor);
6534                ret.sqlstatementtype = gnewsqlstatementtype;
6535                break;
6536            }
6537            case sstoraclerollback:
6538            {
6539                ret = new TUnknownSqlStatement(pdbvendor);
6540                ret.sqlstatementtype = gnewsqlstatementtype;
6541                break;
6542            }
6543            case sstoraclesavepoint:
6544            {
6545                ret = new TUnknownSqlStatement(pdbvendor);
6546                ret.sqlstatementtype = gnewsqlstatementtype;
6547                break;
6548            }
6549            case sstoraclerevoke:
6550            {
6551                ret = new TUnknownSqlStatement(pdbvendor);
6552                ret.sqlstatementtype = gnewsqlstatementtype;
6553                break;
6554            }
6555            case sstoraclegrant:
6556            {
6557                ret = new TUnknownSqlStatement(pdbvendor);
6558                //ret = new TGrantStmt(pdbvendor);
6559                ret.sqlstatementtype = gnewsqlstatementtype;
6560                break;
6561            }
6562            case sstoracleanalyze:
6563            {
6564                ret = new TUnknownSqlStatement(pdbvendor);
6565                ret.sqlstatementtype = gnewsqlstatementtype;
6566                break;
6567            }
6568            case sstoracletruncate:
6569            {
6570                ret = new TUnknownSqlStatement(pdbvendor);
6571                ret.sqlstatementtype = gnewsqlstatementtype;
6572                break;
6573            }
6574            case sstcreatetable:
6575            {
6576                ret = new TCreateTableSqlStatement(pdbvendor);
6577                break;
6578            }
6579            case sstoraclecreateview:
6580            {
6581                ret = new TCreateViewSqlStatement(pdbvendor);
6582                break;
6583            }
6584            case sstcreatematerializedview:{
6585                ret = new TCreateMaterializedSqlStatement(pdbvendor);
6586                break;
6587            }
6588            case sstoraclecreateindex:
6589            {
6590                ret = new TCreateIndexSqlStatement(pdbvendor);
6591                break;
6592            }
6593            case sstoraclecreatedatabase:
6594            {
6595                ret = new TCreateDatabaseSqlStatement(pdbvendor);
6596                break;
6597            }
6598            case sstoracledroptable:
6599            {
6600                ret = new TDropTableSqlStatement(pdbvendor);
6601                break;
6602            }
6603            case sstoracledropview:
6604            {
6605                ret = new TDropViewSqlStatement(pdbvendor);
6606                break;
6607            }
6608            case sstoracledropindex:
6609            {
6610                ret = new TDropIndexSqlStatement(pdbvendor);
6611                break;
6612            }
6613            case sstaltertable:
6614            {
6615                ret = new TAlterTableStatement(pdbvendor);
6616                break;
6617            }
6618            case sstoraclealtersession:
6619            {
6620                ret = new TAlterSessionStatement(pdbvendor);
6621                break;
6622            }
6623            case sstplsql_createprocedure:
6624            {
6625                ret = new TPlsqlCreateProcedure(pdbvendor);
6626                ret.sqlstatementtype = gnewsqlstatementtype;
6627                // System.out.println(gnewsqlstatementtype);
6628                break;
6629            }
6630            case sstplsql_createfunction:
6631            {
6632                ret = new TPlsqlCreateFunction(pdbvendor);
6633                ret.sqlstatementtype = gnewsqlstatementtype;
6634                // System.out.println(gnewsqlstatementtype);
6635                break;
6636            }
6637            case sstplsql_createpackage:
6638            {
6639                ret = new TPlsqlCreatePackage(pdbvendor);
6640                ret.sqlstatementtype = gnewsqlstatementtype;
6641                // System.out.println(gnewsqlstatementtype);
6642                break;
6643            }
6644            case sstplsql_createtrigger:
6645            {
6646                ret = new TPlsqlCreateTrigger(pdbvendor);
6647                ret.sqlstatementtype = gnewsqlstatementtype;
6648                // System.out.println(gnewsqlstatementtype);
6649                break;
6650            }
6651            case sstplsql_execimmestmt:
6652            {
6653                ret = new TExecImmeStmt(pdbvendor);
6654                // ret.sqlstatementtype = gnewsqlstatementtype;
6655                // System.out.println(gnewsqlstatementtype);
6656                break;
6657            }
6658            case sstoraclecreatepackagebody:
6659            {
6660                ret = new TPlsqlCreatePackage(pdbvendor);
6661                ret.sqlstatementtype = ESqlStatementType.sstplsql_createpackage;
6662                break;
6663            }
6664            case sstplsql_createtype_placeholder:
6665            {
6666                ret = new TPlsqlCreateType_Placeholder(pdbvendor);
6667                ret.sqlstatementtype = gnewsqlstatementtype;
6668                // System.out.println(gnewsqlstatementtype);
6669                break;
6670            }
6671            case sstplsql_createtypebody:
6672            {
6673                ret = new TPlsqlCreateTypeBody(pdbvendor);
6674                ret.sqlstatementtype = gnewsqlstatementtype;
6675                break;
6676            }
6677            case sstCommentOn:
6678            {
6679                ret = new TCommentOnSqlStmt(pdbvendor);
6680                break;
6681            }
6682            case sstoraclecreatesequence:
6683            {
6684                ret = new TCreateSequenceStmt(pdbvendor);
6685                break;
6686            }
6687            case sstoraclecreatesynonym:
6688            {
6689                ret = new TCreateSynonymStmt(pdbvendor);
6690                break;
6691            }
6692            case sstoraclecreatedirectory:
6693            {
6694                ret = new TOracleCreateDirectoryStmt(pdbvendor);
6695                break;
6696            }
6697            case sstpostgresqlCreateIndex:
6698                ret = new TCreateIndexSqlStatement(pdbvendor);
6699                break;
6700            case sstpostgresqlCreateView:
6701                ret = new TCreateViewSqlStatement(pdbvendor);
6702                break;
6703            case sstpostgresqlCreateFunction:
6704                ret = new TCreateFunctionStmt(pdbvendor);
6705                break;
6706            case sstcreatetrigger:
6707                ret = new TCreateTriggerStmt(pdbvendor);
6708                break;
6709            case sstpostgresqlMove:
6710                ret = new TMoveStmt(pdbvendor);
6711                break;
6712            case sstpostgresqlTruncate:
6713                ret = new TTruncateStatement(pdbvendor);
6714                break;
6715            case sstpostgresqlExecute:
6716                ret = new TExecuteSqlStatement(pdbvendor);
6717                break;
6718            case sstpostgresqlDropTable:
6719                ret = new TDropTableSqlStatement(pdbvendor);
6720                break;
6721            case sstPostgresqlBlock:
6722                ret = new TCommonBlock(pdbvendor);
6723                break;
6724            case sstVacuum:
6725                ret = new TVacuumStmt(pdbvendor);
6726                break;
6727            case sstReindex:
6728                ret = new TReindexStmt(pdbvendor);
6729                break;
6730            case sstcreateprocedure:
6731                ret = new TCreateProcedureStmt(pdbvendor);
6732                break;
6733            case sstpostgresqlCommit:
6734                ret = new TCommitStmt(pdbvendor);
6735                break;
6736            case sstpostgresqlCreateSchema:
6737                ret = new TCreateSchemaSqlStatement(pdbvendor);
6738                break;
6739            case sstpostgresqlDropSchema:
6740                ret = new TDropSchemaSqlStatement(pdbvendor);
6741                break;
6742            case sstpostgresqlShowSearchPath:
6743                ret = new TShowSearchPathStmt(pdbvendor);
6744                break;
6745            case sstpostgresqlCopy:
6746                ret = new TCopyStmt(pdbvendor);
6747                break;
6748            case sstcall:
6749                ret = new TCallStatement(pdbvendor);
6750                break;
6751            case sstpostgresqlAlterSchema:
6752                ret = new TAlterSchemaStmt(pdbvendor);
6753                break;
6754            case sstpostgresqlAlterfunction:
6755                ret = new TAlterFunctionStmt(pdbvendor);
6756                break;
6757            case sstStartTransaction:
6758            {
6759                ret = new TStartTransactionStmt(pdbvendor);
6760                break;
6761            }
6762            case sstpostgresqlComment:
6763                ret = new TCommentOnSqlStmt(pdbvendor);
6764                break;
6765            case sstpostgresqlShow:
6766                ret = new TShowStmt(pdbvendor);
6767                break;
6768            case sstpostgresqlSetSearchPath:
6769            case sstpostgresqlSet:
6770                ret = new TSetStmt(pdbvendor);
6771                break;
6772            case sstpostgresqlDropFunction:
6773                ret = new TDropFunctionStmt(pdbvendor);
6774                break;
6775            case sstpostgresqlDropTrigger:
6776                ret = new TDropTriggerSqlStatement(pdbvendor);
6777                break;
6778            case sstpostgresqlDropProcedure:
6779                ret = new TDropProcedureStmt(pdbvendor);
6780                break;
6781            case sstdropindex:
6782                ret = new TDropIndexSqlStatement(pdbvendor);
6783                break;
6784            case sstpostgresqlDropSequence:
6785                ret = new TDropSequenceStmt(pdbvendor);
6786                break;
6787            case sstpostgresqlDropView:
6788                ret = new TDropViewSqlStatement(pdbvendor);
6789                break;
6790            case sstpostgresqlCreateSequence:
6791                ret = new TCreateSequenceStmt(pdbvendor);
6792                break;
6793            case sstpostgresqlCreateType:
6794                ret = new TCreateTypeStmt(pdbvendor);
6795                break;
6796            case sstcreateExtension:
6797                ret = new TCreateExtensionStmt(pdbvendor);
6798                break;
6799            case sstPostgresqlTable:
6800                ret = new TPostgresqlTableStmt(pdbvendor);
6801                break;
6802            case sstpostgresqlDropMaterializedView:
6803                ret = new TDropMaterializedViewStmt(pdbvendor);
6804                break;
6805            case sstpostgresqlDo:
6806                boolean lcisnewsql = false;
6807
6808                if ( pstate == EFindSqlStateType.stnormal )
6809                {
6810                    TSourceToken lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
6811                    if ( (lcnextsolidtoken != null) )
6812                    {
6813                        if ( lcnextsolidtoken.tokencode == TBaseType.rrw_postgresql_function_delimiter )
6814                            lcisnewsql = true;
6815                    }
6816                }
6817
6818                if ( lcisnewsql )
6819                    ret = new TDoExecuteBlockStmt(pdbvendor);
6820
6821                break;
6822            case sstpostgresqlDeclare:
6823                ret = new TCommonBlock(pdbvendor);
6824                gnewsqlstatementtype = ret.sqlstatementtype;
6825                break;
6826            case sstpostgresqlExplain:
6827                ret = new TExplainPlan(pdbvendor);
6828                gnewsqlstatementtype = ret.sqlstatementtype;
6829                break;
6830            default:
6831            {
6832                ret = new TUnknownSqlStatement(pdbvendor);
6833                ret.sqlstatementtype = gnewsqlstatementtype;
6834                break;
6835            }
6836        }    // case
6837
6838        return ret;
6839    }
6840
6841
6842
6843TCustomSqlStatement isbigquery(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
6844        TCustomSqlStatement ret = null;
6845
6846        gnewsqlstatementtype = ESqlStatementType.sstinvalid;
6847
6848        if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
6849                || (pcst.tokencode  == TBaseType.cmtslashstar)
6850                || (pcst.tokencode  == TBaseType.lexspace)
6851                || (pcst.tokencode  == TBaseType.lexnewline)
6852                || (pcst.tokentype == ETokenType.ttsemicolon) )
6853        {
6854            return null;
6855        }
6856
6857        int lcpos = pcst.posinlist;
6858        TSourceTokenList lcsourcetokenlist = pcst.container;
6859        TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
6860
6861        //subquery after semicolon or at first line
6862        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
6863        {
6864            int k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
6865            if ( k >0 )
6866            {
6867                ret = new TSelectSqlStatement(pdbvendor);
6868            }
6869
6870            return ret;
6871        }
6872
6873        //cte
6874        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
6875        {
6876            ret = findcte(pcst,pdbvendor);
6877            if ( (ret != null) )  return ret;
6878        }
6879
6880        gnewsqlstatementtype = findbigquerycmd(pcst);
6881
6882        TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
6883        switch (gnewsqlstatementtype) {    //
6884            case sstinvalid:
6885            {
6886                ret = null;
6887
6888                if ( pstate == EFindSqlStateType.stnormal )
6889                {
6890                    if ( pcst.tokencode == TBaseType.rrw_begin )
6891                    {
6892
6893                        ret = new TCommonBlock(pdbvendor);
6894                        gnewsqlstatementtype = ret.sqlstatementtype;
6895                    }
6896
6897                }
6898                break;
6899            }
6900            case sstselect:
6901            {
6902                boolean lcisnewsql = true;
6903
6904                if ( pstate != EFindSqlStateType.stnormal )
6905                {
6906                    // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
6907                    if ( (lcprevsolidtoken != null) )
6908                    {
6909                        if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
6910                            lcisnewsql = false; //subqery
6911                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
6912                            lcisnewsql = false;
6913                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
6914                            lcisnewsql = false;
6915                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
6916                            lcisnewsql = false;
6917                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
6918                            lcisnewsql = false;
6919                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
6920                            lcisnewsql = false;
6921                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
6922                        {
6923                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
6924                                lcisnewsql = false;
6925                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
6926                                lcisnewsql = false;
6927                        }
6928
6929                        if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
6930                        {
6931                            TSourceToken lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
6932                            if ( (lcpprevsolidtoken != null) )
6933                            {
6934                                if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
6935                                    lcisnewsql = false;
6936                            }
6937                        }
6938
6939                    }
6940
6941
6942                    if ( (lccurrentsqlstatement != null) )
6943                    {
6944                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
6945                            lcisnewsql = false;
6946                    }
6947
6948                }
6949
6950                if ( lcisnewsql )
6951                    ret = new TSelectSqlStatement(pdbvendor);
6952
6953                break;
6954            }
6955            case sstinsert:
6956            {
6957                boolean lcisnewsql = true;
6958                if ( pstate != EFindSqlStateType.stnormal )
6959                {
6960                    if ( (lccurrentsqlstatement != null) )
6961                    {
6962
6963                    }
6964                }
6965
6966                if ( lcisnewsql )
6967                    ret = new TInsertSqlStatement(pdbvendor);
6968
6969                break;
6970            }
6971            case sstupdate:
6972            {
6973                boolean lcisnewsql = true;
6974                if ( pstate != EFindSqlStateType.stnormal )
6975                {
6976                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
6977                    if ( (lcprevsolidtoken != null) )
6978                    { //
6979                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
6980                            lcisnewsql = false;
6981                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
6982                            lcisnewsql = false;
6983                    }
6984
6985                    TSourceToken lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
6986                    if ( (lcnextsolidtoken != null) )
6987                    {
6988                        if ( lcnextsolidtoken.tokentype == ETokenType.ttleftparenthesis)
6989                        {
6990                            int k = lcsourcetokenlist.solidtokenafterpos(lcnextsolidtoken.posinlist,TBaseType.rrw_select,1,"(");
6991                            if ( k  == 0 ) lcisnewsql = false;
6992                        }
6993                    }
6994
6995
6996                    if ( (lccurrentsqlstatement != null) )
6997                    {
6998                    }
6999                }
7000
7001                if ( lcisnewsql )
7002                {
7003                    ret = new TUpdateSqlStatement(pdbvendor);
7004                    ret.dummytag = 1; // means set clause in update is not found yet, used to seperate set clause from set statement
7005                }
7006                break;
7007            }
7008            case sstdelete:
7009            {
7010                boolean lcisnewsql = true;
7011
7012                if ( pstate != EFindSqlStateType.stnormal )
7013                {
7014                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
7015                    if ( (lcprevsolidtoken != null) )
7016                    {
7017                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
7018                            lcisnewsql = false;
7019                    }
7020
7021                    if ( (lccurrentsqlstatement != null) )
7022                    {
7023                    }
7024                }
7025
7026                if ( lcisnewsql )
7027                    ret = new TDeleteSqlStatement(pdbvendor);
7028
7029                break;
7030            }
7031            case sstmerge:
7032            {
7033                ret = new TMergeSqlStatement(pdbvendor);
7034                ret.sqlstatementtype = gnewsqlstatementtype;
7035                break;
7036            }
7037            case sstcreatetable:
7038            {
7039                ret = new TCreateTableSqlStatement(pdbvendor);
7040                break;
7041            }
7042            case sstcreateview:{
7043                ret = new TCreateViewSqlStatement(pdbvendor);
7044                break;
7045            }
7046            case sstaltertable:
7047            {
7048                ret = new TAlterTableStatement(pdbvendor);
7049                break;
7050            }
7051            case sstalterview:
7052            {
7053                ret = new TAlterViewStatement(pdbvendor);
7054                break;
7055            }
7056            case sstdroptable:
7057            {
7058                ret = new TDropTableSqlStatement(pdbvendor);
7059                break;
7060            }
7061            case sstdropview:
7062            {
7063                ret = new TDropViewSqlStatement(pdbvendor);
7064                break;
7065            }
7066            case sstcreatefunction:
7067            {
7068                ret = new TCreateFunctionStmt(pdbvendor);
7069                break;
7070            }
7071            case sstcreateprocedure:
7072            {
7073                ret = new TCreateProcedureStmt(pdbvendor);
7074                break;
7075            }
7076            case sstBigQueryDeclare:
7077                ret = new TMssqlDeclare(pdbvendor);
7078                break;
7079            case sstTruncate:
7080            {
7081                ret = new TTruncateStatement(pdbvendor);
7082                break;
7083            }
7084            case sstset:
7085            {
7086                boolean lcisnewsql = true;
7087                if ( pstate != EFindSqlStateType.stnormal )
7088                {
7089                    if ( TBaseType.assigned(lccurrentsqlstatement) )
7090                    {
7091                        lcisnewsql = false;
7092                    }
7093                }
7094
7095                if ( lcisnewsql )
7096                {
7097                    ret =  new TSetStmt(pdbvendor);
7098                }
7099                break;
7100            }
7101            case sstcreatematerializedview:{
7102                ret = new TCreateMaterializedSqlStatement(pdbvendor);
7103                break;
7104            }
7105            case sstdropprocedure:
7106            {
7107                ret = new TDropProcedureStmt(pdbvendor);
7108                break;
7109            }
7110            case sstdropfunction:
7111            {
7112                ret = new TDropFunctionStmt(pdbvendor);
7113                break;
7114            }
7115            case sstDropMaterializedView:
7116                ret = new TDropMaterializedViewStmt(pdbvendor);
7117                break;
7118            case sstcall:
7119                ret = new TCallStatement(pdbvendor);
7120                break;
7121            case sstBigQueryExportData:
7122                ret = new TExportDataStmt(pdbvendor);
7123                break;
7124            case sstBegin:
7125            {
7126                boolean isblock = false;
7127                int numOfSolidToken = 0;
7128                // if linebreak appears before the ;, then it a block, else it a
7129                TSourceToken st ;
7130                if (lcpos == lcsourcetokenlist.size() - 1){
7131                    // this is the last token
7132                }else{
7133                    for(int i=lcpos+1;i<lcsourcetokenlist.size();i++){
7134                        st = lcsourcetokenlist.get(i);
7135                        if (st.issolidtoken()){
7136                            numOfSolidToken++;
7137                        }
7138                        if (st.tokencode == ';') {
7139                            if (numOfSolidToken<=3){
7140
7141                            }else{
7142                                isblock = true;
7143                            }
7144                            break;
7145                        }
7146
7147                        if (numOfSolidToken > 3){
7148                            isblock = true;
7149                            break;
7150                        }
7151                    }
7152                }
7153
7154                if (isblock){
7155                    ret = new TCommonBlock(pdbvendor);
7156                    gnewsqlstatementtype = ret.sqlstatementtype;
7157                }else{
7158                    ret = new TBeginTran(pdbvendor);
7159                    pcst.tokencode = TBaseType.rrw_bigquery_begin_transaction;
7160                }
7161
7162
7163                break;
7164            }
7165            case sstbegintran:
7166            {
7167                ret = new TBeginTran(pdbvendor);
7168                if (pcst.tokencode == TBaseType.rrw_begin){
7169                    pcst.tokencode = TBaseType.rrw_bigquery_begin_transaction;
7170                }
7171
7172                break;
7173            }
7174            case sstExecute:
7175            {
7176                ret =  new TExecImmeStmt(pdbvendor);
7177                break;
7178            }
7179            case sst_ifstmt:
7180                ret = new TIfStmt(pdbvendor);
7181                break;
7182            case sst_loopstmt:
7183                ret = new TLoopStmt(pdbvendor);
7184                break;
7185            case sstRepeat:
7186                ret = new TRepeatStmt(pdbvendor);
7187                break;
7188            case sstWhilestmt:
7189                ret = new TWhileStmt(pdbvendor);
7190                break;
7191            case sstForStmt:
7192                ret = new TForStmt(pdbvendor);
7193                break;
7194            case sst_casestmt:
7195                ret = new TCaseStmt(pdbvendor);
7196                break;
7197            default:
7198            {
7199                ret = new TUnknownSqlStatement(pdbvendor);
7200                ret.sqlstatementtype = gnewsqlstatementtype;
7201                break;
7202            }
7203        }    // case
7204
7205        return ret;
7206    }
7207
7208TCustomSqlStatement issnowflake(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
7209    TCustomSqlStatement ret = null;
7210
7211    gnewsqlstatementtype = ESqlStatementType.sstinvalid;
7212
7213    if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
7214       || (pcst.tokencode  == TBaseType.cmtslashstar)
7215       || (pcst.tokencode  == TBaseType.lexspace)
7216       || (pcst.tokencode  == TBaseType.lexnewline)
7217        || (pcst.tokentype == ETokenType.ttsemicolon) )
7218    {
7219      return null;
7220    }
7221
7222    int lcpos = pcst.posinlist;
7223    TSourceTokenList lcsourcetokenlist = pcst.container;
7224    TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
7225
7226    //subquery after semicolon or at first line
7227    if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
7228      {
7229        int k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
7230        if ( k >0 )
7231          {
7232            ret = new TSelectSqlStatement(pdbvendor);
7233          }
7234        else{
7235            k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_with,1,"(");
7236            int k2 = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_as,3,"(");
7237            if (( k >0 ) && (k2 > 2))
7238            {
7239                ret = new TSelectSqlStatement(pdbvendor);
7240            }
7241
7242        }
7243
7244        return ret;
7245      }
7246
7247    //cte
7248    if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
7249      {
7250        ret = findcte(pcst,pdbvendor);
7251        if ( (ret != null) )  return ret;
7252      }
7253
7254    gnewsqlstatementtype = findsnowflakecmd(pcst);
7255
7256    TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
7257    switch (gnewsqlstatementtype) {    //
7258        case sstinvalid:
7259          {
7260            ret = null;
7261
7262            if ( pstate == EFindSqlStateType.stnormal )
7263              {
7264                if ( pcst.tokencode == TBaseType.label_begin )
7265                  {
7266                    ret = new TCommonBlock(pdbvendor);
7267                    gnewsqlstatementtype = ret.sqlstatementtype;
7268                  }
7269                else if ( pcst.tokencode == TBaseType.rrw_declare )
7270                  {
7271                    ret = new TCommonBlock(pdbvendor);
7272                    gnewsqlstatementtype = ret.sqlstatementtype;
7273                  }
7274                else if ( pcst.tokencode == TBaseType.rrw_begin )
7275                  {
7276                    ret = new TCommonBlock(pdbvendor);
7277                    gnewsqlstatementtype = ret.sqlstatementtype;
7278                  }
7279                else if ( pcst.tokencode == TBaseType.rrw_procedure )
7280                  {
7281                    ret = new TPlsqlCreateProcedure(pdbvendor);
7282                    // ret.sqlstatementtype = ESqlStatementType.sstplsql_createprocedure;
7283                    gnewsqlstatementtype = ret.sqlstatementtype;
7284                  }
7285                else if ( pcst.tokencode == TBaseType.rrw_function )
7286                  {
7287                    ret = new TPlsqlCreateFunction(pdbvendor);
7288                    // ret.sqlstatementtype = ESqlStatementType.sstplsql_createfunction;
7289                    gnewsqlstatementtype = ret.sqlstatementtype;
7290                  }
7291                else if ( pcst.tokencode == TBaseType.rrw_package )
7292                  {
7293                    ret = new TPlsqlCreatePackage(pdbvendor);
7294                   // ret.sqlstatementtype = ESqlStatementType.sstplsql_createpackage;
7295                    gnewsqlstatementtype = ret.sqlstatementtype;
7296                  }
7297              }
7298              break;
7299          }
7300        case sstselect:
7301          {
7302            boolean lcisnewsql = true;
7303
7304            if ( pstate != EFindSqlStateType.stnormal )
7305              {
7306                // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
7307                if ( (lcprevsolidtoken != null) )
7308                  {
7309                    if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
7310                      lcisnewsql = false; //subqery
7311                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
7312                      lcisnewsql = false;
7313                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
7314                      lcisnewsql = false;
7315                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
7316                      lcisnewsql = false;
7317                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
7318                      lcisnewsql = false;
7319                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
7320                      lcisnewsql = false;
7321                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
7322                      {
7323                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
7324                          lcisnewsql = false;
7325                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
7326                          lcisnewsql = false;
7327                      }
7328
7329                    if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
7330                      {
7331                        TSourceToken lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
7332                        if ( (lcpprevsolidtoken != null) )
7333                          {
7334                            if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
7335                              lcisnewsql = false;
7336                          }
7337                      }
7338
7339                  }
7340
7341
7342                if ( (lccurrentsqlstatement != null) )
7343                  {
7344                    if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
7345                      lcisnewsql = false;
7346                  }
7347
7348              }
7349
7350            if ( lcisnewsql )
7351              ret = new TSelectSqlStatement(pdbvendor);
7352
7353            break;
7354          }
7355        case sstinsert:
7356          {
7357            boolean lcisnewsql = true;
7358            if ( pstate != EFindSqlStateType.stnormal )
7359              {
7360                if ( (lccurrentsqlstatement != null) )
7361                  {
7362
7363                  }
7364              }
7365
7366            if ( lcisnewsql )
7367              ret = new TInsertSqlStatement(pdbvendor);
7368
7369            break;
7370          }
7371        case sstupdate:
7372          {
7373            boolean lcisnewsql = true;
7374            if ( pstate != EFindSqlStateType.stnormal )
7375              {
7376                lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
7377                if ( (lcprevsolidtoken != null) )
7378                  { //
7379                    if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
7380                      lcisnewsql = false;
7381                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
7382                      lcisnewsql = false;
7383                  }
7384
7385                TSourceToken lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
7386                if ( (lcnextsolidtoken != null) )
7387                  {
7388                    if ( lcnextsolidtoken.tokentype == ETokenType.ttleftparenthesis)
7389                      {
7390                        int k = lcsourcetokenlist.solidtokenafterpos(lcnextsolidtoken.posinlist,TBaseType.rrw_select,1,"(");
7391                        if ( k  == 0 ) lcisnewsql = false;
7392                      }
7393                  }
7394
7395
7396                if ( (lccurrentsqlstatement != null) )
7397                  {
7398                  }
7399              }
7400
7401            if ( lcisnewsql )
7402              {
7403                ret = new TUpdateSqlStatement(pdbvendor);
7404                ret.dummytag = 1; // means set clause in update is not found yet, used to seperate set clause from set statement
7405              }
7406            break;
7407          }
7408        case sstdelete:
7409          {
7410            boolean lcisnewsql = true;
7411
7412            if ( pstate != EFindSqlStateType.stnormal )
7413              {
7414                lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
7415                if ( (lcprevsolidtoken != null) )
7416                  {
7417                    if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
7418                      lcisnewsql = false;
7419                  }
7420
7421                if ( (lccurrentsqlstatement != null) )
7422                  {
7423                  }
7424              }
7425
7426            if ( lcisnewsql )
7427              ret = new TDeleteSqlStatement(pdbvendor);
7428
7429            break;
7430          }
7431        case sstmerge:
7432          {
7433            ret = new TMergeSqlStatement(pdbvendor);
7434            ret.sqlstatementtype = gnewsqlstatementtype;
7435            break;
7436          }
7437        case sstoraclecommit:
7438          {
7439            ret = new TUnknownSqlStatement(pdbvendor);
7440            ret.sqlstatementtype = gnewsqlstatementtype;
7441            break;
7442          }
7443        case sstoraclerollback:
7444          {
7445            ret = new TUnknownSqlStatement(pdbvendor);
7446            ret.sqlstatementtype = gnewsqlstatementtype;
7447            break;
7448          }
7449        case sstoraclerevoke:
7450          {
7451            ret = new TUnknownSqlStatement(pdbvendor);
7452            ret.sqlstatementtype = gnewsqlstatementtype;
7453              break;
7454          }
7455        case sstoraclegrant:
7456          {
7457            ret = new TUnknownSqlStatement(pdbvendor);
7458            ret.sqlstatementtype = gnewsqlstatementtype;
7459              break;
7460          }
7461        case sstcreatetable:
7462          {
7463            ret = new TCreateTableSqlStatement(pdbvendor);
7464              break;
7465          }
7466        case sstoraclecreateview:
7467          {
7468            ret = new TCreateViewSqlStatement(pdbvendor);
7469              break;
7470          }
7471        case sstAlterAccount:
7472        {
7473            ret = new TAlterAccountStmt(pdbvendor);
7474            break;
7475        }
7476        case sstalterdatabase:
7477        {
7478            ret = new TAlterDatabaseStmt(pdbvendor);
7479            break;
7480        }
7481        case sstAlterFileFormat:
7482        {
7483            ret = new TAlterFileFormatStmt(pdbvendor);
7484            break;
7485        }
7486        case sstalterfunction:
7487        {
7488            ret = new TAlterFunctionStmt(pdbvendor);
7489            break;
7490        }
7491        case sstAlterNetworkPolicy:
7492        {
7493            ret = new TAlterNetworkPolicyStmt(pdbvendor);
7494            break;
7495        }
7496        case sstAlterPipe:
7497        {
7498            ret = new TAlterPipeStmt(pdbvendor);
7499            break;
7500        }
7501        case sstAlterResourceMonitor:
7502        {
7503            ret = new TAlterResourceMonitorStmt(pdbvendor);
7504            break;
7505        }
7506        case sstAlterRole:
7507        {
7508            ret = new TAlterRoleStmt(pdbvendor);
7509            break;
7510        }
7511        case sstAlterSchema:
7512        {
7513            ret = new TAlterSchemaStmt(pdbvendor);
7514            break;
7515        }
7516        case sstaltersequence:
7517        {
7518            ret = new TAlterSequenceStatement(pdbvendor);
7519            break;
7520        }
7521        case sstaltersession:
7522        {
7523            ret = new TAlterSessionStatement(pdbvendor);
7524            break;
7525        }
7526        case sstAlterStage:
7527        {
7528            ret = new TAlterStageStmt(pdbvendor);
7529            break;
7530        }
7531        case sstalteruser:
7532        {
7533            ret = new TAlterUserStmt(pdbvendor);
7534            break;
7535        }
7536        case sstAlterShare:
7537        {
7538            ret = new TAlterShareStmt(pdbvendor);
7539            break;
7540        }
7541        case sstalterview:
7542        {
7543            ret = new TAlterViewStatement(pdbvendor);
7544            break;
7545        }
7546        case sstAlterWarehouse:
7547        {
7548            ret = new TAlterWarehouseStmt(pdbvendor);
7549            break;
7550        }
7551        case sstBegin:
7552        {
7553            boolean isblock = false;
7554            int numOfSolidToken = 0;
7555            // if linebreak appears before the ;, then it a block, else it a
7556            TSourceToken st ;
7557            if (lcpos == lcsourcetokenlist.size() - 1){
7558                // this is the last token
7559            }else{
7560                for(int i=lcpos+1;i<lcsourcetokenlist.size();i++){
7561                    st = lcsourcetokenlist.get(i);
7562                    if (st.issolidtoken()){
7563                        numOfSolidToken++;
7564                    }
7565                    if (st.tokencode == ';') {
7566                        if (numOfSolidToken<=3){
7567
7568                        }else{
7569                            isblock = true;
7570                        }
7571                        break;
7572                    }
7573
7574                    if (numOfSolidToken > 3){
7575                        isblock = true;
7576                        break;
7577                    }
7578                }
7579            }
7580
7581            if (isblock){
7582                ret = new TCommonBlock(pdbvendor);
7583                gnewsqlstatementtype = ret.sqlstatementtype;
7584            }else{
7585                ret = new TBeginTran(pdbvendor);
7586                pcst.tokencode = TBaseType.rrw_snowflake_begin_transaction;
7587            }
7588
7589
7590            break;
7591        }
7592        case sstbegintran:
7593        {
7594            ret = new TBeginTran(pdbvendor);
7595            if (pcst.tokencode == TBaseType.rrw_begin){
7596                pcst.tokencode = TBaseType.rrw_snowflake_begin_transaction;
7597            }
7598
7599            break;
7600        }
7601        case sstcomment:
7602        {
7603            ret = new TCommentOnSqlStmt(pdbvendor);
7604            break;
7605        }
7606        case sstcommit:
7607        {
7608            ret = new TCommitStmt(pdbvendor);
7609            break;
7610        }
7611        case sstCopyInto:
7612        {
7613            ret = new TSnowflakeCopyIntoStmt(pdbvendor);
7614            break;
7615        }
7616        case sstcreatedatabase:
7617        {
7618            ret = new TCreateDatabaseSqlStatement(pdbvendor);
7619            break;
7620        }
7621        case sstCreateFileFormat:
7622        {
7623            ret = new TCreateFileFormatStmt(pdbvendor);
7624            break;
7625        }
7626        case sstcreatefunction:
7627        {
7628            ret = new TCreateFunctionStmt(pdbvendor);
7629            break;
7630        }
7631        case sstCreateNetworkPolicy:
7632        {
7633            ret = new TCreateNetworkPolicyStmt(pdbvendor);
7634            break;
7635        }
7636        case sstCreatePipe:
7637        {
7638            ret = new TCreatePipeStmt(pdbvendor);
7639            break;
7640        }
7641        case sstCreateResourceMonitor:
7642        {
7643            ret = new TCreateResourceMonitorStmt(pdbvendor);
7644            break;
7645        }
7646        case sstcreaterole:
7647        {
7648            ret = new TCreateRoleStmt(pdbvendor);
7649            break;
7650        }
7651        case sstcreateschema:
7652        {
7653            ret = new TCreateSchemaSqlStatement(pdbvendor);
7654            break;
7655        }
7656        case sstcreatesequence:
7657        {
7658            ret = new TCreateSequenceStmt(pdbvendor);
7659            break;
7660        }
7661        case sstCreateShare:
7662        {
7663            ret = new TCreateShareStmt(pdbvendor);
7664            break;
7665        }
7666        case sstCreateStage:
7667        {
7668            ret = new TCreateStageStmt(pdbvendor);
7669            break;
7670        }
7671        case sstcreateuser:
7672        {
7673            ret = new TCreateUserStmt(pdbvendor);
7674            break;
7675        }
7676        case sstCreateWarehouse:
7677        {
7678            ret = new TCreateWarehouseStmt(pdbvendor);
7679            break;
7680        }
7681        case sstDescFileFormat:
7682        case sstDescFunction:
7683        case sstDescNetworkPolicy:
7684        case sstDescPipe:
7685        case sstDescResult:
7686        case sstDescShare:
7687        case sstDescStage:
7688        case sstDescTable:
7689        case sstDescUser:
7690        case sstDescView:
7691        case sstDescStorage:
7692        {
7693            ret = new TDescribeStmt(pdbvendor);
7694            break;
7695        }
7696        case sstdropfunction:
7697        {
7698            ret = new TDropFunctionStmt(pdbvendor);
7699            break;
7700        }
7701        case sstdropdatabase:
7702        {
7703            ret = new TDropDatabaseStmt(pdbvendor);
7704            break;
7705        }
7706        case sstDropFileFormat:
7707        {
7708            ret = new TDropStmt(pdbvendor);
7709            ret.sqlstatementtype = gnewsqlstatementtype;
7710            break;
7711        }
7712        case sstDropNetworkPolicy:
7713        {
7714            ret = new TDropStmt(pdbvendor);
7715            ret.sqlstatementtype = gnewsqlstatementtype;
7716            break;
7717        }
7718        case sstDropPipe:
7719        {
7720            ret = new TDropStmt(pdbvendor);
7721            ret.sqlstatementtype = gnewsqlstatementtype;
7722            break;
7723        }
7724        case sstDropResourceMonitor:
7725        {
7726            ret = new TDropStmt(pdbvendor);
7727            ret.sqlstatementtype = gnewsqlstatementtype;
7728            break;
7729        }
7730        case sstdroprole:
7731        {
7732            ret = new TDropRoleStmt(pdbvendor);
7733            break;
7734        }
7735        case sstdropschema:
7736        {
7737            ret = new TDropSchemaSqlStatement(pdbvendor);
7738            break;
7739        }
7740        case sstDropShare:
7741        {
7742            ret = new TDropStmt(pdbvendor);
7743            ret.sqlstatementtype = gnewsqlstatementtype;
7744            break;
7745        }
7746        case sstDropStage:
7747        {
7748            ret = new TDropStmt(pdbvendor);
7749            ret.sqlstatementtype = gnewsqlstatementtype;
7750            break;
7751        }
7752        case sstdroptable:
7753        {
7754            ret = new TDropTableSqlStatement(pdbvendor);
7755            break;
7756        }
7757        case sstdropuser:
7758        {
7759            ret = new TDropUserStmt(pdbvendor);
7760            break;
7761        }
7762        case sstdropview:
7763        {
7764            ret = new TDropViewSqlStatement(pdbvendor);
7765            break;
7766        }
7767        case sstDropWarehouse:
7768        {
7769            ret = new TDropStmt(pdbvendor);
7770            ret.sqlstatementtype = gnewsqlstatementtype;
7771            break;
7772        }
7773        case sstGet:
7774        {
7775            ret = new TGetStmt(pdbvendor);
7776            break;
7777        }
7778        case sstGrant:
7779        {
7780            ret = new TGrantStmt(pdbvendor);
7781            break;
7782        }
7783        case sstList:
7784        {
7785            ret = new TListStmt(pdbvendor);
7786            break;
7787        }
7788        case sstPut:
7789        {
7790            ret = new TPutStmt(pdbvendor);
7791            break;
7792        }
7793        case sstRemove:
7794        {
7795            ret = new TRemoveStmt(pdbvendor);
7796            break;
7797        }
7798        case sstRevoke:
7799        {
7800            ret = new TRevokeStmt(pdbvendor);
7801            break;
7802        }
7803        case sstrollback:
7804        {
7805            ret = new TRollbackStmt(pdbvendor);
7806            break;
7807        }
7808        case sstset:
7809        {
7810            ret = new TSetStmt(pdbvendor);
7811            break;
7812        }
7813        case sstShowColumns:
7814        case sstShowDatabases:
7815        case sstShowFileFormats:
7816        case sstShowFunctions:
7817        case sstShowGrants:
7818        case sstShowNetworkPolicies:
7819        case sstShowObjects:
7820        case sstShowParameters:
7821        case sstShowPipes:
7822        case sstShowResourceMonitors:
7823        case sstShowRoles:
7824        case sstShowSchemas:
7825        case sstShowSequences:
7826        case sstShowShares:
7827        case sstShowStages:
7828        case sstShowTables:
7829        case sstShowTransactions:
7830        case sstShowUserFunctions:
7831        case sstShowUsers:
7832        case sstShowVariables:
7833        case sstShowViews:
7834        case sstShowWarehouses:
7835        case sstShowProcedures:
7836        case sstShowTasks:
7837        case sstShowStreams:
7838        {
7839            ret = new TShowStmt(pdbvendor);
7840            ret.sqlstatementtype = gnewsqlstatementtype;
7841            break;
7842        }
7843        case sstTruncate:
7844        {
7845            ret = new TTruncateStatement(pdbvendor);
7846
7847            break;
7848        }
7849        case sstUndropDatabase:
7850        case sstUndropSchema:
7851        case sstUndropTable:
7852        {
7853            ret = new TUndropStmt(pdbvendor);
7854            ret.sqlstatementtype = gnewsqlstatementtype;
7855            break;
7856        }
7857        case sstunset:
7858        {
7859            ret = new TUnsetStmt(pdbvendor);
7860            break;
7861        }
7862        case sstcreatematerializedview:{
7863            ret = new TCreateMaterializedSqlStatement(pdbvendor);
7864            break;
7865        }
7866        case sstoraclecreateindex:
7867          {
7868            ret = new TCreateIndexSqlStatement(pdbvendor);
7869              break;
7870          }
7871        case sstoracledroptable:
7872          {
7873            ret = new TDropTableSqlStatement(pdbvendor);
7874              break;
7875          }
7876        case sstoracledropview:
7877          {
7878           ret = new TDropViewSqlStatement(pdbvendor);
7879              break;
7880          }
7881        case sstoracledropindex:
7882          {
7883            ret = new TDropIndexSqlStatement(pdbvendor);
7884              break;
7885          }
7886        case sstaltertable:
7887          {
7888            ret = new TAlterTableStatement(pdbvendor);
7889              break;
7890          }
7891        case sstoraclealtersession:
7892          {
7893            ret = new TAlterSessionStatement(pdbvendor);
7894              break;
7895          }
7896        case sstplsql_createfunction:
7897        {
7898          ret = new TPlsqlCreateFunction(pdbvendor);
7899          ret.sqlstatementtype = gnewsqlstatementtype;
7900          // System.out.println(gnewsqlstatementtype);
7901            break;
7902        }
7903        case sstCommentOn:
7904          {
7905            ret = new TCommentOnSqlStmt(pdbvendor);
7906              break;
7907          }
7908        case sstoraclecreatesequence:
7909          {
7910            ret = new TCreateSequenceStmt(pdbvendor);
7911              break;
7912          }
7913        case sstpostgresqlCreateIndex:
7914            ret = new TCreateIndexSqlStatement(pdbvendor);
7915            break;
7916        case sstpostgresqlCreateView:
7917            ret = new TCreateViewSqlStatement(pdbvendor);
7918            break;
7919        case sstpostgresqlCreateFunction:
7920            ret = new TCreateFunctionStmt(pdbvendor);
7921            break;
7922//        case sstcreatetrigger:
7923//            ret = new TCreateTriggerStmt(pdbvendor);
7924//            break;
7925        case sstpostgresqlTruncate:
7926            ret = new TTruncateStatement(pdbvendor);
7927            break;
7928        case sstpostgresqlDropTable:
7929            ret = new TDropTableSqlStatement(pdbvendor);
7930            break;
7931        case sstcreateview:
7932            ret = new TCreateViewSqlStatement(pdbvendor);
7933            break;
7934        case sstcall:
7935            ret = new TCallStatement(pdbvendor);
7936            break;
7937        case sstSnowflakePseudoExprStmt:
7938            ret = new TPseudoExprStmt(pdbvendor);
7939            break;
7940        case sstcreateprocedure:
7941            ret = new TCreateProcedureStmt(pdbvendor);
7942            break;
7943        case sstCreateStream:
7944            ret = new TCreateStreamStmt(pdbvendor);
7945            break;
7946        case sstUse:
7947            TSourceToken lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
7948            if (lcnextsolidtoken != null){
7949                if (lcnextsolidtoken.toString().equalsIgnoreCase("database")){
7950                    ret = new TUseDatabase(pdbvendor);
7951                }else if (lcnextsolidtoken.toString().equalsIgnoreCase("role")){
7952                    ret = new TUseRole(pdbvendor);
7953                }else if (lcnextsolidtoken.toString().equalsIgnoreCase("warehouse")){
7954                    ret = new TUseWarehouse(pdbvendor);
7955                }else{
7956                    ret = new TUseSchema(pdbvendor);
7957                }
7958
7959            }else{
7960                ret = new TUnknownSqlStatement(pdbvendor);
7961                ret.sqlstatementtype = gnewsqlstatementtype;
7962            }
7963            break;
7964        case sstExecute:
7965        {
7966            ret =  new TExecuteSqlStatement(pdbvendor);
7967            break;
7968        }
7969        case sstAlterTask:
7970            ret =  new TAlterTaskStmt(pdbvendor);
7971            break;
7972        case sstCreateTask:
7973            ret = new TCreateTaskStmt(pdbvendor);
7974            break;
7975        case sstAlterMaterializedView:
7976            ret = new TAlterMaterializedViewStmt(pdbvendor);
7977            break;
7978        case sstDropMaterializedView:
7979            ret = new TDropMaterializedViewStmt(pdbvendor);
7980            break;
7981        case sstdropprocedure:
7982            ret = new TDropProcedureStmt(pdbvendor);
7983            break;
7984        case sstUseSecondaryRoles:
7985            ret = new TUseSecondaryRolesStmt(pdbvendor);
7986            break;
7987        case sstDropStreamlit:
7988            ret = new TDropStmt(pdbvendor);
7989            break;
7990        case sstDropStream:
7991            ret = new TDropStreamStmt(pdbvendor);
7992            break;
7993        default:
7994          {
7995            ret = new TUnknownSqlStatement(pdbvendor);
7996            ret.sqlstatementtype = gnewsqlstatementtype;
7997            break;
7998          }
7999    }    // case
8000
8001    return ret;
8002}
8003
8004TCustomSqlStatement isgreenplum(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
8005        TCustomSqlStatement ret = null;
8006
8007        gnewsqlstatementtype = ESqlStatementType.sstinvalid;
8008
8009        if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
8010           || (pcst.tokencode  == TBaseType.cmtslashstar)
8011           || (pcst.tokencode  == TBaseType.lexspace)
8012           || (pcst.tokencode  == TBaseType.lexnewline)
8013            || (pcst.tokentype == ETokenType.ttsemicolon) )
8014        {
8015          return null;
8016        }
8017
8018        int lcpos = pcst.posinlist;
8019        TSourceTokenList lcsourcetokenlist = pcst.container;
8020        TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
8021
8022        //subquery after semicolon or at first line
8023        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
8024          {
8025            int k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
8026            if ( k >0 )
8027              {
8028                ret = new TSelectSqlStatement(pdbvendor);
8029              }
8030
8031            return ret;
8032          }
8033
8034        //cte
8035        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
8036          {
8037            ret = findcte(pcst,pdbvendor);
8038            if ( (ret != null) )  return ret;
8039          }
8040
8041        gnewsqlstatementtype = findgreenplumcmd(pcst);
8042
8043        TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
8044        switch (gnewsqlstatementtype) {    //
8045            case sstinvalid:
8046              {
8047                ret = null;
8048
8049                if ( pstate == EFindSqlStateType.stnormal )
8050                  {
8051                    if ( pcst.tokencode == TBaseType.label_begin )
8052                      {
8053                        ret = new TCommonBlock(pdbvendor);
8054                        gnewsqlstatementtype = ret.sqlstatementtype;
8055                      }
8056                    else if ( pcst.tokencode == TBaseType.rrw_declare )
8057                      {
8058                        ret = new TCommonBlock(pdbvendor);
8059                        gnewsqlstatementtype = ret.sqlstatementtype;
8060                      }
8061                    else if ( pcst.tokencode == TBaseType.rrw_begin )
8062                      {
8063                        ret = new TCommonBlock(pdbvendor);
8064                        gnewsqlstatementtype = ret.sqlstatementtype;
8065                      }
8066                    else if ( pcst.tokencode == TBaseType.rrw_procedure )
8067                      {
8068                        ret = new TPlsqlCreateProcedure(pdbvendor);
8069                        // ret.sqlstatementtype = ESqlStatementType.sstplsql_createprocedure;
8070                        gnewsqlstatementtype = ret.sqlstatementtype;
8071                      }
8072                    else if ( pcst.tokencode == TBaseType.rrw_function )
8073                      {
8074                        ret = new TPlsqlCreateFunction(pdbvendor);
8075                        // ret.sqlstatementtype = ESqlStatementType.sstplsql_createfunction;
8076                        gnewsqlstatementtype = ret.sqlstatementtype;
8077                      }
8078                    else if ( pcst.tokencode == TBaseType.rrw_package )
8079                      {
8080                        ret = new TPlsqlCreatePackage(pdbvendor);
8081                       // ret.sqlstatementtype = ESqlStatementType.sstplsql_createpackage;
8082                        gnewsqlstatementtype = ret.sqlstatementtype;
8083                      }
8084                  }
8085                  break;
8086              }
8087            case sstselect:
8088              {
8089                boolean lcisnewsql = true;
8090
8091                if ( pstate != EFindSqlStateType.stnormal )
8092                  {
8093                    // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
8094                    if ( (lcprevsolidtoken != null) )
8095                      {
8096                        if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
8097                          lcisnewsql = false; //subqery
8098                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
8099                          lcisnewsql = false;
8100                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
8101                          lcisnewsql = false;
8102                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
8103                          lcisnewsql = false;
8104                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
8105                          lcisnewsql = false;
8106                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
8107                          lcisnewsql = false;
8108                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
8109                          {
8110                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
8111                              lcisnewsql = false;
8112                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
8113                              lcisnewsql = false;
8114                          }
8115
8116                        if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
8117                          {
8118                            TSourceToken lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
8119                            if ( (lcpprevsolidtoken != null) )
8120                              {
8121                                if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
8122                                  lcisnewsql = false;
8123                              }
8124                          }
8125
8126                      }
8127
8128
8129                    if ( (lccurrentsqlstatement != null) )
8130                      {
8131                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
8132                          lcisnewsql = false;
8133                      }
8134
8135                  }
8136
8137                if ( lcisnewsql )
8138                  ret = new TSelectSqlStatement(pdbvendor);
8139
8140                break;
8141              }
8142            case sstinsert:
8143              {
8144                boolean lcisnewsql = true;
8145                if ( pstate != EFindSqlStateType.stnormal )
8146                  {
8147                    if ( (lccurrentsqlstatement != null) )
8148                      {
8149
8150                      }
8151                  }
8152
8153                if ( lcisnewsql )
8154                  ret = new TInsertSqlStatement(pdbvendor);
8155
8156                break;
8157              }
8158            case sstupdate:
8159              {
8160                boolean lcisnewsql = true;
8161                if ( pstate != EFindSqlStateType.stnormal )
8162                  {
8163                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
8164                    if ( (lcprevsolidtoken != null) )
8165                      { //
8166                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
8167                          lcisnewsql = false;
8168                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
8169                          lcisnewsql = false;
8170                      }
8171
8172                    TSourceToken lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
8173                    if ( (lcnextsolidtoken != null) )
8174                      {
8175                        if ( lcnextsolidtoken.tokentype == ETokenType.ttleftparenthesis)
8176                          {
8177                            int k = lcsourcetokenlist.solidtokenafterpos(lcnextsolidtoken.posinlist,TBaseType.rrw_select,1,"(");
8178                            if ( k  == 0 ) lcisnewsql = false;
8179                          }
8180                      }
8181
8182
8183                    if ( (lccurrentsqlstatement != null) )
8184                      {
8185                      }
8186                  }
8187
8188                if ( lcisnewsql )
8189                  {
8190                    ret = new TUpdateSqlStatement(pdbvendor);
8191                    ret.dummytag = 1; // means set clause in update is not found yet, used to seperate set clause from set statement
8192                  }
8193                break;
8194              }
8195            case sstdelete:
8196              {
8197                boolean lcisnewsql = true;
8198
8199                if ( pstate != EFindSqlStateType.stnormal )
8200                  {
8201                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
8202                    if ( (lcprevsolidtoken != null) )
8203                      {
8204                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
8205                          lcisnewsql = false;
8206                      }
8207
8208                    if ( (lccurrentsqlstatement != null) )
8209                      {
8210                      }
8211                  }
8212
8213                if ( lcisnewsql )
8214                  ret = new TDeleteSqlStatement(pdbvendor);
8215
8216                break;
8217              }
8218            case sstmerge:
8219              {
8220                ret = new TMergeSqlStatement(pdbvendor);
8221                ret.sqlstatementtype = gnewsqlstatementtype;
8222                break;
8223              }
8224            case sstoraclecommit:
8225              {
8226                ret = new TUnknownSqlStatement(pdbvendor);
8227                ret.sqlstatementtype = gnewsqlstatementtype;
8228                break;
8229              }
8230            case sstoraclerollback:
8231              {
8232                ret = new TUnknownSqlStatement(pdbvendor);
8233                ret.sqlstatementtype = gnewsqlstatementtype;
8234                break;
8235              }
8236            case sstoraclesavepoint:
8237              {
8238                ret = new TUnknownSqlStatement(pdbvendor);
8239                ret.sqlstatementtype = gnewsqlstatementtype;
8240                  break;
8241              }
8242            case sstoraclerevoke:
8243              {
8244                ret = new TUnknownSqlStatement(pdbvendor);
8245                ret.sqlstatementtype = gnewsqlstatementtype;
8246                  break;
8247              }
8248            case sstoraclegrant:
8249              {
8250                ret = new TUnknownSqlStatement(pdbvendor);
8251                ret.sqlstatementtype = gnewsqlstatementtype;
8252                  break;
8253              }
8254            case sstoracleanalyze:
8255              {
8256                ret = new TUnknownSqlStatement(pdbvendor);
8257                ret.sqlstatementtype = gnewsqlstatementtype;
8258                  break;
8259              }
8260            case sstoracletruncate:
8261              {
8262                ret = new TUnknownSqlStatement(pdbvendor);
8263                ret.sqlstatementtype = gnewsqlstatementtype;
8264                  break;
8265              }
8266            case sstcreatetable:
8267            case sstgreenplumCreateExternalTable:
8268              {
8269                ret = new TCreateTableSqlStatement(pdbvendor);
8270                  break;
8271              }
8272            case sstoraclecreateview:
8273              {
8274                ret = new TCreateViewSqlStatement(pdbvendor);
8275                  break;
8276              }
8277            case sstcreatematerializedview:{
8278                ret = new TCreateMaterializedSqlStatement(pdbvendor);
8279                break;
8280            }
8281            case sstoraclecreateindex:
8282              {
8283                ret = new TCreateIndexSqlStatement(pdbvendor);
8284                  break;
8285              }
8286            case sstoraclecreatedatabase:
8287              {
8288                ret = new TCreateDatabaseSqlStatement(pdbvendor);
8289                  break;
8290              }
8291            case sstoracledroptable:
8292              {
8293                ret = new TDropTableSqlStatement(pdbvendor);
8294                  break;
8295              }
8296            case sstoracledropview:
8297              {
8298               ret = new TDropViewSqlStatement(pdbvendor);
8299                  break;
8300              }
8301            case sstoracledropindex:
8302              {
8303                ret = new TDropIndexSqlStatement(pdbvendor);
8304                  break;
8305              }
8306            case sstaltertable:
8307              {
8308                ret = new TAlterTableStatement(pdbvendor);
8309                  break;
8310              }
8311            case sstoraclealtersession:
8312              {
8313                ret = new TAlterSessionStatement(pdbvendor);
8314                  break;
8315              }
8316            case sstplsql_createprocedure:
8317            {
8318              ret = new TPlsqlCreateProcedure(pdbvendor);
8319              ret.sqlstatementtype = gnewsqlstatementtype;
8320              // System.out.println(gnewsqlstatementtype);
8321                break;
8322            }
8323            case sstplsql_createfunction:
8324            {
8325              ret = new TPlsqlCreateFunction(pdbvendor);
8326              ret.sqlstatementtype = gnewsqlstatementtype;
8327              // System.out.println(gnewsqlstatementtype);
8328                break;
8329            }
8330            case sstplsql_createpackage:
8331            {
8332              ret = new TPlsqlCreatePackage(pdbvendor);
8333              ret.sqlstatementtype = gnewsqlstatementtype;
8334              // System.out.println(gnewsqlstatementtype);
8335                break;
8336            }
8337            case sstplsql_createtrigger:
8338            {
8339              ret = new TPlsqlCreateTrigger(pdbvendor);
8340              ret.sqlstatementtype = gnewsqlstatementtype;
8341              // System.out.println(gnewsqlstatementtype);
8342                break;
8343            }
8344            case sstplsql_execimmestmt:
8345              {
8346                ret = new TExecImmeStmt(pdbvendor);
8347               // ret.sqlstatementtype = gnewsqlstatementtype;
8348                // System.out.println(gnewsqlstatementtype);
8349                  break;
8350              }
8351            case sstoraclecreatepackagebody:
8352             {
8353                ret = new TPlsqlCreatePackage(pdbvendor);
8354                ret.sqlstatementtype = ESqlStatementType.sstplsql_createpackage;
8355                 break;
8356             }
8357            case sstplsql_createtype_placeholder:
8358            {
8359              ret = new TPlsqlCreateType_Placeholder(pdbvendor);
8360              ret.sqlstatementtype = gnewsqlstatementtype;
8361              // System.out.println(gnewsqlstatementtype);
8362                break;
8363            }
8364            case sstplsql_createtypebody:
8365              {
8366                ret = new TPlsqlCreateTypeBody(pdbvendor);
8367                ret.sqlstatementtype = gnewsqlstatementtype;
8368                  break;
8369              }
8370            case sstCommentOn:
8371              {
8372                ret = new TCommentOnSqlStmt(pdbvendor);
8373                  break;
8374              }
8375            case sstoraclecreatesequence:
8376              {
8377                ret = new TCreateSequenceStmt(pdbvendor);
8378                  break;
8379              }
8380            case sstoraclecreatesynonym:
8381              {
8382                ret = new TCreateSynonymStmt(pdbvendor);
8383                  break;
8384              }
8385            case sstoraclecreatedirectory:
8386              {
8387                ret = new TOracleCreateDirectoryStmt(pdbvendor);
8388                  break;
8389              }
8390            case sstpostgresqlCreateIndex:
8391                ret = new TCreateIndexSqlStatement(pdbvendor);
8392                break;
8393            case sstpostgresqlCreateView:
8394                ret = new TCreateViewSqlStatement(pdbvendor);
8395                break;
8396            case sstpostgresqlCreateFunction:
8397                ret = new TCreateFunctionStmt(pdbvendor);
8398                break;
8399            case sstcreatetrigger:
8400                ret = new TCreateTriggerStmt(pdbvendor);
8401                break;
8402            case sstpostgresqlMove:
8403                ret = new TMoveStmt(EDbVendor.dbvgreenplum);
8404                break;
8405            case sstpostgresqlTruncate:
8406                ret = new TTruncateStatement(EDbVendor.dbvgreenplum);
8407                break;
8408            case sstpostgresqlExecute:
8409                ret = new TExecuteSqlStatement(EDbVendor.dbvgreenplum);
8410                break;
8411            case sstValues:
8412                ret = new TSelectSqlStatement(EDbVendor.dbvgreenplum);
8413                break;
8414            case sstpostgresqlDeclare: {
8415                boolean lcisnewsql = true;
8416
8417                TSourceToken lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos, 2, false);
8418                if ((lcnextsolidtoken != null)) {
8419                    if (lcnextsolidtoken.tokencode == TBaseType.rrw_greenplum_CURSOR) {
8420                        lcisnewsql = false;
8421                    }
8422                }
8423
8424
8425                if (lcisnewsql)
8426                    ret = new TCommonBlock(pdbvendor);
8427                else {
8428                    ret = new TUnknownSqlStatement(pdbvendor);
8429                }
8430                ret.sqlstatementtype = gnewsqlstatementtype;
8431
8432                break;
8433            }
8434            case sstpostgresqlSet:
8435                ret = new TSetStmt(pdbvendor);
8436                break;
8437            case sstcreateExtension:
8438                ret = new TCreateExtensionStmt(pdbvendor);
8439                break;
8440            case sstcall:
8441                ret = new TCallStatement(pdbvendor);
8442                break;
8443            case sstpostgresqlCreateSchema:
8444                ret = new TCreateSchemaSqlStatement(pdbvendor);
8445                break;
8446            case sstpostgresqlDo: {
8447                boolean lcisnewsql = false;
8448
8449                if (pstate == EFindSqlStateType.stnormal) {
8450                    TSourceToken lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos, 1, false);
8451                    if ((lcnextsolidtoken != null)) {
8452                        if (lcnextsolidtoken.tokencode == TBaseType.rrw_greenplum_function_delimiter)
8453                            lcisnewsql = true;
8454                    }
8455                }
8456
8457                if (lcisnewsql)
8458                    ret = new TDoExecuteBlockStmt(pdbvendor);
8459
8460                break;
8461            }
8462            case sstpostgresqlComment:
8463                ret = new TCommentOnSqlStmt(pdbvendor);
8464                break;
8465            default:
8466              {
8467                ret = new TUnknownSqlStatement(pdbvendor);
8468                ret.sqlstatementtype = gnewsqlstatementtype;
8469                break;
8470              }
8471        }    // case
8472
8473        return ret;
8474    }
8475
8476TCustomSqlStatement isoraclesql(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
8477    TCustomSqlStatement ret = null;
8478
8479    gnewsqlstatementtype = ESqlStatementType.sstinvalid;
8480
8481    if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
8482       || (pcst.tokencode  == TBaseType.cmtslashstar)
8483       || (pcst.tokencode  == TBaseType.lexspace)
8484       || (pcst.tokencode  == TBaseType.lexnewline)
8485        || (pcst.tokentype == ETokenType.ttsemicolon) )
8486    {
8487      return null;
8488    }
8489
8490    int lcpos = pcst.posinlist;
8491    TSourceTokenList lcsourcetokenlist = pcst.container;
8492    TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
8493
8494    //subquery after semicolon or at first line
8495    if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
8496      {
8497        int k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
8498        if ( k >0 )
8499          {
8500            ret = new TSelectSqlStatement(pdbvendor);
8501          }
8502
8503        return ret;
8504      }
8505
8506    //cte
8507    if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
8508      {
8509        ret = findcte(pcst,pdbvendor);
8510        if ( (ret != null) )  return ret;
8511      }
8512
8513    gnewsqlstatementtype = findoraclecmd(pcst);
8514
8515    TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
8516    switch (gnewsqlstatementtype) {    //
8517        case sstinvalid:
8518          {
8519            ret = null;
8520
8521            if ( pstate == EFindSqlStateType.stnormal )
8522              {
8523                if ( pcst.tokencode == TBaseType.label_begin )
8524                  {
8525                    ret = new TCommonBlock(pdbvendor);
8526                    gnewsqlstatementtype = ret.sqlstatementtype;
8527                  }
8528                else if ( pcst.tokencode == TBaseType.rrw_declare )
8529                  {
8530                    ret = new TCommonBlock(pdbvendor);
8531                    gnewsqlstatementtype = ret.sqlstatementtype;
8532                  }
8533                else if ( pcst.tokencode == TBaseType.rrw_begin )
8534                  {
8535                    ret = new TCommonBlock(pdbvendor);
8536                    gnewsqlstatementtype = ret.sqlstatementtype;
8537                  }
8538                else if ( pcst.tokencode == TBaseType.rrw_procedure )
8539                  {
8540                    ret = new TPlsqlCreateProcedure(pdbvendor);
8541                    // ret.sqlstatementtype = ESqlStatementType.sstplsql_createprocedure;
8542                    gnewsqlstatementtype = ret.sqlstatementtype;
8543                  }
8544                else if ( pcst.tokencode == TBaseType.rrw_function )
8545                  {
8546                    ret = new TPlsqlCreateFunction(pdbvendor);
8547                    // ret.sqlstatementtype = ESqlStatementType.sstplsql_createfunction;
8548                    gnewsqlstatementtype = ret.sqlstatementtype;
8549                  }
8550                else if ( pcst.tokencode == TBaseType.rrw_package )
8551                  {
8552                    ret = new TPlsqlCreatePackage(pdbvendor);
8553                   // ret.sqlstatementtype = ESqlStatementType.sstplsql_createpackage;
8554                    gnewsqlstatementtype = ret.sqlstatementtype;
8555                  }
8556              }
8557              break;
8558          }
8559        case sstselect:
8560          {
8561            boolean lcisnewsql = true;
8562
8563            if ( pstate != EFindSqlStateType.stnormal )
8564              {
8565                // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
8566                if ( (lcprevsolidtoken != null) )
8567                  {
8568                    if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
8569                      lcisnewsql = false; //subquery
8570                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
8571                      lcisnewsql = false;
8572                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
8573                      lcisnewsql = false;
8574                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
8575                      lcisnewsql = false;
8576                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
8577                      lcisnewsql = false;
8578                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
8579                      lcisnewsql = false;
8580                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
8581                      {
8582                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
8583                          lcisnewsql = false;
8584                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
8585                          lcisnewsql = false;
8586                      }
8587
8588                    if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
8589                      {
8590                        TSourceToken lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
8591                        if ( (lcpprevsolidtoken != null) )
8592                          {
8593                            if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
8594                              lcisnewsql = false;
8595                          }
8596                      }
8597
8598                  }
8599
8600
8601                if ( (lccurrentsqlstatement != null) )
8602                  {
8603                      switch (lccurrentsqlstatement.sqlstatementtype){
8604                          case sstinsert:
8605                              lcisnewsql = false;
8606                              break;
8607                          case sstcreatetable:
8608                          case sstcreateview:
8609                              lcisnewsql = false;
8610                              break;
8611                      }
8612                  }
8613
8614              }
8615
8616            if ( lcisnewsql )
8617              ret = new TSelectSqlStatement(pdbvendor);
8618
8619            break;
8620          }
8621        case sstinsert:
8622          {
8623            boolean lcisnewsql = true;
8624            if ( pstate != EFindSqlStateType.stnormal )
8625              {
8626                if ( (lccurrentsqlstatement != null) )
8627                  {
8628
8629                  }
8630              }
8631
8632            if ( lcisnewsql )
8633              ret = new TInsertSqlStatement(pdbvendor);
8634
8635            break;
8636          }
8637        case sstupdate:
8638          {
8639            boolean lcisnewsql = true;
8640            if ( pstate != EFindSqlStateType.stnormal )
8641              {
8642                lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
8643                if ( (lcprevsolidtoken != null) )
8644                  { //
8645                    if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
8646                      lcisnewsql = false;
8647                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
8648                      lcisnewsql = false;
8649                  }
8650
8651                TSourceToken lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
8652                if ( (lcnextsolidtoken != null) )
8653                  {
8654                    if ( lcnextsolidtoken.tokentype == ETokenType.ttleftparenthesis)
8655                      {
8656                        int k = lcsourcetokenlist.solidtokenafterpos(lcnextsolidtoken.posinlist,TBaseType.rrw_select,1,"(");
8657                        if ( k  == 0 ) lcisnewsql = false;
8658                      }
8659                  }
8660
8661
8662                if ( (lccurrentsqlstatement != null) )
8663                  {
8664                  }
8665              }
8666
8667            if ( lcisnewsql )
8668              {
8669                ret = new TUpdateSqlStatement(pdbvendor);
8670                ret.dummytag = 1; // means set clause in update is not found yet, used to seperate set clause from set statement
8671              }
8672            break;
8673          }
8674        case sstdelete:
8675          {
8676            boolean lcisnewsql = true;
8677
8678            if ( pstate != EFindSqlStateType.stnormal )
8679              {
8680                lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
8681                if ( (lcprevsolidtoken != null) )
8682                  {
8683                    if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
8684                      lcisnewsql = false;
8685                  }
8686
8687                if ( (lccurrentsqlstatement != null) )
8688                  {
8689                      TSourceToken lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
8690                      if ( (lcnextsolidtoken != null) ){
8691                          if (lcnextsolidtoken.tokencode == TBaseType.rrw_oracle_rows){
8692                              lcisnewsql = false;
8693                          }
8694                      }
8695                  }
8696              }
8697
8698            if ( lcisnewsql )
8699              ret = new TDeleteSqlStatement(pdbvendor);
8700
8701            break;
8702          }
8703        case sstmerge:
8704          {
8705            ret = new TMergeSqlStatement(pdbvendor);
8706            ret.sqlstatementtype = gnewsqlstatementtype;
8707            break;
8708          }
8709        case sstoraclecommit:
8710          {
8711
8712              boolean lcisnewsql = true;
8713              if ( pstate != EFindSqlStateType.stnormal )
8714              {
8715                  lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
8716                  if ( (lcprevsolidtoken != null) )
8717                  { //
8718                      if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
8719                          lcisnewsql = false;
8720                  }
8721              }
8722
8723              if (lcisnewsql){
8724                  ret = new TCommitStmt(pdbvendor);
8725                  ret.sqlstatementtype = gnewsqlstatementtype;
8726              }
8727
8728            break;
8729          }
8730        case sstoraclerollback:
8731          {
8732            ret = new TUnknownSqlStatement(pdbvendor);
8733            ret.sqlstatementtype = gnewsqlstatementtype;
8734            break;
8735          }
8736        case sstoraclesavepoint:
8737          {
8738            ret = new TUnknownSqlStatement(pdbvendor);
8739            ret.sqlstatementtype = gnewsqlstatementtype;
8740              break;
8741          }
8742        case sstoraclerevoke:
8743          {
8744            ret = new TUnknownSqlStatement(pdbvendor);
8745            ret.sqlstatementtype = gnewsqlstatementtype;
8746              break;
8747          }
8748        case sstoraclegrant:
8749          {
8750            ret = new TUnknownSqlStatement(pdbvendor);
8751            ret.sqlstatementtype = gnewsqlstatementtype;
8752              break;
8753          }
8754        case sstoracleanalyze:
8755          {
8756            ret = new TUnknownSqlStatement(pdbvendor);
8757            ret.sqlstatementtype = gnewsqlstatementtype;
8758              break;
8759          }
8760        case sstTruncate:
8761          {
8762              ret = new TTruncateStatement(pdbvendor);
8763              ret.sqlstatementtype = gnewsqlstatementtype;
8764              break;
8765          }
8766        case sstcreatetable:
8767          {
8768            ret = new TCreateTableSqlStatement(pdbvendor);
8769              break;
8770          }
8771        case sstoraclecreateview:
8772          {
8773            ret = new TCreateViewSqlStatement(pdbvendor);
8774              break;
8775          }
8776        case sstcreatematerializedview:{
8777            ret = new TCreateMaterializedSqlStatement(pdbvendor);
8778            break;
8779        }
8780        case sstoraclecreatematerializedviewlog:{
8781            ret = new TCreateMaterializedViewLogSqlStatement(pdbvendor);
8782            break;
8783        }
8784        case sstoraclecreateindex:
8785          {
8786            ret = new TCreateIndexSqlStatement(pdbvendor);
8787              break;
8788          }
8789        case sstoraclecreatedatabase:
8790          {
8791            ret = new TCreateDatabaseSqlStatement(pdbvendor);
8792              break;
8793          }
8794        case sstoracledroptable:
8795          {
8796            ret = new TDropTableSqlStatement(pdbvendor);
8797              break;
8798          }
8799        case sstoracledropview:
8800          {
8801           ret = new TDropViewSqlStatement(pdbvendor);
8802              break;
8803          }
8804        case sstoracledropindex:
8805          {
8806            ret = new TDropIndexSqlStatement(pdbvendor);
8807              break;
8808          }
8809        case sstaltertable:
8810          {
8811            ret = new TAlterTableStatement(pdbvendor);
8812              break;
8813          }
8814        case sstoraclealtersession:
8815          {
8816            ret = new TAlterSessionStatement(pdbvendor);
8817              break;
8818          }
8819        case sstplsql_createprocedure:
8820        {
8821          ret = new TPlsqlCreateProcedure(pdbvendor);
8822          ret.sqlstatementtype = gnewsqlstatementtype;
8823          // System.out.println(gnewsqlstatementtype);
8824            break;
8825        }
8826        case sstplsql_createfunction:
8827        {
8828          ret = new TPlsqlCreateFunction(pdbvendor);
8829          ret.sqlstatementtype = gnewsqlstatementtype;
8830          // System.out.println(gnewsqlstatementtype);
8831            break;
8832        }
8833        case sstplsql_createpackage:
8834        {
8835          ret = new TPlsqlCreatePackage(pdbvendor);
8836          ret.sqlstatementtype = gnewsqlstatementtype;
8837          // System.out.println(gnewsqlstatementtype);
8838            break;
8839        }
8840        case sstplsql_createtrigger:
8841        {
8842          ret = new TPlsqlCreateTrigger(pdbvendor);
8843          ret.sqlstatementtype = gnewsqlstatementtype;
8844          // System.out.println(gnewsqlstatementtype);
8845            break;
8846        }
8847        case sstplsql_execimmestmt:
8848          {
8849            ret = new TExecImmeStmt(pdbvendor);
8850           // ret.sqlstatementtype = gnewsqlstatementtype;
8851            // System.out.println(gnewsqlstatementtype);
8852              break;
8853          }
8854        case sstoraclecreatepackagebody:
8855         {
8856            ret = new TPlsqlCreatePackage(pdbvendor);
8857            ret.sqlstatementtype = ESqlStatementType.sstplsql_createpackage;
8858             break;
8859         }
8860        case sstplsql_createtype_placeholder:
8861        {
8862          ret = new TPlsqlCreateType_Placeholder(pdbvendor);
8863          ret.sqlstatementtype = gnewsqlstatementtype;
8864          // System.out.println(gnewsqlstatementtype);
8865            break;
8866        }
8867        case sstplsql_createtypebody:
8868          {
8869            ret = new TPlsqlCreateTypeBody(pdbvendor);
8870            ret.sqlstatementtype = gnewsqlstatementtype;
8871              break;
8872          }
8873        case sstCommentOn:
8874          {
8875            ret = new TCommentOnSqlStmt(pdbvendor);
8876              break;
8877          }
8878        case sstoraclecreatesequence:
8879          {
8880            ret = new TCreateSequenceStmt(pdbvendor);
8881              break;
8882          }
8883        case sstoraclecreatesynonym:
8884          {
8885            ret = new TCreateSynonymStmt(pdbvendor);
8886              break;
8887          }
8888        case sstoraclecreatedirectory:
8889          {
8890            ret = new TOracleCreateDirectoryStmt(pdbvendor);
8891              break;
8892          }
8893        case sstoracleexecuteprocedure:
8894        {
8895            ret = new TOracleExecuteProcedure(pdbvendor);
8896            break;
8897        }
8898        case sstExplain:
8899        {
8900            ret = new TExplainPlan(pdbvendor);
8901            break;
8902        }
8903        case sstoraclecreatelibrary:
8904            ret = new TOracleCreateLibraryStmt(pdbvendor);
8905            break;
8906        case sstaltertrigger:
8907            ret  = new TAlterTriggerStmt(pdbvendor);
8908            break;
8909        case sstoracledropsequence:
8910            ret = new TDropSequenceStmt(pdbvendor);
8911            break;
8912        case sstoraclecall:
8913            ret = new TCallStatement(pdbvendor);
8914            break;
8915        case sstoraclealterview:
8916            ret = new TAlterViewStatement(pdbvendor);
8917            break;
8918        case sstoracledropsynonym:
8919            ret = new TDropSynonymStmt(pdbvendor);
8920            break;
8921        case sstoracledropdatabaselink:
8922            ret = new TDropDatabaseLinkStmt(pdbvendor);
8923            break;
8924        case sstoraclecreatedatabaselink:
8925            ret = new TCreateDatabaseLinkStmt(pdbvendor);
8926            break;
8927        case sstoracledropmaterializedview:
8928            ret = new TDropMaterializedViewStmt(pdbvendor);
8929            break;
8930        case sstoracledropmaterializedviewlog:
8931            ret = new TDropMaterializedViewLogStmt(pdbvendor);
8932            break;
8933        case sstoraclerename:
8934            ret = new TRenameStmt(pdbvendor);
8935            break;
8936        case sstoracledropprocedure:
8937            ret = new TDropProcedureStmt(pdbvendor);
8938            break;
8939        case sstAlterMaterializedView:
8940            ret = new TAlterMaterializedViewStmt(pdbvendor);
8941            break;
8942        case sstoracledroptrigger:
8943            ret = new TDropTriggerSqlStatement(pdbvendor);
8944            break;
8945        case sstoracledropfunction:
8946            ret = new TDropFunctionStmt(pdbvendor);
8947            break;
8948        case sstoraclealterindex:
8949            ret = new TAlterIndexStmt(pdbvendor);
8950            break;
8951        case sstoraclealtersequence:
8952            ret = new TAlterSequenceStatement(pdbvendor);
8953            break;
8954        case sstoraclealtertype:
8955            ret = new TAlterTypeStatement(pdbvendor);
8956            break;
8957        default:
8958          {
8959            ret = new TUnknownSqlStatement(pdbvendor);
8960            ret.sqlstatementtype = gnewsqlstatementtype;
8961            break;
8962          }
8963    }    // case
8964
8965    return ret;
8966}
8967
8968TCustomSqlStatement isinformixsql(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
8969    TCustomSqlStatement ret = null;
8970
8971    gnewsqlstatementtype = ESqlStatementType.sstinvalid;
8972
8973    if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
8974       || (pcst.tokencode  == TBaseType.cmtslashstar)
8975       || (pcst.tokencode  == TBaseType.lexspace)
8976       || (pcst.tokencode  == TBaseType.lexnewline)
8977        || (pcst.tokentype == ETokenType.ttsemicolon) )
8978    {
8979      return null;
8980    }
8981
8982    int lcpos = pcst.posinlist;
8983    TSourceTokenList lcsourcetokenlist = pcst.container;
8984    TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
8985
8986    //subquery after semicolon or at first line
8987    if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
8988      {
8989        int k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
8990        if ( k >0 )
8991          {
8992            ret = new TSelectSqlStatement(pdbvendor);
8993          }
8994
8995        return ret;
8996      }
8997
8998    //cte
8999    if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
9000      {
9001        ret = findcte(pcst,pdbvendor);
9002        if ( (ret != null) )  return ret;
9003      }
9004
9005    gnewsqlstatementtype = findinformixcmd(pcst);
9006
9007    TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
9008    switch (gnewsqlstatementtype) {    //
9009        case sstinvalid:
9010          {
9011            ret = null;
9012
9013            if ( pstate == EFindSqlStateType.stnormal )
9014              {
9015                if ( pcst.tokencode == TBaseType.label_begin )
9016                  {
9017                    ret = new TCommonBlock(pdbvendor);
9018                    gnewsqlstatementtype = ret.sqlstatementtype;
9019                  }
9020                else if ( pcst.tokencode == TBaseType.rrw_declare )
9021                  {
9022                    ret = new TCommonBlock(pdbvendor);
9023                    gnewsqlstatementtype = ret.sqlstatementtype;
9024                  }
9025                else if ( pcst.tokencode == TBaseType.rrw_begin )
9026                  {
9027                    ret = new TCommonBlock(pdbvendor);
9028                    gnewsqlstatementtype = ret.sqlstatementtype;
9029                  }
9030                else if ( pcst.tokencode == TBaseType.rrw_procedure )
9031                  {
9032                    ret = new TPlsqlCreateProcedure(pdbvendor);
9033                    // ret.sqlstatementtype = ESqlStatementType.sstplsql_createprocedure;
9034                    gnewsqlstatementtype = ret.sqlstatementtype;
9035                  }
9036                else if ( pcst.tokencode == TBaseType.rrw_function )
9037                  {
9038                    ret = new TPlsqlCreateFunction(pdbvendor);
9039                    // ret.sqlstatementtype = ESqlStatementType.sstplsql_createfunction;
9040                    gnewsqlstatementtype = ret.sqlstatementtype;
9041                  }
9042                else if ( pcst.tokencode == TBaseType.rrw_package )
9043                  {
9044                    ret = new TPlsqlCreatePackage(pdbvendor);
9045                   // ret.sqlstatementtype = ESqlStatementType.sstplsql_createpackage;
9046                    gnewsqlstatementtype = ret.sqlstatementtype;
9047                  }
9048              }
9049              break;
9050          }
9051        case sstselect:
9052          {
9053            boolean lcisnewsql = true;
9054
9055            if ( pstate != EFindSqlStateType.stnormal )
9056              {
9057                // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
9058                if ( (lcprevsolidtoken != null) )
9059                  {
9060                    if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
9061                      lcisnewsql = false; //subqery
9062                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
9063                      lcisnewsql = false;
9064                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
9065                      lcisnewsql = false;
9066                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
9067                      lcisnewsql = false;
9068                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
9069                      lcisnewsql = false;
9070                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
9071                      lcisnewsql = false;
9072                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
9073                      {
9074                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
9075                          lcisnewsql = false;
9076                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
9077                          lcisnewsql = false;
9078                      }
9079
9080                    if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
9081                      {
9082                        TSourceToken lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
9083                        if ( (lcpprevsolidtoken != null) )
9084                          {
9085                            if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
9086                              lcisnewsql = false;
9087                          }
9088                      }
9089
9090                  }
9091
9092
9093                if ( (lccurrentsqlstatement != null) )
9094                  {
9095                    if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
9096                      lcisnewsql = false;
9097                  }
9098
9099              }
9100
9101            if ( lcisnewsql )
9102              ret = new TSelectSqlStatement(pdbvendor);
9103
9104            break;
9105          }
9106        case sstinsert:
9107          {
9108            boolean lcisnewsql = true;
9109            if ( pstate != EFindSqlStateType.stnormal )
9110              {
9111                if ( (lccurrentsqlstatement != null) )
9112                  {
9113                        // merge
9114                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
9115                        {
9116                              if (lcprevsolidtoken != null)
9117                              {
9118                                  if (lcprevsolidtoken.tokencode == TBaseType.rrw_then)
9119                                  {lcisnewsql = false;}
9120                              }
9121                        }
9122
9123                  }
9124              }
9125
9126            if ( lcisnewsql )
9127              ret = new TInsertSqlStatement(pdbvendor);
9128
9129            break;
9130          }
9131        case sstupdate:
9132          {
9133            boolean lcisnewsql = true;
9134            if ( pstate != EFindSqlStateType.stnormal )
9135              {
9136                lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
9137                if ( (lcprevsolidtoken != null) )
9138                  { //
9139                    if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
9140                      lcisnewsql = false;
9141                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
9142                      lcisnewsql = false;
9143                  }
9144
9145                TSourceToken lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
9146                if ( (lcnextsolidtoken != null) )
9147                  {
9148                    if ( lcnextsolidtoken.tokentype == ETokenType.ttleftparenthesis)
9149                      {
9150                        int k = lcsourcetokenlist.solidtokenafterpos(lcnextsolidtoken.posinlist,TBaseType.rrw_select,1,"(");
9151                        if ( k  == 0 ) lcisnewsql = false;
9152                      }
9153                  }
9154
9155
9156                if ( (lccurrentsqlstatement != null) )
9157                  {
9158                        // merge
9159                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
9160                        {
9161                              if (lcprevsolidtoken != null)
9162                              {
9163                                  if (lcprevsolidtoken.tokencode == TBaseType.rrw_then)
9164                                  {lcisnewsql = false;}
9165                              }
9166                        }
9167                  }
9168              }
9169
9170            if ( lcisnewsql )
9171              {
9172                ret = new TUpdateSqlStatement(pdbvendor);
9173                ret.dummytag = 1; // means set clause in update is not found yet, used to seperate set clause from set statement
9174              }
9175            break;
9176          }
9177        case sstdelete:
9178          {
9179            boolean lcisnewsql = true;
9180
9181            if ( pstate != EFindSqlStateType.stnormal )
9182              {
9183                lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
9184                if ( (lcprevsolidtoken != null) )
9185                  {
9186                    if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
9187                      lcisnewsql = false;
9188                  }
9189
9190                if ( (lccurrentsqlstatement != null) )
9191                  {
9192                        // merge
9193                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
9194                        {
9195                              if (lcprevsolidtoken != null)
9196                              {
9197                                  if (lcprevsolidtoken.tokencode == TBaseType.rrw_then)
9198                                  {lcisnewsql = false;}
9199                              }
9200                        }
9201                  }
9202              }
9203
9204            if ( lcisnewsql )
9205              ret = new TDeleteSqlStatement(pdbvendor);
9206
9207            break;
9208          }
9209        case sstmerge:
9210          {
9211            ret = new TMergeSqlStatement(pdbvendor);
9212            ret.sqlstatementtype = gnewsqlstatementtype;
9213            break;
9214          }
9215        case sstinformixCommit:
9216          {
9217            ret = new TUnknownSqlStatement(pdbvendor);
9218            ret.sqlstatementtype = gnewsqlstatementtype;
9219            break;
9220          }
9221        case sstinformixSavepoint:
9222          {
9223            ret = new TUnknownSqlStatement(pdbvendor);
9224            ret.sqlstatementtype = gnewsqlstatementtype;
9225              break;
9226          }
9227        case sstinformixRevoke:
9228          {
9229            ret = new TUnknownSqlStatement(pdbvendor);
9230            ret.sqlstatementtype = gnewsqlstatementtype;
9231              break;
9232          }
9233        case sstinformixGrant:
9234          {
9235            ret = new TUnknownSqlStatement(pdbvendor);
9236            ret.sqlstatementtype = gnewsqlstatementtype;
9237              break;
9238          }
9239        case sstTruncate:
9240          {
9241              ret = new TTruncateStatement(pdbvendor);
9242              ret.sqlstatementtype = gnewsqlstatementtype;
9243              break;
9244          }
9245        case sstcreatetable:
9246        case sstinformixCreateTempTable:
9247          {
9248            ret = new TCreateTableSqlStatement(pdbvendor);
9249              break;
9250          }
9251        case sstinformixCreateView:
9252          {
9253            ret = new TCreateViewSqlStatement(pdbvendor);
9254              break;
9255          }
9256        case sstinformixCreateIndex:
9257          {
9258            ret = new TCreateIndexSqlStatement(pdbvendor);
9259              break;
9260          }
9261        case sstinformixCreateDatabase:
9262          {
9263            ret = new TCreateDatabaseSqlStatement(pdbvendor);
9264              break;
9265          }
9266        case sstinformixDropTable:
9267          {
9268            ret = new TDropTableSqlStatement(pdbvendor);
9269              break;
9270          }
9271        case sstinformixDropView:
9272          {
9273           ret = new TDropViewSqlStatement(pdbvendor);
9274              break;
9275          }
9276        case sstinformixDropIndex:
9277          {
9278            ret = new TDropIndexSqlStatement(pdbvendor);
9279              break;
9280          }
9281        case sstinformixDropRowType:
9282        {
9283            ret = new TInformixDropRowTypeStmt(pdbvendor);
9284            break;
9285        }
9286        case sstinformixDropSequence:
9287        {
9288            ret = new TDropSequenceStmt(pdbvendor);
9289            break;
9290        }
9291        case sstinformixDropSynonym:
9292        {
9293            ret = new TDropSynonymStmt(pdbvendor);
9294            break;
9295        }
9296        case sstinformixAlterTable:
9297          {
9298            ret = new TAlterTableStatement(pdbvendor);
9299              break;
9300          }
9301        case sstinformixCreateProcedure:
9302        {
9303          ret = new TInformixCreateProcedure(pdbvendor);
9304          ret.sqlstatementtype = gnewsqlstatementtype;
9305            break;
9306        }
9307        case sstinformixCreateFunction:
9308        {
9309          ret = new TInformixCreateFunction(pdbvendor);
9310          ret.sqlstatementtype = gnewsqlstatementtype;
9311            break;
9312        }
9313        case sstcreatetrigger:
9314        {
9315          ret = new TCreateTriggerStmt(pdbvendor);
9316            break;
9317        }
9318        case sstinformixExecuteImmediate:
9319          {
9320            ret = new TInformixExecuteImmediate(pdbvendor);
9321              break;
9322          }
9323        case sstinformixCreateSequence:
9324        case sstinformixAlterSequence:
9325          {
9326            ret = new TCreateSequenceStmt(pdbvendor);
9327              break;
9328          }
9329        case sstinformixCreateSynonym:
9330          {
9331            ret = new TCreateSynonymStmt(pdbvendor);
9332              break;
9333          }
9334        case sstinformixExecuteFunction:
9335        {
9336            ret = new TInformixExecuteFunction(pdbvendor);
9337            break;
9338        }
9339        case sstinformixExecuteProcedure:
9340        {
9341            ret = new TInformixExecuteProcedure(pdbvendor);
9342            break;
9343        }
9344        case sstinformixCreateRowType:
9345        {
9346            ret = new TInformixCreateRowTypeStmt(pdbvendor);
9347            break;
9348        }
9349        case sstinformixPut:
9350        case sstinformixInfo:
9351          {
9352            ret = null;
9353
9354            if ( pstate == EFindSqlStateType.stnormal )
9355              {
9356                  ret = new TUnknownSqlStatement(pdbvendor);
9357                  ret.sqlstatementtype = gnewsqlstatementtype;
9358              }
9359              break;
9360          }
9361        case sstinformixAlterIndex:
9362        {
9363            ret = new TAlterIndexStmt(pdbvendor);
9364            break;
9365        }
9366        case sstinformixRenameColumn:
9367        case sstinformixRenameTable:
9368        case sstinformixRenameSequence:
9369        case sstinformixRenameIndex:
9370        {
9371            ret = new TRenameStmt(pdbvendor);
9372            break;
9373        }
9374        case sstdropdatabase:
9375            ret = new TDropDatabaseStmt(pdbvendor);
9376            break;
9377        case sstinformixRollbackWork:
9378        {
9379            ret =  new TMssqlRollback(pdbvendor);
9380            break;
9381        }
9382        default:
9383          {
9384            ret = new TUnknownSqlStatement(pdbvendor);
9385            ret.sqlstatementtype = gnewsqlstatementtype;
9386            break;
9387          }
9388    }    // case
9389
9390    return ret;
9391}
9392
9393
9394    TCustomSqlStatement issybasesql(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
9395        TCustomSqlStatement ret = null;
9396        int k;
9397        boolean lcisnewsql;
9398        TSourceToken lcpprevsolidtoken,lcnextsolidtoken,lctoken;
9399
9400        gnewsqlstatementtype = ESqlStatementType.sstinvalid;
9401
9402        if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
9403                || (pcst.tokencode  == TBaseType.cmtslashstar)
9404                || (pcst.tokencode  == TBaseType.lexspace)
9405                || (pcst.tokencode  == TBaseType.lexnewline)
9406                || (pcst.tokentype == ETokenType.ttsemicolon) )
9407        {
9408            return ret;
9409        }
9410
9411        int lcpos = pcst.posinlist;
9412        TSourceTokenList lcsourcetokenlist = pcst.container;
9413        TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
9414
9415        //subquery after semicolon || at first line
9416        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
9417        {
9418            k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
9419            if ( k >0 )
9420            {
9421                ret =  new TSelectSqlStatement(pdbvendor);
9422            }
9423
9424            return ret;
9425        }
9426
9427        //cte
9428        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
9429        {
9430            ret = findcte(pcst,pdbvendor);
9431            if ( (ret != null) )  return ret;
9432        }
9433
9434        gnewsqlstatementtype = findsybasecmd(pcst);
9435
9436        TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
9437        switch(gnewsqlstatementtype ) {   //
9438            case sstinvalid:
9439            {
9440                if ( pcst.tokencode == TBaseType.mslabel )
9441                {
9442                    ret =  new TMssqlLabel(pdbvendor);
9443                }
9444                else
9445                    ret = null;
9446
9447                break;
9448            }
9449            case sstselect:
9450            {
9451                lcisnewsql = true;
9452
9453                if ( pstate != EFindSqlStateType.stnormal )
9454                {
9455                    // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
9456                    if ( (lcprevsolidtoken != null) )
9457                    {
9458                        if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
9459                            lcisnewsql = false; //subqery
9460                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
9461                            lcisnewsql = false;
9462                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
9463                            lcisnewsql = false;
9464                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
9465                            lcisnewsql = false;
9466                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
9467                            lcisnewsql = false;
9468                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
9469                            lcisnewsql = false;
9470                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
9471                        {
9472                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
9473                                lcisnewsql = false;
9474                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
9475                                lcisnewsql = false;
9476                        }
9477                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
9478                        {
9479                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlset )
9480                                lcisnewsql = false;
9481                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqldeclare )
9482                                lcisnewsql = false;
9483                        }
9484
9485                        if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
9486                        {
9487                            lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
9488                            if ( (lcpprevsolidtoken != null) )
9489                            {
9490                                if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
9491                                    lcisnewsql = false;
9492                            }
9493                        }
9494
9495                    }
9496
9497                    if ( (lccurrentsqlstatement != null) )
9498                    {
9499                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
9500                        {
9501                        }
9502                        else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlgrant )
9503                        {
9504                            if ( (lcprevsolidtoken != null) )
9505                            {
9506                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_grant )
9507                                    lcisnewsql = false;
9508                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
9509                                    lcisnewsql = false;
9510                            }
9511                        } else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlrevoke )
9512                        {
9513                            if ( (lcprevsolidtoken != null) )
9514                            {
9515                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_revoke )
9516                                    lcisnewsql = false;
9517                            }
9518                        }else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview ){
9519                            lcisnewsql = false;
9520                        }
9521                    }
9522
9523                }
9524
9525                if ( lcisnewsql )
9526                    ret =  new TSelectSqlStatement(pdbvendor);
9527
9528                break;
9529
9530            }
9531            case sstinsert:
9532            {
9533                lcisnewsql = true;
9534                if ( pstate != EFindSqlStateType.stnormal )
9535                {
9536                    if ( (lccurrentsqlstatement != null) )
9537                    {
9538                        // merge
9539                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
9540                        {
9541                              if (lcprevsolidtoken != null)
9542                              {
9543                                  if (lcprevsolidtoken.tokencode == TBaseType.rrw_then)
9544                                  {lcisnewsql = false;}
9545                              }
9546                        }
9547
9548                        // bulk insert
9549                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlbulkinsert )
9550                        {
9551                            if ( (lcprevsolidtoken != null) )
9552                            {
9553                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_bulk )
9554                                    lcisnewsql = false;
9555                            }
9556                        }
9557
9558                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlgrant )
9559                        {
9560                            if ( (lcprevsolidtoken != null) )
9561                            {
9562                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_grant )
9563                                    lcisnewsql = false;
9564                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
9565                                    lcisnewsql = false;
9566                            }
9567                        }else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlrevoke ) {
9568                            if ( (lcprevsolidtoken != null) )
9569                            {
9570                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_revoke )
9571                                    lcisnewsql = false;
9572                            }
9573                        }
9574
9575                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetrigger )
9576                        {
9577                            if ( (lcprevsolidtoken != null) )
9578                            {
9579                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
9580                                    lcisnewsql = false;
9581                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
9582                                    lcisnewsql = false;
9583                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.astext,"after") == 0 )
9584                                    lcisnewsql = false;
9585                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.astext , "of") == 0 )
9586                                    lcisnewsql = false;
9587                            }
9588                        }
9589
9590
9591                    }
9592                }
9593
9594                if ( lcisnewsql )
9595                {
9596                    ret =  new TInsertSqlStatement(pdbvendor);
9597                    ret.dummytag = 1; //  select stmt in insert is permitted
9598                    for ( k = lcpos + 1; k < lcsourcetokenlist.size();k++ )    // iterate
9599                    {
9600                        if ( lcsourcetokenlist.get(k).isnonsolidtoken() ) continue;
9601                        if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_values ) break;
9602                        if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_go ) break;
9603                        if ( lcsourcetokenlist.get(k).tokentype == ETokenType.ttsemicolon ) break;
9604                        if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_select ) break;
9605                        if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_execute ) break;
9606                        if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_exec ) break;
9607                    }    // for (
9608                    if ( k > lcsourcetokenlist.size() - 1 )
9609                        k = lcsourcetokenlist.size() - 1;
9610
9611                    for ( int i = lcpos + 1; i <=  k; i++ )    // iterate
9612                    {
9613                        lcsourcetokenlist.get(i).tokenstatus = ETokenStatus.tsignoredbygetrawstatement;
9614                    }    // for (
9615
9616                }
9617
9618                break;
9619            }
9620            case sstsybaseInsertBulk:
9621            {
9622                ret =  new TInsertBulk(pdbvendor);
9623                break;
9624            }
9625            case sstupdate:
9626            {
9627                lcisnewsql = true;
9628                if ( pstate != EFindSqlStateType.stnormal )
9629                {
9630                    // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
9631                    if ( (lcprevsolidtoken != null) )
9632                    { //
9633                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
9634                            lcisnewsql = false;
9635                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
9636                            lcisnewsql = false;
9637                    }
9638
9639                    lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
9640                    if ( TBaseType.assigned(lcnextsolidtoken) )
9641                    {
9642                        if ( lcnextsolidtoken.tokentype == ETokenType.ttleftparenthesis)
9643                        {
9644                            k = lcsourcetokenlist.solidtokenafterpos(lcnextsolidtoken.posinlist,TBaseType.rrw_select,1,"(");
9645                            if ( k  == 0 ) lcisnewsql = false;
9646                        }
9647                    }
9648
9649
9650                    if ( TBaseType.assigned(lccurrentsqlstatement) )
9651                    {
9652                        // merge
9653                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
9654                        {
9655                              if (lcprevsolidtoken != null)
9656                              {
9657                                  if (lcprevsolidtoken.tokencode == TBaseType.rrw_then)
9658                                  {lcisnewsql = false;}
9659                              }
9660                        }
9661
9662                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlgrant )
9663                        {
9664                            if ( TBaseType.assigned(lcprevsolidtoken) )
9665                            {
9666                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_grant )
9667                                    lcisnewsql = false;
9668                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
9669                                    lcisnewsql = false;
9670                            }
9671                        }else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlrevoke )
9672                        {
9673                            if ( TBaseType.assigned(lcprevsolidtoken) )
9674                            {
9675                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_revoke )
9676                                    lcisnewsql = false;
9677                            }
9678                        }
9679                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetrigger )
9680                        {
9681                            if ( TBaseType.assigned(lcprevsolidtoken) )
9682                            {
9683                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
9684                                    lcisnewsql = false;
9685                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
9686                                    lcisnewsql = false;
9687                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.astext,"after") == 0 )
9688                                    lcisnewsql = false;
9689                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.astext , "of") == 0 )
9690                                    lcisnewsql = false;
9691                            }
9692                        }
9693
9694                    }
9695                }
9696
9697                if ( lcisnewsql )
9698                {
9699                    ret =  new TUpdateSqlStatement(pdbvendor);
9700                    ret.dummytag = 1; // means set clause in update is not found yet, used to seperate set clause from set statement
9701                }
9702
9703                break;
9704            }
9705            case sstdelete:
9706            {
9707                lcisnewsql = true;
9708
9709                if ( pstate != EFindSqlStateType.stnormal )
9710                {
9711                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
9712                    if ( TBaseType.assigned(lcprevsolidtoken) )
9713                    {
9714                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
9715                            lcisnewsql = false;
9716                    }
9717
9718                    if ( TBaseType.assigned(lccurrentsqlstatement) )
9719                    {
9720                        // merge
9721                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
9722                        {
9723                              if (lcprevsolidtoken != null)
9724                              {
9725                                  if (lcprevsolidtoken.tokencode == TBaseType.rrw_then)
9726                                  {lcisnewsql = false;}
9727                              }
9728                        }
9729
9730                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlgrant )
9731                        {
9732                            if ( TBaseType.assigned(lcprevsolidtoken) )
9733                            {
9734                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_grant )
9735                                    lcisnewsql = false;
9736                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
9737                                    lcisnewsql = false;
9738                            }
9739                        }else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlrevoke )
9740                        {
9741                            if ( TBaseType.assigned(lcprevsolidtoken) )
9742                            {
9743                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_revoke )
9744                                    lcisnewsql = false;
9745                            }
9746                        }
9747
9748                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetrigger )
9749                        {
9750                            if ( TBaseType.assigned(lcprevsolidtoken) )
9751                            {
9752                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
9753                                    lcisnewsql = false;
9754                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
9755                                    lcisnewsql = false;
9756                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.astext,"after") == 0 )
9757                                    lcisnewsql = false;
9758                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.astext , "of") == 0 )
9759                                    lcisnewsql = false;
9760                            }
9761                        }
9762
9763                    }
9764                }
9765
9766                if ( lcisnewsql )
9767                    ret =  new TDeleteSqlStatement(pdbvendor);
9768
9769                break;
9770            }
9771            case sstcreatetable:
9772            {
9773                ret =  new TCreateTableSqlStatement(pdbvendor);
9774                break;
9775            }
9776            case sstcreateview:
9777            {
9778                ret =  new TCreateViewSqlStatement(pdbvendor);
9779                break;
9780            }
9781            case sstaltertable:
9782            {
9783                ret =  new TAlterTableStatement(pdbvendor);
9784                break;
9785            }
9786            case sstmssqlfetch:
9787            {
9788                ret =  new TMssqlFetch(pdbvendor);
9789                break;
9790            }
9791            case sstmssqlif :
9792            {
9793                lcisnewsql = true;
9794                if ((lccurrentsqlstatement != null) && ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqldropprocedure ))
9795                {lcisnewsql = false;}
9796                if (lcisnewsql){
9797                    ret = new TMssqlIfElse(pdbvendor);
9798                    ret.dummytag = 1;// reduce to 0 while stmt find in 'if ( condtion stmt' || 'else stmt'
9799                }
9800
9801                break;
9802            }
9803            case sstmssqlwhile:
9804            {
9805                ret = new TMssqlIfElse(pdbvendor);
9806                ret.dummytag = 1;// reduce to 0 while stmt find in 'if ( condtion stmt' || 'else stmt'
9807                break;
9808            }
9809            case sstmssqlcreateprocedure :
9810            case sstmssqlalterprocedure:
9811            {
9812                ret = new TMssqlCreateProcedure(pdbvendor);
9813                break;
9814            }
9815            case sstmssqlcreatefunction :
9816            case sstmssqlalterfunction:
9817            {
9818                ret =  new TMssqlCreateFunction(pdbvendor);
9819                break;
9820            }
9821            case sstcreatetrigger :
9822            case sstmssqlaltertrigger:
9823            {
9824                ret =  new TCreateTriggerStmt(pdbvendor);
9825                break;
9826            }
9827            case sstmssqlreturn:
9828            {
9829                ret =  new TMssqlReturn(pdbvendor);
9830                break;
9831            }
9832            case sstmssqlprint:
9833            {
9834                ret =  new TMssqlPrint(pdbvendor);
9835                break;
9836            }
9837            case sstmssqluse:
9838            {
9839                ret =  new TUseDatabase(pdbvendor);
9840                break;
9841            }
9842            case sstmssqlgo:
9843            {
9844                ret =  new TMssqlGo(pdbvendor);
9845                break;
9846            }
9847            case sstmssqlrevert:
9848            {
9849                ret =  new TMssqlRevert(pdbvendor);
9850                break;
9851            }
9852            case sstmssqlgrant:
9853            {
9854                lcisnewsql = true;
9855                // prev tokentext can't be with
9856                if ( pstate != EFindSqlStateType.stnormal )
9857                {
9858                    if ( TBaseType.assigned(lcprevsolidtoken) )
9859                    {
9860                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_with )
9861                        {
9862                            ret = null;
9863                            lcisnewsql = false;
9864                        }
9865                    }
9866                }
9867                if ( lcisnewsql )
9868                {
9869                    ret =  new TGrantStmt(pdbvendor);
9870                    //ret.sqlstatementtype = gnewsqlstatementtype;
9871                    for ( k = lcpos + 1; k< lcsourcetokenlist.size();k++ )    // iterate
9872                    {
9873                        lctoken = lcsourcetokenlist.get(k);
9874                        if (lctoken.isnonsolidtoken() ) continue;
9875                        if ( lctoken.tokencode == TBaseType.rrw_go ) break;
9876                        if ( lctoken.tokentype == ETokenType.ttsemicolon ) break;
9877                        if ( lctoken.tokencode == TBaseType.rrw_to   ) break;
9878                        lctoken.tokenstatus = ETokenStatus.tsignoredbygetrawstatement;
9879                    }
9880                }
9881                break;
9882            }
9883            case sstmssqldeclare:
9884            {
9885                ret =  new TMssqlDeclare(pdbvendor);
9886                break;
9887            }
9888            case sstmssqlcontinue:
9889            {
9890                lcisnewsql = true;
9891                if ((lccurrentsqlstatement != null) && ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstload ))
9892                {lcisnewsql = false;}
9893                if (lcisnewsql){
9894                    ret =  new TMssqlContinue(pdbvendor);
9895                }
9896
9897                break;
9898            }
9899            case sstbreak:
9900            {
9901                ret =  new TBreakStmt(pdbvendor);
9902                break;
9903            }
9904            case sstmssqlopen:
9905            {
9906                ret =  new TMssqlOpen(pdbvendor);
9907                break;
9908            }
9909            case sstmssqlclose:
9910            {
9911                ret =  new TMssqlClose(pdbvendor);
9912                break;
9913            }
9914            case sstmssqlbulkinsert:
9915            {
9916                ret =  new TMssqlBulkInsert(pdbvendor);
9917                break;
9918            }
9919            case sstmssqldeallocate:
9920            {
9921                ret =  new TMssqlDeallocate(pdbvendor);
9922                break;
9923            }
9924            case sstmssqlraiserror:
9925            {
9926                ret =  new TMssqlRaiserror(pdbvendor);
9927                break;
9928            }
9929            case sstmssqlgoto:
9930            {
9931                ret =  new TMssqlGoTo(pdbvendor);
9932                break;
9933            }
9934            case sstmssqldropview:
9935            {
9936                ret =  new TDropViewSqlStatement(pdbvendor);
9937                break;
9938            }
9939            case sstmssqldroptable:
9940            {
9941                ret =  new TDropTableSqlStatement(pdbvendor);
9942                break;
9943            }
9944            case sstmssqldropindex:
9945            {
9946                ret =  new TDropIndexSqlStatement(pdbvendor);
9947                break;
9948            }
9949            case sstmssqldroppartitionscheme :
9950                ret = new TDropPartitionSchemeStmt(pdbvendor);
9951                break;
9952
9953            case sstmssqldropaggregate :
9954            case sstmssqldropapplicationrole :
9955            case sstmssqldropassembly :
9956            case sstmssqldropasymmetrickey :
9957            case sstmssqldropcertificate :
9958            case sstmssqldropcontract :
9959            case sstmssqldropcredential :
9960            case sstmssqldropdefault :
9961            case sstmssqldropendpoint :
9962            case sstmssqldropeventnotification :
9963            case sstmssqldropfulltextcatalog :
9964            case sstmssqldropfulltextindex :
9965            case sstmssqldropfunction :
9966            case sstmssqldroplogin :
9967            case sstmssqldropmasterkey :
9968            case sstmssqldropmessagetype :
9969            case sstmssqldroppartitionfunction :
9970            case sstmssqldropprocedure :
9971            case sstmssqldropqueue :
9972            case sstmssqldropremoteservicebinding :
9973            case sstmssqldroprole :
9974            case sstmssqldroproute :
9975            case sstmssqldroprule :
9976            case sstmssqldropschema :
9977            case sstmssqldropservice :
9978            case sstmssqldropsignature:
9979            case sstmssqldropstatistics :
9980            case sstmssqldropsymmetrickey :
9981            case sstmssqldroptrigger :
9982            case sstmssqldroptype :
9983            case sstmssqldropuser :
9984            case sstmssqldropxmlschemacollection:
9985            case sstmssqldropdatabase :
9986            {
9987                ret =  new TMssqlDropDbObject(EDbVendor.dbvsybase);
9988                ret.sqlstatementtype = gnewsqlstatementtype;
9989                break;
9990            }
9991            case sstmssqldropsynonym :
9992            {
9993                ret =  new TDropSynonymStmt(pdbvendor);
9994                break;
9995            }
9996            case sstmssqltruncatetable:
9997            {
9998                ret =  new TTruncateStatement(pdbvendor);
9999                break;
10000            }
10001            case sstmssqlbegintran:
10002            {
10003                ret =  new TBeginTran(pdbvendor);
10004                break;
10005            }
10006            case sstmssqlsavetran:
10007            {
10008                ret =  new TMssqlSaveTran(pdbvendor);
10009                break;
10010            }
10011            case sstmssqlcommit:
10012            {
10013                lcisnewsql = true;
10014
10015                if ( TBaseType.assigned(lcprevsolidtoken) )
10016                {
10017                    if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
10018                    {
10019
10020                        lcisnewsql = false;
10021                    }
10022                }
10023
10024                if (lcisnewsql){
10025                    ret =  new TMssqlCommit(pdbvendor);
10026                }
10027
10028                break;
10029            }
10030            case sstmssqlrollback:
10031            {
10032                ret =  new TMssqlRollback(pdbvendor);
10033                break;
10034            }
10035            case sstmssqlreadtext :
10036            case sstmssqldbcc :
10037            case sstmssqlrestore :
10038            case sstmssqlbackup :
10039            {
10040                ret = new TMssqlDummyStmt(pdbvendor);
10041                ret.sqlstatementtype = gnewsqlstatementtype;
10042                break;
10043            }
10044            case sstcreateindex:
10045            {
10046                ret =  new TCreateIndexSqlStatement(pdbvendor);
10047                break;
10048            }
10049            case sstmssqlwaitfor:
10050            {
10051                ret =  new TMssqlWaitFor(pdbvendor);
10052                break;
10053            }
10054            case sstmerge:
10055            {
10056                lcisnewsql = true;
10057
10058                if (pstate != EFindSqlStateType.stnormal)
10059                {
10060
10061                    if (lccurrentsqlstatement != null)
10062                    {
10063                        // merge union, merge join
10064                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstselect)
10065                        {
10066                                    lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
10067                                    if (lcnextsolidtoken != null)
10068                                       {
10069                                        if ((lcnextsolidtoken.tokencode == TBaseType.rrw_union) || (lcnextsolidtoken.tokencode == TBaseType.rrw_join))
10070                                           {
10071                                              lcisnewsql = false;
10072                                           }
10073                                        }
10074                        }
10075
10076                    }
10077
10078                    TSourceToken lcnexttoken = lcsourcetokenlist.nextsolidtoken(lcpos, 1, false);
10079                    if ( (lcnexttoken != null) )
10080                    {
10081                        if ( lcnexttoken.tokencode == TBaseType.rrw_sybase_partition )
10082                            lcisnewsql = false;
10083                    }
10084
10085                }
10086
10087                if (lcisnewsql)
10088                {
10089                    ret = new TMergeSqlStatement(pdbvendor);
10090                    ret.sqlstatementtype = gnewsqlstatementtype;
10091                }
10092
10093                break;
10094            }
10095            case sstmssqlbegintry :
10096            case sstmssqlbegincatch:
10097            {
10098                ret =  new TMssqlBlock(pdbvendor);
10099                ret.sqlstatementtype = gnewsqlstatementtype;
10100                break;
10101            }
10102            case sstmssqlexec:
10103            {
10104                lcisnewsql = true;
10105                // prev tokentext can't be with
10106                if ( pstate != EFindSqlStateType.stnormal )
10107                {
10108                    if ( TBaseType.assigned(lccurrentsqlstatement) )
10109                    {
10110                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
10111                        {
10112                            if ( lccurrentsqlstatement.dummytag == 1 )
10113                            {
10114                                lcisnewsql = false;
10115                                lccurrentsqlstatement.dummytag = 0; // no select is permited after it
10116                            }
10117                        }
10118
10119                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlgrant )
10120                        {
10121                            if ( TBaseType.assigned(lcprevsolidtoken) )
10122                            {
10123                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_grant )
10124                                    lcisnewsql = false;
10125                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
10126                                    lcisnewsql = false;
10127                            }
10128                        }else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlrevoke ){
10129                            if ( TBaseType.assigned(lcprevsolidtoken) )
10130                            {
10131                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_revoke )
10132                                    lcisnewsql = false;
10133                            }
10134                        }
10135
10136
10137
10138                        if (
10139                                (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlcreateprocedure)
10140                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetrigger)
10141                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlcreatefunction)
10142                                        ||(lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlalterprocedure)
10143                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlaltertrigger)
10144                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlalterfunction)
10145                                )
10146                        {
10147                            if ( TBaseType.assigned(lcprevsolidtoken) )
10148                            {
10149                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_with )
10150                                    lcisnewsql = false;
10151                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
10152                                    lcisnewsql = false;
10153                            }
10154                        }
10155                    }
10156                }
10157                if ( lcisnewsql )
10158                {
10159                    ret =  new TMssqlExecute(pdbvendor);
10160                }
10161                break;
10162            }
10163            case sstmssqlexecuteas:
10164            {
10165                lcisnewsql = true;
10166                // prev tokentext can't be with
10167                if ( pstate != EFindSqlStateType.stnormal )
10168                {
10169                    if ( TBaseType.assigned(lccurrentsqlstatement) )
10170                    {
10171                        if (
10172                                (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlcreateprocedure)
10173                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetrigger)
10174                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlcreatefunction)
10175                                        ||(lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlalterprocedure)
10176                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlaltertrigger)
10177                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlalterfunction)
10178                                )
10179                        {
10180                            if ( TBaseType.assigned(lcprevsolidtoken) )
10181                            {
10182                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_with )
10183                                    lcisnewsql = false;
10184                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
10185                                    lcisnewsql = false;
10186                            }
10187                        }
10188                    }
10189                }
10190                if ( lcisnewsql )
10191                {
10192                    ret =  new TMssqlExecuteAs(pdbvendor);
10193                    ret.sqlstatementtype = gnewsqlstatementtype;
10194                }
10195                break;
10196            }
10197            case sstmssqlset:
10198            {
10199                lcisnewsql = true;
10200                if ( pstate != EFindSqlStateType.stnormal )
10201                {
10202                    if ( TBaseType.assigned(lccurrentsqlstatement) )
10203                    {
10204
10205                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlif)
10206                        {
10207                             TSourceToken lcPPToken = lcsourcetokenlist.searchToken(TBaseType.rrw_update,"",pcst,-10);
10208                             if (TBaseType.assigned(lcPPToken))
10209                            {
10210                                  lcisnewsql = false;
10211                            }
10212                        }
10213
10214                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
10215                        {
10216                              if (lcprevsolidtoken != null)
10217                              {
10218                                  if (lcprevsolidtoken.tokencode == TBaseType.rrw_update){
10219                                    lcisnewsql = false;}
10220                              }
10221                        }
10222
10223                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstupdate )
10224                        {
10225                            if ( lccurrentsqlstatement.dummytag == 1 )
10226                            {
10227                                //update statement still find set clause yet, so this is setclause in update statement
10228                                lccurrentsqlstatement.dummytag = 0;
10229                                lcisnewsql = false;
10230                            }
10231                        }
10232                    }
10233
10234                    lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
10235                    if ( TBaseType.assigned(lcnextsolidtoken) )
10236                    { //set null, set default
10237                        if ( (TBaseType.mycomparetext(lcnextsolidtoken.astext,"null")==0)
10238                                || (TBaseType.mycomparetext(lcnextsolidtoken.astext, "default")==0) )
10239                        {
10240                            lcisnewsql = false;
10241                        }
10242                    }
10243
10244                }
10245
10246                if ( lcisnewsql )
10247                {
10248                    ret =  new TMssqlSet(pdbvendor);
10249                }
10250
10251                break;
10252            }
10253            case sstmssqlupdatetext:
10254            {
10255                ret =  new TMssqlUpdateText(pdbvendor);
10256                break;
10257            }
10258            case sstmssqlendconversation:
10259            {
10260                ret =  new TMssqlEndConversation(pdbvendor);
10261                break;
10262            }
10263            case sstmssqlbegindialog:
10264            {
10265                ret =  new TMssqlBeginDialog(pdbvendor);
10266                break;
10267            }
10268            case sstmssqlsendonconversation:
10269            {
10270                ret =  new TMssqlSendOnConversation(pdbvendor);
10271                break;
10272            }
10273            case sstmssqldisabletrigger :
10274            case sstmssqlenabletrigger:
10275            {
10276                lcisnewsql = true;
10277                if ( TBaseType.assigned(lccurrentsqlstatement) )
10278                {
10279                    if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstaltertable )
10280                        lcisnewsql = false;
10281                }
10282
10283                if ( lcisnewsql )
10284                {
10285                    ret =  new TDisableEnableTriggerStmt(pdbvendor);
10286                    ret.sqlstatementtype = gnewsqlstatementtype;
10287                }
10288                break;
10289            }
10290            case sstsybaseWritetext:
10291            {
10292                ret =  new TSybaseWritetext(pdbvendor);
10293                break;
10294            }
10295            case sstsybaseDeleteStatistics:
10296            {
10297                ret = new TSybaseDeleteStatistics(pdbvendor);
10298                break;
10299            }
10300            case sstcall:
10301            {
10302                ret = new TCallStatement(pdbvendor);
10303                break;
10304            }
10305            default:
10306            {
10307                ret =  new TUnknownSqlStatement(pdbvendor);
10308                ret.sqlstatementtype = gnewsqlstatementtype;
10309                break;
10310            }
10311        }    // case
10312
10313        return ret;
10314    }
10315
10316    TCustomSqlStatement ismssqlsql(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
10317        TCustomSqlStatement ret = null;
10318        int k;
10319        boolean lcisnewsql;
10320        TSourceToken lcpprevsolidtoken,lcnextsolidtoken,lctoken;
10321
10322        gnewsqlstatementtype = ESqlStatementType.sstinvalid;
10323
10324        if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
10325                || (pcst.tokencode  == TBaseType.cmtslashstar)
10326                || (pcst.tokencode  == TBaseType.lexspace)
10327                || (pcst.tokencode  == TBaseType.lexnewline)
10328                || (pcst.tokentype == ETokenType.ttsemicolon) )
10329        {
10330            return ret;
10331        }
10332
10333        int lcpos = pcst.posinlist;
10334        TSourceTokenList lcsourcetokenlist = pcst.container;
10335        TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
10336
10337        //subquery after semicolon or at first line
10338        if ( pcst.tokentype == ETokenType.ttleftparenthesis)  // (
10339        {
10340            k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
10341            if ( k >0 )
10342            {
10343                if (pstate == EFindSqlStateType.stnormal){
10344                    ret =  new TSelectSqlStatement(pdbvendor);
10345                    return ret;
10346                }
10347//                if (((lccurrentsqlstatement != null) )&&(lccurrentsqlstatement.sqlstatementtype != ESqlStatementType.sstselect)&&(lcsourcetokenlist.returnbeforecurtoken(true))){
10348//                    ret =  new TSelectSqlStatement(pdbvendor);
10349//                    return ret;
10350//                }
10351            }
10352        }
10353
10354        //cte
10355        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
10356        {
10357            ret = findcte(pcst,pdbvendor);
10358            if ( (ret != null) )  return ret;
10359        }
10360
10361        if ( (lccurrentsqlstatement != null) && (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable)
10362                && (pcst.tokencode == TBaseType.rrw_with) )
10363        {
10364            TSourceToken lcPrevToken = pcst.prevSolidToken();
10365            if ((lcPrevToken != null) && (lcPrevToken.tokencode == TBaseType.rrw_as))
10366            { // mantisbt/view.php?id=3900, create table with as select, ignore tokens from with to select (including the select token)
10367                ret = findcte(pcst,pdbvendor);
10368                if ( (ret != null) )  {
10369                    ret = null;
10370                }
10371            }
10372        }
10373
10374        //odbc
10375        if ( (pstate == EFindSqlStateType.stnormal) && ((pcst.tokencode == '{')||(pcst.tokencode == TBaseType.odbc_esc_prefix)) && (pcst.getLinkToken() != null)  )
10376        {
10377            ret = new TCallStatement(pdbvendor);
10378            return ret;
10379        }
10380
10381        gnewsqlstatementtype = findmssqlcmd(pcst);
10382
10383        TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
10384        switch(gnewsqlstatementtype ) {   //
10385            case sstinvalid:
10386            {
10387                if ( pcst.tokencode == TBaseType.mslabel )
10388                {
10389                    ret =  new TMssqlLabel(pdbvendor);
10390                }
10391                else
10392                    ret = null;
10393
10394                break;
10395            }
10396            case sstselect:
10397            {
10398                lcisnewsql = true;
10399
10400                if ( pstate != EFindSqlStateType.stnormal )
10401                {
10402                    // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
10403                    if ( (lcprevsolidtoken != null) )
10404                    {
10405                        if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
10406                            lcisnewsql = false; //subqery
10407                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
10408                            lcisnewsql = false;
10409                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
10410                            lcisnewsql = false;
10411                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
10412                            lcisnewsql = false;
10413                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
10414                            lcisnewsql = false;
10415                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
10416                            lcisnewsql = false;
10417                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
10418                        {
10419                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
10420                                lcisnewsql = false;
10421                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
10422                                lcisnewsql = false;
10423                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstalterview )
10424                                lcisnewsql = false;
10425                        }
10426                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
10427                        {
10428                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlset )
10429                                lcisnewsql = false;
10430                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqldeclare )
10431                                lcisnewsql = false;
10432                        }
10433
10434                        if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
10435                        {
10436                            lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
10437                            if ( (lcpprevsolidtoken != null) )
10438                            {
10439                                if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
10440                                    lcisnewsql = false;
10441                            }
10442                        }
10443
10444                    }
10445
10446                    if ( (lccurrentsqlstatement != null) )
10447                    {
10448                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
10449                        {
10450                        }
10451                        else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlgrant )
10452                        {
10453                            if ( (lcprevsolidtoken != null) )
10454                            {
10455                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_grant )
10456                                    lcisnewsql = false;
10457                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
10458                                    lcisnewsql = false;
10459                            }
10460                        }else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview ){
10461                            lcisnewsql = false;
10462                        }else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatematerializedview ){
10463                            lcisnewsql = false;
10464                        }
10465                    }
10466
10467                }
10468
10469                if ( lcisnewsql )
10470                    ret =  new TSelectSqlStatement(pdbvendor);
10471
10472                break;
10473
10474            }
10475            case sstinsert:
10476            {
10477                lcisnewsql = true;
10478                if ( pstate != EFindSqlStateType.stnormal )
10479                {
10480                    if ( (lccurrentsqlstatement != null) )
10481                    {
10482                        // merge
10483                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
10484                        {
10485                              if (lcprevsolidtoken != null)
10486                              {
10487                                  if (lcprevsolidtoken.tokencode == TBaseType.rrw_then)
10488                                  {lcisnewsql = false;}
10489                              }
10490                        }
10491
10492                        // bulk insert
10493                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlbulkinsert )
10494                        {
10495                            if ( (lcprevsolidtoken != null) )
10496                            {
10497                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_bulk )
10498                                    lcisnewsql = false;
10499                            }
10500                        }
10501
10502                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlgrant )
10503                        {
10504                            if ( (lcprevsolidtoken != null) )
10505                            {
10506                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_grant )
10507                                    lcisnewsql = false;
10508                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
10509                                    lcisnewsql = false;
10510                            }
10511                        }
10512
10513                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetrigger )
10514                        {
10515                            if ( (lcprevsolidtoken != null) )
10516                            {
10517                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
10518                                    lcisnewsql = false;
10519                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
10520                                    lcisnewsql = false;
10521                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.astext,"after") == 0 )
10522                                    lcisnewsql = false;
10523                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.astext , "of") == 0 )
10524                                    lcisnewsql = false;
10525                            }
10526                        }
10527
10528
10529                    }
10530                }
10531
10532                if ( lcisnewsql )
10533                {
10534                    ret =  new TInsertSqlStatement(pdbvendor);
10535                    ret.dummytag = 1; //  select stmt in insert is permitted
10536                    for ( k = lcpos + 1; k < lcsourcetokenlist.size();k++ )    // iterate
10537                    {
10538                        if ( lcsourcetokenlist.get(k).isnonsolidtoken() ) continue;
10539                        if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_values ) break;
10540                        if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_go ) break;
10541                        if ( lcsourcetokenlist.get(k).tokentype == ETokenType.ttsemicolon ) break;
10542                        if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_select ){
10543                            ret.dummytag = 0;
10544                            break;
10545                        }
10546                        if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_execute ) break;
10547                        if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_exec ) break;
10548                    }    // for (
10549                    if ( k > lcsourcetokenlist.size() - 1 )
10550                        k = lcsourcetokenlist.size() - 1;
10551
10552                    for ( int i = lcpos + 1; i <=  k; i++ )    // iterate
10553                    {
10554                        lcsourcetokenlist.get(i).tokenstatus = ETokenStatus.tsignoredbygetrawstatement;
10555                    }    // for (
10556
10557                }
10558
10559                break;
10560            }
10561            case sstupdate:
10562            {
10563                lcisnewsql = true;
10564                if ( pstate != EFindSqlStateType.stnormal )
10565                {
10566                    // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
10567                    if ( (lcprevsolidtoken != null) )
10568                    { //
10569                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
10570                            lcisnewsql = false;
10571                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
10572                            lcisnewsql = false;
10573                    }
10574
10575                    lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
10576                    if ( TBaseType.assigned(lcnextsolidtoken) )
10577                    {
10578                        if ( lcnextsolidtoken.tokentype == ETokenType.ttleftparenthesis)
10579                        {
10580                            k = lcsourcetokenlist.solidtokenafterpos(lcnextsolidtoken.posinlist,TBaseType.rrw_select,1,"(");
10581                            if ( k  == 0 ) lcisnewsql = false;
10582                        }
10583                    }
10584
10585
10586                    if ( TBaseType.assigned(lccurrentsqlstatement) )
10587                    {
10588                        // merge
10589                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
10590                        {
10591                              if (lcprevsolidtoken != null)
10592                              {
10593                                  if (lcprevsolidtoken.tokencode == TBaseType.rrw_then)
10594                                  {lcisnewsql = false;}
10595                              }
10596                        }
10597
10598                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlgrant )
10599                        {
10600                            if ( TBaseType.assigned(lcprevsolidtoken) )
10601                            {
10602                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_grant )
10603                                    lcisnewsql = false;
10604                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
10605                                    lcisnewsql = false;
10606                            }
10607                        }
10608                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetrigger )
10609                        {
10610                            if ( TBaseType.assigned(lcprevsolidtoken) )
10611                            {
10612                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
10613                                    lcisnewsql = false;
10614                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
10615                                    lcisnewsql = false;
10616                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.astext,"after") == 0 )
10617                                    lcisnewsql = false;
10618                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.astext , "of") == 0 )
10619                                    lcisnewsql = false;
10620                            }
10621                        }
10622
10623                    }
10624                }
10625
10626                if ( lcisnewsql )
10627                {
10628                    ret =  new TUpdateSqlStatement(pdbvendor);
10629                    ret.dummytag = 1; // means set clause in update is not found yet, used to separate set clause from set statement
10630                }
10631
10632                break;
10633            }
10634            case sstdelete:
10635            {
10636                lcisnewsql = true;
10637
10638                if ( pstate != EFindSqlStateType.stnormal )
10639                {
10640                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
10641                    if ( TBaseType.assigned(lcprevsolidtoken) )
10642                    {
10643                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
10644                            lcisnewsql = false;
10645                    }
10646
10647                    if ( TBaseType.assigned(lccurrentsqlstatement) )
10648                    {
10649                        // merge
10650                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
10651                        {
10652                              if (lcprevsolidtoken != null)
10653                              {
10654                                  if (lcprevsolidtoken.tokencode == TBaseType.rrw_then)
10655                                  {lcisnewsql = false;}
10656                              }
10657                        }
10658
10659                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlgrant )
10660                        {
10661                            if ( TBaseType.assigned(lcprevsolidtoken) )
10662                            {
10663                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_grant )
10664                                    lcisnewsql = false;
10665                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
10666                                    lcisnewsql = false;
10667                            }
10668                        }
10669
10670                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetrigger )
10671                        {
10672                            if ( TBaseType.assigned(lcprevsolidtoken) )
10673                            {
10674                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
10675                                    lcisnewsql = false;
10676                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
10677                                    lcisnewsql = false;
10678                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.astext,"after") == 0 )
10679                                    lcisnewsql = false;
10680                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.astext , "of") == 0 )
10681                                    lcisnewsql = false;
10682                            }
10683                        }
10684
10685                    }
10686                }
10687
10688                if ( lcisnewsql )
10689                    ret =  new TDeleteSqlStatement(pdbvendor);
10690
10691                break;
10692            }
10693            case sstcreatetable:
10694            {
10695                lcisnewsql = true;
10696                if ( pstate != EFindSqlStateType.stnormal ) {
10697
10698                    if (TBaseType.assigned(lccurrentsqlstatement)) {
10699                        if ((lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateschema)
10700                                )
10701                        {
10702                            lcisnewsql = false;
10703                        }
10704                    }
10705                }
10706
10707                if (lcisnewsql) {
10708                    ret = new TCreateTableSqlStatement(pdbvendor);
10709
10710                }
10711                break;
10712            }
10713            case sstcreateview:
10714            {
10715
10716                lcisnewsql = true;
10717                if ( pstate != EFindSqlStateType.stnormal ) {
10718
10719                    if (TBaseType.assigned(lccurrentsqlstatement)) {
10720                        if ((lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateschema)
10721                                )
10722                        {
10723                            lcisnewsql = false;
10724                        }
10725                    }
10726                }
10727                if (lcisnewsql) {
10728                    ret =  new TCreateViewSqlStatement(pdbvendor);
10729                }
10730                break;
10731            }
10732            case sstcreatesequence:
10733              {
10734                ret = new TCreateSequenceStmt(pdbvendor);
10735                  break;
10736              }
10737            case sstaltertable:
10738            {
10739                ret =  new TAlterTableStatement(pdbvendor);
10740                break;
10741            }
10742            case sstmssqlfetch:
10743            {
10744                ret =  new TMssqlFetch(pdbvendor);
10745                break;
10746            }
10747            case sstmssqlif :
10748            {
10749                lcisnewsql = true;
10750                if ( pstate != EFindSqlStateType.stnormal ) {
10751
10752                    if (TBaseType.assigned(lccurrentsqlstatement)) {
10753                        // merge
10754                        if (
10755                            (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstdropprocedure)
10756                                ||(lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstdropdatabase)
10757                                    ||(lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstdropfunction)
10758                                    ||(lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlDropSecurityPolicy)
10759                                )
10760                        {
10761                            lcisnewsql = false;
10762                        }else if ( (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstdroptable)
10763                                ||(lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstdropindex)
10764                                ||(lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable)
10765                                ||(lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstdropsynonym)
10766                                ||(lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstdropview)
10767                                ||(lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstdropsequence)
10768                        ){
10769                            // DROP TABLE IF EXISTS T1;
10770                            TSourceToken st = lcsourcetokenlist.solidtokenbefore(lcpos);
10771                            if ((st.tokencode == TBaseType.rrw_table)||(st.tokencode == TBaseType.rrw_index)
10772                                ||(st.tokencode == TBaseType.rrw_sqlserver_synonym)||(st.tokencode == TBaseType.rrw_view)
10773                                ||(st.tokencode == TBaseType.rrw_sqlserver_sequence)
10774                                ){
10775                                lcisnewsql = false;
10776                            }
10777                        }else if ((lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstaltertable)){
10778                            lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
10779                            if (lcnextsolidtoken != null){
10780                                if (lcnextsolidtoken.tokencode == TBaseType.rrw_sqlserver_exists){
10781                                    lcisnewsql = false;
10782                                }
10783                            }
10784                        }
10785                    }
10786                }
10787
10788
10789                if (lcisnewsql) {
10790                    ret = new TMssqlIfElse(pdbvendor);
10791                    ret.dummytag = 1;// reduce to 0 while stmt find in 'if ( condtion stmt' || 'else stmt'
10792                }
10793                break;
10794            }
10795            case sstmssqlwhile:
10796            {
10797                ret = new TMssqlIfElse(pdbvendor);
10798                ret.dummytag = 1;// reduce to 0 while stmt find in 'if ( condtion stmt' || 'else stmt'
10799                break;
10800            }
10801            case sstmssqlcreateprocedure :
10802            case sstmssqlalterprocedure:
10803            {
10804                ret = new TMssqlCreateProcedure(pdbvendor);
10805                break;
10806            }
10807            case sstmssqlcreatefunction :
10808            case sstmssqlalterfunction:
10809            {
10810                ret =  new TMssqlCreateFunction(pdbvendor);
10811                break;
10812            }
10813            case sstcreatetrigger :
10814            case sstmssqlaltertrigger:
10815            {
10816                ret =  new TCreateTriggerStmt(pdbvendor); //TMssqlCreateTrigger(pdbvendor);
10817                break;
10818            }
10819            case sstmssqlreturn:
10820            {
10821                ret =  new TMssqlReturn(pdbvendor);
10822                break;
10823            }
10824            case sstmssqlprint:
10825            {
10826                if (pdbvendor == EDbVendor.dbvodbc){
10827
10828                }else if (pdbvendor == EDbVendor.dbvmssql){
10829                    ret =  new TMssqlPrint(pdbvendor);
10830                }
10831
10832                break;
10833            }
10834            case sstmssqluse:
10835            {
10836                ret =  new TUseDatabase(pdbvendor);
10837                break;
10838            }
10839            case sstmssqlgo:
10840            {
10841                ret =  new TMssqlGo(pdbvendor);
10842                break;
10843            }
10844            case sstmssqlrevert:
10845            {
10846                lcisnewsql = true;
10847                // prev tokentext can't be with
10848                if ( pstate != EFindSqlStateType.stnormal ) {
10849                    if (TBaseType.assigned(lcprevsolidtoken)) {
10850                        if (lcprevsolidtoken.toString().equalsIgnoreCase("no")) {
10851                            ret = null;
10852                            lcisnewsql = false;
10853                        }
10854                    }
10855                }
10856                if (lcisnewsql){
10857                    ret =  new TMssqlRevert(pdbvendor);
10858                }
10859
10860                break;
10861            }
10862            case sstmssqlgrant:
10863            {
10864                lcisnewsql = true;
10865                // prev tokentext can't be with
10866                if ( pstate != EFindSqlStateType.stnormal )
10867                {
10868                    if ( TBaseType.assigned(lcprevsolidtoken) )
10869                    {
10870                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_with )
10871                        {
10872                            ret = null;
10873                            lcisnewsql = false;
10874                        }
10875                    }
10876
10877                    if((lcisnewsql)&&(TBaseType.assigned(lccurrentsqlstatement))) {
10878                        if ((lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateschema)
10879                                )
10880                        {
10881                            lcisnewsql = false;
10882                        }
10883                    }
10884                }
10885                if ( lcisnewsql )
10886                {
10887                    ret =  new TGrantStmt(pdbvendor);
10888                    //ret.sqlstatementtype = gnewsqlstatementtype;
10889                    for ( k = lcpos + 1; k< lcsourcetokenlist.size();k++ )    // iterate
10890                    {
10891                        lctoken = lcsourcetokenlist.get(k);
10892                        if (lctoken.isnonsolidtoken() ) continue;
10893                        if ( lctoken.tokencode == TBaseType.rrw_go ) break;
10894                        if ( lctoken.tokentype == ETokenType.ttsemicolon ) break;
10895                        if ( lctoken.tokencode == TBaseType.rrw_to   ) break;
10896                        lctoken.tokenstatus = ETokenStatus.tsignoredbygetrawstatement;
10897                    }
10898                }
10899                break;
10900            }
10901            case sstmssqlrevoke:{
10902                lcisnewsql = true;
10903                if ( pstate != EFindSqlStateType.stnormal )
10904                {
10905                    if((lcisnewsql)&&(TBaseType.assigned(lccurrentsqlstatement))) {
10906                        if ((lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateschema)
10907                                )
10908                        {
10909                            lcisnewsql = false;
10910                        }
10911                    }
10912                }
10913                if ( lcisnewsql )
10914                {
10915                    ret =  new TRevokeStmt(pdbvendor);
10916                    for ( k = lcpos + 1; k< lcsourcetokenlist.size();k++ )    // iterate
10917                    {
10918                        lctoken = lcsourcetokenlist.get(k);
10919                        if (lctoken.isnonsolidtoken() ) continue;
10920                        if ( lctoken.tokencode == TBaseType.rrw_go ) break;
10921                        if ( lctoken.tokentype == ETokenType.ttsemicolon ) break;
10922                        if ( lctoken.tokencode == TBaseType.rrw_to   ) break;
10923                        lctoken.tokenstatus = ETokenStatus.tsignoredbygetrawstatement;
10924                    }
10925                }
10926                break;
10927
10928            }
10929            case sstmssqldeny:
10930            {
10931                lcisnewsql = true;
10932                if ( pstate != EFindSqlStateType.stnormal )
10933                {
10934                    if((lcisnewsql)&&(TBaseType.assigned(lccurrentsqlstatement))) {
10935                        if ((lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateschema)
10936                                )
10937                        {
10938                            lcisnewsql = false;
10939                        }
10940                    }
10941                }
10942                if ( lcisnewsql )
10943                {
10944                    ret =  new TDenyStmt(pdbvendor);
10945                    for ( k = lcpos + 1; k< lcsourcetokenlist.size();k++ )    // iterate
10946                    {
10947                        lctoken = lcsourcetokenlist.get(k);
10948                        if (lctoken.isnonsolidtoken() ) continue;
10949                        if ( lctoken.tokencode == TBaseType.rrw_go ) break;
10950                        if ( lctoken.tokentype == ETokenType.ttsemicolon ) break;
10951                        if ( lctoken.tokencode == TBaseType.rrw_to   ) break;
10952                        lctoken.tokenstatus = ETokenStatus.tsignoredbygetrawstatement;
10953                    }
10954                }
10955                break;
10956            }
10957            case sstmssqldeclare:
10958            {
10959                ret =  new TMssqlDeclare(pdbvendor);
10960                break;
10961            }
10962            case sstmssqlcontinue:
10963            {
10964                ret =  new TMssqlContinue(pdbvendor);
10965                break;
10966            }
10967            case sstbreak:
10968            {
10969                ret =  new TBreakStmt(pdbvendor);
10970                break;
10971            }
10972            case sstmssqlopen:
10973            {
10974                ret =  new TMssqlOpen(pdbvendor);
10975                break;
10976            }
10977            case sstmssqlclose:
10978            {
10979                ret =  new TMssqlClose(pdbvendor);
10980                break;
10981            }
10982            case sstmssqlbulkinsert:
10983            {
10984                ret =  new TMssqlBulkInsert(pdbvendor);
10985                break;
10986            }
10987            case sstmssqldeallocate:
10988            {
10989                ret =  new TMssqlDeallocate(pdbvendor);
10990                break;
10991            }
10992            case sstmssqlraiserror:
10993            {
10994                ret =  new TMssqlRaiserror(pdbvendor);
10995                break;
10996            }
10997            case sstmssqlgoto:
10998            {
10999                ret =  new TMssqlGoTo(pdbvendor);
11000                break;
11001            }
11002            case sstmssqldropview:
11003            {
11004                ret =  new TDropViewSqlStatement(pdbvendor);
11005                break;
11006            }
11007            case sstmssqldroptable:
11008            {
11009                ret =  new TDropTableSqlStatement(pdbvendor);
11010                break;
11011            }
11012            case sstmssqldropindex:
11013            {
11014                ret =  new TDropIndexSqlStatement(pdbvendor);
11015                break;
11016            }
11017            case sstmssqldroppartitionscheme :
11018                ret = new TDropPartitionSchemeStmt(pdbvendor);
11019                break;
11020            case sstmssqldropaggregate :
11021            case sstmssqldropapplicationrole :
11022            case sstmssqldropassembly :
11023            case sstmssqldropasymmetrickey :
11024            case sstmssqldropcertificate :
11025            case sstmssqldropcontract :
11026            case sstmssqldropcredential :
11027            case sstmssqldropdefault :
11028            case sstmssqldropendpoint :
11029            case sstmssqldropeventnotification :
11030            case sstmssqldropfulltextcatalog :
11031            case sstmssqldropfulltextindex :
11032            case sstmssqldroplogin :
11033            case sstmssqldropmasterkey :
11034            case sstmssqldropmessagetype :
11035            case sstmssqldroppartitionfunction :
11036            case sstmssqldropqueue :
11037            case sstmssqldropremoteservicebinding :
11038            case sstmssqldroprole :
11039            case sstmssqldroproute :
11040            case sstmssqldroprule :
11041            case sstmssqldropservice :
11042            case sstmssqldropsignature:
11043            case sstmssqldropstatistics :
11044            case sstmssqldropsymmetrickey :
11045            case sstmssqldroptrigger :
11046            case sstmssqldroptype :
11047            case sstmssqldropuser :
11048            case sstmssqldropxmlschemacollection:
11049            case sstmssqldropeventsession:
11050            {
11051                ret =  new TMssqlDropDbObject(EDbVendor.dbvmssql);
11052                ret.sqlstatementtype = gnewsqlstatementtype;
11053                break;
11054            }
11055            case sstmssqldropsynonym :
11056            {
11057                ret =  new TDropSynonymStmt(pdbvendor);
11058                break;
11059            }
11060            case sstmssqldropprocedure :
11061            {
11062                ret =  new TDropProcedureStmt(EDbVendor.dbvmssql);
11063                break;
11064            }
11065            case sstmssqldropdatabase :
11066            {
11067                ret =  new TDropDatabaseStmt(EDbVendor.dbvmssql);
11068                break;
11069            }
11070            case sstmssqldropschema :
11071            {
11072                ret =  new TDropSchemaSqlStatement(EDbVendor.dbvmssql);
11073                break;
11074            }
11075            case sstmssqltruncatetable:
11076            {
11077                ret =  new TTruncateStatement(pdbvendor);
11078                break;
11079            }
11080            case sstmssqlbegintran:
11081            {
11082                ret =  new TBeginTran(pdbvendor);
11083                break;
11084            }
11085            case sstmssqlsavetran:
11086            {
11087                if (pdbvendor == EDbVendor.dbvodbc){
11088
11089                }else if (pdbvendor == EDbVendor.dbvmssql) {
11090                    ret = new TMssqlSaveTran(pdbvendor);
11091                }
11092                break;
11093            }
11094            case sstmssqlcommit:
11095            {
11096                ret =  new TMssqlCommit(pdbvendor);
11097                break;
11098            }
11099            case sstmssqlrollback:
11100            {
11101                ret =  new TMssqlRollback(pdbvendor);
11102                break;
11103            }
11104            case sstmssqlreadtext :
11105            case sstmssqldbcc :
11106            case sstmssqlrestore :
11107            case sstmssqlbackup :
11108            {
11109                ret = new TMssqlDummyStmt(pdbvendor);
11110                ret.sqlstatementtype = gnewsqlstatementtype;
11111                break;
11112            }
11113
11114            case sstmssqlreceive:
11115            {
11116                lcisnewsql = true;
11117                if ( pstate != EFindSqlStateType.stnormal )
11118                {
11119                    if((lcisnewsql)&&(TBaseType.assigned(lccurrentsqlstatement))) {
11120                        if ((lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstselect)
11121                        )
11122                        {
11123                            lcisnewsql = false;
11124                        }
11125                    }
11126                }
11127                if ( lcisnewsql )
11128                {
11129                    ret = new TMssqlDummyStmt(pdbvendor);
11130                    ret.sqlstatementtype = gnewsqlstatementtype;
11131                }
11132                break;
11133            }
11134            case sstcreateindex:
11135            {
11136                ret =  new TCreateIndexSqlStatement(pdbvendor);
11137                break;
11138            }
11139            case sstmssqlwaitfor:
11140            {
11141                ret =  new TMssqlWaitFor(pdbvendor);
11142                break;
11143            }
11144            case sstmerge:
11145            {
11146                lcisnewsql = true;
11147
11148                if (pstate != EFindSqlStateType.stnormal)
11149                {
11150
11151                    if (lccurrentsqlstatement != null)
11152                    {
11153                        // merge union, merge join
11154                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstselect)
11155                        {
11156                                    lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
11157                                    if (lcnextsolidtoken != null)
11158                                       {
11159                                        if ((lcnextsolidtoken.tokencode == TBaseType.rrw_union) || (lcnextsolidtoken.tokencode == TBaseType.rrw_join)) 
11160                                           {
11161                                              lcisnewsql = false;
11162                                           }
11163                                        }
11164                        }
11165
11166//                        if ( TBaseType.assigned(lcprevsolidtoken) )
11167//                        {
11168//                            if ( lcprevsolidtoken.tokencode == '(' )
11169//                                lcisnewsql = false;
11170//                        }
11171
11172                    }
11173                    if (lcisnewsql){
11174                        TSourceToken nextSt = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
11175                        if (nextSt != null){
11176                            if (nextSt.tokencode == TBaseType.rrw_join){
11177                                lcisnewsql = false;
11178                            }
11179                        }
11180                    }
11181                }
11182
11183                if (lcisnewsql)
11184                {
11185                    ret = new TMergeSqlStatement(pdbvendor);
11186                    ret.sqlstatementtype = gnewsqlstatementtype;
11187                }
11188
11189                break;
11190            }
11191            case sstmssqlbegintry :
11192            case sstmssqlbegincatch:
11193            {
11194                ret =  new TMssqlBlock(pdbvendor);
11195                ret.sqlstatementtype = gnewsqlstatementtype;
11196                break;
11197            }
11198            case sstmssqlexec:
11199            {
11200                lcisnewsql = true;
11201                // prev tokentext can't be with
11202                if ( pstate != EFindSqlStateType.stnormal )
11203                {
11204                    if ( TBaseType.assigned(lccurrentsqlstatement) )
11205                    {
11206                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
11207                        {
11208                            if ( lccurrentsqlstatement.dummytag == 1 )
11209                            {
11210                                lcisnewsql = false;
11211                                lccurrentsqlstatement.dummytag = 0; // no select is permitted after it
11212                            }
11213
11214                            TSourceToken valuesToken = pcst.searchToken(TBaseType.rrw_values,-pcst.posinlist);
11215                            if (valuesToken != null){
11216                                // https://www.sqlparser.com/bugs/mantisbt/view.php?id=3153
11217                                // INSERT INTO @tempTbl VALUES ('Test5')
11218                                //
11219                                //EXEC sp_execute @handle, 1
11220                                // 如果 EXEC 在 insert 语句的 values 后面,则这个 EXEC 为独立的 sql 语句,
11221                                // 而不是属于insert 语句
11222                                TSourceToken insertToken = lccurrentsqlstatement.sourcetokenlist.get(0);
11223                                if (valuesToken.posinlist > insertToken.posinlist){
11224                                    lcisnewsql = true;
11225                                }
11226                            }
11227                        }
11228
11229                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlgrant )
11230                        {
11231                            if ( TBaseType.assigned(lcprevsolidtoken) )
11232                            {
11233                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_grant )
11234                                    lcisnewsql = false;
11235                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
11236                                    lcisnewsql = false;
11237                            }
11238                        }
11239
11240                        if (
11241                                (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlcreateprocedure)
11242                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetrigger)
11243                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlcreatefunction)
11244                                        ||(lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlalterprocedure)
11245                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlaltertrigger)
11246                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlalterfunction)
11247                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlcreatequeue)
11248                                )
11249                        {
11250                            if ( TBaseType.assigned(lcprevsolidtoken) )
11251                            {
11252                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_with )
11253                                    lcisnewsql = false;
11254                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
11255                                    lcisnewsql = false;
11256                            }
11257                        }
11258                    }
11259                }
11260                if ( lcisnewsql )
11261                {
11262                    ret =  new TMssqlExecute(pdbvendor);
11263                }
11264                break;
11265            }
11266            case sstmssqlexecuteas:
11267            {
11268                lcisnewsql = true;
11269                // prev tokentext can't be with
11270                if ( pstate != EFindSqlStateType.stnormal )
11271                {
11272                    if ( TBaseType.assigned(lccurrentsqlstatement) )
11273                    {
11274                        if (
11275                                (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlcreateprocedure)
11276                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetrigger)
11277                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlcreatefunction)
11278                                        ||(lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlalterprocedure)
11279                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlaltertrigger)
11280                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlalterfunction)
11281                                )
11282                        {
11283                            if ( TBaseType.assigned(lcprevsolidtoken) )
11284                            {
11285                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_with )
11286                                    lcisnewsql = false;
11287                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
11288                                    lcisnewsql = false;
11289                            }
11290                        }
11291                    }
11292                }
11293                if ( lcisnewsql )
11294                {
11295                    ret =  new TMssqlExecuteAs(pdbvendor);
11296                    ret.sqlstatementtype = gnewsqlstatementtype;
11297                }
11298                break;
11299            }
11300            case sstmssqlset:
11301            {
11302                lcisnewsql = true;
11303                if ( pstate != EFindSqlStateType.stnormal )
11304                {
11305                    if ( TBaseType.assigned(lccurrentsqlstatement) )
11306                    {
11307
11308                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlif)
11309                        {
11310                             TSourceToken lcPPToken = lcsourcetokenlist.searchToken(TBaseType.rrw_update,"",pcst,-10);
11311                             if (TBaseType.assigned(lcPPToken))
11312                            {
11313                                  lcisnewsql = false;
11314                            }
11315                        }
11316
11317                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstalterdatabase)
11318                        {
11319                             TSourceToken lcPPToken = lcsourcetokenlist.searchToken(TBaseType.rrw_alter,"",pcst,-10);
11320                             if (TBaseType.assigned(lcPPToken))
11321                            {
11322                                  lcisnewsql = false;
11323                            }
11324                        }
11325
11326                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
11327                        {
11328                              if (lcprevsolidtoken != null)
11329                              {
11330                                  if (lcprevsolidtoken.tokencode == TBaseType.rrw_update){
11331                                    lcisnewsql = false;}
11332                              }
11333                        }
11334
11335                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstupdate )
11336                        {
11337                            if ( lccurrentsqlstatement.dummytag == 1 )
11338                            {
11339                                //update statement still find set clause yet, so this is set clause in update statement
11340                                lccurrentsqlstatement.dummytag = 0;
11341                                lcisnewsql = false;
11342                            }
11343                        }
11344
11345                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlcreateeventsession )
11346                        {
11347                            lcisnewsql = false;
11348                        }
11349                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstaltertable )
11350                        {
11351                            lcisnewsql = false;
11352                        }
11353                    }
11354
11355                    lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
11356                    if ( TBaseType.assigned(lcnextsolidtoken) )
11357                    { //set null, set default
11358                        if ( (TBaseType.mycomparetext(lcnextsolidtoken.astext,"null")==0)
11359                                || (TBaseType.mycomparetext(lcnextsolidtoken.astext, "default")==0) )
11360                        {
11361                            lcisnewsql = false;
11362                        }
11363                    }
11364
11365                }
11366
11367                if ( lcisnewsql )
11368                {
11369                    ret =  new TMssqlSet(pdbvendor);
11370                }
11371
11372                break;
11373            }
11374            case sstmssqlsetrowcount:
11375            {
11376                ret =  new TMssqlSetRowCount(pdbvendor);
11377                break;
11378            }
11379            case sstmssqlupdatetext:
11380            {
11381                ret =  new TMssqlUpdateText(pdbvendor);
11382                break;
11383            }
11384            case sstmssqlendconversation:
11385            {
11386                ret =  new TMssqlEndConversation(pdbvendor);
11387                break;
11388            }
11389            case sstmssqlbegindialog:
11390            {
11391                ret =  new TMssqlBeginDialog(pdbvendor);
11392                break;
11393            }
11394            case sstmssqlsendonconversation:
11395            {
11396                ret =  new TMssqlSendOnConversation(pdbvendor);
11397                break;
11398            }
11399            case sstdropsequence:
11400                ret = new TDropSequenceStmt(pdbvendor);
11401                break;
11402            case sstmssqldisabletrigger :
11403            case sstmssqlenabletrigger:
11404            {
11405                lcisnewsql = true;
11406                if ( TBaseType.assigned(lccurrentsqlstatement) )
11407                {
11408                    if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstaltertable )
11409                        lcisnewsql = false;
11410                }
11411
11412                if ( lcisnewsql )
11413                {
11414                    ret =  new TUnknownSqlStatement(pdbvendor);
11415                    ret.sqlstatementtype = gnewsqlstatementtype;
11416                }
11417                break;
11418            }
11419            case sstmssqlthrow:
11420                ret = new TMssqlThrow(pdbvendor);
11421                break;
11422            case sstmssqlalterdatabase:
11423                ret = new TAlterDatabaseStmt(pdbvendor);
11424                break;
11425            case sstmssqlreconfigure:
11426                ret = new TReconfigure(pdbvendor);
11427                break;
11428            case sstcreatedatabase:
11429            {
11430                ret = new TCreateDatabaseSqlStatement(pdbvendor);
11431                break;
11432            }
11433            case sstmssqlcreateschema:
11434            {
11435                ret = new TCreateSchemaSqlStatement(pdbvendor);
11436                for ( k = lcpos + 1; k< lcsourcetokenlist.size();k++ )    // iterate
11437                {
11438                    lctoken = lcsourcetokenlist.get(k);
11439                    if (lctoken.isnonsolidtoken() ) continue;
11440                    if ( lctoken.tokencode == TBaseType.rrw_go ) break;
11441                    if ( lctoken.tokentype == ETokenType.ttsemicolon ) break;
11442                    lctoken.tokenstatus = ETokenStatus.tsignoredbygetrawstatement;
11443                }
11444                break;
11445            }
11446            case sstmssqlcreatesynonym:
11447            {
11448                ret = new TCreateSynonymStmt(pdbvendor);
11449                break;
11450            }
11451            case sstmssqlcreatetype:
11452                ret = new TMssqlCreateType(pdbvendor);
11453                break;
11454            case sstmssqlcreatexmlschemacollection:
11455                ret = new TMssqlCreateXmlSchemaCollectionStmt(pdbvendor);
11456                break;
11457            case sstmssqlalterindex:
11458                ret = new TAlterIndexStmt(pdbvendor);
11459                break;
11460            case sstmssqlcreateevexternalDataSource:
11461                ret = new TCreateExternalDataSourceStmt(pdbvendor);
11462                break;
11463            case sstmssqlcreateeventsession:
11464                ret = new TCreateEventSession(pdbvendor);
11465                break;
11466            case sstmssqldropfunction :
11467                ret = new TDropFunctionStmt(pdbvendor);
11468                break;
11469            case sstmssqlcreateevexternalLanguage:
11470                ret = new TCreateExternalLanguage(pdbvendor);
11471                break;
11472            case sstmssqlalterview:
11473            {
11474                lcisnewsql = true;
11475                if ( TBaseType.assigned(lccurrentsqlstatement) )
11476                {
11477                    if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
11478                        lcisnewsql = false;
11479                }
11480
11481                if ( lcisnewsql )
11482                {
11483                    ret =  new TAlterViewStatement(pdbvendor);
11484                    //ret.sqlstatementtype = gnewsqlstatementtype;
11485                }
11486                break;
11487            }
11488            case sstCreateFileFormat:
11489            {
11490                ret = new TCreateFileFormatStmt(pdbvendor);
11491                break;
11492            }
11493            case sstmssqlcreatemasterkey:
11494                ret = new TCreateMasterKeyStmt(pdbvendor);
11495                break;
11496            case sstcreatecredential:
11497                ret =  new TCreateCredentialStmt(pdbvendor);
11498                break;
11499            case sstCopyInto:
11500            {
11501                ret = new TMssqlCopyIntoStmt(pdbvendor);
11502                break;
11503            }
11504            case sstcreatematerializedview:{
11505                ret = new TCreateMaterializedSqlStatement(pdbvendor);
11506                break;
11507            }
11508            case sstmssqlCreateSecurityPolicy:
11509                ret = new TMssqlCreateSecurityPolicy(pdbvendor);
11510                break;
11511            case sstmssqlAlterSecurityPolicy:
11512                ret = new TMssqlAlterSecurityPolicy(pdbvendor);
11513                break;
11514            case sstmssqlDropSecurityPolicy:
11515                ret = new TMssqlDropSecurityPolicy(pdbvendor);
11516                break;
11517            case sstmssqlalterpartitionfunction:
11518                ret = new TAlterPartitionFunctionStmt(pdbvendor);
11519                break;
11520            case sstmssqlcreatepartitionfunction:
11521                ret = new TCreatePartitionFunctionStmt(pdbvendor);
11522                break;
11523            case sstmssqlalterpartitionscheme:
11524                ret = new TAlterPartitionSchemeSqlStatement(pdbvendor);
11525                break;
11526            case sstmssqlcreatepartitionscheme:
11527                ret = new TCreatePartitionSchemeSqlStatement(pdbvendor);
11528                break;
11529            default:
11530            {
11531                ret =  new TUnknownSqlStatement(pdbvendor);
11532                ret.sqlstatementtype = gnewsqlstatementtype;
11533                break;
11534            }
11535        }    // case
11536
11537        return ret;
11538    }
11539
11540    TCustomSqlStatement isteradatasql(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
11541        TCustomSqlStatement ret = null;
11542        int k;
11543        boolean lcisnewsql;
11544        TSourceToken lcpprevsolidtoken,lcnextsolidtoken,lctoken;
11545
11546        gnewsqlstatementtype = ESqlStatementType.sstinvalid;
11547
11548        if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
11549                || (pcst.tokencode  == TBaseType.cmtslashstar)
11550                || (pcst.tokencode  == TBaseType.lexspace)
11551                || (pcst.tokencode  == TBaseType.lexnewline)
11552                || (pcst.tokentype == ETokenType.ttsemicolon) )
11553        {
11554            return ret;
11555        }
11556
11557        int lcpos = pcst.posinlist;
11558        TSourceTokenList lcsourcetokenlist = pcst.container;
11559        TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
11560
11561        //subquery after semicolon || at first line
11562        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokentype == ETokenType.ttleftparenthesis) )
11563        {
11564            k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
11565            if ( k >0 )
11566            {
11567                ret =  new TSelectSqlStatement(pdbvendor);
11568            }else{
11569                k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_teradata_sel,1,"(");
11570                if ( k >0 )
11571                {
11572                    ret =  new TSelectSqlStatement(pdbvendor);
11573                }
11574            }
11575
11576            return ret;
11577        }
11578
11579        //cte
11580        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
11581        {
11582            ret = findcte(pcst,pdbvendor);
11583            if ( (ret != null) )  return ret;
11584        }
11585
11586        // using
11587        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_teradata_using) ){
11588           //return mapTeradataUsing(pcst);
11589            return new TTeradataUsing(pdbvendor);
11590        }
11591        
11592        if ( (pstate == EFindSqlStateType.stnormal) &&
11593                ((pcst.tokencode == TBaseType.rrw_lock)||(pcst.tokencode == TBaseType.rrw_teradata_locking)) ){
11594            return new TTeradataLock(pdbvendor);
11595        }
11596
11597        gnewsqlstatementtype = findteradatacmd(pcst);
11598
11599        TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
11600        switch(gnewsqlstatementtype ) {   //
11601            case sstinvalid:
11602            {
11603                ret = null;
11604                break;
11605            }
11606            case sstselect:
11607            {
11608                lcisnewsql = true;
11609
11610                if ( pstate != EFindSqlStateType.stnormal )
11611                {
11612                    // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
11613                    if ( (lcprevsolidtoken != null) )
11614                    {
11615                        if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
11616                            lcisnewsql = false; //subqery
11617                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
11618                            lcisnewsql = false;
11619                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
11620                            lcisnewsql = false;
11621                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
11622                            lcisnewsql = false;
11623                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
11624                            lcisnewsql = false;
11625                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
11626                            lcisnewsql = false;
11627                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
11628                        {
11629                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
11630                                lcisnewsql = false;
11631                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
11632                                lcisnewsql = false;
11633                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstteradatareplaceview )
11634                                lcisnewsql = false;
11635                        }
11636
11637                        if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
11638                        {
11639                            lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
11640                            if ( (lcpprevsolidtoken != null) )
11641                            {
11642                                if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
11643                                    lcisnewsql = false;
11644                            }
11645                        }
11646
11647                    }
11648
11649                    if ( (lccurrentsqlstatement != null) )
11650                    {
11651                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
11652                        {
11653                        }
11654                        else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview ){
11655                            lcisnewsql = false;
11656                        }
11657                    }
11658
11659                }
11660
11661                if ( lcisnewsql )
11662                    ret =  new TSelectSqlStatement(pdbvendor);
11663
11664                break;
11665
11666            }
11667            case sstinsert:
11668            {
11669                lcisnewsql = true;
11670                if ( pstate != EFindSqlStateType.stnormal )
11671                {
11672                    if ( (lccurrentsqlstatement != null) )
11673                    {
11674                        // merge
11675                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
11676                        {
11677                              if (lcprevsolidtoken != null)
11678                              {
11679                                  if (lcprevsolidtoken.tokencode == TBaseType.rrw_then)
11680                                  {lcisnewsql = false;}
11681                              }
11682                        }
11683
11684
11685
11686                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstteradatacreatetrigger )
11687                        {
11688                            if ( (lcprevsolidtoken != null) )
11689                            {
11690                                if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
11691                                    lcisnewsql = false;
11692                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.astext,"after") == 0 )
11693                                    lcisnewsql = false;
11694                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.astext,"before") == 0 )
11695                                    lcisnewsql = false;
11696                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.astext , "of") == 0 )
11697                                    lcisnewsql = false;
11698                            }
11699                        }
11700
11701
11702                    }
11703                }
11704
11705                if ( lcisnewsql )
11706                {
11707                    ret =  new TInsertSqlStatement(pdbvendor);
11708                    ret.dummytag = 1; //  select stmt in insert is permitted
11709                    for ( k = lcpos + 1; k < lcsourcetokenlist.size();k++ )    // iterate
11710                    {
11711                        if ( lcsourcetokenlist.get(k).isnonsolidtoken() ) continue;
11712                        if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_values ) break;
11713                        // if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_go ) break;
11714                        if ( lcsourcetokenlist.get(k).tokentype == ETokenType.ttsemicolon ) break;
11715                        if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_select ) break;
11716                        if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_execute ) break;
11717                        if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_exec ) break;
11718                    }    // for (
11719                    if ( k > lcsourcetokenlist.size() - 1 )
11720                        k = lcsourcetokenlist.size() - 1;
11721
11722                    for ( int i = lcpos + 1; i <=  k; i++ )    // iterate
11723                    {
11724                        lcsourcetokenlist.get(i).tokenstatus = ETokenStatus.tsignoredbygetrawstatement;
11725                    }    // for (
11726
11727                }
11728
11729                break;
11730            }
11731            case sstupdate:
11732            {
11733                lcisnewsql = true;
11734                if ( pstate != EFindSqlStateType.stnormal )
11735                {
11736                    // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
11737                    if ( (lcprevsolidtoken != null) )
11738                    { //
11739                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
11740                            lcisnewsql = false;
11741                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
11742                            lcisnewsql = false;
11743                    }
11744
11745                    lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
11746                    if ( TBaseType.assigned(lcnextsolidtoken) )
11747                    {
11748                        if ( lcnextsolidtoken.tokentype == ETokenType.ttleftparenthesis)
11749                        {
11750                            k = lcsourcetokenlist.solidtokenafterpos(lcnextsolidtoken.posinlist,TBaseType.rrw_select,1,"(");
11751                            if ( k  == 0 ) lcisnewsql = false;
11752                        }
11753                    }
11754
11755
11756                    if ( TBaseType.assigned(lccurrentsqlstatement) )
11757                    {
11758                        // merge
11759                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
11760                        {
11761                              if (lcprevsolidtoken != null)
11762                              {
11763                                  if (lcprevsolidtoken.tokencode == TBaseType.rrw_then)
11764                                  {lcisnewsql = false;}
11765                              }
11766                        }
11767
11768
11769                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstteradatacreatetrigger )
11770                        {
11771                            if ( TBaseType.assigned(lcprevsolidtoken) )
11772                            {
11773                                if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
11774                                    lcisnewsql = false;
11775                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.astext,"after") == 0 )
11776                                    lcisnewsql = false;
11777                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.astext,"before") == 0 )
11778                                    lcisnewsql = false;
11779                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.astext , "of") == 0 )
11780                                    lcisnewsql = false;
11781                            }
11782                        }
11783
11784                    }
11785                }
11786
11787                if ( lcisnewsql )
11788                {
11789                    ret =  new TUpdateSqlStatement(pdbvendor);
11790                    ret.dummytag = 1; // means set clause in update is not found yet, used to seperate set clause from set statement
11791                }
11792
11793                break;
11794            }
11795            case sstdelete:
11796            {
11797                lcisnewsql = true;
11798
11799                if ( pstate != EFindSqlStateType.stnormal )
11800                {
11801                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
11802                    if ( TBaseType.assigned(lcprevsolidtoken) )
11803                    {
11804                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
11805                            lcisnewsql = false;
11806                    }
11807
11808                    if ( TBaseType.assigned(lccurrentsqlstatement) )
11809                    {
11810                        // merge
11811                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
11812                        {
11813                              if (lcprevsolidtoken != null)
11814                              {
11815                                  if (lcprevsolidtoken.tokencode == TBaseType.rrw_then)
11816                                  {lcisnewsql = false;}
11817                              }
11818                        }
11819
11820
11821                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstteradatacreatetrigger )
11822                        {
11823                            if ( TBaseType.assigned(lcprevsolidtoken) )
11824                            {
11825                                if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
11826                                    lcisnewsql = false;
11827                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.astext,"after") == 0 )
11828                                    lcisnewsql = false;
11829                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.astext,"before") == 0 )
11830                                    lcisnewsql = false;
11831                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.astext , "of") == 0 )
11832                                    lcisnewsql = false;
11833                            }
11834                        }
11835
11836                    }
11837                }
11838
11839                if ( lcisnewsql )
11840                    ret =  new TDeleteSqlStatement(pdbvendor);
11841
11842                break;
11843            }
11844            case sstcreatetable:
11845            {
11846                ret =  new TCreateTableSqlStatement(pdbvendor);
11847                break;
11848            }
11849            case sstaltertable:
11850            case sstteradataaltertable:
11851            {
11852                ret =  new TAlterTableStatement(pdbvendor);
11853                break;
11854            }
11855            case sstteradatafetch:
11856            {
11857                ret =  new TMssqlFetch(pdbvendor);
11858                break;
11859            }
11860            case sstcreateprocedure :
11861            case sstteradatareplaceprocedure:
11862            {
11863                ret = new TCreateProcedureStmt(pdbvendor);
11864                break;
11865            }
11866            case sstteradataalterprocedure:
11867                ret = new TAlterProcedureStmt(pdbvendor);
11868                break;
11869            case sstteradatacreatefunction :
11870            case sstteradatareplacefunction:
11871            {
11872                ret =  new TTeradataCreateFunction(pdbvendor);
11873                break;
11874            }
11875            case sstteradataalterfunction:
11876                ret =  new TAlterFunctionStmt(pdbvendor);
11877                break;
11878            case sstteradatacreatetrigger :
11879            case sstteradataaltertrigger:
11880            case sstteradatareplacetrigger:
11881            {                              
11882                ret =  new TCreateTriggerStmt(pdbvendor);
11883                break;
11884            }
11885            case sstteradatagrant:
11886            {
11887                lcisnewsql = true;
11888                // prev tokentext can't be with
11889                if ( pstate != EFindSqlStateType.stnormal )
11890                {
11891                    if ( TBaseType.assigned(lcprevsolidtoken) )
11892                    {
11893                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_with )
11894                        {
11895                            ret = null;
11896                            lcisnewsql = false;
11897                        }
11898                    }
11899                }
11900                if ( lcisnewsql )
11901                {
11902                    ret =  new TTeradataGrant(pdbvendor);
11903                    ret.sqlstatementtype = gnewsqlstatementtype;
11904                    for ( k = lcpos + 1; k< lcsourcetokenlist.size();k++ )    // iterate
11905                    {
11906                        lctoken = lcsourcetokenlist.get(k);
11907                        if (lctoken.isnonsolidtoken() ) continue;
11908                        if ( lctoken.tokencode == TBaseType.rrw_go ) break;
11909                        if ( lctoken.tokentype == ETokenType.ttsemicolon ) break;
11910                        if ( lctoken.tokencode == TBaseType.rrw_to   ) break;
11911                        lctoken.tokenstatus = ETokenStatus.tsignoredbygetrawstatement;
11912                    }
11913                }
11914                break;
11915            }
11916            case sstdropindex:
11917            {
11918                ret =  new TDropIndexSqlStatement(pdbvendor);
11919                break;
11920            }
11921            case sstdroptable:
11922            {
11923                ret =  new TDropTableSqlStatement(pdbvendor);
11924                break;
11925            }
11926            case sstdropview:
11927            {
11928                ret =  new TDropViewSqlStatement(pdbvendor);
11929                break;
11930            }
11931            case sstteradatadropprocedure:
11932                ret =  new TDropProcedureStmt(pdbvendor);
11933                break;
11934            case sstteradatadropauthorization:
11935            case sstteradatadropcast:
11936            case sstteradatadropdatabase:
11937            case sstteradatadropfunction:
11938            case sstteradatadroptrigger:
11939            case sstteradatadropordering:
11940            case sstteradatadropprofile:
11941            case sstteradatadropreplicationgroup:
11942            case sstteradatadroprole:
11943            case sstteradatadroptransform:
11944            case sstteradatadroptype:
11945            case sstteradatadropuser:
11946            case sstteradatadropzone:
11947            {
11948                ret =  new TTeradataDropDbObject(EDbVendor.dbvteradata);
11949                ret.sqlstatementtype = gnewsqlstatementtype;
11950                break;
11951            }
11952            case sstteradatadropmacro:
11953                ret = new TDropMacro(EDbVendor.dbvteradata);
11954                break;
11955            case sstteradatadropconstraint:
11956                ret = new TDropConstraintStmt(EDbVendor.dbvteradata);
11957                break;
11958            case sstteradatabegintransaction:
11959            {
11960                ret =  new TBeginTran(pdbvendor);
11961                break;
11962            }
11963            case sstteradataendtransaction:
11964            {
11965                ret =  new TEndTran(pdbvendor);
11966                break;
11967            }
11968            case sstteradatacommit:
11969            {
11970                ret =  new TTeradataCommit(pdbvendor);
11971                break;
11972            }
11973            case sstteradatarollback:
11974            {
11975                ret =  new TTeradataRollback(pdbvendor);
11976                break;
11977            }
11978            case sstcreateindex:
11979            {
11980                ret =  new TCreateIndexSqlStatement(pdbvendor);
11981                break;
11982            }
11983            case sstmerge:
11984            {
11985                lcisnewsql = true;
11986
11987                if (pstate != EFindSqlStateType.stnormal)
11988                {
11989
11990                    if (lccurrentsqlstatement != null)
11991                    {
11992                        // merge union, merge join
11993                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstselect)
11994                        {
11995                                    lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
11996                                    if (lcnextsolidtoken != null)
11997                                       {
11998                                        if ((lcnextsolidtoken.tokencode == TBaseType.rrw_union) || (lcnextsolidtoken.tokencode == TBaseType.rrw_join))
11999                                           {
12000                                              lcisnewsql = false;
12001                                           }
12002                                        }
12003                        }
12004
12005                    }
12006                }
12007
12008                if (lcisnewsql)
12009                {
12010                    ret = new TMergeSqlStatement(pdbvendor);
12011                    ret.sqlstatementtype = gnewsqlstatementtype;
12012                }
12013
12014                break;
12015            }
12016            case sstteradataexecute:
12017            {
12018                lcisnewsql = true;
12019                // prev tokentext can't be with
12020                if ( pstate != EFindSqlStateType.stnormal )
12021                {
12022                    if ( TBaseType.assigned(lccurrentsqlstatement) )
12023                    {
12024                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
12025                        {
12026                            if ( lccurrentsqlstatement.dummytag == 1 )
12027                            {
12028                                lcisnewsql = false;
12029                                lccurrentsqlstatement.dummytag = 0; // no select is permited after it
12030                            }
12031                        }
12032
12033                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstteradatagrant )
12034                        {
12035                            if ( TBaseType.assigned(lcprevsolidtoken) )
12036                            {
12037                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_grant )
12038                                    lcisnewsql = false;
12039                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
12040                                    lcisnewsql = false;
12041                            }
12042                        }
12043
12044                        if (
12045                                (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateprocedure)
12046                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstteradatacreatetrigger)
12047                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstteradatacreatefunction)
12048                                        ||(lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstteradataalterprocedure)
12049                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstteradataaltertrigger)
12050                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstteradataalterfunction)
12051                                )
12052                        {
12053                            if ( TBaseType.assigned(lcprevsolidtoken) )
12054                            {
12055                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_with )
12056                                    lcisnewsql = false;
12057                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
12058                                    lcisnewsql = false;
12059                            }
12060                        }
12061                    }
12062                }
12063                if ( lcisnewsql )
12064                {
12065                    ret =  new TTeradataExecute(pdbvendor);
12066                }
12067                break;
12068            }
12069            case sstteradatasetsession:
12070            {
12071                ret =  new TTeradataSetSession(pdbvendor);
12072                break;
12073            }
12074            case sstteradatadatabase:
12075                if (pcst.isFirstTokenOfLine()){
12076                    ret =  new TTeradataSetSession(pdbvendor);
12077                }
12078
12079                break;
12080            case sstteradatasettimezone:
12081            {
12082                ret =  new TTeradataSetTimezone(pdbvendor);
12083                break;
12084            }
12085            case sstteradatasetrole:
12086            {
12087                ret =  new TTeradataSetRole(pdbvendor);
12088                break;
12089            }
12090            case sstteradataendlogging:
12091            {
12092                ret =  new TTeradataEndLogging(pdbvendor);
12093                break;
12094            }
12095            case sstteradatabeginlogging:
12096            {
12097                ret =  new TTeradataBeginLogging(pdbvendor);
12098                break;
12099            }
12100            case sstteradataabort:
12101            {
12102                ret = new TTeradataAbort(pdbvendor);
12103                break;
12104            }
12105            case sstteradatareplaceview:
12106            case sstcreateview:
12107            {
12108                ret = new TCreateViewSqlStatement(pdbvendor);
12109                ret.sqlstatementtype = ESqlStatementType.sstcreateview;
12110                break;
12111            }
12112            case sstteradatacollectstatistics:
12113            {
12114                ret = new TTeradataCollectStatistics(pdbvendor);
12115                break;
12116            }
12117            case sstteradatagive:
12118            {
12119                ret = new TTeradataGive(pdbvendor);
12120                break;
12121            }
12122            case sstteradatacall:
12123                ret = new TCallStatement(pdbvendor);
12124                break;
12125            case sstteradatacreatemacro:
12126            case sstteradatareplacemacro:
12127                ret = new TCreateMacro(pdbvendor);
12128                break;
12129            case sstteradatarenametable:
12130                ret = new TRenameStmt(pdbvendor);
12131                break;
12132            case sstteradatacomment:
12133                ret = new TCommentOnSqlStmt(pdbvendor);
12134                break;
12135            case sstteradatacheckworkload:
12136                ret = new TCheckWorkload(pdbvendor);
12137                break;
12138            case sstgetdiagnostics:
12139                ret = new TGetDiagStmt(pdbvendor);
12140                break;
12141            case sstteradatacreaterole:
12142                ret = new TCreateRoleStmt(pdbvendor);
12143                break;
12144            case sstteradatarevoke:
12145                ret = new TRevokeStmt(pdbvendor);
12146                break;
12147            case sstteradataalterzone:
12148                ret = new TAlterZoneStmt(pdbvendor);
12149                break;
12150            case sstcreatezone:
12151                ret = new TCreateZoneStmt(pdbvendor);
12152                break;
12153            case sstteradataalterconstraint:
12154                ret = new TAlterConstraintStmt(pdbvendor);
12155                break;
12156            case sstExplain:
12157                ret = new TExplainPlan(pdbvendor);
12158                break;
12159            case sstteradatareleaseLock:
12160                ret = new TTeradataReleaseLockStmt(pdbvendor);
12161                break;
12162            default:
12163            {
12164                ret =  new TTeradataNotImplement(pdbvendor);
12165                ret.sqlstatementtype = gnewsqlstatementtype;
12166                break;
12167            }
12168        }    // case
12169
12170        return ret;
12171    }
12172
12173
12174    TCustomSqlStatement ishana(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
12175        TCustomSqlStatement ret = null;
12176        int k;
12177        boolean lcisnewsql;
12178        TSourceToken lcpprevsolidtoken,lcnextsolidtoken,lctoken;
12179
12180        gnewsqlstatementtype = ESqlStatementType.sstinvalid;
12181
12182        if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
12183                || (pcst.tokencode  == TBaseType.cmtslashstar)
12184                || (pcst.tokencode  == TBaseType.lexspace)
12185                || (pcst.tokencode  == TBaseType.lexnewline)
12186                || (pcst.tokentype == ETokenType.ttsemicolon) )
12187        {
12188            return ret;
12189        }
12190
12191        int lcpos = pcst.posinlist;
12192        TSourceTokenList lcsourcetokenlist = pcst.container;
12193        TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
12194
12195        //subquery after semicolon || at first line
12196        if ( pcst.tokentype == ETokenType.ttleftparenthesis)  // (
12197        {
12198            k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
12199            if ( k >0 )
12200            {
12201                if (pstate == EFindSqlStateType.stnormal){
12202                    ret =  new TSelectSqlStatement(pdbvendor);
12203                    return ret;
12204                }
12205            }
12206        }
12207
12208        //cte
12209        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
12210        {
12211            ret = findcte(pcst,pdbvendor);
12212            if ( (ret != null) )  return ret;
12213        }
12214
12215        gnewsqlstatementtype = findhanacmd(pcst);
12216
12217        TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
12218        switch(gnewsqlstatementtype ) {   //
12219            case sstinvalid:
12220            {
12221                if ( pcst.tokencode == TBaseType.mslabel )
12222                {
12223                    ret =  new TMssqlLabel(pdbvendor);
12224                }
12225                else
12226                    ret = null;
12227
12228                break;
12229            }
12230            case sstselect:
12231            {
12232                lcisnewsql = true;
12233
12234                if ( pstate != EFindSqlStateType.stnormal )
12235                {
12236                    // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
12237                    if ( (lcprevsolidtoken != null) )
12238                    {
12239                        if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
12240                            lcisnewsql = false; //subqery
12241                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
12242                            lcisnewsql = false;
12243                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
12244                            lcisnewsql = false;
12245                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
12246                            lcisnewsql = false;
12247                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
12248                            lcisnewsql = false;
12249                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
12250                            lcisnewsql = false;
12251                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
12252                        {
12253                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
12254                                lcisnewsql = false;
12255                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
12256                                lcisnewsql = false;
12257                        }
12258                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
12259                        {
12260                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlset )
12261                                lcisnewsql = false;
12262                        }
12263                        else if (lcprevsolidtoken.tokentype == ETokenType.ttrightparenthesis){
12264                            if ((lccurrentsqlstatement != null) && (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable)){
12265                                lcisnewsql = false;
12266                            }
12267                        }
12268
12269                        if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
12270                        {
12271                            lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
12272                            if ( (lcpprevsolidtoken != null) )
12273                            {
12274                                if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
12275                                    lcisnewsql = false;
12276                            }
12277                        }
12278
12279                    }
12280
12281                    if ( (lccurrentsqlstatement != null) )
12282                    {
12283                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
12284                        {
12285                            lcisnewsql = false;
12286                        }
12287                        else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstGrant )
12288                        {
12289                            if ( (lcprevsolidtoken != null) )
12290                            {
12291                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_grant )
12292                                    lcisnewsql = false;
12293                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
12294                                    lcisnewsql = false;
12295                            }
12296                        }else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview ){
12297                            lcisnewsql = false;
12298                        }else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstaltersequence ){
12299                            lcisnewsql = false;
12300                        }else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstExplain ){
12301                            lcisnewsql = false;
12302                        }else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstRevoke ){
12303                            lcisnewsql = false;
12304                        }else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstupsert ){
12305                            lcisnewsql = false;
12306                        }else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstalterview ){
12307                            lcisnewsql = false;
12308                        }
12309                    }
12310
12311                }
12312
12313                if ( lcisnewsql )
12314                    ret =  new TSelectSqlStatement(pdbvendor);
12315
12316                break;
12317
12318            }
12319            case sstinsert:
12320            {
12321                lcisnewsql = true;
12322                if ( pstate != EFindSqlStateType.stnormal )
12323                {
12324                    if ( (lccurrentsqlstatement != null) )
12325                    {
12326                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateauditpolicy)
12327                        {
12328                            lcisnewsql = false;
12329                        }
12330                        // merge
12331                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
12332                        {
12333                            if (lcprevsolidtoken != null)
12334                            {
12335                                if (lcprevsolidtoken.tokencode == TBaseType.rrw_then)
12336                                {lcisnewsql = false;}
12337                            }
12338                        }
12339
12340
12341                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstGrant )
12342                        {
12343                            if ( (lcprevsolidtoken != null) )
12344                            {
12345                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_grant )
12346                                    lcisnewsql = false;
12347                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
12348                                    lcisnewsql = false;
12349                            }
12350                        }else if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
12351                        {
12352                            lcisnewsql = false;
12353                        }
12354
12355                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetrigger )
12356                        {
12357                            if ( (lcprevsolidtoken != null) )
12358                            {
12359                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
12360                                    lcisnewsql = false;
12361                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
12362                                    lcisnewsql = false;
12363                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.astext,"after") == 0 )
12364                                    lcisnewsql = false;
12365                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.astext , "of") == 0 )
12366                                    lcisnewsql = false;
12367                            }
12368                        }
12369
12370
12371                    }
12372                }
12373
12374                if ( lcisnewsql )
12375                {
12376                    ret =  new TInsertSqlStatement(pdbvendor);
12377                    ret.dummytag = 1; //  select stmt in insert is permitted
12378                    for ( k = lcpos + 1; k < lcsourcetokenlist.size();k++ )    // iterate
12379                    {
12380                        if ( lcsourcetokenlist.get(k).isnonsolidtoken() ) continue;
12381                        if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_values ) break;
12382                        if ( lcsourcetokenlist.get(k).tokentype == ETokenType.ttsemicolon ) break;
12383                        if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_select ){
12384                            ret.dummytag = 0;
12385                            break;
12386                        }
12387                    }    // for (
12388                    if ( k > lcsourcetokenlist.size() - 1 )
12389                        k = lcsourcetokenlist.size() - 1;
12390
12391                    for ( int i = lcpos + 1; i <=  k; i++ )    // iterate
12392                    {
12393                        lcsourcetokenlist.get(i).tokenstatus = ETokenStatus.tsignoredbygetrawstatement;
12394                    }    // for (
12395
12396                }
12397
12398                break;
12399            }
12400            case sstupdate:
12401            {
12402                lcisnewsql = true;
12403                if ( pstate != EFindSqlStateType.stnormal )
12404                {
12405                    // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
12406                    if ( (lcprevsolidtoken != null) )
12407                    { //
12408                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
12409                            lcisnewsql = false;
12410                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
12411                            lcisnewsql = false;
12412                    }
12413
12414                    lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
12415                    if ( TBaseType.assigned(lcnextsolidtoken) )
12416                    {
12417                        if ( lcnextsolidtoken.tokentype == ETokenType.ttleftparenthesis)
12418                        {
12419                            k = lcsourcetokenlist.solidtokenafterpos(lcnextsolidtoken.posinlist,TBaseType.rrw_select,1,"(");
12420                            if ( k  == 0 ) lcisnewsql = false;
12421                        }
12422                    }
12423
12424
12425                    if ( TBaseType.assigned(lccurrentsqlstatement) )
12426                    {
12427                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateauditpolicy)
12428                        {
12429                                lcisnewsql = false;
12430                        }else if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
12431                        {
12432                            lcisnewsql = false;
12433                        }
12434                        // merge
12435                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
12436                        {
12437                            if (lcprevsolidtoken != null)
12438                            {
12439                                if (lcprevsolidtoken.tokencode == TBaseType.rrw_then)
12440                                {lcisnewsql = false;}
12441                            }
12442                        }
12443
12444                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstGrant )
12445                        {
12446                            if ( TBaseType.assigned(lcprevsolidtoken) )
12447                            {
12448                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_grant )
12449                                    lcisnewsql = false;
12450                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
12451                                    lcisnewsql = false;
12452                            }
12453                        }
12454                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetrigger )
12455                        {
12456                            if ( TBaseType.assigned(lcprevsolidtoken) )
12457                            {
12458                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
12459                                    lcisnewsql = false;
12460                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
12461                                    lcisnewsql = false;
12462                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.astext,"after") == 0 )
12463                                    lcisnewsql = false;
12464                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.astext , "of") == 0 )
12465                                    lcisnewsql = false;
12466                            }
12467                        }
12468
12469                    }
12470                }
12471
12472                if ( lcisnewsql )
12473                {
12474                    ret =  new TUpdateSqlStatement(pdbvendor);
12475                    ret.dummytag = 1; // means set clause in update is not found yet, used to separate set clause from set statement
12476                }
12477
12478                break;
12479            }
12480            case sstdelete:
12481            {
12482                lcisnewsql = true;
12483
12484                if ( pstate != EFindSqlStateType.stnormal )
12485                {
12486                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
12487                    if ( TBaseType.assigned(lcprevsolidtoken) )
12488                    {
12489                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
12490                            lcisnewsql = false;
12491                    }
12492
12493                    if ( TBaseType.assigned(lccurrentsqlstatement) )
12494                    {
12495                        // merge
12496                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
12497                        {
12498                            if (lcprevsolidtoken != null)
12499                            {
12500                                if (lcprevsolidtoken.tokencode == TBaseType.rrw_then)
12501                                {lcisnewsql = false;}
12502                            }
12503                        }
12504
12505                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstGrant )
12506                        {
12507                            if ( TBaseType.assigned(lcprevsolidtoken) )
12508                            {
12509                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_grant )
12510                                    lcisnewsql = false;
12511                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
12512                                    lcisnewsql = false;
12513                            }
12514                        }
12515
12516                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetrigger )
12517                        {
12518                            if ( TBaseType.assigned(lcprevsolidtoken) )
12519                            {
12520                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
12521                                    lcisnewsql = false;
12522                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
12523                                    lcisnewsql = false;
12524                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.astext,"after") == 0 )
12525                                    lcisnewsql = false;
12526                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.astext , "of") == 0 )
12527                                    lcisnewsql = false;
12528                            }
12529                        }
12530
12531                        if ((lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstbackupcatalogdelete)
12532                        ||(lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable)
12533                                )
12534                        {
12535                            lcisnewsql = false;
12536                        }
12537
12538                    }
12539                }
12540
12541                if ( lcisnewsql )
12542                    ret =  new TDeleteSqlStatement(pdbvendor);
12543
12544                break;
12545            }
12546            case sstcreatetable:
12547            {
12548                ret =  new TCreateTableSqlStatement(pdbvendor);
12549                break;
12550            }
12551            case sstcreateview:
12552            {
12553                ret =  new TCreateViewSqlStatement(pdbvendor);
12554                break;
12555            }
12556            case sstcreatesequence:
12557            {
12558                ret = new TCreateSequenceStmt(pdbvendor);
12559                break;
12560            }
12561            case sstaltertable:
12562            {
12563                lcisnewsql = true;
12564                if ( pstate != EFindSqlStateType.stnormal )
12565                {
12566                            lcisnewsql = false;
12567                }
12568                if ( lcisnewsql ) {
12569                    ret = new TAlterTableStatement(pdbvendor);
12570                }
12571                break;
12572            }
12573            case sstcreateprocedure :
12574            {
12575                ret = new TCreateProcedureStmt(pdbvendor);
12576                break;
12577            }
12578            case sstalterprocedure:
12579            {
12580                boolean isAlter = false;
12581                // hana  alter and create procedure 语法混在一起,无法区分
12582                // c:\prg\gsp_java\gsp_java_core\gsp_sqlfiles\TestCases\public\allversions\hana\create_procedure.sql
12583                if (pcst.tokencode == TBaseType.rrw_alter){
12584
12585                    TSourceToken st = pcst.nextSolidToken(3);
12586                    if (st != null){
12587                        switch (st.toString().toUpperCase()) {
12588                            case "RECOMPILE":   
12589                                isAlter = true;
12590                                break;
12591                            case "ENCRYPTION":
12592                                isAlter = true;
12593                                break;
12594                            case "ADD":
12595                                isAlter = true;
12596                                break;
12597                            default:
12598                                break;
12599                        }
12600                    }
12601
12602                    // TSourceToken st = pcst.searchToken("recompile",4);
12603                    // if (st != null){
12604                    //     isAlter = true;
12605                    // }else{
12606                    //     st = pcst.searchToken("encryption",4);
12607                    //     if (st != null){
12608                    //         isAlter = true;
12609                    //     }
12610                    // }
12611                }
12612                if (isAlter){
12613                    ret = new TAlterProcedureStmt (pdbvendor);
12614                }else{
12615                    ret  = new TCreateProcedureStmt (pdbvendor);
12616                }
12617
12618                break;
12619            }
12620            case sstcreatefunction :
12621            {
12622                ret =  new TCreateFunctionStmt(pdbvendor);
12623                break;
12624            }
12625            case sstalterfunction:
12626            {
12627                boolean isAlter = false;
12628                // hana  alter and create function 语法混在一起,无法区分
12629
12630                if (pcst.tokencode == TBaseType.rrw_alter){
12631                    TSourceToken stAdd = pcst.searchToken("add",4);
12632                    TSourceToken stAlter = pcst.searchToken("alter",4);
12633                    TSourceToken stDrop = pcst.searchToken("drop",4);
12634                    if ((stAdd != null)||(stAlter != null)||(stDrop != null)){
12635                        isAlter = true;
12636                    }else{
12637                        TSourceToken st = pcst.searchToken("encryption",4);
12638                        if (st != null){
12639                            isAlter = true;
12640                        }
12641                    }
12642                }
12643
12644                if (isAlter){
12645                    ret = new TAlterFunctionStmt (pdbvendor);
12646                }else{
12647                    ret  = new TCreateFunctionStmt (pdbvendor);
12648                }
12649
12650
12651                break;
12652            }
12653            case sstcreatetrigger :
12654            case sstaltertrigger:
12655            {
12656                ret =  new TCreateTriggerStmt(pdbvendor);
12657                break;
12658            }
12659            case sstGrant:
12660            {
12661                lcisnewsql = true;
12662
12663                if ( pstate != EFindSqlStateType.stnormal )
12664                {
12665                    lcisnewsql = false;
12666
12667                }
12668                if ( lcisnewsql )
12669                {
12670                    ret =  new TGrantStmt(pdbvendor);
12671                    //ret.sqlstatementtype = gnewsqlstatementtype;
12672                    for ( k = lcpos + 1; k< lcsourcetokenlist.size();k++ )    // iterate
12673                    {
12674                        lctoken = lcsourcetokenlist.get(k);
12675                        if (lctoken.isnonsolidtoken() ) continue;
12676                        if ( lctoken.tokencode == TBaseType.rrw_go ) break;
12677                        if ( lctoken.tokentype == ETokenType.ttsemicolon ) break;
12678                        if ( lctoken.tokencode == TBaseType.rrw_to   ) break;
12679                        lctoken.tokenstatus = ETokenStatus.tsignoredbygetrawstatement;
12680                    }
12681                }
12682                break;
12683            }
12684            case sstdropview:
12685            {
12686                ret =  new TDropViewSqlStatement(pdbvendor);
12687                break;
12688            }
12689            case sstdroptable:
12690            {
12691                ret =  new TDropTableSqlStatement(pdbvendor);
12692                break;
12693            }
12694            case sstdropindex:
12695            {
12696                ret =  new TDropIndexSqlStatement(pdbvendor);
12697                break;
12698            }
12699            case ssttruncatetable:
12700            {
12701                ret =  new TTruncateStatement(pdbvendor);
12702                break;
12703            }
12704            case sstcommit:
12705            {
12706                lcisnewsql = true;
12707                TSourceToken lcPrev = pcst.prevSolidToken();
12708                if ((lcPrev != null) && (lcPrev.tokencode == TBaseType.rrw_hana_of)){
12709                    lcisnewsql = false;
12710                }
12711                if ( pstate != EFindSqlStateType.stnormal )
12712                {
12713                    lcisnewsql = false;
12714
12715                }
12716                if (lcisnewsql){
12717                    ret =  new TCommitStmt(pdbvendor);
12718                }
12719
12720                break;
12721            }
12722            case sstrollback:
12723            {
12724                ret =  new TRollbackStmt(pdbvendor);
12725                break;
12726            }
12727            case sstRevoke:
12728            {
12729                lcisnewsql = true;
12730
12731                if ( pstate != EFindSqlStateType.stnormal )
12732                {
12733                    lcisnewsql = false;
12734
12735                }
12736                if (lcisnewsql){
12737                    ret = new TRevokeStmt(pdbvendor);
12738                }
12739                break;
12740            }
12741            case sstcreateindex:
12742            {
12743                ret =  new TCreateIndexSqlStatement(pdbvendor);
12744                break;
12745            }
12746            case sstset:
12747            {
12748                lcisnewsql = true;
12749                if ( pstate != EFindSqlStateType.stnormal )
12750                {
12751                    if ( TBaseType.assigned(lccurrentsqlstatement) )
12752                    {
12753                        lcisnewsql = false;
12754                    }
12755                }
12756
12757                if ( lcisnewsql )
12758                {
12759                    ret =  new TMssqlSet(pdbvendor);
12760                }
12761
12762                break;
12763            }
12764            case sstdropsequence:
12765                ret = new TDropSequenceStmt(pdbvendor);
12766                break;
12767            case sstalterdatabase:
12768                ret = new TAlterDatabaseStmt(pdbvendor);
12769                break;
12770            case sstcreatedatabase:
12771            {
12772                ret = new TCreateDatabaseSqlStatement(pdbvendor);
12773                break;
12774            }
12775            case sstcreateschema:
12776            {
12777                ret = new TCreateSchemaSqlStatement(pdbvendor);
12778                break;
12779            }
12780            case sstcreatesynonym:
12781            {
12782                ret = new TCreateSynonymStmt(pdbvendor);
12783                break;
12784            }
12785            case sstcreatetype:
12786                ret = new TMssqlCreateType(pdbvendor);
12787                break;
12788            case sstreplace:
12789                lcisnewsql = true;
12790                TSourceToken lcNext = pcst.nextSolidToken();
12791                if ((lcNext != null) && (lcNext.tokencode == '(')){
12792                    lcisnewsql = false;
12793                }
12794                if ( pstate != EFindSqlStateType.stnormal )
12795                {
12796                    lcisnewsql = false;
12797                }
12798                if (lcisnewsql) {
12799                     ret = new TUpsertStmt(pdbvendor);
12800                    //ret.sqlstatementtype = gnewsqlstatementtype;
12801                }
12802                break;
12803            case sstalterauditpolicy:
12804                ret = new TAlterAuditPolicyStmt(pdbvendor);
12805                break;
12806            case sstaltercredential:
12807                ret = new TAlterCredentialStmt(pdbvendor);
12808                break;
12809            case sstalterfulltextindex:
12810                ret = new TAlterFulltextIndexStmt(pdbvendor);
12811                break;
12812            case sstalterindex:
12813                ret = new TAlterIndexStmt(pdbvendor);
12814                break;
12815            case sstalterldapprovider:
12816                ret = new TAlterLDAPProviderStmt(pdbvendor);
12817                break;
12818            case sstalterjwtprovider:
12819                ret = new TAlterJWTProviderStmt(pdbvendor);
12820                break;
12821            case sstalterpse:
12822                ret = new TAlterPSEStmt(pdbvendor);
12823                break;
12824            case sstalterremotesource:
12825                ret = new TAlterRemoteSourceStmt(pdbvendor);
12826                break;
12827            case sstAlterRole:
12828                ret = new TAlterRoleStmt(pdbvendor);
12829                break;
12830            case sstaltersamlprovider:
12831                ret = new TAlterSAMLProviderStmt(pdbvendor);
12832                break;
12833            case sstaltersequence:
12834                ret = new TAlterSequenceStatement(pdbvendor);
12835                break;
12836            case sstalterstatistics:
12837                ret = new TAlterStatisticsStmt(pdbvendor);
12838                break;
12839            case sstaltersystem:
12840                ret = new TAlterSystemStmt(pdbvendor);
12841                break;
12842            case sstunload:
12843                lcisnewsql = true;
12844                if ( pstate != EFindSqlStateType.stnormal )
12845                {
12846                    lcisnewsql = false;
12847                }
12848                if ( lcisnewsql ) {
12849                    ret = new TUnloadStmt(pdbvendor);
12850                    ret.sqlstatementtype = gnewsqlstatementtype;
12851                }
12852                break;
12853            case sstunset:
12854            case sstunsetpse:
12855            case sstunsetsystemlicense:
12856                lcisnewsql = true;
12857                if ( pstate != EFindSqlStateType.stnormal )
12858                {
12859                    lcisnewsql = false;
12860                }
12861                if ( lcisnewsql ) {
12862                    ret = new TUnsetStmt(pdbvendor);
12863                    ret.sqlstatementtype = gnewsqlstatementtype;
12864                }
12865                break;
12866            case sstalteruser:
12867                ret  = new TAlterUserStmt(pdbvendor);
12868                break;
12869            case sstconnect:
12870                lcisnewsql = true;
12871                if ( pstate != EFindSqlStateType.stnormal )
12872                {
12873                    lcisnewsql = false;
12874                }
12875                if ( lcisnewsql ) {
12876                    ret = new TConnectStmt(pdbvendor);
12877                    ret.sqlstatementtype = gnewsqlstatementtype;
12878                }
12879                break;
12880            case sstalterusergroup:
12881                ret = new TAlterUserGroupStmt(pdbvendor);
12882                        break;
12883            case sstalterview:
12884            case sstalterviewcache:
12885                ret = new TAlterViewStatement(pdbvendor);
12886                break;
12887            case sstaltervirtualtable:
12888                ret = new TAlterVirtualTableStmt(pdbvendor);
12889                break;
12890            case sstalterworkloadclass:
12891                ret = new TAlterWorkloadClassStmt(pdbvendor);
12892                break;
12893            case sstalterworkloadmapping:
12894                ret = new TAlterWorkloadMappingStmt(pdbvendor);
12895                break;
12896            case sstbackupcancel:
12897                ret = new TBackupCancelStmt(pdbvendor);
12898                break;
12899            case sstbackupcatalogdelete:
12900                ret = new TBackupCatalogDeleteStmt(pdbvendor);
12901                break;
12902            case sstbackupcheck:
12903            case sstbackupcheckaccess:
12904                ret = new TBackupCheckStmt(pdbvendor);
12905                break;
12906            case sstbackupdata:
12907                ret = new TBackupDataStmt(pdbvendor);
12908                break;
12909            case sstbackuplistdata:
12910                ret = new TBackupListDataStmt(pdbvendor);
12911                break;
12912            case sstcall:
12913                ret = new TCallStatement(pdbvendor);
12914                break;
12915            case sstcomment:
12916                ret = new TCommentOnSqlStmt(pdbvendor);
12917                break;
12918            case sstcreateauditpolicy:
12919                ret =  new TCreateAuditPolicyStmt(pdbvendor);
12920                break;
12921            case sstcreatecertificate:
12922                ret =  new TCreateCertificateStmt(pdbvendor);
12923                break;
12924            case sstcreatecollection:
12925                ret =  new TCreateCollectionStmt(pdbvendor);
12926                break;
12927            case sstcreatecredential:
12928                ret =  new TCreateCredentialStmt(pdbvendor);
12929                break;
12930            case sstcreatefulltextindex:
12931                ret =  new TCreateFulltextIndexStmt(pdbvendor);
12932                break;
12933            case sstcreategraphworkspace:
12934                ret =  new TCreateGraphWorkspaceStmt(pdbvendor);
12935                break;
12936            case sstcreateJWTProvider:
12937                ret =  new TCreateJWTProviderStmt(pdbvendor);
12938                break;
12939            case sstcreateLDAPProvider:
12940                ret =  new TCreateLDAPProviderStmt(pdbvendor);
12941                break;
12942            case sstcreatepse:
12943                ret =  new TCreatePSEStmt(pdbvendor);
12944                break;
12945            case sstcreateremotesource:
12946                ret =  new TCreateRemoteSourceStmt(pdbvendor);
12947                break;
12948            case sstcreaterole:
12949                ret =  new TCreateRoleStmt(pdbvendor);
12950                break;
12951            case sstcreatesamlprovider:
12952                ret =  new TCreateSAMLProviderStmt(pdbvendor);
12953                break;
12954            case sstcreatestatistics:
12955                ret =  new TCreateStatistics(pdbvendor);
12956                break;
12957            case sstcreatestructuredprivilege:
12958                ret =  new TCreateStructuredPrivilegeStmt(pdbvendor);
12959                break;
12960            case sstcreateuser:
12961                ret =  new TCreateUserStmt(pdbvendor);
12962                break;
12963            case sstcreateusergroup:
12964                ret =  new TCreateUserGroupStmt(pdbvendor);
12965                break;
12966            case sstcreatevirtualfunction:
12967                ret =  new TCreateVirtualFunctionStmt(pdbvendor);
12968                break;
12969            case sstcreatevirtualtable:
12970                ret =  new TCreateVirtualTableStmt(pdbvendor);
12971                break;
12972            case sstcreateworkloadclass:
12973                ret =  new TCreateWorkloadClassStmt(pdbvendor);
12974                break;
12975            case sstcreateworkloadmapping:
12976                ret =  new TCreateWorkloadMappingStmt(pdbvendor);
12977                break;
12978            case sstdropauditpolicy:
12979            case sstdropcertificate:
12980            case sstdropcollection:
12981            case sstdropcredential:
12982            case sstdropfulltextindex:
12983            case sstdropJWTProvider:
12984            case sstdropLDAPProvider:
12985            case sstdroppse:
12986            case sstdropremotesource:
12987            case sstdropsamlprovider:
12988            case sstdropstatistics:
12989            case sstdropgraphworkspace:
12990            case sstdropstructuredprivilege:
12991            case sstdroptype:
12992            case sstdropusergroup:
12993            case sstdropworkloadclass:
12994            case sstdropworkloadmapping:
12995                lcisnewsql = true;
12996                if ( pstate != EFindSqlStateType.stnormal )
12997                {
12998                    lcisnewsql = false;
12999                }
13000                if ( lcisnewsql ) {
13001                    ret =  new TDropStmt(pdbvendor);
13002                }
13003
13004                break;
13005            case sstdropdatabase:
13006                ret =  new TDropDatabaseStmt(pdbvendor);
13007                break;
13008            case sstdropfunction:
13009                ret =  new TDropFunctionStmt(pdbvendor);
13010                break;
13011            case sstdropprocedure:
13012                ret =  new TDropProcedureStmt(pdbvendor);
13013                break;
13014            case sstdroprole:
13015                ret =  new TDropRoleStmt(pdbvendor);
13016                break;
13017            case sstdropschema:
13018                ret =  new TDropSchemaSqlStatement(pdbvendor);
13019                break;
13020            case sstdropsynonym:
13021                ret =  new TDropSynonymStmt(pdbvendor);
13022                break;
13023            case sstdroptrigger:
13024                ret =  new TDropTriggerSqlStatement(pdbvendor);
13025                break;
13026            case sstdropuser:
13027                ret =  new TDropUserStmt(pdbvendor);
13028                break;
13029            case sstExplain:
13030                ret =  new TExplainPlan(pdbvendor);
13031                break;
13032            case sstexport:
13033                ret =  new TExportStmt(pdbvendor);
13034                break;
13035            case sstimport:
13036//            case sstimportfrom:
13037//            case sstimportscan:
13038                ret =  new TImportStmt(pdbvendor);
13039                break;
13040            case sstload:
13041                lcisnewsql = true;
13042                if ( pstate != EFindSqlStateType.stnormal )
13043                {
13044                    lcisnewsql = false;
13045                }
13046                if ( lcisnewsql ) {
13047                    ret =  new TLoadStmt(pdbvendor);
13048                }
13049
13050                break;
13051            case sstlocktable:
13052                ret =  new TLockTableStmt(pdbvendor);
13053                break;
13054            case sstmergedelta:
13055                ret =  new TMergeDeltaStmt(pdbvendor);
13056                break;
13057            case sstmerge:
13058                ret =  new TMergeSqlStatement(pdbvendor);
13059                break;
13060            case sstrecoverdata:
13061                ret =  new TRecoverDataStmt(pdbvendor);
13062                break;
13063            case sstrecoverdatabase:
13064                ret =  new TRecoverDatabaseStmt(pdbvendor);
13065                break;
13066            case sstrefreshstatistics:
13067                ret =  new TRefreshStatisticsStmt(pdbvendor);
13068                break;
13069            case sstrenamecollection:
13070            case sstrenamecolumn:
13071            case sstrenamedatabase:
13072            case sstrenameindex:
13073            case sstrenametable:
13074                ret =  new TRenameStmt(pdbvendor);
13075                break;
13076            case sssethistorysession:
13077            case sstsetpse:
13078            case sstsetschema:
13079            case sstsetsystemlicense:
13080            case sstsettransaction:
13081            case sstsettransactionautocommit:
13082                ret =  new TSetDatabaseObjectStmt(pdbvendor);
13083                break;
13084            case ssttruncatecollection:
13085                ret =  new TTruncateCollectionStmt(pdbvendor);
13086                break;
13087            case sstvalidateLDAPProvider:
13088                ret =  new TValidateLDAPProviderStmt(pdbvendor);
13089                break;
13090            case sstvalidateUser:
13091                ret =  new TValidateUserStmt(pdbvendor);
13092                break;
13093            case sstupsert:
13094                ret =  new TUpsertStmt(pdbvendor);
13095                break;
13096            case sstsavepoint:
13097                {
13098                    lcisnewsql = true;
13099
13100                    if ( pstate != EFindSqlStateType.stnormal )
13101                    {
13102                        lcisnewsql = false;
13103    
13104                    }
13105                    if (lcisnewsql){
13106                    ret = new TSavepointStmt(pdbvendor);
13107                    ret.sqlstatementtype = gnewsqlstatementtype;
13108                    }
13109                    break;
13110                }                
13111            default:
13112            {
13113                ret =  new TUnknownSqlStatement(pdbvendor);
13114                ret.sqlstatementtype = gnewsqlstatementtype;
13115                break;
13116            }
13117        }    // case
13118
13119        return ret;
13120    }
13121
13122    TCustomSqlStatement mapTeradataUsing(TSourceToken ptoken){
13123        TCustomSqlStatement ret = null;
13124        TSourceToken lctoken = null;
13125        int lcnested = 0,k,j;
13126
13127        //using ... insert/select/delete/update/begin transaction
13128        int lcpos = ptoken.posinlist;
13129        TSourceTokenList lcsourcetokenlist = ptoken.container;
13130
13131        for (int i = lcpos + 1; i <  lcsourcetokenlist.size();i++)    // iterate
13132          {
13133            lctoken = lcsourcetokenlist.get(i);
13134              if ( (lctoken.tokencode == TBaseType.rrw_delete) )
13135                {
13136                  ret = new TDeleteSqlStatement(EDbVendor.dbvteradata);
13137                  gnewsqlstatementtype = ESqlStatementType.sstdelete;
13138                  break;
13139                }
13140              else if ( (lctoken.tokencode == TBaseType.rrw_insert) )
13141                {
13142                  ret = new TInsertSqlStatement(EDbVendor.dbvteradata);
13143                  gnewsqlstatementtype = ESqlStatementType.sstinsert;
13144                  break;
13145                }
13146              else if ( (lctoken.tokencode == TBaseType.rrw_select) )
13147                {
13148                  ret = new TSelectSqlStatement(EDbVendor.dbvteradata);
13149                  gnewsqlstatementtype = ESqlStatementType.sstselect;
13150                  break;
13151                }
13152              else if ( (lctoken.tokencode == TBaseType.rrw_update) )
13153                {
13154                  ret = new TUpdateSqlStatement(EDbVendor.dbvteradata);
13155                  gnewsqlstatementtype = ESqlStatementType.sstupdate;
13156                  break;
13157                }
13158              else if ( (lctoken.tokencode == TBaseType.rrw_begin) || (lctoken.tokencode == TBaseType.rrw_bt) )
13159                {
13160                  ret = new TTeradataBeginTransaction(EDbVendor.dbvteradata);
13161                  gnewsqlstatementtype = ESqlStatementType.sstteradatabegintransaction;
13162                  break;
13163                }
13164          }
13165        return ret;
13166    }
13167
13168/**
13169 * Analyzes a SQL token to determine if it starts a Common Table Expression (CTE) 
13170 * and returns the appropriate SQL statement object.
13171 *
13172 * This function handles CTEs that begin with "WITH" and can contain:
13173 * - SELECT statements
13174 * - INSERT statements  
13175 * - UPDATE statements
13176 * - DELETE statements
13177 * - MERGE statements
13178 * - VALUES clauses (PostgreSQL)
13179 *
13180 * Side Effects:
13181 * When a CTE is found, this function marks tokens as "ignored" to prevent them from being 
13182 * processed again during raw statement parsing:
13183 * 1. All tokens from after WITH up to and including the main statement keyword (SELECT/INSERT/etc.) 
13184 *    are marked with ETokenStatus.tsignoredbygetrawstatement
13185 * 2. For INSERT statements, additional tokens after INSERT up to VALUES/SELECT/EXECUTE/semicolon 
13186 *    are also marked as ignored
13187 * 
13188 * Example of ignored tokens:
13189 * WITH cte AS (SELECT * FROM t1)  -- these tokens marked as ignored
13190 * SELECT * FROM cte;             -- SELECT is also marked as ignored
13191 *                               -- parsing continues after SELECT
13192 *
13193 * @param ptoken The source token to analyze, expected to be a "WITH" keyword
13194 * @param pdbvendor The database vendor type (e.g. Oracle, SQL Server, etc.)
13195 * @return A TCustomSqlStatement object representing the CTE statement type found,
13196 *         or null if no valid CTE statement is detected
13197 */    
13198TCustomSqlStatement findcte(TSourceToken ptoken, EDbVendor pdbvendor){
13199    TCustomSqlStatement ret = null;
13200    TSourceToken lctoken = null;
13201    int lcnested = 0,k,j;
13202    boolean inXmlNamespaces = false;
13203    boolean isXmlNamespaces = false;
13204
13205    int lcpos = ptoken.posinlist;
13206    TSourceTokenList lcsourcetokenlist = ptoken.container;
13207
13208    for (int i = lcpos + 1; i <  lcsourcetokenlist.size();i++)    // iterate
13209      {
13210        lctoken = lcsourcetokenlist.get(i);
13211//        if (lctoken.tokencode == TBaseType.rrw_postgresql_recursive){
13212//            continue;
13213//        }
13214          if (lctoken.tokencode == TBaseType.rrw_xmlnamespaces){
13215              inXmlNamespaces = true;
13216              lcnested = 0;
13217              continue;
13218          }
13219          if (inXmlNamespaces) {
13220              if ( lctoken.tokentype == ETokenType.ttleftparenthesis)  lcnested++;
13221              if ( lctoken.tokentype == ETokenType.ttrightparenthesis) {
13222                  lcnested--;
13223                  if (lcnested == 0) {
13224                    inXmlNamespaces = false;
13225                    isXmlNamespaces = true;
13226                  }
13227              }
13228              continue;
13229          }
13230        if (( lctoken.tokencode == TBaseType.rrw_as ) || isXmlNamespaces)
13231          {
13232            lcnested = 0;
13233            int startPos = i+1;
13234            if (isXmlNamespaces) startPos = i;
13235            for ( j = startPos; j < lcsourcetokenlist.size();j++)
13236            {
13237              lctoken = lcsourcetokenlist.get(j);
13238              if (lctoken.isnonsolidtoken() ) continue;
13239              if ( lctoken.tokentype == ETokenType.ttleftparenthesis)  lcnested++;
13240              if ( lctoken.tokentype == ETokenType.ttrightparenthesis) lcnested--;
13241
13242
13243              if ( (lcnested == 0) && (lctoken.tokencode == TBaseType.rrw_delete) )
13244                {
13245                  ret = new TDeleteSqlStatement(pdbvendor);
13246                  ret.isctequery = true;
13247                  gnewsqlstatementtype = ESqlStatementType.sstdelete;
13248                  break;
13249                }
13250
13251                if ( (lcnested == 0) && (lctoken.tokencode == TBaseType.rrw_merge) )
13252                  {
13253                    ret = new TMergeSqlStatement(pdbvendor);
13254                    ret.isctequery = true;
13255                    gnewsqlstatementtype = ESqlStatementType.sstmerge;
13256                    break;
13257                  }
13258
13259              if ( (lcnested == 0) && (lctoken.tokencode == TBaseType.rrw_insert) )
13260                {
13261                  ret = new TInsertSqlStatement(pdbvendor);
13262                  ret.isctequery = true;
13263                  gnewsqlstatementtype = ESqlStatementType.sstinsert;
13264                  ret.dummytag = 1; //  select stmt in insert is permitted
13265
13266                  for ( k = lctoken.posinlist + 1; k < lcsourcetokenlist.size();k++)    // iterate
13267                  {
13268                    if ( lcsourcetokenlist.get(k).isnonsolidtoken()  ) continue;
13269                    if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_values ) break;
13270                    if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_go ) break;
13271                    if ( lcsourcetokenlist.get(k).tokentype == ETokenType.ttsemicolon ) break;
13272                    if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_select ) break;
13273                    if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_execute ) break;
13274                    if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_exec ) break;
13275                  }    // for
13276                  if ( k > lcsourcetokenlist.size() - 1 )
13277                    k = lcsourcetokenlist.size() - 1;
13278
13279                  for (int m = lctoken.posinlist + 1; m <=  k; m++)    // iterate
13280                  {
13281                    lcsourcetokenlist.get(m).tokenstatus = ETokenStatus.tsignoredbygetrawstatement;
13282                  }    // for
13283
13284                  break;
13285                }
13286
13287                if ( (lcnested == 0) && (lctoken.tokencode == TBaseType.rrw_values) &&(pdbvendor == EDbVendor.dbvpostgresql) )
13288                {
13289                        ret = new TSelectSqlStatement(pdbvendor);
13290                        ret.isctequery = true;
13291                        gnewsqlstatementtype = ESqlStatementType.sstselect;
13292                        break;
13293                }
13294
13295              if ( (lcnested == 0) && (lctoken.tokencode == TBaseType.rrw_select) )
13296                {
13297                  ret = new TSelectSqlStatement(pdbvendor);
13298                  ret.isctequery = true;
13299                  gnewsqlstatementtype = ESqlStatementType.sstselect;
13300                  break;
13301                }
13302
13303              if ( (lcnested == 0) && (lctoken.tokencode == TBaseType.rrw_update) )
13304                {
13305                  ret = new TUpdateSqlStatement(pdbvendor);
13306                  ret.isctequery = true;
13307                  ret.dummytag = 1; // means set clause in update is not found yet, used to seperate set clause from set statement
13308                  gnewsqlstatementtype = ESqlStatementType.sstupdate;
13309                  break;
13310                }
13311
13312                if ( (pdbvendor == EDbVendor.dbvhive) && (lcnested == 0) && (lctoken.tokencode == TBaseType.rrw_from) )
13313                {
13314                    TSourceToken cmdToken = lctoken.searchToken(TBaseType.rrw_insert,3);
13315                    if (cmdToken != null){
13316                        ret = new TInsertSqlStatement(pdbvendor);
13317                        ret.isctequery = true;
13318                        gnewsqlstatementtype = ESqlStatementType.sstinsert;
13319
13320                    }else{
13321                        ret = new TSelectSqlStatement(pdbvendor);
13322                        ret.isctequery = true;
13323                        gnewsqlstatementtype = ESqlStatementType.ssthiveFromQuery;
13324                    }
13325                    break;
13326                }
13327
13328
13329            }    // for
13330
13331            if ( (ret != null) )
13332              {
13333                for (k = lcpos + 1; k <= j;k++)    // iterate
13334                {
13335                  lcsourcetokenlist.get(k).tokenstatus = ETokenStatus.tsignoredbygetrawstatement;
13336                }    // for
13337                break;
13338              }
13339
13340          }
13341      }
13342
13343    return ret;
13344}
13345
13346  TCustomSqlStatement findMdxStmtBeginWithClause(TSourceToken ptoken, EDbVendor pdbvendor){
13347      TCustomSqlStatement ret = null;
13348      ret = new TMdxSelect(pdbvendor);
13349      ret.isctequery = true;
13350      gnewsqlstatementtype = ESqlStatementType.sstmdxselect;
13351      return ret;
13352 }
13353
13354 TCustomSqlStatement isdb2sql(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
13355    TCustomSqlStatement ret = null;
13356    int k;
13357    boolean lcisnewsql;
13358    TSourceToken lcpprevsolidtoken,lcnextsolidtoken;
13359
13360    gnewsqlstatementtype = ESqlStatementType.sstinvalid;
13361
13362    if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
13363       || (pcst.tokencode  == TBaseType.cmtslashstar)
13364       || (pcst.tokencode  == TBaseType.lexspace)
13365       || (pcst.tokencode  == TBaseType.lexnewline)
13366        || (pcst.tokentype == ETokenType.ttsemicolon) )
13367    {
13368      return ret;
13369    }
13370
13371    int lcpos = pcst.posinlist;
13372    TSourceTokenList lcsourcetokenlist = pcst.container;
13373    TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
13374
13375    //subquery after semicolon || at first line
13376    if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
13377      {
13378        k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
13379        if ( k >0 )
13380          {
13381            ret =  new TSelectSqlStatement(pdbvendor);
13382          }
13383
13384        return ret;
13385      }
13386
13387    //cte
13388    if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
13389      {
13390        ret = findcte(pcst,pdbvendor);
13391        if ( TBaseType.assigned(ret) )  return ret;
13392      }
13393
13394    //values
13395    if ( (pstate == EFindSqlStateType.stnormal) &&  (pcst.tokencode == TBaseType.rrw_values) )
13396      {
13397        ret =  new TSelectSqlStatement(pdbvendor);
13398        return ret;
13399      }
13400
13401    // db2 scriptoptions
13402    if ( pcst.tokencode == TBaseType.scriptoptions )
13403      {
13404        ret = new TDb2ScriptOptionStmt(pdbvendor);
13405        return ret;
13406      }
13407
13408    gnewsqlstatementtype = finddb2cmd(pcst);
13409
13410    TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
13411    switch(gnewsqlstatementtype) {   //
13412        case sstinvalid:
13413          {
13414            ret = null;
13415           if ( pcst.tokencode == TBaseType.rrw_begin )
13416          {
13417              ret = new TCommonBlock(pdbvendor);
13418              gnewsqlstatementtype = ret.sqlstatementtype;
13419          }
13420              break;
13421          }
13422        case sstselect:
13423          {
13424            lcisnewsql = true;
13425
13426            if ( pstate != EFindSqlStateType.stnormal )
13427              {
13428                // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
13429                if ( TBaseType.assigned(lcprevsolidtoken) )
13430                  {
13431                    if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
13432                      lcisnewsql = false; //subqery
13433                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
13434                      lcisnewsql = false;
13435                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
13436                      lcisnewsql = false;
13437                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
13438                      lcisnewsql = false;
13439                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
13440                      lcisnewsql = false;
13441                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
13442                      lcisnewsql = false;
13443                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
13444                      {
13445                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
13446                          lcisnewsql = false;
13447                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
13448                          lcisnewsql = false;
13449                      }
13450
13451                    if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
13452                      {
13453                        lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
13454                        if ( TBaseType.assigned(lcpprevsolidtoken) )
13455                          {
13456                            if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
13457                              lcisnewsql = false;
13458                          }
13459                      }
13460
13461                  }
13462
13463
13464                if ( TBaseType.assigned(lccurrentsqlstatement) )
13465                  {
13466                    if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
13467                    {
13468                      lcisnewsql = false;
13469                    }
13470                    else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstselect )
13471                      {
13472                        if ( lccurrentsqlstatement.isctequery )
13473                          lcisnewsql = false;
13474                      }
13475                  }
13476
13477              }
13478
13479            if ( lcisnewsql )
13480              ret =  new TSelectSqlStatement(pdbvendor);
13481              break;
13482          }
13483        case sstinsert:
13484          {
13485            lcisnewsql = true;
13486            if ( pstate != EFindSqlStateType.stnormal )
13487              {
13488                if ( TBaseType.assigned(lccurrentsqlstatement) )
13489                  {
13490
13491                  }
13492              }
13493
13494            if ( lcisnewsql )
13495              ret =  new TInsertSqlStatement(pdbvendor);
13496              break;
13497          }
13498        case sstupdate:
13499          {
13500            lcisnewsql = true;
13501            if ( pstate != EFindSqlStateType.stnormal )
13502              {
13503                lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
13504                if ( TBaseType.assigned(lcprevsolidtoken) )
13505                  { //
13506                    if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
13507                      lcisnewsql = false;
13508                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
13509                      lcisnewsql = false;
13510                  }
13511
13512                lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
13513                if ( TBaseType.assigned(lcnextsolidtoken) )
13514                  {
13515                    if ( lcnextsolidtoken.tokentype == ETokenType.ttleftparenthesis)
13516                      {
13517                        k = lcsourcetokenlist.solidtokenafterpos(lcnextsolidtoken.posinlist,TBaseType.rrw_select,1,"(");
13518                        if ( k  == 0 ) lcisnewsql = false;
13519                      }
13520                  }
13521
13522
13523                if ( TBaseType.assigned(lccurrentsqlstatement) )
13524                  {
13525                  }
13526              }
13527
13528            if ( lcisnewsql )
13529              {
13530                ret =  new TUpdateSqlStatement(pdbvendor);
13531                ret.dummytag = 1; // means set clause in update is not found yet, used to seperate set clause from set statement
13532              }
13533              break;
13534          }
13535        case sstdelete:
13536          {
13537            lcisnewsql = true;
13538
13539            if ( pstate != EFindSqlStateType.stnormal )
13540              {
13541                lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
13542                if ( TBaseType.assigned(lcprevsolidtoken) )
13543                  {
13544                    if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
13545                      lcisnewsql = false;
13546                  }
13547
13548                if ( TBaseType.assigned(lccurrentsqlstatement) )
13549                  {
13550                  }
13551              }
13552
13553            if ( lcisnewsql )
13554              ret =  new TDeleteSqlStatement(pdbvendor);
13555              break;
13556          }
13557        case sstmerge:
13558          {
13559            ret =  new TMergeSqlStatement(pdbvendor);
13560            ret.sqlstatementtype = gnewsqlstatementtype;
13561              break;
13562          }
13563        case sstcommit:
13564          {
13565            ret =  new TUnknownSqlStatement(pdbvendor);
13566            ret.sqlstatementtype = gnewsqlstatementtype;
13567              break;
13568          }
13569        case sstrollback:
13570          {
13571            ret =  new TUnknownSqlStatement(pdbvendor);
13572            ret.sqlstatementtype = gnewsqlstatementtype;
13573              break;
13574          }
13575        case sstsavepoint:
13576          {
13577            ret =  new TUnknownSqlStatement(pdbvendor);
13578            ret.sqlstatementtype = gnewsqlstatementtype;
13579              break;
13580          }
13581        case sstRevoke:
13582          {
13583            ret =  new TUnknownSqlStatement(pdbvendor);
13584            ret.sqlstatementtype = gnewsqlstatementtype;
13585              break;
13586          }
13587        case sstcreatetable:
13588          {
13589            ret =  new TCreateTableSqlStatement(pdbvendor);
13590              break;
13591          }
13592        case sstcreateview:
13593          {
13594            ret =  new TCreateViewSqlStatement(pdbvendor);
13595              break;
13596          }
13597        case sstcreateindex:
13598          {
13599            ret =  new TCreateIndexSqlStatement(pdbvendor);
13600              break;
13601          }
13602        case sstcreatedatabase:
13603          {
13604            ret =  new TCreateDatabaseSqlStatement(pdbvendor);
13605              break;
13606          }
13607        case sstdroptable:
13608          {
13609            ret =  new TDropTableSqlStatement(pdbvendor);
13610              break;
13611          }
13612        case sstdropview:
13613          {
13614            ret =  new TDropViewSqlStatement(pdbvendor);
13615              break;
13616          }
13617        case sstdropindex:
13618          {
13619            ret =  new TDropIndexSqlStatement(pdbvendor);
13620              break;
13621          }
13622        case sstaltertable:
13623          {
13624            ret =  new TAlterTableStatement(pdbvendor);
13625              break;
13626          }
13627        case sstaltersession:
13628          {
13629            ret =  new TAlterSessionStatement(pdbvendor);
13630              break;
13631          }
13632        case sstdb2set:
13633          {
13634            ret = new TDb2SetVariableStmt(pdbvendor);
13635              break;
13636          }
13637        case sstdb2setschema:
13638        {
13639            ret = new TSetDatabaseObjectStmt(pdbvendor);
13640            break;
13641        }
13642        case sstdb2call:
13643          {
13644            ret = new TDb2CallStmt(pdbvendor);
13645              break;
13646          }
13647        case sstdb2declarecursor:
13648          {
13649            ret = new TDb2DeclareCursorStatement(pdbvendor);
13650              break;
13651          }
13652        case sstcreateprocedure:
13653          {
13654            ret = new TCreateProcedureStmt(pdbvendor);
13655              break;
13656          }
13657        case sstcreatefunction:
13658          {
13659            ret = new TCreateFunctionStmt(pdbvendor);
13660              break;
13661          }
13662        case sstdb2createtrigger:
13663          {
13664            ret = new TCreateTriggerStmt(pdbvendor);
13665              break;
13666          }
13667        case sstdb2return:
13668          {
13669            ret = new TDb2ReturnStmt(pdbvendor);
13670              break;
13671          }
13672      case sstdb2refreshtable:
13673      case sstdb2connect:
13674      case sstdb2terminate:
13675      case sstdb2execute:
13676          {
13677            ret = new TDb2DummyStmt(pdbvendor);
13678              break;
13679          }
13680        case sstdb2createalias:
13681        {
13682            ret = new TCreateAliasStmt(pdbvendor);
13683            break;
13684        }
13685        case sstcreateauditpolicy:
13686            ret =  new TCreateAuditPolicyStmt(pdbvendor);
13687            break;
13688        case sstdb2comment:
13689            ret =  new TCommentOnSqlStmt(pdbvendor);
13690            break;
13691        case sstdb2createvariable:
13692            ret =  new TCreateVariableStmt(pdbvendor);
13693            break;
13694        case sstcreaterole:
13695            ret =  new TCreateRoleStmt(pdbvendor);
13696            break;
13697        case sstcreateTablespace:
13698            ret =  new TCreateTablespaceStmt(pdbvendor);
13699            break;
13700        case sstRunStats:
13701            ret =  new TRunStats(pdbvendor);
13702            break;
13703        case ssttruncatetable:
13704        {
13705            ret =  new TTruncateStatement(pdbvendor);
13706            break;
13707        }
13708        case sstcreatesynonym:
13709            ret = new TCreateSynonymStmt(pdbvendor);
13710            break;        
13711        default:
13712          {
13713            // ret = tdb2dummystmt.create(pdbvendor);
13714            ret =  new TUnknownSqlStatement(pdbvendor);
13715            ret.sqlstatementtype = gnewsqlstatementtype;
13716              break;
13717          }
13718    }    // case
13719
13720    return ret;
13721}
13722
13723    public TCustomSqlStatement issql(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
13724        TCustomSqlStatement ret = null;
13725        if (pcst == null) return null;
13726
13727        switch (pdbvendor){
13728            case dbvoracle: {
13729                ret = isoraclesql(pcst,pdbvendor,pstate,psqlstatement);
13730                break;
13731            }
13732            case dbvmssql: {
13733                ret = ismssqlsql(pcst, pdbvendor, pstate, psqlstatement);
13734                break;
13735            }
13736            case dbvdb2: {
13737                ret = isdb2sql(pcst, pdbvendor, pstate, psqlstatement);
13738                break;
13739            }
13740            case dbvmysql: {
13741                ret = ismysqlsql(pcst, pdbvendor, pstate, psqlstatement);
13742                break;
13743            }
13744            case dbvaccess: {
13745                ret = ismssqlsql(pcst, pdbvendor, pstate, psqlstatement);
13746                break;
13747            }
13748            case dbvteradata: {
13749                ret = isteradatasql(pcst, pdbvendor, pstate, psqlstatement);
13750                break;
13751            }
13752            case dbvpostgresql: {
13753                ret = ispostgresql(pcst, pdbvendor, pstate, psqlstatement);
13754                break;
13755            }
13756            case dbvredshift: {
13757                ret = isredshift(pcst, pdbvendor, pstate, psqlstatement);
13758                break;
13759            }
13760            case dbvgreenplum: {
13761                ret = isgreenplum(pcst,pdbvendor,pstate,psqlstatement);
13762                break;
13763            }
13764            case dbvmdx:{
13765                ret = ismdxsql(pcst, pdbvendor, pstate, psqlstatement);
13766                break;
13767            }
13768            case dbvnetezza:{
13769                ret = isnetezza(pcst, pdbvendor, pstate, psqlstatement);
13770                break;
13771            }
13772            case dbvsybase:{
13773                ret = issybasesql(pcst, pdbvendor, pstate, psqlstatement);
13774                break;
13775            }
13776            case dbvinformix:{
13777                ret = isinformixsql(pcst, pdbvendor, pstate, psqlstatement);
13778                break;
13779            }
13780            case dbvhive:{
13781                ret = ishive(pcst, pdbvendor, pstate, psqlstatement);
13782                break;
13783            }
13784            case dbvimpala:{
13785                ret = ishive(pcst, pdbvendor, pstate, psqlstatement);
13786                break;
13787            }
13788            case dbvhana:{
13789                ret = ishana(pcst, pdbvendor, pstate, psqlstatement);
13790                break;
13791            }
13792            case dbvvertica:{
13793                ret = isvertica(pcst, pdbvendor, pstate, psqlstatement);
13794                break;
13795            }
13796            case dbvcouchbase:{
13797                ret = iscouchbase(pcst, pdbvendor, pstate, psqlstatement);
13798                break;
13799            }
13800            case dbvsnowflake:{
13801                ret = issnowflake(pcst, pdbvendor, pstate, psqlstatement);
13802                break;
13803            }
13804            case dbvbigquery:{
13805                ret = isbigquery(pcst, pdbvendor, pstate, psqlstatement);
13806                break;
13807            }
13808            case dbvsoql:{
13809                ret = ismssqlsql(pcst,pdbvendor,pstate,psqlstatement);
13810                break;
13811            }
13812            case dbvsparksql:{
13813                ret = issparksql(pcst,pdbvendor,pstate,psqlstatement);
13814                break;
13815            }
13816            case dbvpresto:{
13817                ret = ispresto(pcst,pdbvendor,pstate,psqlstatement);
13818                break;
13819            }
13820            case dbvathena:{
13821                ret = isathena(pcst,pdbvendor,pstate,psqlstatement);
13822                break;
13823            }
13824            case dbvdatabricks:{
13825                ret = isdatabricks(pcst,pdbvendor,pstate,psqlstatement);
13826                break;
13827            }
13828            case dbvgaussdb:{
13829                ret = isgaussdb(pcst,pdbvendor,pstate,psqlstatement);
13830                break;
13831            }
13832            default:
13833            {
13834                ret = ismssqlsql(pcst,pdbvendor,pstate,psqlstatement);
13835            }
13836        }    // case
13837        return ret;
13838    }
13839    TCustomSqlStatement isdatabricks(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
13840
13841        TCustomSqlStatement ret = null;
13842        int k;
13843        boolean lcisnewsql;
13844        TSourceToken lcpprevsolidtoken,lcnextsolidtoken;
13845
13846        gnewsqlstatementtype = ESqlStatementType.sstinvalid;
13847
13848        if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
13849                || (pcst.tokencode  == TBaseType.cmtslashstar)
13850                || (pcst.tokencode  == TBaseType.lexspace)
13851                || (pcst.tokencode  == TBaseType.lexnewline)
13852                || (pcst.tokentype == ETokenType.ttsemicolon) )
13853        {
13854            return ret;
13855        }
13856
13857        int lcpos = pcst.posinlist;
13858        TSourceTokenList lcsourcetokenlist = pcst.container;
13859        TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
13860
13861        //subquery after semicolon || at first line
13862        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
13863        {
13864            k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
13865            if ( k >0 )
13866            {
13867                ret =  new TSelectSqlStatement(pdbvendor);
13868            }
13869
13870            return ret;
13871        }
13872
13873        //cte
13874        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
13875        {
13876            ret = findcte(pcst,pdbvendor);
13877            if ( (ret != null) )  return ret;
13878        }
13879
13880
13881        gnewsqlstatementtype = finddatabrickscmd(pcst);
13882
13883        TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
13884
13885        if ((gnewsqlstatementtype == ESqlStatementType.sstinvalid)&&(pcst.tokencode == TBaseType.rrw_create)){
13886            //if (pcst.container.nextsolidtoken(pcst.posinlist,15,))
13887            TSourceToken viewToken = pcst.container.searchToken(TBaseType.rrw_view,"",pcst,15);
13888            if (viewToken != null){
13889                gnewsqlstatementtype = ESqlStatementType.sstcreateview;
13890            }
13891        }
13892        switch (gnewsqlstatementtype){
13893            case sstinvalid:
13894            {
13895                ret = null;
13896                break;
13897            }
13898            case sstselect:
13899            {
13900                lcisnewsql = true;
13901
13902                if ( pstate != EFindSqlStateType.stnormal )
13903                {
13904                    // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
13905                    if ( TBaseType.assigned(lcprevsolidtoken) )
13906                    {
13907                        if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
13908                            lcisnewsql = false; //subqery
13909                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
13910                            lcisnewsql = false;
13911                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
13912                            lcisnewsql = false;
13913                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
13914                            lcisnewsql = false;
13915                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
13916                            lcisnewsql = false;
13917                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
13918                            lcisnewsql = false;
13919                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
13920                        {
13921                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
13922                                lcisnewsql = false;
13923                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
13924                                lcisnewsql = false;
13925                        }
13926
13927                        if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
13928                        {
13929                            lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
13930                            if ( TBaseType.assigned(lcpprevsolidtoken) )
13931                            {
13932                                if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
13933                                    lcisnewsql = false;
13934                            }
13935                        }
13936
13937                    }
13938
13939
13940                    if ( TBaseType.assigned(lccurrentsqlstatement) )
13941                    {
13942                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
13943                            lcisnewsql = false;
13944                    }
13945
13946                }
13947
13948                if ( lcisnewsql )
13949                    ret =  new TSelectSqlStatement(pdbvendor);
13950                break;
13951            }
13952            case sstinsert:
13953            {
13954                lcisnewsql = true;
13955                if ( pstate != EFindSqlStateType.stnormal )
13956                {
13957                    if ( TBaseType.assigned(lccurrentsqlstatement) )
13958                    {
13959
13960                    }
13961                }
13962
13963                if ( lcisnewsql )
13964                    ret =  new TInsertSqlStatement(pdbvendor);
13965                ret.sqlstatementtype = gnewsqlstatementtype;
13966                break;
13967            }
13968            case sstdelete:
13969            {
13970                lcisnewsql = true;
13971
13972                if ( pstate != EFindSqlStateType.stnormal )
13973                {
13974                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
13975                    if ( TBaseType.assigned(lcprevsolidtoken) )
13976                    {
13977                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
13978                            lcisnewsql = false;
13979                    }
13980
13981                    if ( TBaseType.assigned(lccurrentsqlstatement) )
13982                    {
13983                    }
13984                }
13985
13986                if ( lcisnewsql )
13987                    ret =  new TDeleteSqlStatement(pdbvendor);
13988                break;
13989            }
13990            case sstaltertable:
13991            {
13992                ret =  new TAlterTableStatement(pdbvendor);
13993                break;
13994            }
13995            case sstalterfunction:
13996            {
13997                ret =  new TAlterFunctionStmt(pdbvendor);
13998                break;
13999            }
14000            case sstAlterSchema:
14001            {
14002                ret =  new TAlterSchemaStmt(pdbvendor);
14003                break;
14004            }
14005            case sstanalyzeTable:
14006            {
14007                ret = new TAnalyzeStmt(pdbvendor);
14008                break;
14009            }
14010            case sstcall:
14011            {
14012                ret =  new TCallStatement(pdbvendor);
14013                break;
14014            }
14015            case sstcommit:
14016            {
14017                ret =  new TCommitStmt(pdbvendor);
14018                break;
14019            }
14020            case sstcreatefunction:
14021            {
14022                ret =  new TCreateFunctionStmt(pdbvendor);
14023                break;
14024            }
14025            case sstcreaterole:
14026            {
14027                ret =  new TCreateRoleStmt(pdbvendor);
14028                break;
14029            }
14030            case sstcreateschema:
14031            {
14032                ret =  new TCreateSchemaSqlStatement(pdbvendor);
14033                break;
14034            }
14035            case sstcreatetable:
14036            {
14037                ret =  new TCreateTableSqlStatement(pdbvendor);
14038                break;
14039            }
14040            case sstcreateview:
14041            {
14042                ret =  new TCreateViewSqlStatement(pdbvendor);
14043                break;
14044            }
14045            case sstpostgresqlDeallocate:
14046            {
14047                ret =  new TUnknownSqlStatement(pdbvendor);
14048                ret.sqlstatementtype = gnewsqlstatementtype;
14049                break;
14050            }
14051            case sstdropfunction:
14052            {
14053                ret =  new TDropFunctionStmt(pdbvendor);
14054                break;
14055            }
14056            case sstdroprole:
14057            {
14058                ret =  new TDropRoleStmt(pdbvendor);
14059                break;
14060            }
14061            case sstdropschema:
14062            {
14063                ret =  new TDropSchemaSqlStatement(pdbvendor);
14064                break;
14065            }
14066            case sstdroptable:
14067            {
14068                ret =  new TDropTableSqlStatement(pdbvendor);
14069                break;
14070            }
14071            case sstdropview:
14072            {
14073                ret =  new TDropViewSqlStatement(pdbvendor);
14074                break;
14075            }
14076            case sstExecute:
14077            {
14078                ret =  new TExecuteSqlStatement(pdbvendor);
14079                break;
14080            }
14081            case sstExplain:
14082            {
14083                ret =  new TExplainPlan(pdbvendor);
14084                break;
14085            }
14086            case sstGrant:
14087            {
14088                ret =  new TGrantStmt(pdbvendor);
14089                break;
14090            }
14091            case sstprepare:
14092            {
14093                ret =  new TPrepareStmt(pdbvendor);
14094                break;
14095            }
14096            case sstset:
14097            case sstReset:
14098            {
14099                lcisnewsql = true;
14100                if ( pstate != EFindSqlStateType.stnormal )
14101                {
14102                    if ( TBaseType.assigned(lccurrentsqlstatement) )
14103                    {
14104                        lcisnewsql = false;
14105                    }
14106                }
14107
14108                if ( lcisnewsql )
14109                {
14110                    ret =  new TSetStmt(pdbvendor);
14111                }
14112                break;
14113            }
14114            case sstShow:
14115            {
14116                ret = new TShowStmt(pdbvendor);
14117                ret.sqlstatementtype = gnewsqlstatementtype;
14118                break;
14119            }
14120            case sstStartTransaction:
14121            {
14122                ret = new TStartTransactionStmt(pdbvendor);
14123                break;
14124            }
14125            case sstValues:
14126            {
14127                ret =  new TSelectSqlStatement(pdbvendor);
14128                break;
14129            }
14130            case sstResetSession:
14131            {
14132                ret =  new TResetSessionStmt(pdbvendor);
14133                break;
14134            }
14135            case sstCreateExternallocation:
14136                ret = new TCreateExternalLocationStmt(pdbvendor);
14137                break;
14138            case sstList:
14139            {
14140                ret = new TListStmt(pdbvendor);
14141                break;
14142            }
14143            case sstRevoke:
14144                ret = new TRevokeStmt(pdbvendor);
14145                break;
14146            case sstaltercredental:
14147                ret = new TAlterCredentialStmt(pdbvendor);
14148                break;
14149            case sstdescribeCatalog:
14150            case  sstdescribeFunction:
14151            case   sstdescribeProvider:
14152            case   sstdescribeQuery:
14153            case   sstdescribeRecipient:
14154            case   sstdescribeSchema:
14155            case    sstdescribeShare:
14156            case    sstdescribeTable:
14157            case    sstdescribeDatabase:
14158            case    sstdescribeLocation:
14159            case    sstdescribeCredential:
14160            case    sstdescribe:
14161                ret = new TDescribeStmt(pdbvendor);
14162                break;
14163            case sstUseCatalog:
14164            case sstUseSchema:
14165            case sstUseDatabase:
14166            case sstUse:
14167                ret = new TUseDatabase(pdbvendor);
14168                break;
14169            case sstAnalyzeTable:
14170                ret = new TAnalyzeStmt(pdbvendor);
14171                break;
14172            case sstCreategroup:
14173                ret = new TCreateGroup(pdbvendor);
14174                break;
14175            case sstAlterGroup:
14176                ret = new TAlterGroup(pdbvendor);
14177                break;
14178            case sstDeny:
14179                ret = new TDenyStmt(pdbvendor);
14180                break;
14181            case sstDropGroup:
14182                ret = new TDropGroup(pdbvendor);
14183                break;
14184            case sstmsckrepairtable:
14185                 ret = new TMSCKStmt(pdbvendor);
14186                break;
14187            case sstcreatecatalog:
14188                ret = new TCreateCatalogStmt(pdbvendor);
14189                break;
14190            case sstConvertToDelta:
14191                ret = new TConvertToDeltaStmt(pdbvendor);
14192                break;
14193            case sstOptimize:
14194                ret = new TOptimizeStmt(pdbvendor);
14195                break;
14196            case sstRestoreTable:
14197                ret = new TRestoreTableStmt(pdbvendor);
14198                break;
14199            case sstReorgTable:
14200                ret = new TReorgTableStmt(pdbvendor);
14201                    break;
14202            case sstVacuum:
14203                ret = new TVacuumStmt(pdbvendor);
14204                break;
14205            case sstmerge:
14206                ret = new TMergeSqlStatement(pdbvendor);
14207                break;
14208            default:
14209            {
14210                ret =  new TUnknownSqlStatement(pdbvendor);
14211                ret.sqlstatementtype = gnewsqlstatementtype;
14212                break;
14213            }
14214        }    // case
14215
14216        return ret;
14217
14218    }
14219    TCustomSqlStatement ispresto(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
14220
14221        TCustomSqlStatement ret = null;
14222        int k;
14223        boolean lcisnewsql;
14224        TSourceToken lcpprevsolidtoken,lcnextsolidtoken;
14225
14226        gnewsqlstatementtype = ESqlStatementType.sstinvalid;
14227
14228        if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
14229                || (pcst.tokencode  == TBaseType.cmtslashstar)
14230                || (pcst.tokencode  == TBaseType.lexspace)
14231                || (pcst.tokencode  == TBaseType.lexnewline)
14232                || (pcst.tokentype == ETokenType.ttsemicolon) )
14233        {
14234            return ret;
14235        }
14236
14237        int lcpos = pcst.posinlist;
14238        TSourceTokenList lcsourcetokenlist = pcst.container;
14239        TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
14240
14241        //subquery after semicolon || at first line
14242        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
14243        {
14244            k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
14245            if ( k >0 )
14246            {
14247                ret =  new TSelectSqlStatement(pdbvendor);
14248            }
14249
14250            return ret;
14251        }
14252
14253        //cte
14254        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
14255        {
14256            ret = findcte(pcst,pdbvendor);
14257            if ( (ret != null) )  return ret;
14258        }
14259
14260
14261        gnewsqlstatementtype = findprestocmd(pcst);
14262
14263        TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
14264
14265        if ((gnewsqlstatementtype == ESqlStatementType.sstinvalid)&&(pcst.tokencode == TBaseType.rrw_create)){
14266            //if (pcst.container.nextsolidtoken(pcst.posinlist,15,))
14267            TSourceToken viewToken = pcst.container.searchToken(TBaseType.rrw_view,"",pcst,15);
14268            if (viewToken != null){
14269                gnewsqlstatementtype = ESqlStatementType.sstcreateview;
14270            }
14271        }
14272        switch (gnewsqlstatementtype){
14273            case sstinvalid:
14274            {
14275                ret = null;
14276                break;
14277            }
14278            case sstselect:
14279            {
14280                lcisnewsql = true;
14281
14282                if ( pstate != EFindSqlStateType.stnormal )
14283                {
14284                    // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
14285                    if ( TBaseType.assigned(lcprevsolidtoken) )
14286                    {
14287                        if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
14288                            lcisnewsql = false; //subqery
14289                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
14290                            lcisnewsql = false;
14291                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
14292                            lcisnewsql = false;
14293                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
14294                            lcisnewsql = false;
14295                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
14296                            lcisnewsql = false;
14297                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
14298                            lcisnewsql = false;
14299                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
14300                        {
14301                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
14302                                lcisnewsql = false;
14303                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
14304                                lcisnewsql = false;
14305                        }
14306
14307                        if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
14308                        {
14309                            lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
14310                            if ( TBaseType.assigned(lcpprevsolidtoken) )
14311                            {
14312                                if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
14313                                    lcisnewsql = false;
14314                            }
14315                        }
14316
14317                    }
14318
14319
14320                    if ( TBaseType.assigned(lccurrentsqlstatement) )
14321                    {
14322                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
14323                            lcisnewsql = false;
14324                    }
14325
14326                }
14327
14328                if ( lcisnewsql )
14329                    ret =  new TSelectSqlStatement(pdbvendor);
14330                break;
14331            }
14332            case sstinsert:
14333            {
14334                lcisnewsql = true;
14335                if ( pstate != EFindSqlStateType.stnormal )
14336                {
14337                    if ( TBaseType.assigned(lccurrentsqlstatement) )
14338                    {
14339
14340                    }
14341                }
14342
14343                if ( lcisnewsql )
14344                    ret =  new TInsertSqlStatement(pdbvendor);
14345                ret.sqlstatementtype = gnewsqlstatementtype;
14346                break;
14347            }
14348            case sstdelete:
14349            {
14350                lcisnewsql = true;
14351
14352                if ( pstate != EFindSqlStateType.stnormal )
14353                {
14354                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
14355                    if ( TBaseType.assigned(lcprevsolidtoken) )
14356                    {
14357                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
14358                            lcisnewsql = false;
14359                    }
14360
14361                    if ( TBaseType.assigned(lccurrentsqlstatement) )
14362                    {
14363                    }
14364                }
14365
14366                if ( lcisnewsql )
14367                    ret =  new TDeleteSqlStatement(pdbvendor);
14368                break;
14369            }
14370            case sstaltertable:
14371            {
14372                ret =  new TAlterTableStatement(pdbvendor);
14373                break;
14374            }
14375            case sstalterfunction:
14376            {
14377                ret =  new TAlterFunctionStmt(pdbvendor);
14378                break;
14379            }
14380            case sstAlterSchema:
14381            {
14382                ret =  new TAlterSchemaStmt(pdbvendor);
14383                break;
14384            }
14385            case sstanalyzeTable:
14386            {
14387                ret = new TAnalyzeStmt(pdbvendor);
14388                break;
14389            }
14390            case sstcall:
14391            {
14392                ret =  new TCallStatement(pdbvendor);
14393                break;
14394            }
14395            case sstcommit:
14396            {
14397                ret =  new TCommitStmt(pdbvendor);
14398                break;
14399            }
14400            case sstcreatefunction:
14401            {
14402                ret =  new TCreateFunctionStmt(pdbvendor);
14403                break;
14404            }
14405            case sstcreaterole:
14406            {
14407                ret =  new TCreateRoleStmt(pdbvendor);
14408                break;
14409            }
14410            case sstcreateschema:
14411            {
14412                ret =  new TCreateSchemaSqlStatement(pdbvendor);
14413                break;
14414            }
14415            case sstcreatetable:
14416            {
14417                ret =  new TCreateTableSqlStatement(pdbvendor);
14418                break;
14419            }
14420            case sstcreateview:
14421            {
14422                ret =  new TCreateViewSqlStatement(pdbvendor);
14423                break;
14424            }
14425            case sstpostgresqlDeallocate:
14426            {
14427                ret =  new TUnknownSqlStatement(pdbvendor);
14428                ret.sqlstatementtype = gnewsqlstatementtype;
14429                break;
14430            }
14431            case sstdescribe:
14432            {
14433                ret =  new TDescribeStmt(pdbvendor);
14434                break;
14435            }
14436            case sstdropfunction:
14437            {
14438                ret =  new TDropFunctionStmt(pdbvendor);
14439                break;
14440            }
14441            case sstdroprole:
14442            {
14443                ret =  new TDropRoleStmt(pdbvendor);
14444                break;
14445            }
14446            case sstdropschema:
14447            {
14448                ret =  new TDropSchemaSqlStatement(pdbvendor);
14449                break;
14450            }
14451            case sstdroptable:
14452            {
14453                ret =  new TDropTableSqlStatement(pdbvendor);
14454                break;
14455            }
14456            case sstdropview:
14457            {
14458                ret =  new TDropViewSqlStatement(pdbvendor);
14459                break;
14460            }
14461            case sstExecute:
14462            {
14463                ret =  new TExecuteSqlStatement(pdbvendor);
14464                break;
14465            }
14466            case sstExplain:
14467            {
14468                ret =  new TExplainPlan(pdbvendor);
14469                break;
14470            }
14471            case sstGrant:
14472            {
14473                ret =  new TGrantStmt(pdbvendor);
14474                break;
14475            }
14476            case sstprepare:
14477            {
14478                ret =  new TPrepareStmt(pdbvendor);
14479                break;
14480            }
14481            case sstset:
14482            case sstReset:
14483            {
14484                lcisnewsql = true;
14485                if ( pstate != EFindSqlStateType.stnormal )
14486                {
14487                    if ( TBaseType.assigned(lccurrentsqlstatement) )
14488                    {
14489                        lcisnewsql = false;
14490                    }
14491                }
14492
14493                if ( lcisnewsql )
14494                {
14495                    ret =  new TSetStmt(pdbvendor);
14496                }
14497                break;
14498            }
14499            case sstShow:
14500            {
14501                ret = new TShowStmt(pdbvendor);
14502                ret.sqlstatementtype = gnewsqlstatementtype;
14503                break;
14504            }
14505            case sstStartTransaction:
14506            {
14507                ret = new TStartTransactionStmt(pdbvendor);
14508                break;
14509            }
14510            case sstUse:
14511            {
14512                ret =  new TUseDatabase(pdbvendor);
14513                break;
14514            }
14515            case sstValues:
14516            {
14517                ret =  new TSelectSqlStatement(pdbvendor);
14518                break;
14519            }
14520            case sstResetSession:
14521            {
14522                ret =  new TResetSessionStmt(pdbvendor);
14523                break;
14524            }
14525            default:
14526            {
14527                ret =  new TUnknownSqlStatement(pdbvendor);
14528                ret.sqlstatementtype = gnewsqlstatementtype;
14529                break;
14530            }
14531        }    // case
14532
14533        return ret;
14534
14535    }
14536    TCustomSqlStatement isathena(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
14537
14538        TCustomSqlStatement ret = null;
14539        int k;
14540        boolean lcisnewsql;
14541        TSourceToken lcpprevsolidtoken,lcnextsolidtoken;
14542
14543        gnewsqlstatementtype = ESqlStatementType.sstinvalid;
14544
14545        if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
14546                || (pcst.tokencode  == TBaseType.cmtslashstar)
14547                || (pcst.tokencode  == TBaseType.lexspace)
14548                || (pcst.tokencode  == TBaseType.lexnewline)
14549                || (pcst.tokentype == ETokenType.ttsemicolon) )
14550        {
14551            return ret;
14552        }
14553
14554        int lcpos = pcst.posinlist;
14555        TSourceTokenList lcsourcetokenlist = pcst.container;
14556        TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
14557
14558        //subquery after semicolon || at first line
14559        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
14560        {
14561            k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
14562            if ( k >0 )
14563            {
14564                ret =  new TSelectSqlStatement(pdbvendor);
14565            }
14566
14567            return ret;
14568        }
14569
14570        //cte
14571        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
14572        {
14573            ret = findcte(pcst,pdbvendor);
14574            if ( (ret != null) )  return ret;
14575        }
14576
14577
14578        gnewsqlstatementtype = findathenacmd(pcst);
14579
14580        TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
14581
14582        if ((gnewsqlstatementtype == ESqlStatementType.sstinvalid)&&(pcst.tokencode == TBaseType.rrw_create)){
14583            //if (pcst.container.nextsolidtoken(pcst.posinlist,15,))
14584            TSourceToken viewToken = pcst.container.searchToken(TBaseType.rrw_view,"",pcst,15);
14585            if (viewToken != null){
14586                gnewsqlstatementtype = ESqlStatementType.sstcreateview;
14587            }
14588        }
14589        switch (gnewsqlstatementtype){
14590            case sstinvalid:
14591            {
14592                ret = null;
14593                break;
14594            }
14595            case sstselect:
14596            {
14597                lcisnewsql = true;
14598
14599                if ( pstate != EFindSqlStateType.stnormal )
14600                {
14601                    // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
14602                    if ( TBaseType.assigned(lcprevsolidtoken) )
14603                    {
14604                        if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
14605                            lcisnewsql = false; //subqery
14606                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
14607                            lcisnewsql = false;
14608                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
14609                            lcisnewsql = false;
14610                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
14611                            lcisnewsql = false;
14612                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
14613                            lcisnewsql = false;
14614                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
14615                            lcisnewsql = false;
14616                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
14617                        {
14618                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
14619                                lcisnewsql = false;
14620                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
14621                                lcisnewsql = false;
14622                        }
14623
14624                        if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
14625                        {
14626                            lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
14627                            if ( TBaseType.assigned(lcpprevsolidtoken) )
14628                            {
14629                                if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
14630                                    lcisnewsql = false;
14631                            }
14632                        }
14633
14634                    }
14635
14636
14637                    if ( TBaseType.assigned(lccurrentsqlstatement) )
14638                    {
14639                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
14640                            lcisnewsql = false;
14641                    }
14642
14643                }
14644
14645                if ( lcisnewsql )
14646                    ret =  new TSelectSqlStatement(pdbvendor);
14647                break;
14648            }
14649            case sstinsert:
14650            {
14651                lcisnewsql = true;
14652                if ( pstate != EFindSqlStateType.stnormal )
14653                {
14654                    if ( TBaseType.assigned(lccurrentsqlstatement) )
14655                    {
14656
14657                    }
14658                }
14659
14660                if ( lcisnewsql )
14661                    ret =  new TInsertSqlStatement(pdbvendor);
14662                ret.sqlstatementtype = gnewsqlstatementtype;
14663                break;
14664            }
14665            case sstdelete:
14666            {
14667                lcisnewsql = true;
14668
14669                if ( pstate != EFindSqlStateType.stnormal )
14670                {
14671                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
14672                    if ( TBaseType.assigned(lcprevsolidtoken) )
14673                    {
14674                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
14675                            lcisnewsql = false;
14676                    }
14677
14678                    if ( TBaseType.assigned(lccurrentsqlstatement) )
14679                    {
14680                    }
14681                }
14682
14683                if ( lcisnewsql )
14684                    ret =  new TDeleteSqlStatement(pdbvendor);
14685                break;
14686            }
14687            case sstaltertable:
14688            {
14689                ret =  new TAlterTableStatement(pdbvendor);
14690                break;
14691            }
14692            case sstalterfunction:
14693            {
14694                ret =  new TAlterFunctionStmt(pdbvendor);
14695                break;
14696            }
14697            case sstAlterSchema:
14698            {
14699                ret =  new TAlterSchemaStmt(pdbvendor);
14700                break;
14701            }
14702            case sstanalyzeTable:
14703            {
14704                ret = new TAnalyzeStmt(pdbvendor);
14705                break;
14706            }
14707            case sstcall:
14708            {
14709                ret =  new TCallStatement(pdbvendor);
14710                break;
14711            }
14712            case sstcommit:
14713            {
14714                ret =  new TCommitStmt(pdbvendor);
14715                break;
14716            }
14717            case sstcreatefunction:
14718            {
14719                ret =  new TCreateFunctionStmt(pdbvendor);
14720                break;
14721            }
14722            case sstcreaterole:
14723            {
14724                ret =  new TCreateRoleStmt(pdbvendor);
14725                break;
14726            }
14727            case sstcreateschema:
14728            {
14729                ret =  new TCreateSchemaSqlStatement(pdbvendor);
14730                break;
14731            }
14732            case sstcreatetable:
14733            {
14734                ret =  new TCreateTableSqlStatement(pdbvendor);
14735                break;
14736            }
14737            case sstcreateview:
14738            {
14739                ret =  new TCreateViewSqlStatement(pdbvendor);
14740                break;
14741            }
14742            case sstpostgresqlDeallocate:
14743            {
14744                ret =  new TUnknownSqlStatement(pdbvendor);
14745                ret.sqlstatementtype = gnewsqlstatementtype;
14746                break;
14747            }
14748            case sstdescribe:
14749            {
14750                ret =  new TDescribeStmt(pdbvendor);
14751                break;
14752            }
14753            case sstdropfunction:
14754            {
14755                ret =  new TDropFunctionStmt(pdbvendor);
14756                break;
14757            }
14758            case sstdroprole:
14759            {
14760                ret =  new TDropRoleStmt(pdbvendor);
14761                break;
14762            }
14763            case sstdropschema:
14764            {
14765                ret =  new TDropSchemaSqlStatement(pdbvendor);
14766                break;
14767            }
14768            case sstdroptable:
14769            {
14770                ret =  new TDropTableSqlStatement(pdbvendor);
14771                break;
14772            }
14773            case sstdropview:
14774            {
14775                ret =  new TDropViewSqlStatement(pdbvendor);
14776                break;
14777            }
14778            case sstExecute:
14779            {
14780                ret =  new TExecuteSqlStatement(pdbvendor);
14781                break;
14782            }
14783            case sstExplain:
14784            {
14785                ret =  new TExplainPlan(pdbvendor);
14786                break;
14787            }
14788            case sstGrant:
14789            {
14790                ret =  new TGrantStmt(pdbvendor);
14791                break;
14792            }
14793            case sstprepare:
14794            {
14795                ret =  new TPrepareStmt(pdbvendor);
14796                break;
14797            }
14798            case sstset:
14799            case sstReset:
14800            {
14801                lcisnewsql = true;
14802                if ( pstate != EFindSqlStateType.stnormal )
14803                {
14804                    if ( TBaseType.assigned(lccurrentsqlstatement) )
14805                    {
14806                        lcisnewsql = false;
14807                    }
14808                }
14809
14810                if ( lcisnewsql )
14811                {
14812                    ret =  new TSetStmt(pdbvendor);
14813                }
14814                break;
14815            }
14816            case sstShow:
14817            {
14818                ret = new TShowStmt(pdbvendor);
14819                ret.sqlstatementtype = gnewsqlstatementtype;
14820                break;
14821            }
14822            case sstStartTransaction:
14823            {
14824                ret = new TStartTransactionStmt(pdbvendor);
14825                break;
14826            }
14827            case sstUse:
14828            {
14829                ret =  new TUseDatabase(pdbvendor);
14830                break;
14831            }
14832            case sstValues:
14833            {
14834                ret =  new TSelectSqlStatement(pdbvendor);
14835                break;
14836            }
14837            case sstResetSession:
14838            {
14839                ret =  new TResetSessionStmt(pdbvendor);
14840                break;
14841            }
14842            case sstunload:
14843                lcisnewsql = true;
14844                if ( pstate != EFindSqlStateType.stnormal )
14845                {
14846                    lcisnewsql = false;
14847                }
14848                if ( lcisnewsql ) {
14849                    ret = new TUnloadStmt(pdbvendor);
14850                    ret.sqlstatementtype = gnewsqlstatementtype;
14851                }
14852                break;
14853            case sstmsck:
14854            {
14855                ret = new TMSCKStmt(pdbvendor);
14856                break;
14857            }
14858            case sstcreatedatabase:
14859            {
14860                ret = new TCreateDatabaseSqlStatement(pdbvendor);
14861                break;
14862            }
14863            case sstalterdatabase:
14864            {
14865                ret = new TAlterDatabaseStmt(pdbvendor);
14866                break;
14867            }
14868            case sstdropdatabase:
14869                ret = new TDropDatabaseStmt(pdbvendor);
14870                break;
14871            default:
14872            {
14873                ret =  new TUnknownSqlStatement(pdbvendor);
14874                ret.sqlstatementtype = gnewsqlstatementtype;
14875                break;
14876            }
14877        }    // case
14878
14879        return ret;
14880
14881    }
14882
14883    TCustomSqlStatement issparksql(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
14884
14885            TCustomSqlStatement ret = null;
14886            int k;
14887            boolean lcisnewsql;
14888            TSourceToken lcpprevsolidtoken,lcnextsolidtoken;
14889
14890            gnewsqlstatementtype = ESqlStatementType.sstinvalid;
14891
14892            if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
14893                    || (pcst.tokencode  == TBaseType.cmtslashstar)
14894                    || (pcst.tokencode  == TBaseType.lexspace)
14895                    || (pcst.tokencode  == TBaseType.lexnewline)
14896                    || (pcst.tokentype == ETokenType.ttsemicolon) )
14897            {
14898                return ret;
14899            }
14900
14901            int lcpos = pcst.posinlist;
14902            TSourceTokenList lcsourcetokenlist = pcst.container;
14903            TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
14904
14905            //subquery after semicolon || at first line
14906            if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
14907            {
14908                k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
14909                if ( k >0 )
14910                {
14911                    ret =  new TSelectSqlStatement(pdbvendor);
14912                }
14913
14914                return ret;
14915            }
14916
14917            //cte
14918            if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
14919            {
14920                ret = findcte(pcst,pdbvendor);
14921                if ( (ret != null) )  return ret;
14922            }
14923
14924
14925            gnewsqlstatementtype = findsparksqlcmd(pcst);
14926
14927            TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
14928
14929            if ((gnewsqlstatementtype == ESqlStatementType.sstinvalid)&&(pcst.tokencode == TBaseType.rrw_create)){
14930                //if (pcst.container.nextsolidtoken(pcst.posinlist,15,))
14931                TSourceToken viewToken = pcst.container.searchToken(TBaseType.rrw_view,"",pcst,15);
14932                if (viewToken != null){
14933                    gnewsqlstatementtype = ESqlStatementType.sstcreateview;
14934                }
14935            }
14936            switch (gnewsqlstatementtype){
14937                case sstinvalid:
14938                {
14939                    ret = null;
14940                    break;
14941                }
14942                case sstselect:
14943                {
14944                    lcisnewsql = true;
14945
14946                    if ( pstate != EFindSqlStateType.stnormal )
14947                    {
14948                        // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
14949                        if ( TBaseType.assigned(lcprevsolidtoken) )
14950                        {
14951                            if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
14952                                lcisnewsql = false; //subqery
14953                            else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
14954                                lcisnewsql = false;
14955                            else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
14956                                lcisnewsql = false;
14957                            else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
14958                                lcisnewsql = false;
14959                            else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
14960                                lcisnewsql = false;
14961                            else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
14962                                lcisnewsql = false;
14963                            else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
14964                            {
14965                                if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
14966                                    lcisnewsql = false;
14967                                if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
14968                                    lcisnewsql = false;
14969                            }
14970
14971                            if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
14972                            {
14973                                lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
14974                                if ( TBaseType.assigned(lcpprevsolidtoken) )
14975                                {
14976                                    if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
14977                                        lcisnewsql = false;
14978                                }
14979                            }
14980
14981                        }
14982
14983
14984                        if ( TBaseType.assigned(lccurrentsqlstatement) )
14985                        {
14986                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
14987                                lcisnewsql = false;
14988                        }
14989
14990                    }
14991
14992                    if ( lcisnewsql )
14993                        ret =  new TSelectSqlStatement(pdbvendor);
14994                    break;
14995                }
14996                case sstinsert:
14997                {
14998                    lcisnewsql = true;
14999                    if ( pstate != EFindSqlStateType.stnormal )
15000                    {
15001                        if ( TBaseType.assigned(lccurrentsqlstatement) )
15002                        {
15003
15004                        }
15005                    }
15006
15007                    if ( lcisnewsql )
15008                        ret =  new TInsertSqlStatement(pdbvendor);
15009                    ret.sqlstatementtype = gnewsqlstatementtype;
15010                    break;
15011                }
15012                case sstupdate:
15013                {
15014                    lcisnewsql = true;
15015                    if ( pstate != EFindSqlStateType.stnormal )
15016                    {
15017                        lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
15018                        if ( TBaseType.assigned(lcprevsolidtoken) )
15019                        { //
15020                            if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
15021                                lcisnewsql = false;
15022                            else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
15023                                lcisnewsql = false;
15024                        }
15025
15026                        lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
15027                        if ( TBaseType.assigned(lcnextsolidtoken) )
15028                        {
15029                            if ( lcnextsolidtoken.tokentype == ETokenType.ttleftparenthesis)
15030                            {
15031                                k = lcsourcetokenlist.solidtokenafterpos(lcnextsolidtoken.posinlist,TBaseType.rrw_select,1,"(");
15032                                if ( k  == 0 ) lcisnewsql = false;
15033                            }
15034                        }
15035
15036
15037                        if ( TBaseType.assigned(lccurrentsqlstatement) )
15038                        {
15039                        }
15040                    }
15041
15042                    if ( lcisnewsql )
15043                    {
15044                        ret =  new TUpdateSqlStatement(pdbvendor);
15045                        ret.dummytag = 1; // means set clause in update is not found yet, used to seperate set clause from set statement
15046                    }
15047                    break;
15048                }
15049                case sstdelete:
15050                {
15051                    lcisnewsql = true;
15052
15053                    if ( pstate != EFindSqlStateType.stnormal )
15054                    {
15055                        lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
15056                        if ( TBaseType.assigned(lcprevsolidtoken) )
15057                        {
15058                            if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
15059                                lcisnewsql = false;
15060                        }
15061
15062                        if ( TBaseType.assigned(lccurrentsqlstatement) )
15063                        {
15064                        }
15065                    }
15066
15067                    if ( lcisnewsql )
15068                        ret =  new TDeleteSqlStatement(pdbvendor);
15069                    break;
15070                }
15071                case sstcreatetable:
15072                {
15073                    ret =  new TCreateTableSqlStatement(pdbvendor);
15074                    break;
15075                }
15076                case sstcreateview:
15077                {
15078                    ret =  new TCreateViewSqlStatement(pdbvendor);
15079                    break;
15080                }
15081                case sstcreatedatabase:
15082                {
15083                    ret =  new TCreateDatabaseSqlStatement(pdbvendor);
15084                    break;
15085                }
15086                case sstdroptable:
15087                {
15088                    ret =  new TDropTableSqlStatement(pdbvendor);
15089                    break;
15090                }
15091                case sstdropview:
15092                {
15093                    ret =  new TDropViewSqlStatement(pdbvendor);
15094                    break;
15095                }
15096                case sstaltertable:
15097                {
15098                    ret =  new TAlterTableStatement(pdbvendor);
15099                    break;
15100                }
15101                case sstset:
15102                case sstReset:
15103                case sstSetTimeZone:
15104                {
15105                    lcisnewsql = true;
15106                    if ( pstate != EFindSqlStateType.stnormal )
15107                    {
15108                        if ( TBaseType.assigned(lccurrentsqlstatement) )
15109                        {
15110                            lcisnewsql = false;
15111                        }
15112                    }
15113
15114                    if ( lcisnewsql )
15115                    {
15116                        ret =  new TSetStmt(pdbvendor);
15117                    }
15118                    break;
15119                }
15120                case sstcreatefunction:
15121                {
15122                    ret =  new TCreateFunctionStmt(pdbvendor);
15123                    break;
15124                }
15125                case sstTruncate:
15126                {
15127                    ret =  new TTruncateStatement(pdbvendor);
15128                    break;
15129                }
15130                case sstdescribe:
15131                {
15132                    ret =  new TDescribeStmt(pdbvendor);
15133                    break;
15134                }
15135                case sstExplain:
15136                {
15137                    ret =  new TExplainPlan(pdbvendor);
15138                    break;
15139                }
15140                case sstUse:
15141                {
15142                    ret =  new TUseDatabase(pdbvendor);
15143                    break;
15144                }
15145                case sstLoadData:
15146                {
15147                    ret =  new TLoadDataStmt(pdbvendor);
15148                    break;
15149                }
15150                case sstShowColumns:
15151                case sstShowCreateTable:
15152                case sstShowDatabases:
15153                case sstShowFunctions:
15154                case sstShowPartitions:
15155                case sstShowTableExtended:
15156                case sstShowTables:
15157                case sstShowTblProperties:
15158                case sstShowViews:
15159                case sstShowUser:
15160                    ret = new TShowStmt(pdbvendor);
15161                    ret.sqlstatementtype = gnewsqlstatementtype;
15162                    break;
15163                case sstalterdatabase:
15164                    ret =  new TAlterDatabaseStmt(pdbvendor);
15165                    break;
15166                case sstdescribeDatabase:
15167                case sstdescribeTable:
15168                case sstdescribeFunction:
15169                    ret =  new TDescribeStmt(pdbvendor);
15170                    break;
15171                case sstalterview:
15172                    ret =  new TAlterViewStatement(pdbvendor);
15173                    break;
15174                case sstAddFile:
15175                case sstAddJar:
15176                case sstListFile:
15177                case sstListJar:
15178                    ret =  new TResourceManagement(pdbvendor);
15179                    ret.sqlstatementtype = gnewsqlstatementtype;
15180                    break;
15181                case sstdropdatabase:
15182                    ret =  new TDropDatabaseStmt(pdbvendor);
15183                    break;
15184                case sstdropfunction:
15185                    ret =  new TDropFunctionStmt(pdbvendor);
15186                    break;
15187                case ssttruncatetable:
15188                    ret =  new TTruncateStatement(pdbvendor);
15189                     break;
15190                case sstmsck:
15191                {
15192                    ret = new TMSCKStmt(pdbvendor);
15193                    break;
15194                }
15195                case sstanalyzeTable:
15196                {
15197                    ret = new TAnalyzeStmt(pdbvendor);
15198                    break;
15199                }
15200                case sstCacheTable:
15201                case sstUnCacheTable:
15202                case sstClearCache:
15203                    ret = new TCacheTable(pdbvendor);
15204                    break;
15205                case sstRefreshTable:
15206                case sstRefreshFunction:
15207                case sstRefresh:
15208                    ret = new TRefresh(pdbvendor);
15209                    break;
15210                default:
15211                {
15212                    ret =  new TUnknownSqlStatement(pdbvendor);
15213                    ret.sqlstatementtype = gnewsqlstatementtype;
15214                    break;
15215                }
15216            }    // case
15217
15218            return ret;
15219
15220    }
15221
15222    TCustomSqlStatement ismysqlsql(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
15223    TCustomSqlStatement ret = null;
15224    int k;
15225    boolean lcisnewsql;
15226    TSourceToken lcpprevsolidtoken,lcnextsolidtoken;
15227
15228    gnewsqlstatementtype = ESqlStatementType.sstinvalid;
15229
15230    if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
15231       || (pcst.tokencode  == TBaseType.cmtslashstar)
15232       || (pcst.tokencode  == TBaseType.lexspace)
15233       || (pcst.tokencode  == TBaseType.lexnewline)
15234        || (pcst.tokentype == ETokenType.ttsemicolon) )
15235    {
15236      return ret;
15237    }
15238
15239    int lcpos = pcst.posinlist;
15240    TSourceTokenList lcsourcetokenlist = pcst.container;
15241    TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
15242
15243    //subquery after semicolon || at first line
15244    if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
15245      {
15246        k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
15247        if ( k >0 )
15248          {
15249            ret =  new TSelectSqlStatement(pdbvendor);
15250          }
15251
15252        return ret;
15253      }
15254
15255        //cte
15256        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
15257        {
15258            ret = findcte(pcst,pdbvendor);
15259            if ( (ret != null) )  return ret;
15260        }
15261
15262
15263    //cte
15264//  if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == rrw_with) )
15265//    {
15266//      ret = tselectsqlstatement.create(pdbvendor);
15267//      tselectsqlstatement(ret).isctequery = true;
15268//      exit;
15269//    }
15270//
15271
15272    gnewsqlstatementtype = findmysqlcmd(pcst);
15273
15274    TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
15275
15276    if ((gnewsqlstatementtype == ESqlStatementType.sstinvalid)&&(pcst.tokencode == TBaseType.rrw_create)){
15277      //if (pcst.container.nextsolidtoken(pcst.posinlist,15,))
15278        TSourceToken viewToken = pcst.container.searchToken(TBaseType.rrw_view,"",pcst,15);
15279        if (viewToken != null){
15280            gnewsqlstatementtype = ESqlStatementType.sstcreateview;
15281        }
15282    }
15283    switch (gnewsqlstatementtype){
15284        case sstinvalid:
15285          {
15286            ret = null;
15287            break;
15288          }
15289        case sstselect:
15290          {
15291            lcisnewsql = true;
15292
15293            if ( pstate != EFindSqlStateType.stnormal )
15294              {
15295                // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
15296                if ( TBaseType.assigned(lcprevsolidtoken) )
15297                  {
15298                    if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
15299                      lcisnewsql = false; //subqery
15300                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
15301                      lcisnewsql = false;
15302                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
15303                      lcisnewsql = false;
15304                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
15305                      lcisnewsql = false;
15306                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
15307                      lcisnewsql = false;
15308                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
15309                      lcisnewsql = false;
15310                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
15311                      {
15312                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
15313                          lcisnewsql = false;
15314                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
15315                          lcisnewsql = false;
15316                      }
15317
15318                    if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
15319                      {
15320                        lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
15321                        if ( TBaseType.assigned(lcpprevsolidtoken) )
15322                          {
15323                            if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
15324                              lcisnewsql = false;
15325                          }
15326                      }
15327
15328                  }
15329
15330
15331                if ( TBaseType.assigned(lccurrentsqlstatement) )
15332                  {
15333                    if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
15334                      lcisnewsql = false;
15335                  }
15336
15337              }
15338
15339            if ( lcisnewsql )
15340              ret =  new TSelectSqlStatement(pdbvendor);
15341              break;
15342          }
15343        case sstinsert:
15344        case sstmysqlreplace:
15345          {
15346            lcisnewsql = true;
15347            if ( pstate != EFindSqlStateType.stnormal )
15348              {
15349                if ( TBaseType.assigned(lccurrentsqlstatement) )
15350                  {
15351
15352                  }
15353              }
15354
15355            if ( lcisnewsql )
15356              ret =  new TInsertSqlStatement(pdbvendor);
15357              ret.sqlstatementtype = gnewsqlstatementtype;
15358              break;
15359          }
15360        case sstupdate:
15361          {
15362            lcisnewsql = true;
15363            if ( pstate != EFindSqlStateType.stnormal )
15364              {
15365                lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
15366                if ( TBaseType.assigned(lcprevsolidtoken) )
15367                  { //
15368                    if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
15369                      lcisnewsql = false;
15370                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
15371                      lcisnewsql = false;
15372                  }
15373
15374                lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
15375                if ( TBaseType.assigned(lcnextsolidtoken) )
15376                  {
15377                    if ( lcnextsolidtoken.tokentype == ETokenType.ttleftparenthesis)
15378                      {
15379                        k = lcsourcetokenlist.solidtokenafterpos(lcnextsolidtoken.posinlist,TBaseType.rrw_select,1,"(");
15380                        if ( k  == 0 ) lcisnewsql = false;
15381                      }
15382                  }
15383
15384
15385                if ( TBaseType.assigned(lccurrentsqlstatement) )
15386                  {
15387                  }
15388              }
15389
15390            if ( lcisnewsql )
15391              {
15392                ret =  new TUpdateSqlStatement(pdbvendor);
15393                ret.dummytag = 1; // means set clause in update is not found yet, used to seperate set clause from set statement
15394              }
15395              break;
15396          }
15397        case sstdelete:
15398          {
15399            lcisnewsql = true;
15400
15401            if ( pstate != EFindSqlStateType.stnormal )
15402              {
15403                lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
15404                if ( TBaseType.assigned(lcprevsolidtoken) )
15405                  {
15406                    if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
15407                      lcisnewsql = false;
15408                  }
15409
15410                if ( TBaseType.assigned(lccurrentsqlstatement) )
15411                  {
15412                  }
15413              }
15414
15415            if ( lcisnewsql )
15416              ret =  new TDeleteSqlStatement(pdbvendor);
15417              break;
15418          }
15419        case sstmerge:
15420          {
15421            ret =  new TMergeSqlStatement(pdbvendor);
15422            ret.sqlstatementtype = gnewsqlstatementtype;
15423              break;
15424          }
15425        case sstcommit:
15426          {
15427            ret =  new TUnknownSqlStatement(pdbvendor);
15428            ret.sqlstatementtype = gnewsqlstatementtype;
15429              break;
15430          }
15431        case sstrollback:
15432          {
15433            ret =  new TUnknownSqlStatement(pdbvendor);
15434            ret.sqlstatementtype = gnewsqlstatementtype;
15435              break;
15436          }
15437        case sstsavepoint:
15438          {
15439            ret =  new TUnknownSqlStatement(pdbvendor);
15440            ret.sqlstatementtype = gnewsqlstatementtype;
15441              break;
15442          }
15443        case sstRevoke:
15444          {
15445            ret =  new TUnknownSqlStatement(pdbvendor);
15446            ret.sqlstatementtype = gnewsqlstatementtype;
15447              break;
15448          }
15449        case sstcreatetable:
15450          {
15451            ret =  new TCreateTableSqlStatement(pdbvendor);
15452              break;
15453          }
15454        case sstcreateview:
15455          {
15456            ret =  new TCreateViewSqlStatement(pdbvendor);
15457              break;
15458          }
15459        case sstmysqlcreateindex:
15460          {
15461            ret =  new TCreateIndexSqlStatement(pdbvendor);
15462              break;
15463          }
15464        case sstcreatedatabase:
15465          {
15466            ret =  new TCreateDatabaseSqlStatement(pdbvendor);
15467              break;
15468          }
15469        case sstmysqldroptable:
15470        case sstdroptable:
15471          {
15472            ret =  new TDropTableSqlStatement(pdbvendor);
15473              break;
15474          }
15475        case sstdropview:
15476          {
15477            ret =  new TDropViewSqlStatement(pdbvendor);
15478              break;
15479          }
15480        case sstdropindex:
15481          {
15482            ret =  new TDropIndexSqlStatement(pdbvendor);
15483              break;
15484          }
15485        case sstaltertable:
15486          {
15487            ret =  new TAlterTableStatement(pdbvendor);
15488              break;
15489          }
15490        case sstaltersession:
15491          {
15492            ret =  new TAlterSessionStatement(pdbvendor);
15493              break;
15494          }
15495        case sstmysqlset:
15496          {
15497            ret =  new TSetStmt(pdbvendor);
15498              break;
15499          }
15500        case sstmysqlcreateprocedure:
15501          {
15502            ret =  new TCreateProcedureStmt(pdbvendor);
15503              break;
15504          }
15505        case sstmysqlcreatefunction:
15506          {
15507            ret =  new TCreateFunctionStmt(pdbvendor);
15508              break;
15509          }
15510        case sstcreatetrigger:
15511          {
15512            ret =  new TCreateTriggerStmt(pdbvendor);
15513              break;
15514          }
15515        case sstmysqlcall:
15516        {
15517            ret =  new TCallStatement(pdbvendor);
15518            break;
15519        }
15520        case sstmysqltruncate:
15521        {
15522            ret =  new TTruncateStatement(pdbvendor);
15523            break;
15524        }
15525        case sstmysqlprepare:
15526        {
15527            ret =  new TPrepareStmt(pdbvendor);
15528            break;
15529        }
15530        case sstdescribe:
15531        {
15532            ret =  new TDescribeStmt(pdbvendor);
15533            break;
15534        }
15535        case sstExplain:
15536        {
15537            ret =  new TExplainPlan(pdbvendor);
15538            break;
15539        }
15540        case sstmysqldropindex:
15541        {
15542            ret =  new TDropIndexSqlStatement(pdbvendor);
15543            break;
15544        }
15545        case sstmysqldropprocedure:
15546        {
15547            ret =  new TDropProcedureStmt(pdbvendor);
15548            break;
15549        }
15550        case sstmysqlsignal:
15551        {
15552            ret =  new TMySQLSignal(pdbvendor);
15553            break;
15554        }
15555        case sstmysqlstarttransaction:
15556        {
15557            if ( pstate == EFindSqlStateType.stnormal )
15558            {
15559                ret =  new TUnknownSqlStatement(pdbvendor);
15560                ret.sqlstatementtype = gnewsqlstatementtype;
15561            }
15562            break;
15563        }
15564        case sstmysqluse:
15565        {
15566            ret =  new TUseDatabase(pdbvendor);
15567          break;
15568        }
15569        case sstmysqlexecute:
15570        {
15571            ret =  new TExecuteSqlStatement(pdbvendor);
15572            ret.sqlstatementtype = gnewsqlstatementtype;
15573            break;
15574        }
15575        case sstmysqlcreatedatabase:
15576        {
15577            ret =  new TCreateDatabaseSqlStatement(pdbvendor);
15578            break;
15579        }
15580        case sstmysqlrenametable:
15581        {
15582            ret =  new TRenameStmt(pdbvendor);
15583            break;
15584        }
15585        case sstmysqlshowindex:
15586            ret =  new TShowIndexStmt(pdbvendor);
15587            break;
15588        case sstmysqlloaddatainfile:
15589            ret = new TLoadDataStmt(pdbvendor);
15590            break;
15591        case sstmysqlshowlogs:
15592        case sstmysqlshowbinlogevents:
15593        case sstmysqlshowcharacterset:
15594        case sstmysqlshowcollation:
15595        case sstmysqlshowcolumns:
15596        case sstmysqlshowwarnings:
15597        case sstmysqlshowcreatedatabase:
15598        case sstmysqlshowcreatefunction:
15599        case sstmysqlshowcreateprocedure:
15600        case sstmysqlshowcreatetable:
15601        case sstmysqlshowcreateview:
15602        case sstmysqlshowdatabases:
15603        case sstmysqlshowerrors:
15604        case sstmysqlshowfields:
15605        case sstmysqlshowprocesslist:
15606        case sstmysqlshowtables:
15607        case sstmysqlshowfunctionstatus:
15608        case sstmysqlshowstatus:
15609        case sstmysqlshowvariables:
15610        case sstmysqlshowgrants:
15611        case sstmysqlshowinnodbstatus:
15612        case sstmysqlshowmasterlogs:
15613        case sstmysqlshowplugins:
15614        case sstmysqlshowprivileges:
15615        case sstmysqlshowprofile:
15616        case sstmysqlshowprofiles:
15617        case sstmysqlshowslavehosts:
15618        case sstmysqlshowslavestatus:
15619        case sstmysqlshowtablestatus:
15620        case sstmysqlshowtriggers:
15621        case sstmysqlshowcreateschema:
15622        case sstmysqlshowengines:
15623            ret = new TMySQLShowStmt(pdbvendor);
15624            ret.sqlstatementtype = gnewsqlstatementtype;
15625            break;
15626        case sstmysqlshowengine:
15627            ret = new TShowEngineStmt(pdbvendor);
15628            break;
15629        case sstmysqlshowreplicaStatus:
15630            ret = new TShowStmt(pdbvendor);
15631            ret.sqlstatementtype = gnewsqlstatementtype;
15632            break;
15633        case sstmysqlalterfunction:
15634            ret = new TAlterFunctionStmt(pdbvendor);
15635            break;
15636        case sstmysqlalterprocedure:
15637            ret = new TAlterProcedureStmt(pdbvendor);
15638            break;
15639        case sstmysqldropfunction:
15640            ret = new TDropFunctionStmt(pdbvendor);
15641            break;
15642        case sstmysqldroptrigger:
15643            ret = new TDropTriggerSqlStatement(pdbvendor);
15644            break;
15645        case sstmysqloptimizetable:
15646            ret = new TMySQLOptimizeTableStmt(pdbvendor);
15647            break;
15648        case sstmysqlalterview:
15649            ret  = new TAlterViewStatement(pdbvendor);
15650            break;
15651        default:
15652          {
15653            ret =  new TUnknownSqlStatement(pdbvendor);
15654            ret.sqlstatementtype = gnewsqlstatementtype;
15655              break;
15656          }
15657    }    // case
15658
15659    return ret;
15660}
15661
15662TCustomSqlStatement ismdxsql(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
15663    TCustomSqlStatement ret = null;
15664
15665    gnewsqlstatementtype = ESqlStatementType.sstinvalid;
15666
15667    if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
15668       || (pcst.tokencode  == TBaseType.cmtslashstar)
15669       || (pcst.tokencode  == TBaseType.lexspace)
15670       || (pcst.tokencode  == TBaseType.lexnewline)
15671        || (pcst.tokentype == ETokenType.ttsemicolon) )
15672    {
15673      return null;
15674    }
15675
15676    int lcpos = pcst.posinlist;
15677    TSourceTokenList lcsourcetokenlist = pcst.container;
15678    TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
15679
15680
15681    //with clause before statement
15682    if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
15683      {
15684        ret = findMdxStmtBeginWithClause(pcst,pdbvendor);
15685        if ( (ret != null) )  return ret;
15686      }
15687
15688    gnewsqlstatementtype = findmdxcmd(pcst);
15689
15690    TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
15691    switch (gnewsqlstatementtype) {    //
15692        case sstinvalid:
15693          {
15694            ret = null;
15695            if ( pstate == EFindSqlStateType.stnormal )
15696              {
15697                  //treat all unregonized statement as an expression
15698                  ret = new TMdxExpression(EDbVendor.dbvmdx);
15699              }
15700              break;
15701          }
15702        case sstmdxselect:
15703          {
15704            boolean lcisnewsql = true;
15705
15706            if ( pstate != EFindSqlStateType.stnormal )
15707              {
15708                if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstselect )
15709                  {
15710                    if ( lccurrentsqlstatement.isctequery )
15711                      lcisnewsql = false;
15712                  }
15713              }
15714
15715            if ( lcisnewsql )
15716              ret = new TMdxSelect(pdbvendor);
15717
15718            break;
15719          }
15720        case sstmdxupdate:
15721          {
15722            boolean lcisnewsql = true;
15723            if ( pstate != EFindSqlStateType.stnormal )
15724              {
15725                lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
15726                if ( (lcprevsolidtoken != null) )
15727                  { //
15728                  }
15729
15730                TSourceToken lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
15731                if ( (lcnextsolidtoken != null) )
15732                  {
15733                  }
15734
15735                if ( (lccurrentsqlstatement != null) )
15736                  {
15737                  }
15738              }
15739
15740            if ( lcisnewsql )
15741              {
15742                ret = new TMdxUpdate(pdbvendor);
15743              }
15744            break;
15745          }
15746        case sstmdxaltercube:
15747          {
15748            ret = new TMdxAlterCube(pdbvendor);
15749              break;
15750          }
15751        case sstmdxcalculate:
15752          {
15753            ret = new TMdxCalculate(pdbvendor);
15754              break;
15755          }
15756        case sstmdxcall:
15757          {
15758            ret = new TMdxCall(pdbvendor);
15759              break;
15760          }
15761        case sstmdxcase:
15762          {
15763            ret = new TMdxCase(pdbvendor);
15764              break;
15765          }
15766        case sstmdxclearcalculations:
15767          {
15768            ret = new TMdxClearCalculations(pdbvendor);
15769              break;
15770          }
15771        case sstmdxcreateaction:
15772          {
15773            ret = new TMdxCreateAction(pdbvendor);
15774              break;
15775          }
15776        case sstmdxcreatemember:
15777          {
15778            ret = new TMdxCreateMember(pdbvendor);
15779              break;
15780          }
15781        case sstmdxcreatecellcalculation:
15782          {
15783            ret = new TMdxCreateCellCalculation(pdbvendor);
15784              break;
15785          }
15786        case sstmdxcreateglobalcube:
15787          {
15788            ret = new TMdxCreateGlobalCube(pdbvendor);
15789              break;
15790          }
15791        case sstmdxcreateset:
15792          {
15793            ret = new TMdxCreateSet(pdbvendor);
15794              break;
15795          }
15796        case sstmdxcreatesessioncube:
15797          {
15798            ret = new TMdxCreateSessionCube(pdbvendor);
15799              break;
15800          }
15801        case sstmdxcreatesubcube:
15802          {
15803            ret = new TMdxCreateSubCube(pdbvendor);
15804              break;
15805          }
15806        case sstmdxdrillthrough:
15807          {
15808            ret = new TMdxDrillthrough(pdbvendor);
15809              break;
15810          }
15811        case sstmdxdropaction:
15812          {
15813            ret = new TMdxDropAction(pdbvendor);
15814              break;
15815          }
15816        case sstmdxdropmember:
15817          {
15818            ret = new TMdxDropMember(pdbvendor);//ret = new TMdxCreateSessionCube(pdbvendor);
15819              break;
15820          }
15821        case sstmdxdropcellcalculation:
15822          {
15823            ret = new TMdxDropCellCalculation(pdbvendor);
15824              break;
15825          }
15826        case sstmdxdropset:
15827          {
15828            ret = new TMdxDropSet(pdbvendor);
15829              break;
15830          }
15831        case sstmdxdropsubcube:
15832          {
15833            ret = new TMdxDropSubcube(pdbvendor);
15834              break;
15835          }
15836        case sstmdxfreeze:
15837          {
15838            ret = new TMdxFreeze(pdbvendor);
15839            break;
15840          }
15841        case sstmdxif:
15842          {
15843            ret = new TMdxIf(pdbvendor);
15844              break;
15845          }
15846        case sstmdxrefreshcube:
15847          {
15848            ret = new TMdxRefreshCube(pdbvendor);
15849              break;
15850          }
15851        case sstmdxscope:
15852          {
15853            ret = new TMdxScope(pdbvendor);
15854              break;
15855          }
15856        case sstmdxcreatemeasure:
15857        {
15858            ret = new TMdxCreateMeasure(pdbvendor);
15859            break;
15860        }
15861        case sstmdxexisting:
15862        default:
15863          {
15864            ret = new TUnknownSqlStatement(pdbvendor);
15865            ret.sqlstatementtype = gnewsqlstatementtype;
15866            break;
15867          }
15868    }    // case
15869
15870    return ret;
15871}
15872
15873
15874public ESqlStatementType findsybasecmdusedbyyacc(TSourceToken pcst){
15875  ESqlStatementType ret = ESqlStatementType.sstinvalid;
15876
15877    int lcpos = pcst.posinlist;
15878    TSourceTokenList lcsourcetokenlist = pcst.container;
15879
15880    //subquery after semicolon or at first line
15881    if (  (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
15882      {
15883        int k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
15884        if ( k >0 )
15885          {
15886            ret = ESqlStatementType.sstselect;
15887          }
15888
15889        return ret;
15890      }
15891
15892
15893    ret = findsybasecmd(pcst);
15894    // execute can't be used to delimite other sql
15895    if ( ret == ESqlStatementType.sstmssqlexec )
15896      ret = ESqlStatementType.sstinvalid;
15897
15898  return ret;
15899}
15900
15901public ESqlStatementType findmssqlcmdusedbyyacc(TSourceToken pcst){
15902  ESqlStatementType ret = ESqlStatementType.sstinvalid;
15903
15904    int lcpos = pcst.posinlist;
15905    TSourceTokenList lcsourcetokenlist = pcst.container;
15906
15907    //subquery after semicolon or at first line
15908    if (  (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
15909      {
15910        int k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
15911        if ( k >0 )
15912          {
15913            ret = ESqlStatementType.sstselect;
15914          }
15915
15916        return ret;
15917      }
15918
15919
15920    ret = findmssqlcmd(pcst);
15921    // execute can't be used to delimite other sql
15922    if ( ret == ESqlStatementType.sstmssqlexec )
15923      ret = ESqlStatementType.sstinvalid;
15924
15925  return ret;
15926}
15927
15928
15929TCustomSqlStatement ishive(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
15930    TCustomSqlStatement ret = null;
15931
15932    gnewsqlstatementtype = ESqlStatementType.sstinvalid;
15933
15934    if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
15935       || (pcst.tokencode  == TBaseType.cmtslashstar)
15936       || (pcst.tokencode  == TBaseType.lexspace)
15937       || (pcst.tokencode  == TBaseType.lexnewline)
15938        || (pcst.tokentype == ETokenType.ttsemicolon) )
15939    {
15940      return null;
15941    }
15942
15943    int lcpos = pcst.posinlist;
15944    TSourceTokenList lcsourcetokenlist = pcst.container;
15945    TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
15946
15947
15948    //from query
15949    if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_from) )
15950      {
15951          if (pcst.container == null){
15952              return new TSelectSqlStatement(pdbvendor);
15953          }
15954
15955          // search select or insert who comes first,
15956          int lcpos1 = pcst.posinlist;
15957          TSourceTokenList lcsourcetokenlist1 = pcst.container;
15958          TSourceToken tmpSt;
15959          int parenthesisCnt = 0;
15960          for(int k=lcpos1+1;k<lcsourcetokenlist1.size();k++){
15961              tmpSt = lcsourcetokenlist1.get(k);
15962              if (tmpSt.tokencode == ';') break;
15963              if (tmpSt.tokencode == '(') parenthesisCnt++;
15964              if (tmpSt.tokencode == ')') parenthesisCnt--;
15965              if (parenthesisCnt == 0){
15966                  if (tmpSt.tokencode == TBaseType.rrw_select){
15967                      ret = new TSelectSqlStatement(pdbvendor);
15968                      break;
15969                  }else if (tmpSt.tokencode == TBaseType.rrw_insert){
15970                      ret = new TInsertSqlStatement(pdbvendor);
15971                      break;
15972                  }
15973              }
15974          }
15975
15976          if (ret == null){
15977              ret = new TSelectSqlStatement(pdbvendor);
15978//              FROM (
15979//                      FROM pv_users
15980//                      MAP pv_users.userid, pv_users.date
15981//                      USING 'map_script'
15982//              AS dt, uid
15983//              CLUSTER BY dt) map_output;
15984          }
15985
15986          return ret;
15987      }
15988
15989    //cte
15990    if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
15991    {
15992        ret = findcte(pcst,pdbvendor);
15993        if ( (ret != null) )  return ret;
15994    }
15995
15996    gnewsqlstatementtype = findhivecmd(pcst);
15997
15998    TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
15999    switch (gnewsqlstatementtype) {    //
16000        case sstinvalid:
16001          {
16002            ret = null;
16003            break;
16004          }
16005        case sstselect:
16006          {
16007            boolean lcisnewsql = true;
16008
16009            if ( pstate != EFindSqlStateType.stnormal )
16010              {
16011
16012                if ( (lccurrentsqlstatement != null) )
16013                  {
16014                    if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.ssthiveFromQuery )
16015                      //if (((TSelectSqlStatement)lccurrentsqlstatement).getSelectToken().tokencode == TBaseType.rrw_from)
16016                        lcisnewsql = false;
16017                  }
16018
16019              }
16020
16021            if ( lcisnewsql )
16022              ret = new TSelectSqlStatement(pdbvendor);
16023
16024            break;
16025          }
16026        case sstinsert:
16027          {
16028            boolean lcisnewsql = true;
16029            if ( pstate != EFindSqlStateType.stnormal )
16030              {
16031                if ( (lccurrentsqlstatement != null) )
16032                  {
16033                      if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.ssthiveFromQuery )
16034                         // if (((TSelectSqlStatement)lccurrentsqlstatement).getSelectToken().tokencode == TBaseType.rrw_from)
16035                             lcisnewsql = false;
16036                  }
16037              }
16038
16039            if ( lcisnewsql )
16040              ret = new TInsertSqlStatement(pdbvendor);
16041
16042            break;
16043          }
16044        case sstTruncate:
16045          {
16046              ret = new TTruncateStatement(pdbvendor);
16047              break;
16048          }
16049        case sstalterdatabase:
16050        {
16051            ret = new TAlterDatabaseStmt(pdbvendor);
16052            break;
16053        }
16054        case sstalterindex:
16055          {
16056            ret = new TAlterIndexStmt(pdbvendor);
16057              break;
16058          }
16059        case sstaltertable:
16060          {
16061            ret = new TAlterTableStatement(pdbvendor);
16062              break;
16063          }
16064        case sstalterview:
16065          {
16066            ret = new TAlterViewStatement(pdbvendor);
16067              break;
16068          }
16069        case sstanalyzeTable:
16070        {
16071            ret = new TAnalyzeStmt(pdbvendor);
16072            break;
16073        }
16074        case sstcreatedatabase:
16075          {
16076            ret = new TCreateDatabaseSqlStatement(pdbvendor);
16077              break;
16078          }
16079        case sstcreatetable:
16080          {
16081            ret = new TCreateTableSqlStatement(pdbvendor);
16082              break;
16083          }
16084        case sstcreateindex:
16085          {
16086            ret = new TCreateIndexSqlStatement(pdbvendor);
16087              break;
16088          }
16089        case sstcreateview:
16090          {
16091            ret = new TCreateViewSqlStatement(pdbvendor);
16092              break;
16093          }
16094        case ssthiveCreateRole:
16095        {
16096            ret = new THiveCreateRole(pdbvendor);
16097            break;
16098        }
16099        case ssthiveCreateFunction:
16100        {
16101            ret = new THiveCreateFunction(pdbvendor);
16102            break;
16103        }
16104        case ssthiveDesc:
16105        {
16106            ret = new THiveDescribe(pdbvendor);
16107            break;
16108        }
16109        case ssthiveDropDatabase:
16110        {
16111            ret = new THiveDropDatabase(pdbvendor);
16112            break;
16113        }
16114        case sstdropindex:
16115          {
16116            ret = new TDropIndexSqlStatement(pdbvendor);
16117              break;
16118          }
16119        case ssthiveDropRole:
16120        {
16121            ret = new THiveDropRole(pdbvendor);
16122              break;
16123        }
16124        case sstdroptable:
16125          {
16126            ret = new TDropTableSqlStatement(pdbvendor);
16127              break;
16128          }
16129        case ssthiveDropFunciton:
16130        {
16131            ret = new THiveDropFunction(pdbvendor);
16132              break;
16133        }
16134        case sstdropview:
16135          {
16136           ret = new TDropViewSqlStatement(pdbvendor);
16137              break;
16138          }
16139        case ssthiveExplain:
16140        {
16141            ret = new THiveExplain(pdbvendor);
16142            break;
16143        }
16144        case ssthiveExportTable:
16145        {
16146            ret = new THiveExportTable(pdbvendor);
16147               break;
16148        }
16149        case ssthiveGrant:
16150        {
16151            ret = new THiveGrant(pdbvendor);
16152               break;
16153        }
16154        case ssthiveGrantRole:
16155        {
16156            ret = new THiveGrantRole(pdbvendor);
16157               break;
16158        }
16159        case ssthiveImportTable:
16160        {
16161            ret = new THiveImportTable(pdbvendor);
16162               break;
16163        }
16164        case ssthiveLoad:
16165        {
16166            ret = new THiveLoad(pdbvendor);
16167               break;
16168        }
16169        case ssthiveLockTable:
16170        {
16171            ret = new TLockTableStmt(pdbvendor);
16172               break;
16173        }
16174        case sstmsck:
16175        {
16176            ret = new TMSCKStmt(pdbvendor);
16177               break;
16178        }
16179        case ssthiveRevoke:
16180        {
16181            ret = new THiveRevoke(pdbvendor);
16182               break;
16183        }
16184        case ssthiveRevokeRole:
16185        {
16186            ret = new THiveRevokeRole(pdbvendor);
16187               break;
16188        }
16189        case ssthiveSet:
16190        {
16191            ret = new THiveSet(pdbvendor);
16192               break;
16193        }
16194        case ssthiveShow:
16195        {
16196            ret = new THiveShow(pdbvendor);
16197               break;
16198        }
16199        case ssthiveShowGrants:
16200        {
16201            ret = new THiveShowGrant(pdbvendor);
16202               break;
16203        }
16204        case ssthiveShowRoleGrants:
16205        {
16206            ret = new THiveShowRoleGrant(pdbvendor);
16207               break;
16208        }
16209        case ssthiveUnlockTable:
16210        {
16211            ret = new THiveUnlockTable(pdbvendor);
16212               break;
16213        }
16214        case ssthiveSwitchDatabase:
16215        {
16216            ret = new TUseDatabase(pdbvendor);
16217               break;
16218        }
16219        case sstmerge:
16220        {
16221            ret = new TMergeSqlStatement(pdbvendor);
16222            break;
16223        }
16224        case sstupdate:
16225        {
16226            ret = new TUpdateSqlStatement(pdbvendor);
16227            break;
16228        }
16229        case sstdelete:
16230        {
16231            ret = new TDeleteSqlStatement(pdbvendor);
16232            break;
16233        }
16234        case sstCreateMacro:
16235            ret = new TCreateMacro(pdbvendor);
16236            break;
16237        case sstDropMacro:
16238            ret = new TDropMacro(pdbvendor);
16239            break;
16240        case sstcreatematerializedview:
16241            ret = new TCreateMaterializedSqlStatement(pdbvendor);
16242            break;
16243        case sstupsert:
16244            ret = new TUpsertStmt(pdbvendor);
16245            break;
16246        default:
16247          {
16248            ret = new TUnknownSqlStatement(pdbvendor);
16249            ret.sqlstatementtype = gnewsqlstatementtype;
16250            break;
16251          }
16252    }    // case
16253
16254    return ret;
16255}
16256
16257    TCustomSqlStatement isvertica(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
16258        TCustomSqlStatement ret = null;
16259
16260        gnewsqlstatementtype = ESqlStatementType.sstinvalid;
16261
16262        if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
16263                || (pcst.tokencode  == TBaseType.cmtslashstar)
16264                || (pcst.tokencode  == TBaseType.lexspace)
16265                || (pcst.tokencode  == TBaseType.lexnewline)
16266                || (pcst.tokentype == ETokenType.ttsemicolon) )
16267        {
16268            return null;
16269        }
16270
16271        int lcpos = pcst.posinlist;
16272        TSourceTokenList lcsourcetokenlist = pcst.container;
16273        TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
16274
16275        //subquery after semicolon or at first line
16276        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
16277        {
16278            int k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
16279            if ( k >0 )
16280            {
16281                ret = new TSelectSqlStatement(pdbvendor);
16282            }
16283
16284            return ret;
16285        }
16286
16287        //cte
16288        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
16289        {
16290            ret = findcte(pcst,pdbvendor);
16291            if ( (ret != null) )  return ret;
16292        }
16293
16294        gnewsqlstatementtype = findverticacmd(pcst);
16295
16296        TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
16297        switch (gnewsqlstatementtype) {    //
16298            case sstinvalid:
16299            {
16300                ret = null;
16301
16302                if ( pstate == EFindSqlStateType.stnormal )
16303                {
16304                    if ( pcst.tokencode == TBaseType.label_begin )
16305                    {
16306                        ret = new TCommonBlock(pdbvendor);
16307                        gnewsqlstatementtype = ret.sqlstatementtype;
16308                    }
16309                    else if ( pcst.tokencode == TBaseType.rrw_declare )
16310                    {
16311                        ret = new TCommonBlock(pdbvendor);
16312                        gnewsqlstatementtype = ret.sqlstatementtype;
16313                    }
16314                    else if ( pcst.tokencode == TBaseType.rrw_begin )
16315                    {
16316                        ret = new TCommonBlock(pdbvendor);
16317                        gnewsqlstatementtype = ret.sqlstatementtype;
16318                    }
16319                    else if ( pcst.tokencode == TBaseType.rrw_procedure )
16320                    {
16321                        ret = new TPlsqlCreateProcedure(pdbvendor);
16322                        // ret.sqlstatementtype = ESqlStatementType.sstplsql_createprocedure;
16323                        gnewsqlstatementtype = ret.sqlstatementtype;
16324                    }
16325                    else if ( pcst.tokencode == TBaseType.rrw_function )
16326                    {
16327                        ret = new TPlsqlCreateFunction(pdbvendor);
16328                        // ret.sqlstatementtype = ESqlStatementType.sstplsql_createfunction;
16329                        gnewsqlstatementtype = ret.sqlstatementtype;
16330                    }
16331                    else if ( pcst.tokencode == TBaseType.rrw_package )
16332                    {
16333                        ret = new TPlsqlCreatePackage(pdbvendor);
16334                        // ret.sqlstatementtype = ESqlStatementType.sstplsql_createpackage;
16335                        gnewsqlstatementtype = ret.sqlstatementtype;
16336                    }
16337                }
16338                break;
16339            }
16340            case sstselect:
16341            {
16342                boolean lcisnewsql = true;
16343
16344                if ( pstate != EFindSqlStateType.stnormal )
16345                {
16346                    // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
16347                    if ( (lcprevsolidtoken != null) )
16348                    {
16349                        if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
16350                            lcisnewsql = false; //subqery
16351                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
16352                            lcisnewsql = false;
16353                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
16354                            lcisnewsql = false;
16355                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
16356                            lcisnewsql = false;
16357                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
16358                            lcisnewsql = false;
16359                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
16360                            lcisnewsql = false;
16361                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
16362                        {
16363                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
16364                                lcisnewsql = false;
16365                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
16366                                lcisnewsql = false;
16367                        }
16368
16369                        if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
16370                        {
16371                            TSourceToken lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
16372                            if ( (lcpprevsolidtoken != null) )
16373                            {
16374                                if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
16375                                    lcisnewsql = false;
16376                            }
16377                        }
16378
16379                    }
16380
16381
16382                    if ( (lccurrentsqlstatement != null) )
16383                    {
16384                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
16385                            lcisnewsql = false;
16386                    }
16387
16388                }
16389
16390                if ( lcisnewsql )
16391                    ret = new TSelectSqlStatement(pdbvendor);
16392
16393                break;
16394            }
16395            case sstinsert:
16396            {
16397                boolean lcisnewsql = true;
16398                if ( pstate != EFindSqlStateType.stnormal )
16399                {
16400                    if ( (lccurrentsqlstatement != null) )
16401                    {
16402
16403                    }
16404                }
16405
16406                if ( lcisnewsql )
16407                    ret = new TInsertSqlStatement(pdbvendor);
16408
16409                break;
16410            }
16411            case sstupdate:
16412            {
16413                boolean lcisnewsql = true;
16414                if ( pstate != EFindSqlStateType.stnormal )
16415                {
16416                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
16417                    if ( (lcprevsolidtoken != null) )
16418                    { //
16419                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
16420                            lcisnewsql = false;
16421                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
16422                            lcisnewsql = false;
16423                    }
16424
16425                    TSourceToken lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
16426                    if ( (lcnextsolidtoken != null) )
16427                    {
16428                        if ( lcnextsolidtoken.tokentype == ETokenType.ttleftparenthesis)
16429                        {
16430                            int k = lcsourcetokenlist.solidtokenafterpos(lcnextsolidtoken.posinlist,TBaseType.rrw_select,1,"(");
16431                            if ( k  == 0 ) lcisnewsql = false;
16432                        }
16433                    }
16434
16435
16436                    if ( (lccurrentsqlstatement != null) )
16437                    {
16438                    }
16439                }
16440
16441                if ( lcisnewsql )
16442                {
16443                    ret = new TUpdateSqlStatement(pdbvendor);
16444                    ret.dummytag = 1; // means set clause in update is not found yet, used to seperate set clause from set statement
16445                }
16446                break;
16447            }
16448            case sstdelete:
16449            {
16450                boolean lcisnewsql = true;
16451
16452                if ( pstate != EFindSqlStateType.stnormal )
16453                {
16454                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
16455                    if ( (lcprevsolidtoken != null) )
16456                    {
16457                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
16458                            lcisnewsql = false;
16459                    }
16460
16461                    if ( (lccurrentsqlstatement != null) )
16462                    {
16463                    }
16464                }
16465
16466                if ( lcisnewsql )
16467                    ret = new TDeleteSqlStatement(pdbvendor);
16468
16469                break;
16470            }
16471            case sstmerge:
16472            {
16473                ret = new TMergeSqlStatement(pdbvendor);
16474                ret.sqlstatementtype = gnewsqlstatementtype;
16475                break;
16476            }
16477            case sstcommit:
16478            case sstEnd:
16479            {
16480                ret = new TCommitStmt(pdbvendor);
16481                ret.sqlstatementtype = gnewsqlstatementtype;
16482                break;
16483            }
16484            case sstrollback:
16485            {
16486                ret = new TRollbackStmt(pdbvendor);
16487                ret.sqlstatementtype = gnewsqlstatementtype;
16488                break;
16489            }
16490            case sstsavepoint:
16491            {
16492                ret = new TSavepointStmt(pdbvendor);
16493                ret.sqlstatementtype = gnewsqlstatementtype;
16494                break;
16495            }
16496            case sstRevoke:
16497            {
16498                ret = new TRevokeStmt(pdbvendor);
16499                ret.sqlstatementtype = gnewsqlstatementtype;
16500                break;
16501            }
16502            case sstGrant:
16503            {
16504                ret = new TGrantStmt(pdbvendor);
16505                ret.sqlstatementtype = gnewsqlstatementtype;
16506                break;
16507            }
16508            case sstTruncate:
16509            {
16510                ret = new TTruncateStatement(pdbvendor);
16511                ret.sqlstatementtype = gnewsqlstatementtype;
16512                break;
16513            }
16514            case sstcreatetable:
16515            {
16516                ret = new TCreateTableSqlStatement(pdbvendor);
16517                break;
16518            }
16519            case sstcreateview:
16520            {
16521                ret = new TCreateViewSqlStatement(pdbvendor);
16522                break;
16523            }
16524            case sstcreateindex:
16525            {
16526                ret = new TCreateIndexSqlStatement(pdbvendor);
16527                break;
16528            }
16529            case sstcreatedatabase:
16530            {
16531                ret = new TCreateDatabaseSqlStatement(pdbvendor);
16532                break;
16533            }
16534            case sstdroptable:
16535            {
16536                ret = new TDropTableSqlStatement(pdbvendor);
16537                break;
16538            }
16539            case sstdropview:
16540            {
16541                ret = new TDropViewSqlStatement(pdbvendor);
16542                break;
16543            }
16544            case sstdropindex:
16545            {
16546                ret = new TDropIndexSqlStatement(pdbvendor);
16547                break;
16548            }
16549            case sstaltertable:
16550            {
16551                ret = new TAlterTableStatement(pdbvendor);
16552                break;
16553            }
16554            case sstaltersession:
16555            {
16556                ret = new TAlterSessionStatement(pdbvendor);
16557                break;
16558            }
16559            case sstcreateprocedure:
16560            {
16561                ret = new TCreateProcedureStmt(pdbvendor);
16562                break;
16563            }
16564            case sstCommentOn:
16565            {
16566                ret = new TCommentOnSqlStmt(pdbvendor);
16567                break;
16568            }
16569            case sstcreatesequence:
16570            {
16571                ret = new TCreateSequenceStmt(pdbvendor);
16572                break;
16573            }
16574            case sstcreatefunction:
16575                ret = new TVerticaCreateFunction(pdbvendor);
16576                break;
16577            case sstaltersequence:
16578                ret = new TAlterSequenceStatement(pdbvendor);
16579                break;
16580            case sstAlterAccessPolicy:
16581                ret = new TAlterAccessPolicy(pdbvendor);
16582                break;
16583            case sstAlterAuthentication:
16584                ret = new TAlterAuthentication(pdbvendor);
16585                break;
16586            case sstalterdatabase:
16587                ret = new TAlterDatabaseStmt(pdbvendor);
16588                break;
16589            case sstAlterFaultGroup:
16590                ret = new TAlterFaultGroup(pdbvendor);
16591                break;
16592            case sstalterfunction:
16593                ret = new TAlterFunctionStmt(pdbvendor);
16594                break;
16595            case sstAlterLibrary:
16596                ret = new TAlterLibraryStmt(pdbvendor);
16597                break;
16598            case sstAlterNode:
16599                 ret = new TAlterNode(pdbvendor);
16600                break;
16601            case sstAlterNetworkInterface:
16602                ret = new TAlterNetworkInterface(pdbvendor);
16603                break;
16604            case sstAlterProjection:
16605                ret = new TAlterProjectionRename(pdbvendor);
16606                break;
16607            case sstAlterProfile:
16608                ret = new TAlterProfile(pdbvendor);
16609                break;
16610            case sstAlterResourcePool:
16611                ret = new TAlterResourcePool(pdbvendor);
16612                break;
16613            case sstAlterRole:
16614                ret = new TAlterRoleStmt(pdbvendor);
16615                break;
16616            case sstAlterSchema:
16617                ret = new TAlterSchemaStmt(pdbvendor);
16618                break;
16619            case sstAlterSubnet:
16620                ret = new TAlterSubnet(pdbvendor);
16621                break;
16622            case sstBegin:
16623            case sstStartTransaction:
16624                ret = new TBeginTran(pdbvendor);
16625                break;
16626            case sstReleaseSavepoint:
16627                ret = new TReleaseSavepointStmt(pdbvendor);
16628                break;
16629            case sstconnect:
16630                ret = new TConnectStmt(pdbvendor);
16631                break;
16632            case sstCreateAccessPolicy:
16633                ret = new TCreateAccessPolicy(pdbvendor);
16634                break;
16635            case sstCreateAuthentication:
16636                ret = new TCreateAuthentication(pdbvendor);
16637                break;
16638            case sstCreateFaultGroup:
16639                ret = new TCreateFaultGroup(pdbvendor);
16640                break;
16641            case sstCreateHCatalogSchema:
16642                ret = new TCreateHCatalogSchema(pdbvendor);
16643                break;
16644            case sstCreateSubnet:
16645                ret = new TCreateSubnet(pdbvendor);
16646                break;
16647            case sstcreateuser:
16648                ret = new TCreateUserStmt(pdbvendor);
16649                break;
16650            case sstDisconnect:
16651                ret = new TDisconnectStmt(pdbvendor);
16652                break;
16653            case sstDropAccessPolicy:
16654                ret = new TDropAccessPolicy(pdbvendor);
16655                break;
16656            case sstDropAggregateFunction:
16657                ret = new TDropAggregateFunction(pdbvendor);
16658                break;
16659            case sstDropAuthentication:
16660                ret = new TDropAuthentication(pdbvendor);
16661                break;
16662            case sstDropFaultGroup:
16663                ret = new TDropFaultGroup(pdbvendor);
16664                break;
16665            case sstdropfunction:
16666                ret = new TDropFunctionStmt(pdbvendor);
16667                break;
16668            case sstDropLibrary:
16669                ret = new TDropLibraryStmt(pdbvendor);
16670                break;
16671            case sstDropNetworkInterface:
16672                ret = new TDropNetworkInterface(pdbvendor);
16673                break;
16674            case sstdropprocedure:
16675                ret = new TDropProcedureStmt(pdbvendor);
16676                break;
16677            case sstDropProjection:
16678                ret = new TDropProjectionStmt(pdbvendor);
16679                break;
16680            case sstDropResourcePool:
16681                ret = new TDropResourcePool(pdbvendor);
16682                break;
16683            case sstdroprole:
16684                ret  = new TDropRoleStmt(pdbvendor);
16685                break;
16686            case sstdropschema:
16687                ret = new TDropSchemaSqlStatement(pdbvendor);
16688                break;
16689            case sstdropsequence:
16690                ret = new TDropSequenceStmt(pdbvendor);
16691                break;
16692            case sstDropSubnet:
16693                ret = new TDropSubnet(pdbvendor);
16694                break;
16695            case sstDropTextIndex:
16696                ret = new TDropTextIndex(pdbvendor);
16697                break;
16698            case sstDropTransformFunction:
16699                ret = new TDropTransformFunction(pdbvendor);
16700                break;
16701            case sstdropuser:
16702                ret = new TDropUserStmt(pdbvendor);
16703                break;
16704            case sstExplain:
16705            {
16706                ret = new TExplainPlan(pdbvendor);
16707                break;
16708            }
16709            case sstExportToVertica:
16710                ret = new TExportToVertica(pdbvendor);
16711                break;
16712            case sstProfile:
16713                ret = new TProfileStmt(pdbvendor);
16714                break;
16715            case sstset:
16716                ret = new TVerticaSetStmt(pdbvendor);
16717                break;
16718            case sstShow:
16719                ret = new TVerticaShow(pdbvendor);
16720                break;
16721            case sstcall:
16722                ret = new TCallStatement(pdbvendor);
16723                break;
16724            default:
16725            {
16726                ret = new TUnknownSqlStatement(pdbvendor);
16727                ret.sqlstatementtype = gnewsqlstatementtype;
16728                break;
16729            }
16730        }    // case
16731
16732        return ret;
16733    }
16734
16735
16736    TCustomSqlStatement iscouchbase(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
16737        TCustomSqlStatement ret = null;
16738
16739        gnewsqlstatementtype = ESqlStatementType.sstinvalid;
16740
16741        if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
16742                || (pcst.tokencode  == TBaseType.cmtslashstar)
16743                || (pcst.tokencode  == TBaseType.lexspace)
16744                || (pcst.tokencode  == TBaseType.lexnewline)
16745                || (pcst.tokentype == ETokenType.ttsemicolon) )
16746        {
16747            return null;
16748        }
16749
16750        int lcpos = pcst.posinlist;
16751        TSourceTokenList lcsourcetokenlist = pcst.container;
16752        TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
16753
16754        //subquery after semicolon or at first line
16755        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
16756        {
16757            int k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
16758            if ( k >0 )
16759            {
16760                ret = new TSelectSqlStatement(pdbvendor);
16761            }
16762
16763            return ret;
16764        }
16765
16766        //cte
16767        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
16768        {
16769            ret = findcte(pcst,pdbvendor);
16770            if ( (ret != null) )  return ret;
16771        }
16772
16773        gnewsqlstatementtype = findcouchbasecmd(pcst);
16774
16775        TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
16776        switch (gnewsqlstatementtype) {    //
16777            case sstinvalid:
16778            {
16779                ret = null;
16780
16781                if ( pstate == EFindSqlStateType.stnormal )
16782                {
16783                    if ( pcst.tokencode == TBaseType.label_begin )
16784                    {
16785                        ret = new TCommonBlock(pdbvendor);
16786                        gnewsqlstatementtype = ret.sqlstatementtype;
16787                    }
16788                    else if ( pcst.tokencode == TBaseType.rrw_declare )
16789                    {
16790                        ret = new TCommonBlock(pdbvendor);
16791                        gnewsqlstatementtype = ret.sqlstatementtype;
16792                    }
16793                    else if ( pcst.tokencode == TBaseType.rrw_begin )
16794                    {
16795                        ret = new TCommonBlock(pdbvendor);
16796                        gnewsqlstatementtype = ret.sqlstatementtype;
16797                    }
16798                    else if ( pcst.tokencode == TBaseType.rrw_procedure )
16799                    {
16800                        ret = new TPlsqlCreateProcedure(pdbvendor);
16801                        // ret.sqlstatementtype = ESqlStatementType.sstplsql_createprocedure;
16802                        gnewsqlstatementtype = ret.sqlstatementtype;
16803                    }
16804                    else if ( pcst.tokencode == TBaseType.rrw_function )
16805                    {
16806                        ret = new TPlsqlCreateFunction(pdbvendor);
16807                        // ret.sqlstatementtype = ESqlStatementType.sstplsql_createfunction;
16808                        gnewsqlstatementtype = ret.sqlstatementtype;
16809                    }
16810                    else if ( pcst.tokencode == TBaseType.rrw_package )
16811                    {
16812                        ret = new TPlsqlCreatePackage(pdbvendor);
16813                        // ret.sqlstatementtype = ESqlStatementType.sstplsql_createpackage;
16814                        gnewsqlstatementtype = ret.sqlstatementtype;
16815                    }
16816                }
16817                break;
16818            }
16819            case sstselect:
16820            {
16821                boolean lcisnewsql = true;
16822
16823                if ( pstate != EFindSqlStateType.stnormal )
16824                {
16825                    // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
16826                    if ( (lcprevsolidtoken != null) )
16827                    {
16828                        if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
16829                            lcisnewsql = false; //subqery
16830                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
16831                            lcisnewsql = false;
16832                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
16833                            lcisnewsql = false;
16834                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
16835                            lcisnewsql = false;
16836                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
16837                            lcisnewsql = false;
16838                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
16839                            lcisnewsql = false;
16840                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
16841                        {
16842                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
16843                                lcisnewsql = false;
16844                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
16845                                lcisnewsql = false;
16846                        }
16847
16848                        if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
16849                        {
16850                            TSourceToken lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
16851                            if ( (lcpprevsolidtoken != null) )
16852                            {
16853                                if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
16854                                    lcisnewsql = false;
16855                            }
16856                        }
16857
16858                    }
16859
16860
16861                    if ( (lccurrentsqlstatement != null) )
16862                    {
16863                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
16864                            lcisnewsql = false;
16865                    }
16866
16867                }
16868
16869                if ( lcisnewsql )
16870                    ret = new TSelectSqlStatement(pdbvendor);
16871
16872                break;
16873            }
16874            case sstinsert:
16875            {
16876                boolean lcisnewsql = true;
16877                if ( pstate != EFindSqlStateType.stnormal )
16878                {
16879                    if ( (lccurrentsqlstatement != null) )
16880                    {
16881
16882                    }
16883                }
16884
16885                if ( lcisnewsql )
16886                    ret = new TInsertSqlStatement(pdbvendor);
16887
16888                break;
16889            }
16890            case sstupdate:
16891            {
16892                boolean lcisnewsql = true;
16893                if ( pstate != EFindSqlStateType.stnormal )
16894                {
16895                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
16896                    if ( (lcprevsolidtoken != null) )
16897                    { //
16898                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
16899                            lcisnewsql = false;
16900                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
16901                            lcisnewsql = false;
16902                    }
16903
16904                    TSourceToken lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
16905                    if ( (lcnextsolidtoken != null) )
16906                    {
16907                        if ( lcnextsolidtoken.tokentype == ETokenType.ttleftparenthesis)
16908                        {
16909                            int k = lcsourcetokenlist.solidtokenafterpos(lcnextsolidtoken.posinlist,TBaseType.rrw_select,1,"(");
16910                            if ( k  == 0 ) lcisnewsql = false;
16911                        }
16912                    }
16913
16914
16915                    if ( (lccurrentsqlstatement != null) )
16916                    {
16917                    }
16918                }
16919
16920                if ( lcisnewsql )
16921                {
16922                    ret = new TUpdateSqlStatement(pdbvendor);
16923                    ret.dummytag = 1; // means set clause in update is not found yet, used to seperate set clause from set statement
16924                }
16925                break;
16926            }
16927            case sstdelete:
16928            {
16929                boolean lcisnewsql = true;
16930
16931                if ( pstate != EFindSqlStateType.stnormal )
16932                {
16933                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
16934                    if ( (lcprevsolidtoken != null) )
16935                    {
16936                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
16937                            lcisnewsql = false;
16938                    }
16939
16940                    if ( (lccurrentsqlstatement != null) )
16941                    {
16942                    }
16943                }
16944
16945                if ( lcisnewsql )
16946                    ret = new TDeleteSqlStatement(pdbvendor);
16947
16948                break;
16949            }
16950            case sstmerge:
16951            {
16952                ret = new TMergeSqlStatement(pdbvendor);
16953                ret.sqlstatementtype = gnewsqlstatementtype;
16954                break;
16955            }
16956            case sstcreateindex:
16957            {
16958                ret = new TCreateIndexSqlStatement(pdbvendor);
16959                break;
16960            }
16961            case sstdropindex:
16962            {
16963                ret = new TDropIndexSqlStatement(pdbvendor);
16964                break;
16965            }
16966            case sstBuildIndex:
16967                ret = new TTBuildIndexesStmt(pdbvendor);
16968                break;
16969            case sstinfer:
16970                ret = new TInferKeyspaceStmt(pdbvendor);
16971                break;
16972            case sstupsert:
16973                ret = new TUpsertStmt(pdbvendor);
16974                break;
16975            case sstExplain:
16976            {
16977                ret = new TExplainPlan(pdbvendor);
16978                break;
16979            }
16980            case sstprepare:
16981            {
16982                ret = new TExplainPlan(pdbvendor);
16983                ret.sqlstatementtype = ESqlStatementType.sstprepare;
16984                break;
16985            }
16986            case sstExecutePreparedStmt:
16987                ret = new TExecuteSqlStatement(pdbvendor);
16988                break;
16989            default:
16990            {
16991                ret = new TUnknownSqlStatement(pdbvendor);
16992                ret.sqlstatementtype = gnewsqlstatementtype;
16993                break;
16994            }
16995        }    // case
16996
16997        return ret;
16998    }
16999
17000}