001package gudusoft.gsqlparser.sqlcmds;
002
003//import gudusoft.gsqlparser.*;
004import gudusoft.gsqlparser.*;
005import gudusoft.gsqlparser.stmt.*;
006import gudusoft.gsqlparser.stmt.bigquery.TExportDataStmt;
007import gudusoft.gsqlparser.stmt.couchbase.TInferKeyspaceStmt;
008import gudusoft.gsqlparser.stmt.couchbase.TTBuildIndexesStmt;
009import gudusoft.gsqlparser.stmt.databricks.*;
010import gudusoft.gsqlparser.stmt.hana.*;
011import gudusoft.gsqlparser.stmt.hive.*;
012import gudusoft.gsqlparser.stmt.informix.*;
013import gudusoft.gsqlparser.stmt.netezza.TNetezzaGenerateStatistics;
014import gudusoft.gsqlparser.stmt.netezza.TNetezzaGroomTable;
015import gudusoft.gsqlparser.stmt.postgresql.*;
016import gudusoft.gsqlparser.stmt.presto.TResetSessionStmt;
017import gudusoft.gsqlparser.stmt.redshift.*;
018import gudusoft.gsqlparser.stmt.snowflake.*;
019import gudusoft.gsqlparser.stmt.sparksql.*;
020import gudusoft.gsqlparser.stmt.sybase.TInsertBulk;
021import gudusoft.gsqlparser.stmt.sybase.TSybaseDeleteStatistics;
022import gudusoft.gsqlparser.stmt.sybase.TSybaseWritetext;
023import gudusoft.gsqlparser.stmt.teradata.*;
024import gudusoft.gsqlparser.stmt.mysql.*;
025import gudusoft.gsqlparser.stmt.db2.*;
026import gudusoft.gsqlparser.stmt.mssql.*;
027import gudusoft.gsqlparser.stmt.oracle.*;
028import gudusoft.gsqlparser.stmt.mdx.*;
029import gudusoft.gsqlparser.stmt.vertica.*;
030
031
032public class TSqlCmds {
033
034    /**
035     * @deprecated Use standalone TSqlCmd class directly
036     */
037    @Deprecated
038    public class TSqlCmd extends gudusoft.gsqlparser.sqlcmds.TSqlCmd {
039        public TSqlCmd() {
040            super();
041        }
042    }
043
044    /**
045     * @deprecated Use standalone TSqlCmdList class directly
046     */
047    @Deprecated
048    public class TSqlCmdList extends gudusoft.gsqlparser.sqlcmds.TSqlCmdList {
049        public TSqlCmdList() {
050            super();
051        }
052    }
053
054    TSqlCmdList mssqlcmds,oraclecmds,db2cmds,mysqlcmds,accesscmds,mdxcmds,teradatacmds,
055            postgresqlcmds,netezzacmds,sybasecmds,sybaseasecmds,sqlanywherecmds,sybaseiqcmds,informixcmds,hivecmds,greenplumcmds,
056            redshiftcmds,hanacmds,verticacmds,couchbasecmds,snowflakecmds,bigquerycmds,
057            sparksqlcmds,prestocmds,athenacmds,databrickscmds,gaussdbcmds;
058
059    public TSqlCmdList getSqlCmdList(EDbVendor dbVendor){
060        TSqlCmdList sqlCmdList = null;
061        switch(dbVendor){
062            case dbvmssql:
063                if (mssqlcmds.size() == 0) {initmssqlcmds();}
064                sqlCmdList = mssqlcmds;
065                break;
066            case dbvoracle:
067                if (oraclecmds.size() == 0) {initoraclecmds();}
068                sqlCmdList = oraclecmds;
069                break;
070            case dbvdameng:
071                if (oraclecmds.size() == 0) {initoraclecmds();}
072                sqlCmdList = oraclecmds;
073                break;
074            case dbvmysql:
075                if (mysqlcmds.size() == 0) {initmysqlcmds();}
076                sqlCmdList = mysqlcmds;
077                break;
078            case dbvoceanbase:
079                // Phase 1: route to MySQL command list since OceanBase MYSQL
080                // mode shares the MySQL command surface. ORACLE-mode OB
081                // statements use OracleSqlParser's internal command resolver
082                // when delegated through OceanBaseSqlParser.
083                if (mysqlcmds.size() == 0) {initmysqlcmds();}
084                sqlCmdList = mysqlcmds;
085                break;
086            case dbvdb2:
087                if (db2cmds.size() == 0) {initdb2cmds();}
088                sqlCmdList = db2cmds;
089                break;
090            case dbvmdx:
091                if (mdxcmds.size() == 0) {initmdxcmds();}
092                sqlCmdList = mdxcmds;
093                break;
094            case dbvteradata:
095                if (teradatacmds.size() == 0) {initteradatacmds();}
096                sqlCmdList = teradatacmds;
097                break;
098            case dbvpostgresql:
099                if (postgresqlcmds.size() == 0) {initpostgresqlcmds();}
100                sqlCmdList = postgresqlcmds;
101                break;
102            case dbvredshift:
103                if (redshiftcmds.size() == 0) {initredshiftcmds();}
104                sqlCmdList = redshiftcmds;
105                break;
106            case dbvnetezza:
107                if (netezzacmds.size() == 0) {initnetezzacmds();}
108                sqlCmdList = netezzacmds;
109                break;
110            case dbvsybase:
111                if (sybasecmds.size() == 0) {initsybasecmds();}
112                sqlCmdList = sybasecmds;
113                break;
114            case dbvsybasease:
115                if (sybaseasecmds.size() == 0) {initsybaseasecmds();}
116                sqlCmdList = sybaseasecmds;
117                break;
118            case dbvsqlanywhere:
119                if (sqlanywherecmds.size() == 0) {initsqlanywherecmds();}
120                sqlCmdList = sqlanywherecmds;
121                break;
122            case dbvsybaseiq:
123                if (sybaseiqcmds.size() == 0) {initsybaseiqcmds();}
124                sqlCmdList = sybaseiqcmds;
125                break;
126            case dbvinformix:
127                if (informixcmds.size() == 0) {initinformixcmds();}
128                sqlCmdList = informixcmds;
129                break;
130            case dbvhive:
131                if (hivecmds.size() == 0) {inithivecmds();}
132                sqlCmdList = hivecmds;
133                break;
134            case dbvimpala:
135                if (hivecmds.size() == 0) {inithivecmds();
136                }
137                sqlCmdList = hivecmds;
138                break;
139            case dbvgreenplum:
140                if (greenplumcmds.size() == 0) {initgreenplumcmds();
141                }
142                sqlCmdList = greenplumcmds;
143                break;
144            case dbvhana:
145                if (hanacmds.size() == 0) {inithanacmds();
146                }
147                sqlCmdList = hanacmds;
148                break;
149            case dbvvertica:
150                if (verticacmds.size() == 0) {initverticacmds();
151                }
152                sqlCmdList = verticacmds;
153                break;
154            case dbvcouchbase:
155                if (couchbasecmds.size() == 0) {initcouchbasecmds();
156                }
157                sqlCmdList = couchbasecmds;
158                break;
159            case dbvsnowflake:
160                if (snowflakecmds.size() == 0) {initsnowflakecmds();
161                }
162                sqlCmdList = snowflakecmds;
163                break;
164            case dbvbigquery:
165                if (bigquerycmds.size() == 0) {initbigquerycmds();
166                }
167                sqlCmdList = bigquerycmds;
168                break;
169            case dbvsparksql:
170                if (sparksqlcmds.size() == 0) {initsparksqlcmds();
171                }
172                sqlCmdList = sparksqlcmds;
173                break;
174            case dbvpresto:
175                if (prestocmds.size() == 0) {initprestocmds();
176                }
177                sqlCmdList = prestocmds;
178                break;
179            case dbvathena:
180                if (athenacmds.size() == 0) {initathenacmds();
181                }
182                sqlCmdList = athenacmds;
183                break;
184            case dbvdatabricks:
185                if (databrickscmds.size() == 0) {initdatabrickscmds();
186                }
187                sqlCmdList = databrickscmds;
188                break;
189            case dbvgaussdb:
190                if (gaussdbcmds.size() == 0) {initgaussdbcmds();
191                }
192                sqlCmdList = gaussdbcmds;
193                break;
194        }
195        return  sqlCmdList;
196    }
197
198    ESqlStatementType gnewsqlstatementtype;
199
200   // int  mssqlcmdscurrentcount,oraclecmdscurrentcount,db2cmdscurrentcount,mysqlcmdscurrentcount,mdxcmdscurrentcount ;
201
202    public TSqlCmds(){
203//        mssqlcmdscurrentcount = 0;
204//        oraclecmdscurrentcount = 0;
205//        db2cmdscurrentcount = 0;
206//        mysqlcmdscurrentcount = 0;
207//        mdxcmdscurrentcount = 0;
208        mssqlcmds = new TSqlCmdList();
209        sybasecmds = new TSqlCmdList();
210        sybaseasecmds = new TSqlCmdList();
211        sqlanywherecmds = new TSqlCmdList();
212        sybaseiqcmds = new TSqlCmdList();
213        oraclecmds = new TSqlCmdList();
214        db2cmds = new TSqlCmdList();
215        mysqlcmds = new TSqlCmdList();
216        accesscmds = new TSqlCmdList();
217        mdxcmds = new TSqlCmdList();
218        teradatacmds = new TSqlCmdList();
219        postgresqlcmds = new TSqlCmdList();
220        netezzacmds = new TSqlCmdList();
221        informixcmds = new TSqlCmdList();
222        hivecmds = new TSqlCmdList();
223        greenplumcmds = new TSqlCmdList();
224        redshiftcmds = new TSqlCmdList();
225        hanacmds = new TSqlCmdList();
226        verticacmds = new TSqlCmdList();
227        couchbasecmds = new TSqlCmdList();
228        snowflakecmds = new TSqlCmdList();
229        bigquerycmds = new TSqlCmdList();
230        sparksqlcmds = new TSqlCmdList();
231        prestocmds = new TSqlCmdList();
232        athenacmds = new TSqlCmdList();
233        databrickscmds = new TSqlCmdList();
234        gaussdbcmds = new TSqlCmdList();
235    }
236
237    void addcmds(EDbVendor dbVendor, ESqlStatementType psqlstatementtype, int ptoken1, String ptoken2, String ptoken3, String ptoken4, String ptoken5,String ptoken6,String ptoken7){
238      TSqlCmd sc = new TSqlCmd();
239      sc.sqlstatementtype = psqlstatementtype;
240      sc.token1 = ptoken1;
241      sc.token2 = ptoken2;
242      sc.token3 = ptoken3;
243      sc.token4 = ptoken4;
244      sc.token5 = ptoken5;
245      sc.token6 = ptoken6;
246      sc.token7 = ptoken7;
247      switch(dbVendor){
248          case dbvmssql:
249              if (sc.token1 > TBaseType.rrw_abort){
250                  switch (sc.token1){
251                      case TBaseType.rrw_sqlserver_throw:
252                          sc.token1Str = "throw";
253                          break;
254                      default:
255                          break;
256                  }
257              }
258              mssqlcmds.add(sc);
259              break;
260          case dbvoracle:
261              oraclecmds.add(sc);
262              break;
263          case dbvdameng:
264              oraclecmds.add(sc);
265              break;
266          case dbvmysql:
267              if (sc.token1 > TBaseType.rrw_abort){
268                  switch (sc.token1){
269                      case TBaseType.rrw_mysql_delimiter:
270                          sc.token1Str = "delimiter";
271                          break;
272                      case TBaseType.rrw_mysql_desc:
273                          sc.token1Str = "desc";
274                          break;
275                      default:
276                          break;
277                  }
278              }
279              mysqlcmds.add(sc);
280              break;
281          case dbvoceanbase:
282              // Phase 1: route to MySQL command list — see getSqlCmdList()
283              // case dbvoceanbase for rationale.
284              if (sc.token1 > TBaseType.rrw_abort){
285                  switch (sc.token1){
286                      case TBaseType.rrw_mysql_delimiter:
287                          sc.token1Str = "delimiter";
288                          break;
289                      case TBaseType.rrw_mysql_desc:
290                          sc.token1Str = "desc";
291                          break;
292                      default:
293                          break;
294                  }
295              }
296              mysqlcmds.add(sc);
297              break;
298          case dbvdb2:
299              db2cmds.add(sc);
300              break;
301          case dbvmdx:
302              mdxcmds.add(sc);
303              break;
304          case dbvteradata:
305              if (sc.token1 > TBaseType.rrw_abort){
306                  switch (sc.token1){
307                      case TBaseType.rrw_teradata_wait:
308                          sc.token1Str = "wait";
309                          break;
310                      case TBaseType.rrw_teradata_using:
311                          sc.token1Str = "using";
312                          break;
313                      case TBaseType.rrw_teradata_upd:
314                          sc.token1Str = "update";
315                          break;
316                      case TBaseType.rrw_teradata_sel:
317                          sc.token1Str = "select";
318                          break;
319                      case TBaseType.rrw_teradata_restart:
320                          sc.token1Str = "restart";
321                          break;
322                      case TBaseType.rrw_teradata_position:
323                          sc.token1Str = "position";
324                          break;
325                      case TBaseType.rrw_teradata_modify:
326                          sc.token1Str = "modify";
327                          break;
328                      case TBaseType.rrw_teradata_logon:
329                          sc.token1Str = "logon";
330                          break;
331                      case TBaseType.rrw_teradata_locking:
332                          sc.token1Str = "locking";
333                          break;
334                      case TBaseType.rrw_teradata_ins:
335                          sc.token1Str = "insert";
336                          break;
337                      case TBaseType.rrw_teradata_help:
338                          sc.token1Str = "help";
339                          break;
340                      case TBaseType.rrw_teradata_give:
341                          sc.token1Str = "give";
342                          break;
343                      case TBaseType.rrw_teradata_echo:
344                          sc.token1Str = "echo";
345                          break;
346                      case TBaseType.rrw_teradata_dump:
347                          sc.token1Str = "dump";
348                          break;
349                      case TBaseType.rrw_teradata_diagnostic:
350                          sc.token1Str = "diagnostic";
351                          break;
352                      case TBaseType.rrw_teradata_del:
353                          sc.token1Str = "delete";
354                          break;
355                      case TBaseType.rrw_teradata_cv:
356                          sc.token1Str = "create view";
357                          break;
358                      case TBaseType.rrw_teradata_collect:
359                          sc.token1Str = "collect";
360                          break;
361                      case TBaseType.rrw_teradata_cm:
362                          sc.token1Str = "create macro";
363                          break;
364                      default:
365                          break;
366                  }
367              }
368              teradatacmds.add(sc);
369              break;
370          case dbvpostgresql:
371              if (sc.token1 > TBaseType.rrw_abort){
372                  switch (sc.token1){
373                      case TBaseType.rrw_postgresql_cluster:
374                          sc.token1Str = "cluster";
375                          break;
376                      case TBaseType.rrw_postgresql_copy:
377                          sc.token1Str = "copy";
378                          break;
379                      case TBaseType.rrw_postgresql_discard:
380                          sc.token1Str = "discard";
381                          break;
382                      case TBaseType.rrw_postgresql_listen:
383                          sc.token1Str = "listen";
384                          break;
385                      case TBaseType.rrw_postgresql_notify:
386                          sc.token1Str = "notify";
387                          break;
388                      case TBaseType.rrw_postgresql_reassign:
389                          sc.token1Str = "reassign";
390                          break;
391                      case TBaseType.rrw_postgresql_reindex:
392                          sc.token1Str = "reindex";
393                          break;
394                      case TBaseType.rrw_postgresql_security:
395                          sc.token1Str = "security";
396                          break;
397                      case TBaseType.rrw_postgresql_unlisten:
398                          sc.token1Str = "unlisten";
399                          break;
400                      default:
401                          break;
402                  }
403              }
404              postgresqlcmds.add(sc);
405              break;
406          case dbvredshift:
407              if (sc.token1 > TBaseType.rrw_abort){
408                  switch (sc.token1){
409                      case TBaseType.rrw_redshift_cancel:
410                          sc.token1Str = "cancel";
411                          break;
412                      case TBaseType.rrw_redshift_copy:
413                          sc.token1Str = "copy";
414                          break;
415                      case TBaseType.rrw_redshift_unload:
416                          sc.token1Str = "unload";
417                          break;
418                      case TBaseType.rrw_redshift_vacuum:
419                          sc.token1Str = "vacuum";
420                          break;
421                      default:
422                          break;
423                  }
424              }
425              redshiftcmds.add(sc);
426              break;
427          case dbvnetezza:
428              if (sc.token1 > TBaseType.rrw_abort){
429                  switch (sc.token1){
430                      case TBaseType.rrw_netezza_copy:
431                          sc.token1Str = "copy";
432                          break;
433                      case TBaseType.rrw_netezza_generate:
434                          sc.token1Str = "generate";
435                          break;
436                      case TBaseType.rrw_netezza_groom:
437                          sc.token1Str = "groom";
438                          break;
439                      default:
440                          break;
441                  }
442              }
443              netezzacmds.add(sc);
444              break;
445          case dbvsybase:
446
447              if (sc.token1 > TBaseType.rrw_abort){
448                  switch (sc.token1){
449                      case TBaseType.rrw_sybase_dump:
450                          sc.token1Str = "dump";
451                          break;
452                      default:
453                          break;
454                  }
455              }
456              sybasecmds.add(sc);
457              break;
458          case dbvsybasease:
459
460              if (sc.token1 > TBaseType.rrw_abort){
461                  switch (sc.token1){
462                      case TBaseType.rrw_sybase_dump:
463                          sc.token1Str = "dump";
464                          break;
465                      default:
466                          break;
467                  }
468              }
469              sybaseasecmds.add(sc);
470              break;
471          case dbvsqlanywhere:
472
473              if (sc.token1 > TBaseType.rrw_abort){
474                  switch (sc.token1){
475                      case TBaseType.rrw_sybase_dump:
476                          sc.token1Str = "dump";
477                          break;
478                      default:
479                          break;
480                  }
481              }
482              sqlanywherecmds.add(sc);
483              break;
484          case dbvsybaseiq:
485
486              if (sc.token1 > TBaseType.rrw_abort){
487                  switch (sc.token1){
488                      case TBaseType.rrw_sybase_dump:
489                          sc.token1Str = "dump";
490                          break;
491                      default:
492                          break;
493                  }
494              }
495              sybaseiqcmds.add(sc);
496              break;
497          case dbvinformix:
498              if (sc.token1 > TBaseType.rrw_abort){
499                  switch (sc.token1){
500                      case TBaseType.rrw_informix_connect_to:
501                          sc.token1Str = "connect to";
502                          break;
503                      case TBaseType.rrw_informix_info:
504                          sc.token1Str = "info";
505                          break;
506                      case TBaseType.rrw_informix_output:
507                          sc.token1Str = "output";
508                          break;
509                      case TBaseType.rrw_informix_put:
510                          sc.token1Str = "put";
511                          break;
512                      case TBaseType.rrw_informix_unload:
513                          sc.token1Str = "unload";
514                          break;
515                      case TBaseType.rrw_informix_whenever:
516                          sc.token1Str = "whenever";
517                          break;
518                      default:
519                          break;
520                  }
521              }
522              informixcmds.add(sc);
523              break;
524          case dbvhive:
525              if (sc.token1 > TBaseType.rrw_abort){
526                  switch (sc.token1){
527                      case TBaseType.rrw_hive_desc:
528                          sc.token1Str = "desc";
529                          break;
530                      case TBaseType.rrw_hive_export:
531                          sc.token1Str = "export";
532                          break;
533                      case TBaseType.rrw_hive_import:
534                          sc.token1Str = "import";
535                          break;
536                      case TBaseType.rrw_hive_msck:
537                          sc.token1Str = "msck";
538                          break;
539                      default:
540                          break;
541                  }
542              }
543              hivecmds.add(sc);
544              break;
545          case dbvimpala:
546              hivecmds.add(sc);
547              break;
548          case dbvgreenplum:
549              if (sc.token1 > TBaseType.rrw_abort){
550                  switch (sc.token1){
551                      case TBaseType.rrw_greenplum_cluster:
552                          sc.token1Str = "cluster";
553                          break;
554                      case TBaseType.rrw_greenplum_copy:
555                          sc.token1Str = "copy";
556                          break;
557                      case TBaseType.rrw_greenplum_reassign:
558                          sc.token1Str = "reassign";
559                          break;
560                      case TBaseType.rrw_greenplum_reindex:
561                          sc.token1Str = "reindex";
562                          break;
563                      case TBaseType.rrw_greenplum_vacuum:
564                          sc.token1Str = "vacuum";
565                          break;
566                      case TBaseType.rrw_greenplum_analyse:
567                          sc.token1Str = "analyse";
568                          break;
569                      default:
570                          break;
571                  }
572              }
573              greenplumcmds.add(sc);
574              break;
575          case dbvhana:
576              if (sc.token1 > TBaseType.rrw_abort){
577                  switch (sc.token1){
578                      case TBaseType.rrw_hana_unset:
579                          sc.token1Str = "unset";
580                          break;
581                      case TBaseType.rrw_hana_upsert:
582                          sc.token1Str = "upsert";
583                          break;
584                      case TBaseType.rrw_hana_import:
585                          sc.token1Str = "import";
586                          break;
587                      case TBaseType.rrw_hana_export:
588                          sc.token1Str = "export";
589                          break;
590                      case TBaseType.rrw_hana_recover:
591                          sc.token1Str = "recover";
592                          break;
593                      case TBaseType.rrw_hana_unload:
594                          sc.token1Str = "unload";
595                          break;
596                      default:
597                          break;
598                  }
599              }
600              hanacmds.add(sc);
601              break;
602          case dbvvertica:
603              verticacmds.add(sc);
604              break;
605          case dbvcouchbase:
606              couchbasecmds.add(sc);
607              break;
608          case dbvsnowflake:
609              snowflakecmds.add(sc);
610              break;
611          case dbvbigquery:
612              bigquerycmds.add(sc);
613              break;
614          case dbvsparksql:
615              sparksqlcmds.add(sc);
616              break;
617          case dbvpresto:
618              prestocmds.add(sc);
619              break;
620          case dbvathena:
621              athenacmds.add(sc);
622              break;
623          case dbvdatabricks:
624              databrickscmds.add(sc);
625              break;
626          case dbvgaussdb:
627              gaussdbcmds.add(sc);
628              break;
629      }
630  }
631
632  void addmssqlcmds(ESqlStatementType psqlstatementtype, int ptoken1, String ptoken2, String ptoken3, String ptoken4, String ptoken5, String ptoken6, String ptoken7){
633    addcmds(EDbVendor.dbvmssql,psqlstatementtype,ptoken1,ptoken2,ptoken3,ptoken4,ptoken5,ptoken6,ptoken7);
634  }
635
636void addsybasecmds(ESqlStatementType psqlstatementtype, int ptoken1, String ptoken2, String ptoken3, String ptoken4, String ptoken5, String ptoken6, String ptoken7){
637  addcmds(EDbVendor.dbvsybase,psqlstatementtype,ptoken1,ptoken2,ptoken3,ptoken4,ptoken5,ptoken6,ptoken7);
638}
639
640void addsybaseiqcmds(ESqlStatementType psqlstatementtype, int ptoken1, String ptoken2, String ptoken3, String ptoken4, String ptoken5, String ptoken6, String ptoken7){
641  addcmds(EDbVendor.dbvsybaseiq,psqlstatementtype,ptoken1,ptoken2,ptoken3,ptoken4,ptoken5,ptoken6,ptoken7);
642}
643
644void addsqlanywherecmds(ESqlStatementType psqlstatementtype, int ptoken1, String ptoken2, String ptoken3, String ptoken4, String ptoken5, String ptoken6, String ptoken7){
645  addcmds(EDbVendor.dbvsqlanywhere,psqlstatementtype,ptoken1,ptoken2,ptoken3,ptoken4,ptoken5,ptoken6,ptoken7);
646}
647
648void addsybaseasecmds(ESqlStatementType psqlstatementtype, int ptoken1, String ptoken2, String ptoken3, String ptoken4, String ptoken5, String ptoken6, String ptoken7){
649  addcmds(EDbVendor.dbvsybasease,psqlstatementtype,ptoken1,ptoken2,ptoken3,ptoken4,ptoken5,ptoken6,ptoken7);
650}
651
652void addpostgresqlcmds(ESqlStatementType psqlstatementtype, int ptoken1, String ptoken2, String ptoken3, String ptoken4, String ptoken5, String ptoken6, String ptoken7){
653  addcmds(EDbVendor.dbvpostgresql,psqlstatementtype,ptoken1,ptoken2,ptoken3,ptoken4,ptoken5,ptoken6,ptoken7);
654}
655
656    void addgaussdbcmds(ESqlStatementType psqlstatementtype, int ptoken1, String ptoken2, String ptoken3, String ptoken4, String ptoken5, String ptoken6, String ptoken7){
657        addcmds(EDbVendor.dbvgaussdb,psqlstatementtype,ptoken1,ptoken2,ptoken3,ptoken4,ptoken5,ptoken6,ptoken7);
658    }
659
660void addredshiftcmds(ESqlStatementType psqlstatementtype, int ptoken1, String ptoken2, String ptoken3, String ptoken4, String ptoken5, String ptoken6, String ptoken7){
661    addcmds(EDbVendor.dbvredshift,psqlstatementtype,ptoken1,ptoken2,ptoken3,ptoken4,ptoken5,ptoken6,ptoken7);
662}
663
664    void addnetezzacmds(ESqlStatementType psqlstatementtype, int ptoken1, String ptoken2, String ptoken3, String ptoken4, String ptoken5, String ptoken6, String ptoken7){
665  addcmds(EDbVendor.dbvnetezza,psqlstatementtype,ptoken1,ptoken2,ptoken3,ptoken4,ptoken5,ptoken6,ptoken7);
666}
667
668
669void addoraclecmds(ESqlStatementType psqlstatementtype, int ptoken1, String ptoken2, String ptoken3, String ptoken4, String ptoken5, String ptoken6, String ptoken7){
670  addcmds(EDbVendor.dbvoracle,psqlstatementtype,ptoken1,ptoken2,ptoken3,ptoken4,ptoken5,ptoken6,ptoken7);
671}
672
673void addhivecmds(ESqlStatementType psqlstatementtype, int ptoken1, String ptoken2, String ptoken3, String ptoken4, String ptoken5, String ptoken6, String ptoken7){
674  addcmds(EDbVendor.dbvhive,psqlstatementtype,ptoken1,ptoken2,ptoken3,ptoken4,ptoken5,ptoken6,ptoken7);
675}
676
677void addmysqlcmds(ESqlStatementType psqlstatementtype, int ptoken1, String ptoken2, String ptoken3, String ptoken4, String ptoken5, String ptoken6, String ptoken7){
678  addcmds(EDbVendor.dbvmysql,psqlstatementtype,ptoken1,ptoken2,ptoken3,ptoken4,ptoken5,ptoken6,ptoken7);
679}
680
681void addsparksqlcmds(ESqlStatementType psqlstatementtype, int ptoken1, String ptoken2, String ptoken3, String ptoken4, String ptoken5, String ptoken6, String ptoken7){
682    addcmds(EDbVendor.dbvsparksql,psqlstatementtype,ptoken1,ptoken2,ptoken3,ptoken4,ptoken5,ptoken6,ptoken7);
683}
684
685void addprestocmds(ESqlStatementType psqlstatementtype, int ptoken1, String ptoken2, String ptoken3, String ptoken4, String ptoken5, String ptoken6, String ptoken7){
686    addcmds(EDbVendor.dbvpresto,psqlstatementtype,ptoken1,ptoken2,ptoken3,ptoken4,ptoken5,ptoken6,ptoken7);
687}
688
689void addathenacmds(ESqlStatementType psqlstatementtype, int ptoken1, String ptoken2, String ptoken3, String ptoken4, String ptoken5, String ptoken6, String ptoken7){
690    addcmds(EDbVendor.dbvathena,psqlstatementtype,ptoken1,ptoken2,ptoken3,ptoken4,ptoken5,ptoken6,ptoken7);
691}
692
693void adddatabrickscmds(ESqlStatementType psqlstatementtype, int ptoken1, String ptoken2, String ptoken3, String ptoken4, String ptoken5, String ptoken6, String ptoken7){
694    addcmds(EDbVendor.dbvdatabricks,psqlstatementtype,ptoken1,ptoken2,ptoken3,ptoken4,ptoken5,ptoken6,ptoken7);
695}
696
697
698void adddb2cmds(ESqlStatementType psqlstatementtype, int ptoken1, String ptoken2, String ptoken3, String ptoken4, String ptoken5, String ptoken6, String ptoken7){
699  addcmds(EDbVendor.dbvdb2,psqlstatementtype,ptoken1,ptoken2,ptoken3,ptoken4,ptoken5,ptoken6,ptoken7);
700}
701
702void addmdxcmds(ESqlStatementType psqlstatementtype, int ptoken1, String ptoken2, String ptoken3, String ptoken4, String ptoken5, String ptoken6, String ptoken7){
703  addcmds(EDbVendor.dbvmdx,psqlstatementtype,ptoken1,ptoken2,ptoken3,ptoken4,ptoken5,ptoken6,ptoken7);
704}
705
706void addteradatacmds(ESqlStatementType psqlstatementtype, int ptoken1, String ptoken2, String ptoken3, String ptoken4, String ptoken5, String ptoken6, String ptoken7){
707  addcmds(EDbVendor.dbvteradata,psqlstatementtype,ptoken1,ptoken2,ptoken3,ptoken4,ptoken5,ptoken6,ptoken7);
708}
709
710void addinformixcmds(ESqlStatementType psqlstatementtype, int ptoken1, String ptoken2, String ptoken3, String ptoken4, String ptoken5, String ptoken6, String ptoken7){
711  addcmds(EDbVendor.dbvinformix,psqlstatementtype,ptoken1,ptoken2,ptoken3,ptoken4,ptoken5,ptoken6,ptoken7);
712}
713
714void addgreenplumcmds(ESqlStatementType psqlstatementtype, int ptoken1, String ptoken2, String ptoken3, String ptoken4, String ptoken5, String ptoken6, String ptoken7){
715  addcmds(EDbVendor.dbvgreenplum,psqlstatementtype,ptoken1,ptoken2,ptoken3,ptoken4,ptoken5,ptoken6,ptoken7);
716}
717
718void addhanacmds(ESqlStatementType psqlstatementtype, int ptoken1, String ptoken2, String ptoken3, String ptoken4, String ptoken5, String ptoken6, String ptoken7){
719    addcmds(EDbVendor.dbvhana,psqlstatementtype,ptoken1,ptoken2,ptoken3,ptoken4,ptoken5,ptoken6,ptoken7);
720}
721
722void addverticacmds(ESqlStatementType psqlstatementtype, int ptoken1, String ptoken2, String ptoken3, String ptoken4, String ptoken5, String ptoken6, String ptoken7){
723    addcmds(EDbVendor.dbvvertica,psqlstatementtype,ptoken1,ptoken2,ptoken3,ptoken4,ptoken5,ptoken6,ptoken7);
724}
725
726void addcouchbasecmds(ESqlStatementType psqlstatementtype, int ptoken1, String ptoken2, String ptoken3, String ptoken4, String ptoken5, String ptoken6, String ptoken7){
727    addcmds(EDbVendor.dbvcouchbase,psqlstatementtype,ptoken1,ptoken2,ptoken3,ptoken4,ptoken5,ptoken6,ptoken7);
728}
729
730void addsnowflakecmds(ESqlStatementType psqlstatementtype, int ptoken1, String ptoken2, String ptoken3, String ptoken4, String ptoken5, String ptoken6, String ptoken7){
731        addcmds(EDbVendor.dbvsnowflake,psqlstatementtype,ptoken1,ptoken2,ptoken3,ptoken4,ptoken5,ptoken6,ptoken7);
732    }
733
734void addbigquerycmds(ESqlStatementType psqlstatementtype, int ptoken1, String ptoken2, String ptoken3, String ptoken4, String ptoken5, String ptoken6, String ptoken7){
735    addcmds(EDbVendor.dbvbigquery,psqlstatementtype,ptoken1,ptoken2,ptoken3,ptoken4,ptoken5,ptoken6,ptoken7);
736}
737
738ESqlStatementType finddbcmd(TSourceToken ptoken, TSqlCmdList pdbcmds ){
739    ESqlStatementType ret = ESqlStatementType.sstinvalid;
740    if (ptoken.tokentype != ETokenType.ttkeyword){return ret;}
741    int lcchecktokens = 0;
742
743    // Look up initial command array index in hash using first token code
744
745    int startIndex = pdbcmds.getStartIndex(ptoken.tokencode);
746    if (startIndex == -1)
747        return ret;
748
749    for(int i=startIndex; i<pdbcmds.size();i++){
750        if ( ((TSqlCmd)pdbcmds.get(i)).token1 != ptoken.tokencode)
751        {
752            if (lcchecktokens > 0 ) {break;}
753            else
754              continue;
755        }
756        else
757        {
758            if (lcchecktokens < 1)
759            {lcchecktokens = 1;}
760        }
761
762        // first cmd tokentext is same, then check second
763        if ((((TSqlCmd)pdbcmds.get(i)).token2 == "") || (((TSqlCmd)pdbcmds.get(i)).token2 == " ") )
764        {
765            ret = ((TSqlCmd)pdbcmds.get(i)).sqlstatementtype;
766            if (((TSqlCmd)pdbcmds.get(i)).token2 == "")
767              break;
768        }
769
770        int k;
771        TSourceToken lcnextsolidtoken  = nextsolidtoken(ptoken);
772        if (lcnextsolidtoken == null)  break;
773        if ((((TSqlCmd)pdbcmds.get(i)).token2 == "*"))// && (lcchecktokens < 2) ) // can match any string
774        {
775            k = 0;
776        }
777        else {
778          k = TBaseType.mycomparetext(lcnextsolidtoken.toString() ,((TSqlCmd)pdbcmds.get(i)).token2);
779        }
780        if (k != 0)
781        {
782            if (lcchecktokens > 1)  break;
783            else
784              continue;
785        }
786        else if (k == 0)
787        {
788            if (lcchecktokens < 2)
789              lcchecktokens = 2;
790        }
791
792        // second cmd tokentext is same, then check third
793        if ((((TSqlCmd)pdbcmds.get(i)).token3 == "") || (((TSqlCmd)pdbcmds.get(i)).token3 == " "))
794        {
795            ret = ((TSqlCmd)pdbcmds.get(i)).sqlstatementtype;
796            if (((TSqlCmd)pdbcmds.get(i)).token3 == "")
797              break;
798        }
799
800        TSourceToken lcnnextsolidtoken = nextsolidtoken(lcnextsolidtoken);
801        if (lcnnextsolidtoken == null) break;
802        if ((((TSqlCmd)pdbcmds.get(i)).token3 == "*"))// && (lcchecktokens < 3))  // can match any string
803          k = 0;
804        else
805        {
806            k = TBaseType.mycomparetext(lcnnextsolidtoken.toString(), ((TSqlCmd)pdbcmds.get(i)).token3);
807        }
808        if (k != 0)
809        {
810            if (lcchecktokens > 2)  {break;}
811            else
812              continue;
813        }
814        else
815        {
816            if (lcchecktokens < 3)
817            {lcchecktokens = 3;}
818        }
819
820        // third cmd tokentext is same, then check fourth
821        if ((((TSqlCmd)pdbcmds.get(i)).token4 == "") || (((TSqlCmd)pdbcmds.get(i)).token4 == " "))
822        {
823            ret = ((TSqlCmd)pdbcmds.get(i)).sqlstatementtype;
824            if (((TSqlCmd)pdbcmds.get(i)).token4 == "")
825              break;
826        }
827
828        TSourceToken lcnnnextsolidtoken = nextsolidtoken(lcnnextsolidtoken);
829        if (lcnnnextsolidtoken == null) { break;}
830        if ((((TSqlCmd)(pdbcmds.get(i))).token4 == "*"))// && (lcchecktokens < 4))  // can match any string
831        {k = 0;}
832        else
833        {k = TBaseType.mycomparetext(lcnnnextsolidtoken.getAstext(),((TSqlCmd)pdbcmds.get(i)).token4);}
834
835        if (k != 0 )
836        {
837            if (lcchecktokens > 3)  break;
838            else
839              continue;
840        }
841        else
842        {
843            if (lcchecktokens < 4)
844              lcchecktokens = 4;
845        }
846
847        // fourth cmd tokentext is same, then check fiveth
848        if ((((TSqlCmd)pdbcmds.get(i)).token5 == "") || (((TSqlCmd)pdbcmds.get(i)).token5 == " ") )
849        {
850            ret = ((TSqlCmd)pdbcmds.get(i)).sqlstatementtype;
851            if (((TSqlCmd)pdbcmds.get(i)).token5 == "")
852              break;
853        }
854
855        TSourceToken lcnnnnextsolidtoken = nextsolidtoken(lcnnnextsolidtoken);
856        if (lcnnnnextsolidtoken == null)  break;
857        if ((((TSqlCmd)pdbcmds.get(i)).token5 == "*") )//&& (lcchecktokens < 5) ) // can match any string
858        { k = 0;}
859        else
860        { k = TBaseType.mycomparetext(lcnnnnextsolidtoken.getAstext(), ((TSqlCmd)pdbcmds.get(i)).token5);}
861        if ( k != 0)
862        {
863            if (lcchecktokens > 4)  break;
864            else
865              continue;
866        }
867        else
868        {
869            if (lcchecktokens < 5)
870              lcchecktokens = 5;
871        }
872
873        // fiveth cmd tokentext is same, then check sixth
874        if ((((TSqlCmd)pdbcmds.get(i)).token6 == "") || (((TSqlCmd)pdbcmds.get(i)).token6 == " "))
875        {
876            ret = ((TSqlCmd)pdbcmds.get(i)).sqlstatementtype;
877            if (((TSqlCmd)pdbcmds.get(i)).token6 == "")
878              break;
879        }
880
881        TSourceToken lcnnnnnextsolidtoken = nextsolidtoken(lcnnnnextsolidtoken);
882        if (lcnnnnnextsolidtoken == null)  break;
883        if ((((TSqlCmd)pdbcmds.get(i)).token6 == "*"))// && (lcchecktokens < 6)) // can match any string
884        {k = 0;}
885        else
886        { k = TBaseType.mycomparetext(lcnnnnnextsolidtoken.getAstext(),((TSqlCmd)pdbcmds.get(i)).token6);}
887        if (k != 0)
888        {
889            if (lcchecktokens > 5) break;
890            else
891              continue;
892        }
893        else
894        {
895            if (lcchecktokens < 6)
896              lcchecktokens = 6;
897        }
898
899        // sixth cmd tokentext is same, then check seventh
900        if ((((TSqlCmd)pdbcmds.get(i)).token7 == "") || (((TSqlCmd)pdbcmds.get(i)).token7 == " "))
901        {
902            ret = ((TSqlCmd)pdbcmds.get(i)).sqlstatementtype;
903            if(((TSqlCmd)pdbcmds.get(i)).token7 == "")
904              break;
905        }
906
907        TSourceToken lcnnnnnnextsolidtoken = nextsolidtoken(lcnnnnnextsolidtoken);
908        if (lcnnnnnnextsolidtoken == null) break;
909        if ((((TSqlCmd)pdbcmds.get(i)).token7 == "*"))// && (lcchecktokens < 7)) // can match any string
910        {k = 0;}
911        else
912        { k = TBaseType.mycomparetext(lcnnnnnnextsolidtoken.getAstext(),((TSqlCmd)pdbcmds.get(i)).token7);}
913        if (k  != 0)
914        {
915            if (lcchecktokens > 6 ) break;
916            else
917              continue;
918        }
919        else
920        {
921            if (lcchecktokens < 7)
922            {lcchecktokens = 7;}
923            ret = ((TSqlCmd)pdbcmds.get(i)).sqlstatementtype;
924            break;
925        }
926
927
928    } //for
929    return ret;
930}
931
932TSourceToken nextsolidtoken(TSourceToken ptoken){
933    TSourceToken ret = null;
934    if (ptoken.container == null) {return ret;}
935    ret = ptoken.container.nextsolidtoken(ptoken,1,false);
936
937    return ret;
938}
939
940void initteradatacmds(){
941
942 addteradatacmds(ESqlStatementType.sstteradataabort, TBaseType.rrw_abort,  " "," "," "," "," "," ");
943 addteradatacmds(ESqlStatementType.sstteradataalterconstraint, TBaseType.rrw_alter,"constraint"," "," "," "," "," ");
944 addteradatacmds(ESqlStatementType.sstteradataalterfunction, TBaseType.rrw_alter,"function"," "," "," "," "," ");
945 addteradatacmds(ESqlStatementType.sstteradataalterfunction, TBaseType.rrw_alter,"specific","function"," "," "," "," ");
946 addteradatacmds(ESqlStatementType.sstteradataaltermethod, TBaseType.rrw_alter,"method"," "," "," "," "," ");
947 addteradatacmds(ESqlStatementType.sstteradataaltermethod, TBaseType.rrw_alter,"constructor","method"," "," "," "," ");
948 addteradatacmds(ESqlStatementType.sstteradataaltermethod, TBaseType.rrw_alter,"instance","method"," "," "," "," ");
949 addteradatacmds(ESqlStatementType.sstteradataaltermethod, TBaseType.rrw_alter,"specific","method"," "," "," "," ");
950 addteradatacmds(ESqlStatementType.sstteradataalterprocedure, TBaseType.rrw_alter,"procedure"," "," "," "," "," ");
951 addteradatacmds(ESqlStatementType.sstteradataalterreplicationgroup, TBaseType.rrw_alter,"replication","group"," "," "," "," ");
952 addteradatacmds(ESqlStatementType.sstteradataaltertable, TBaseType.rrw_alter,"table"," "," "," "," "," ");
953 addteradatacmds(ESqlStatementType.sstteradataaltertrigger, TBaseType.rrw_alter,"trigger"," "," "," "," "," ");
954 addteradatacmds(ESqlStatementType.sstteradataaltertype, TBaseType.rrw_alter,"type"," "," "," "," "," ");
955 addteradatacmds(ESqlStatementType.sstteradataalterzone, TBaseType.rrw_alter,"zone"," "," "," "," "," ");
956
957 addteradatacmds(ESqlStatementType.sstteradatabegindeclaresection, TBaseType.rrw_begin,"delcare","section"," "," "," "," ");
958 addteradatacmds(ESqlStatementType.sstteradatabeginlogging, TBaseType.rrw_begin,"logging"," "," "," "," "," ");
959 addteradatacmds(ESqlStatementType.sstteradatabeginquerylogging, TBaseType.rrw_begin,"query","logging"," "," "," "," ");
960 addteradatacmds(ESqlStatementType.sstteradatabegintransaction, TBaseType.rrw_begin,"transaction"," "," "," "," "," ");
961 addteradatacmds(ESqlStatementType.sstteradatabegintransaction, TBaseType.rrw_bt," "," "," "," "," "," ");
962 addteradatacmds(ESqlStatementType.sstteradatabeginrequest, TBaseType.rrw_begin,"request"," "," "," "," "," ");
963
964 addteradatacmds(ESqlStatementType.sstteradatacall, TBaseType.rrw_call," "," "," "," "," "," ");
965 addteradatacmds(ESqlStatementType.sstteradatacheckworkload, TBaseType.rrw_check,"workload"," "," "," "," "," ");
966 addteradatacmds(ESqlStatementType.sstteradatacheckpoint, TBaseType.rrw_checkpoint," "," "," "," "," "," ");
967 addteradatacmds(ESqlStatementType.sstteradataclose, TBaseType.rrw_close," "," "," "," "," "," ");
968
969 addteradatacmds(ESqlStatementType.sstteradatacreatemacro, TBaseType.rrw_teradata_cm," "," "," "," "," "," ");
970
971 addteradatacmds(ESqlStatementType.sstteradatacollectdemographics, TBaseType.rrw_teradata_collect,"demographics"," "," "," "," "," ");
972
973 addteradatacmds(ESqlStatementType.sstteradatacollectstatistics, TBaseType.rrw_teradata_collect,"statistics"," "," "," "," "," ");
974 addteradatacmds(ESqlStatementType.sstteradatacollectstatistics, TBaseType.rrw_teradata_collect,"stats"," "," "," "," "," ");
975 addteradatacmds(ESqlStatementType.sstteradatacollectstatistics, TBaseType.rrw_teradata_collect,"stat"," "," "," "," "," ");
976    addteradatacmds(ESqlStatementType.sstteradatacollectstatistics, TBaseType.rrw_teradata_collect,"summary","statistics"," "," "," "," ");
977    addteradatacmds(ESqlStatementType.sstteradatacollectstatistics, TBaseType.rrw_teradata_collect,"summary","stats"," "," "," "," ");
978    addteradatacmds(ESqlStatementType.sstteradatacollectstatistics, TBaseType.rrw_teradata_collect,"summary","stat"," "," "," "," ");
979
980
981 addteradatacmds(ESqlStatementType.sstteradatacomment, TBaseType.rrw_comment," "," "," "," "," "," ");
982 addteradatacmds(ESqlStatementType.sstteradatacommit, TBaseType.rrw_commit," "," "," "," "," "," ");
983 addteradatacmds(ESqlStatementType.sstteradataconnect, TBaseType.rrw_connect," "," "," "," "," "," ");
984 addteradatacmds(ESqlStatementType.sstteradatacreateauthorization, TBaseType.rrw_create,"authorization"," "," "," "," "," ");
985 addteradatacmds(ESqlStatementType.sstteradatacreatecast, TBaseType.rrw_create,"cast"," "," "," "," "," ");
986 addteradatacmds(ESqlStatementType.sstteradatacreateconstraint, TBaseType.rrw_create,"constraint"," "," "," "," "," ");
987 addteradatacmds(ESqlStatementType.sstteradatacreateglop, TBaseType.rrw_create,"glop"," "," "," "," "," ");
988
989 addteradatacmds(ESqlStatementType.sstteradatacreatemethod, TBaseType.rrw_create,"constructor","method"," "," "," "," ");
990
991 addteradatacmds(ESqlStatementType.sstteradatacreatedatabase, TBaseType.rrw_create,"database"," "," "," "," "," ");
992 addteradatacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"error","table"," "," "," "," ");
993 addteradatacmds(ESqlStatementType.sstteradatacreaterole, TBaseType.rrw_create,"external","role"," "," "," "," ");
994
995 addteradatacmds(ESqlStatementType.sstteradatacreatefunction, TBaseType.rrw_create,"function"," "," "," "," "," ");
996
997 addteradatacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"global","temporary","multiset","table"," "," ");
998 addteradatacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"global","temporary","set","table"," "," ");
999 addteradatacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"global","temporary","table"," "," "," ");
1000
1001 addteradatacmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"hash","index"," "," "," "," ");
1002 addteradatacmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"index"," "," "," "," "," ");
1003
1004 addteradatacmds(ESqlStatementType.sstteradatacreatemethod, TBaseType.rrw_create,"instance","method"," "," "," "," ");
1005
1006 addteradatacmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"join","index"," "," "," "," ");
1007
1008 addteradatacmds(ESqlStatementType.sstteradatacreatemacro, TBaseType.rrw_create,"macro"," "," "," "," "," ");
1009
1010 addteradatacmds(ESqlStatementType.sstteradatacreatemethod, TBaseType.rrw_create,"method"," "," "," "," "," ");
1011 addteradatacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"multiset","global","temporary","table"," "," ");
1012 addteradatacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"multiset","table"," "," "," "," ");
1013 addteradatacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"multiset","volatile","table"," "," "," ");
1014
1015 addteradatacmds(ESqlStatementType.sstteradatacreateordering, TBaseType.rrw_create,"ordering"," "," "," "," "," ");
1016
1017 addteradatacmds(ESqlStatementType.sstcreateprocedure, TBaseType.rrw_create,"proc"," "," "," "," "," ");
1018 addteradatacmds(ESqlStatementType.sstcreateprocedure, TBaseType.rrw_create,"procedure"," "," "," "," "," ");
1019
1020 addteradatacmds(ESqlStatementType.sstteradatacreateprofile, TBaseType.rrw_create,"profile"," "," "," "," "," ");
1021
1022    addteradatacmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,"recursive","view"," "," "," "," ");
1023
1024    addteradatacmds(ESqlStatementType.sstteradatacreatereplicationgroup, TBaseType.rrw_create,"replication","group"," "," "," "," ");
1025    addteradatacmds(ESqlStatementType.sstteradatacreaterole, TBaseType.rrw_create,"role"," "," "," "," "," ");
1026    addteradatacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"set","global","temporary","table"," "," ");
1027    addteradatacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"set","table"," "," "," "," ");
1028    addteradatacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"set","volatile","table"," "," "," ");
1029    addteradatacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"table"," "," "," "," "," ");
1030    addteradatacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"temporary","table"," "," "," "," ");
1031
1032    addteradatacmds(ESqlStatementType.sstteradatacreatetransform, TBaseType.rrw_create,"transform"," "," "," "," "," ");
1033
1034    addteradatacmds(ESqlStatementType.sstteradatacreatetrigger, TBaseType.rrw_create,"trigger"," "," "," "," "," ");
1035
1036    addteradatacmds(ESqlStatementType.sstteradatacreatetype, TBaseType.rrw_create,"type"," "," "," "," "," ");
1037
1038    addteradatacmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"unique","index"," "," "," "," ");
1039
1040    addteradatacmds(ESqlStatementType.sstteradatacreateuser, TBaseType.rrw_create,"user"," "," "," "," "," ");
1041
1042    addteradatacmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,"view"," "," "," "," "," ");
1043
1044    addteradatacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"volatile","multiset","table"," "," "," ");
1045    addteradatacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"volatile","table"," "," "," "," ");
1046    addteradatacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"volatile","set","table"," "," "," ");
1047
1048    addteradatacmds(ESqlStatementType.sstcreatezone, TBaseType.rrw_create,"zone"," "," "," "," "," ");
1049
1050    addteradatacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_ct," "," "," "," "," "," ");
1051
1052    addteradatacmds(ESqlStatementType.sstcreateview, TBaseType.rrw_teradata_cv," "," "," "," "," "," ");
1053
1054    addteradatacmds(ESqlStatementType.sstteradatadatabase, TBaseType.rrw_database," "," "," "," "," "," ");
1055
1056    addteradatacmds(ESqlStatementType.sstteradatadeclarecursor, TBaseType.rrw_declare,"cursor"," "," "," "," "," ");
1057    addteradatacmds(ESqlStatementType.sstteradatadeclarecursor, TBaseType.rrw_declare,"*","cursor"," "," "," "," ");
1058
1059    addteradatacmds(ESqlStatementType.sstteradatadeclarestatement, TBaseType.rrw_declare,"statement"," "," "," "," "," ");
1060
1061    addteradatacmds(ESqlStatementType.sstteradatadeclaretable, TBaseType.rrw_declare,"table"," "," "," "," "," ");
1062
1063    addteradatacmds(ESqlStatementType.sstdelete, TBaseType.rrw_teradata_del," "," "," "," "," "," ");
1064
1065    addteradatacmds(ESqlStatementType.sstdelete, TBaseType.rrw_delete," "," "," "," "," "," ");
1066
1067    addteradatacmds(ESqlStatementType.sstteradatadeletedatabase, TBaseType.rrw_delete,"database"," "," "," "," "," ");
1068
1069    addteradatacmds(ESqlStatementType.sstteradatadeleteuser, TBaseType.rrw_delete,"user"," "," "," "," "," ");
1070
1071    addteradatacmds(ESqlStatementType.sstteradatadescribe, TBaseType.rrw_describe," "," "," "," "," "," ");
1072
1073    addteradatacmds(ESqlStatementType.sstteradatadiagnostic, TBaseType.rrw_teradata_diagnostic," "," "," "," "," "," ");
1074
1075    addteradatacmds(ESqlStatementType.sstteradatadropauthorization, TBaseType.rrw_drop,"authorization"," "," "," "," "," ");
1076
1077    addteradatacmds(ESqlStatementType.sstteradatadropcast, TBaseType.rrw_drop,"cast"," "," "," "," "," ");
1078    addteradatacmds(ESqlStatementType.sstteradatadropconstraint, TBaseType.rrw_drop,"constraint"," "," "," "," "," ");
1079    addteradatacmds(ESqlStatementType.sstteradatadropdatabase, TBaseType.rrw_drop,"database"," "," "," "," "," ");
1080    addteradatacmds(ESqlStatementType.sstdroptable, TBaseType.rrw_drop,"error","table"," "," "," "," ");
1081    addteradatacmds(ESqlStatementType.sstteradatadroprole, TBaseType.rrw_drop,"external","role"," "," "," "," ");
1082
1083    addteradatacmds(ESqlStatementType.sstteradatadropfunction, TBaseType.rrw_drop,"function"," "," "," "," "," ");
1084
1085    addteradatacmds(ESqlStatementType.sstdropindex, TBaseType.rrw_drop,"hash","index"," "," "," "," ");
1086    addteradatacmds(ESqlStatementType.sstdropindex, TBaseType.rrw_drop,"index"," "," "," "," "," ");
1087    addteradatacmds(ESqlStatementType.sstdropindex, TBaseType.rrw_drop,"join","index"," "," "," "," ");
1088
1089    addteradatacmds(ESqlStatementType.sstteradatadropmacro, TBaseType.rrw_drop,"macro"," "," "," "," "," ");
1090
1091    addteradatacmds(ESqlStatementType.sstteradatadropordering, TBaseType.rrw_drop,"ordering"," "," "," "," "," ");
1092
1093    addteradatacmds(ESqlStatementType.sstteradatadropprocedure, TBaseType.rrw_drop,"procedure"," "," "," "," "," ");
1094
1095    addteradatacmds(ESqlStatementType.sstteradatadropprofile, TBaseType.rrw_drop,"profile"," "," "," "," "," ");
1096
1097    addteradatacmds(ESqlStatementType.sstteradatadropreplicationgroup, TBaseType.rrw_drop,"replication","group"," "," "," "," ");
1098
1099    addteradatacmds(ESqlStatementType.sstteradatadroprole, TBaseType.rrw_drop,"role"," "," "," "," "," ");
1100
1101    addteradatacmds(ESqlStatementType.sstteradatadropfunction, TBaseType.rrw_drop,"specific","function"," "," "," "," ");
1102
1103    addteradatacmds(ESqlStatementType.sstteradatadropstatistics, TBaseType.rrw_drop,"stat"," "," "," "," "," ");
1104    addteradatacmds(ESqlStatementType.sstteradatadropstatistics, TBaseType.rrw_drop,"statistics"," "," "," "," "," ");
1105    addteradatacmds(ESqlStatementType.sstteradatadropstatistics, TBaseType.rrw_drop,"stats"," "," "," "," "," ");
1106
1107    addteradatacmds(ESqlStatementType.sstdroptable, TBaseType.rrw_drop,"table"," "," "," "," "," ");
1108    addteradatacmds(ESqlStatementType.sstdroptable, TBaseType.rrw_drop,"temporary","table"," "," "," "," ");
1109
1110    addteradatacmds(ESqlStatementType.sstteradatadroptransform, TBaseType.rrw_drop,"transform"," "," "," "," "," ");
1111
1112    addteradatacmds(ESqlStatementType.sstteradatadroptrigger, TBaseType.rrw_drop,"trigger"," "," "," "," "," ");
1113
1114    addteradatacmds(ESqlStatementType.sstteradatadroptype, TBaseType.rrw_drop,"type"," "," "," "," "," ");
1115    addteradatacmds(ESqlStatementType.sstdropindex, TBaseType.rrw_drop,"unique","index"," "," "," "," ");
1116
1117    addteradatacmds(ESqlStatementType.sstteradatadropuser, TBaseType.rrw_drop,"user"," "," "," "," "," ");
1118
1119    addteradatacmds(ESqlStatementType.sstdropview, TBaseType.rrw_drop,"view"," "," "," "," "," ");
1120
1121    addteradatacmds(ESqlStatementType.sstteradatadropzone, TBaseType.rrw_drop,"zone"," "," "," "," "," ");
1122
1123    addteradatacmds(ESqlStatementType.sstteradatadumpexplain, TBaseType.rrw_teradata_dump,"explain"," "," "," "," "," ");
1124
1125    addteradatacmds(ESqlStatementType.sstteradataecho, TBaseType.rrw_teradata_echo," "," "," "," "," "," ");
1126
1127    addteradatacmds(ESqlStatementType.sstteradataenddeclaresection, TBaseType.rrw_end,"declare","section"," "," "," "," ");
1128
1129    addteradatacmds(ESqlStatementType.sstteradataendlogging, TBaseType.rrw_end,"logging"," "," "," "," "," ");
1130
1131    addteradatacmds(ESqlStatementType.sstteradataendquerylogging, TBaseType.rrw_end,"query","logging"," "," "," "," ");
1132
1133    addteradatacmds(ESqlStatementType.sstteradataendtransaction, TBaseType.rrw_end,"transaction"," "," "," "," "," ");
1134
1135    addteradatacmds(ESqlStatementType.sstteradataendtransaction, TBaseType.rrw_et," "," "," "," "," "," ");
1136    addteradatacmds(ESqlStatementType.sstteradataendrequest, TBaseType.rrw_end,"request"," "," "," "," "," ");
1137
1138    addteradatacmds(ESqlStatementType.sstteradataexecute, TBaseType.rrw_execute," "," "," "," "," "," ");
1139
1140    addteradatacmds(ESqlStatementType.sstteradataexecute, TBaseType.rrw_exec," "," "," "," "," "," ");
1141
1142    addteradatacmds(ESqlStatementType.sstteradataexecuteimmediate, TBaseType.rrw_execute,"immediate"," "," "," "," "," ");
1143
1144    addteradatacmds(ESqlStatementType.sstteradataExit, TBaseType.rrw_teradata_exit," "," "," "," "," "," ");
1145
1146    addteradatacmds(ESqlStatementType.sstExplain, TBaseType.rrw_explain, " ", " ", " ", " ", " ", " ");
1147
1148
1149    addteradatacmds(ESqlStatementType.sstteradatafetch, TBaseType.rrw_fetch," "," "," "," "," "," ");
1150
1151    addteradatacmds(ESqlStatementType.sstteradatagetcrash, TBaseType.rrw_get,"crash"," "," "," "," "," ");
1152
1153    addteradatacmds(ESqlStatementType.sstgetdiagnostics, TBaseType.rrw_get,"diagnostics"," "," "," "," "," ");
1154
1155    addteradatacmds(ESqlStatementType.sstteradatagive, TBaseType.rrw_teradata_give," "," "," "," "," "," ");
1156
1157    addteradatacmds(ESqlStatementType.sstteradatagrant, TBaseType.rrw_grant," "," "," "," "," "," ");
1158
1159    addteradatacmds(ESqlStatementType.sstteradatahelp, TBaseType.rrw_teradata_help," "," "," "," "," "," ");
1160
1161    addteradatacmds(ESqlStatementType.sstteradatainclude, TBaseType.rrw_include," "," "," "," "," "," ");
1162
1163    addteradatacmds(ESqlStatementType.sstinsert, TBaseType.rrw_teradata_ins," "," "," "," "," "," ");
1164
1165    addteradatacmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert," "," "," "," "," "," ");
1166
1167    addteradatacmds(ESqlStatementType.sstteradatainsertexplain, TBaseType.rrw_insert,"explain"," "," "," "," "," ");
1168
1169    addteradatacmds(ESqlStatementType.sstteradatalabel, TBaseType.rrw_teradata_label," "," "," "," "," "," ");
1170    addteradatacmds(ESqlStatementType.sstteradatalock, TBaseType.rrw_lock," "," "," "," "," "," ");
1171    addteradatacmds(ESqlStatementType.sstteradatalock, TBaseType.rrw_teradata_locking," "," "," "," "," "," ");
1172    addteradatacmds(ESqlStatementType.sstteradatalogon, TBaseType.rrw_teradata_logon," "," "," "," "," "," ");
1173
1174    addteradatacmds(ESqlStatementType.sstmerge, TBaseType.rrw_merge," "," "," "," "," "," ");
1175
1176    addteradatacmds(ESqlStatementType.sstteradatamodifydatabase, TBaseType.rrw_teradata_modify,"database"," "," "," "," "," ");
1177
1178    addteradatacmds(ESqlStatementType.sstteradatamodifyprofile, TBaseType.rrw_teradata_modify,"profile"," "," "," "," "," ");
1179
1180    addteradatacmds(ESqlStatementType.sstteradatamodifyuser, TBaseType.rrw_teradata_modify,"user"," "," "," "," "," ");
1181
1182    addteradatacmds(ESqlStatementType.sstteradataopen, TBaseType.rrw_open," "," "," "," "," "," ");
1183
1184    addteradatacmds(ESqlStatementType.sstteradataposition, TBaseType.rrw_teradata_position," "," "," "," "," "," ");
1185
1186    addteradatacmds(ESqlStatementType.sstteradataprepare, TBaseType.rrw_prepare," "," "," "," "," "," ");
1187
1188    addteradatacmds(ESqlStatementType.sstteradatareleaseLock, TBaseType.rrw_release,"lock"," "," "," "," "," ");
1189
1190    addteradatacmds(ESqlStatementType.sstteradatarenamefunction, TBaseType.rrw_rename,"function"," "," "," "," "," ");
1191    addteradatacmds(ESqlStatementType.sstteradatarenamemacro, TBaseType.rrw_rename,"macro"," "," "," "," "," ");
1192    addteradatacmds(ESqlStatementType.sstteradatarenameprocedure, TBaseType.rrw_rename,"procedure"," "," "," "," "," ");
1193    addteradatacmds(ESqlStatementType.sstteradatarenametable, TBaseType.rrw_rename,"table"," "," "," "," "," ");
1194    addteradatacmds(ESqlStatementType.sstteradatarenametrigger, TBaseType.rrw_rename,"trigger"," "," "," "," "," ");
1195    addteradatacmds(ESqlStatementType.sstteradatarenameview, TBaseType.rrw_rename,"view"," "," "," "," "," ");
1196
1197    addteradatacmds(ESqlStatementType.sstteradatareplacecast, TBaseType.rrw_replace,"cast"," "," "," "," "," ");
1198
1199    addteradatacmds(ESqlStatementType.sstteradatareplacemethod, TBaseType.rrw_replace,"constructor","method"," "," "," "," ");
1200
1201    addteradatacmds(ESqlStatementType.sstteradatareplacefunction, TBaseType.rrw_replace,"function"," "," "," "," "," ");
1202
1203    addteradatacmds(ESqlStatementType.sstteradatareplacemethod, TBaseType.rrw_replace,"instance","method"," "," "," "," ");
1204
1205    addteradatacmds(ESqlStatementType.sstteradatareplacemacro, TBaseType.rrw_replace,"macro"," "," "," "," "," ");
1206
1207    addteradatacmds(ESqlStatementType.sstteradatareplacemethod, TBaseType.rrw_replace,"method"," "," "," "," "," ");
1208
1209    addteradatacmds(ESqlStatementType.sstteradatareplaceordering, TBaseType.rrw_replace,"ordering"," "," "," "," "," ");
1210
1211    addteradatacmds(ESqlStatementType.sstteradatareplaceprocedure, TBaseType.rrw_replace,"procedure"," "," "," "," "," ");
1212
1213    addteradatacmds(ESqlStatementType.sstteradatareplacemethod, TBaseType.rrw_replace,"specific","method"," "," "," "," ");
1214
1215    addteradatacmds(ESqlStatementType.sstteradatareplacetransform, TBaseType.rrw_replace,"transform"," "," "," "," "," ");
1216
1217    addteradatacmds(ESqlStatementType.sstteradatacreatetrigger, TBaseType.rrw_replace,"trigger"," "," "," "," "," ");
1218
1219    addteradatacmds(ESqlStatementType.sstteradatareplaceview, TBaseType.rrw_replace,"view"," "," "," "," "," ");
1220    addteradatacmds(ESqlStatementType.sstteradatareplaceview, TBaseType.rrw_replace,"recursive","view"," "," "," "," ");
1221
1222    addteradatacmds(ESqlStatementType.sstteradatarestartindexanalysis, TBaseType.rrw_teradata_restart,"index","analysis"," "," "," "," ");
1223
1224    addteradatacmds(ESqlStatementType.sstteradatarevoke, TBaseType.rrw_revoke," "," "," "," "," "," ");
1225
1226    // addteradatacmds(ESqlStatementType.sstteradatarewind, TBaseType.rrw_rewind," "," "," "," "," "," ");
1227
1228    addteradatacmds(ESqlStatementType.sstteradatarollback, TBaseType.rrw_rollback," "," "," "," "," "," ");
1229
1230    addteradatacmds(ESqlStatementType.sstselect, TBaseType.rrw_teradata_sel," "," "," "," "," "," ");
1231    addteradatacmds(ESqlStatementType.sstselect, TBaseType.rrw_select," "," "," "," "," "," ");
1232
1233    //addteradatacmds(ESqlStatementType.sstsetbuffersize, TBaseType.rrw_set,"buffersize"," "," "," "," "," ");
1234    addteradatacmds(ESqlStatementType.sstteradatasetrole, TBaseType.rrw_set,"role"," "," "," "," "," ");
1235
1236    addteradatacmds(ESqlStatementType.sstteradatasetsession, TBaseType.rrw_set,"session"," "," "," "," "," ");
1237    addteradatacmds(ESqlStatementType.sstteradatasetsession, TBaseType.rrw_ss," "," "," "," "," "," ");
1238//    addteradatacmds(ESqlStatementType.sstteradatasetsessionaccount, TBaseType.rrw_set,"session","account"," "," "," "," ");
1239
1240    addteradatacmds(ESqlStatementType.sstteradatasettimezone, TBaseType.rrw_set,"time","zone"," "," "," "," ");
1241
1242    addteradatacmds(ESqlStatementType.sstteradatashow, TBaseType.rrw_show," "," "," "," "," "," ");
1243
1244    addteradatacmds(ESqlStatementType.sstteradatashowmethod, TBaseType.rrw_show,"constructor","method"," "," "," "," ");
1245
1246    addteradatacmds(ESqlStatementType.sstteradatashowfunction, TBaseType.rrw_show,"function"," "," "," "," "," ");
1247
1248    addteradatacmds(ESqlStatementType.sstteradatashowindex, TBaseType.rrw_show,"hash","index"," "," "," "," ");
1249
1250    addteradatacmds(ESqlStatementType.sstteradatashowmethod, TBaseType.rrw_show,"instance","method"," "," "," "," ");
1251
1252    addteradatacmds(ESqlStatementType.sstteradatashowindex, TBaseType.rrw_show,"join","index"," "," "," "," ");
1253
1254    addteradatacmds(ESqlStatementType.sstteradatashowmacro, TBaseType.rrw_show,"macro"," "," "," "," "," ");
1255
1256    addteradatacmds(ESqlStatementType.sstteradatashowmethod, TBaseType.rrw_show,"method"," "," "," "," "," ");
1257
1258    addteradatacmds(ESqlStatementType.sstteradatashowprocedure, TBaseType.rrw_show,"procedure"," "," "," "," "," ");
1259
1260    addteradatacmds(ESqlStatementType.sstteradatashowreplicationgroup, TBaseType.rrw_show,"replication","group"," "," "," "," ");
1261
1262    addteradatacmds(ESqlStatementType.sstteradatashowfunction, TBaseType.rrw_show,"specific","function"," "," "," "," ");
1263    addteradatacmds(ESqlStatementType.sstteradatashowmethod, TBaseType.rrw_show,"specific","method"," "," "," "," ");
1264
1265    addteradatacmds(ESqlStatementType.sstteradatashowtable, TBaseType.rrw_show,"table "," "," "," "," "," ");
1266    addteradatacmds(ESqlStatementType.sstteradatashowtable, TBaseType.rrw_show,"temporary","table"," "," "," "," ");
1267
1268    addteradatacmds(ESqlStatementType.sstteradatashowtrigger, TBaseType.rrw_show,"trigger"," "," "," "," "," ");
1269    addteradatacmds(ESqlStatementType.sstteradatashowtype, TBaseType.rrw_show,"type"," "," "," "," "," ");
1270    addteradatacmds(ESqlStatementType.sstteradatashowview, TBaseType.rrw_show,"view"," "," "," "," "," ");
1271
1272    //addteradatacmds(ESqlStatementType.sstteradatatest, TBaseType.rrw_test," "," "," "," "," "," ");
1273    addteradatacmds(ESqlStatementType.sstupdate, TBaseType.rrw_teradata_upd," "," "," "," "," "," ");
1274    addteradatacmds(ESqlStatementType.sstupdate, TBaseType.rrw_update," "," "," "," "," "," ");
1275
1276    addteradatacmds(ESqlStatementType.sstteradatausing, TBaseType.rrw_teradata_using," "," "," "," "," "," ");
1277
1278    addteradatacmds(ESqlStatementType.sstteradatawait, TBaseType.rrw_teradata_wait," "," "," "," "," "," ");
1279    //addteradatacmds(ESqlStatementType.sstteradatawhenever, TBaseType.rrw_whenever," "," "," "," "," "," ");
1280
1281}
1282
1283 void inithivecmds(){
1284     addhivecmds(ESqlStatementType.sstalterdatabase, TBaseType.rrw_alter,  "database"," "," "," "," "," ");
1285     addhivecmds(ESqlStatementType.sstalterindex, TBaseType.rrw_alter,  "index"," "," "," "," "," ");
1286     addhivecmds(ESqlStatementType.sstaltertable, TBaseType.rrw_alter,  "table"," "," "," "," "," ");
1287     addhivecmds(ESqlStatementType.sstalterview, TBaseType.rrw_alter,  "view"," "," "," "," "," ");
1288     addhivecmds(ESqlStatementType.sstanalyzeTable, TBaseType.rrw_analyze,  "table"," "," "," "," "," ");
1289
1290
1291     addhivecmds(ESqlStatementType.sstcreatedatabase, TBaseType.rrw_create,  "database"," "," "," "," "," ");
1292     addhivecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,  "external","table"," "," "," "," ");
1293     addhivecmds(ESqlStatementType.ssthiveCreateFunction, TBaseType.rrw_create,  "function"," "," "," "," "," ");
1294     addhivecmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,  "index"," "," "," "," "," ");
1295     addhivecmds(ESqlStatementType.sstcreatematerializedview, TBaseType.rrw_create,"materialized","view"," "," "," "," ");
1296
1297     addhivecmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,  "or","replace","view"," "," "," ");
1298     addhivecmds(ESqlStatementType.ssthiveCreateRole, TBaseType.rrw_create,  "role"," "," "," "," "," ");
1299     addhivecmds(ESqlStatementType.sstcreatedatabase, TBaseType.rrw_create,  "schema"," "," "," "," "," ");
1300     addhivecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,  "table"," "," "," "," "," ");
1301     addhivecmds(ESqlStatementType.ssthiveCreateFunction, TBaseType.rrw_create,  "temporary","function"," "," "," "," ");
1302     addhivecmds(ESqlStatementType.sstCreateMacro, TBaseType.rrw_create,  "temporary","macro"," "," "," "," ");
1303     addhivecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,  "temporary","table"," "," "," "," ");
1304     addhivecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,  "transactional","table"," "," "," "," ");
1305     addhivecmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,  "view"," "," "," "," "," ");
1306
1307     addhivecmds(ESqlStatementType.sstdelete, TBaseType.rrw_delete," "," "," "," "," "," ");
1308     addhivecmds(ESqlStatementType.ssthiveDesc, TBaseType.rrw_hive_desc,  " "," "," "," "," "," ");
1309
1310     addhivecmds(ESqlStatementType.ssthiveDesc, TBaseType.rrw_describe,  " "," "," "," "," "," ");
1311
1312     addhivecmds(ESqlStatementType.ssthiveDropDatabase, TBaseType.rrw_drop,  "database"," "," "," "," "," ");
1313     addhivecmds(ESqlStatementType.sstdropindex, TBaseType.rrw_drop,  "index"," "," "," "," "," ");
1314     addhivecmds(ESqlStatementType.ssthiveDropRole, TBaseType.rrw_drop,  "role"," "," "," "," "," ");
1315     addhivecmds(ESqlStatementType.ssthiveDropDatabase, TBaseType.rrw_drop,  "schema"," "," "," "," "," ");
1316     addhivecmds(ESqlStatementType.sstdroptable, TBaseType.rrw_drop,  "table"," "," "," "," "," ");
1317     addhivecmds(ESqlStatementType.ssthiveDropFunciton, TBaseType.rrw_drop,  "temporary","function"," "," "," "," ");
1318     addhivecmds(ESqlStatementType.sstDropMacro, TBaseType.rrw_drop,  "temporary","macro"," "," "," "," ");
1319     addhivecmds(ESqlStatementType.sstdropview, TBaseType.rrw_drop,  "view"," "," "," "," "," ");
1320
1321     addhivecmds(ESqlStatementType.ssthiveExplain, TBaseType.rrw_explain,  " "," "," "," "," "," ");
1322
1323     addhivecmds(ESqlStatementType.ssthiveExportTable, TBaseType.rrw_hive_export,  "table"," "," "," "," "," ");
1324
1325     addhivecmds(ESqlStatementType.ssthiveGrant, TBaseType.rrw_grant,  " "," "," "," "," "," ");
1326     addhivecmds(ESqlStatementType.ssthiveGrantRole, TBaseType.rrw_grant,  "role"," "," "," "," "," ");
1327
1328     addhivecmds(ESqlStatementType.ssthiveImportTable, TBaseType.rrw_hive_import,  "external","table"," "," "," "," ");
1329     addhivecmds(ESqlStatementType.ssthiveImportTable, TBaseType.rrw_hive_import,  "from"," "," "," "," "," ");
1330     addhivecmds(ESqlStatementType.ssthiveImportTable, TBaseType.rrw_hive_import,  "table"," "," "," "," "," ");
1331
1332     addhivecmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert,  " "," "," "," "," "," ");
1333
1334
1335     addhivecmds(ESqlStatementType.ssthiveLoad, TBaseType.rrw_load,  "data"," "," "," "," "," ");
1336
1337     addhivecmds(ESqlStatementType.ssthiveLockTable, TBaseType.rrw_lock,  "table"," "," "," "," "," ");
1338
1339     //merge
1340     addhivecmds(ESqlStatementType.sstmerge, TBaseType.rrw_merge," "," "," "," "," "," ");
1341
1342     addhivecmds(ESqlStatementType.sstmsck, TBaseType.rrw_hive_msck,  " "," "," "," "," "," ");
1343
1344     addhivecmds(ESqlStatementType.ssthiveRevoke, TBaseType.rrw_revoke,  " "," "," "," "," "," ");
1345     addhivecmds(ESqlStatementType.ssthiveRevokeRole, TBaseType.rrw_revoke,  "role"," "," "," "," "," ");
1346
1347     addhivecmds(ESqlStatementType.sstselect, TBaseType.rrw_select,  " "," "," "," "," "," ");
1348     addhivecmds(ESqlStatementType.ssthiveSet, TBaseType.rrw_set,  " "," "," "," "," "," ");
1349     addhivecmds(ESqlStatementType.ssthiveShow, TBaseType.rrw_show,  " "," "," "," "," "," ");
1350     addhivecmds(ESqlStatementType.ssthiveShowGrants, TBaseType.rrw_show,  "grant"," "," "," "," "," ");
1351     addhivecmds(ESqlStatementType.ssthiveShowRoleGrants, TBaseType.rrw_show,  "role","grant"," "," "," "," ");
1352
1353     addhivecmds(ESqlStatementType.sstTruncate, TBaseType.rrw_truncate,  "table"," "," "," "," "," ");
1354
1355     addhivecmds(ESqlStatementType.ssthiveUnlockTable, TBaseType.rrw_unlock,  "table"," "," "," "," "," ");
1356     addhivecmds(ESqlStatementType.sstupdate, TBaseType.rrw_update," "," "," "," "," "," ");
1357     addhivecmds(ESqlStatementType.sstupsert, TBaseType.rrw_hive_upsert, " ", " ", " ", " ", " ", " ");
1358     addhivecmds(ESqlStatementType.ssthiveSwitchDatabase, TBaseType.rrw_use,  " "," "," "," "," "," ");
1359 }
1360
1361    void initdatabrickscmds(){
1362        adddatabrickscmds(ESqlStatementType.sstaddAchieve, TBaseType.rrw_add,  "archive"," "," "," "," "," ");
1363        adddatabrickscmds(ESqlStatementType.sstaddAchieve, TBaseType.rrw_add,  "archives"," "," "," "," "," ");
1364        adddatabrickscmds(ESqlStatementType.sstaltercatalog, TBaseType.rrw_alter,  "catalog"," "," "," "," "," ");
1365        adddatabrickscmds(ESqlStatementType.sstalterdatabase, TBaseType.rrw_alter,  "database"," "," "," "," "," ");
1366        adddatabrickscmds(ESqlStatementType.sstalterlocation, TBaseType.rrw_alter,  "external","location"," "," "," "," ");
1367        adddatabrickscmds(ESqlStatementType.sstAlterGroup, TBaseType.rrw_alter,  "group"," "," "," "," "," ");
1368        adddatabrickscmds(ESqlStatementType.sstalterprovider, TBaseType.rrw_alter,  "provider"," "," "," "," "," ");
1369        adddatabrickscmds(ESqlStatementType.sstalterrecipient, TBaseType.rrw_alter,  "recipient"," "," "," "," "," ");
1370        adddatabrickscmds(ESqlStatementType.sstAlterSchema, TBaseType.rrw_alter,  "schema"," "," "," "," "," ");
1371        adddatabrickscmds(ESqlStatementType.sstAltershare, TBaseType.rrw_alter,  "share"," "," "," "," "," ");
1372        adddatabrickscmds(ESqlStatementType.sstaltercredental, TBaseType.rrw_alter,  "storage","credential"," "," "," "," ");
1373        adddatabrickscmds(ESqlStatementType.sstaltertable, TBaseType.rrw_alter,  "table"," "," "," "," "," ");
1374        adddatabrickscmds(ESqlStatementType.sstalterview, TBaseType.rrw_alter,  "view"," "," "," "," "," ");
1375        adddatabrickscmds(ESqlStatementType.sstAnalyzeTable, TBaseType.rrw_analyze,  "table"," "," "," "," "," ");
1376        adddatabrickscmds(ESqlStatementType.sstAnalyzeTable, TBaseType.rrw_analyze,  "tables"," "," "," "," "," ");
1377        adddatabrickscmds(ESqlStatementType.sstCacheSelect, TBaseType.rrw_cache,  "select"," "," "," "," "," ");
1378        adddatabrickscmds(ESqlStatementType.sstClearCache, TBaseType.rrw_clear,  "cache"," "," "," "," "," ");
1379        adddatabrickscmds(ESqlStatementType.sstCommentOn, TBaseType.rrw_comment,  "on"," "," "," "," "," ");
1380        adddatabrickscmds(ESqlStatementType.sstConvertToDelta, TBaseType.rrw_databricks_convert,  "to","delta"," "," "," "," ");
1381        adddatabrickscmds(ESqlStatementType.sstCopyInto, TBaseType.rrw_databricks_copy,  "into"," "," "," "," "," ");
1382        adddatabrickscmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,  "bloomfilter","index"," "," "," "," ");
1383        adddatabrickscmds(ESqlStatementType.sstcreatecatalog, TBaseType.rrw_create,  "catalog"," "," "," "," "," ");
1384        adddatabrickscmds(ESqlStatementType.sstcreatedatabase, TBaseType.rrw_create,  "database"," "," "," "," "," ");
1385        adddatabrickscmds(ESqlStatementType.sstCreateExternallocation, TBaseType.rrw_create,  "external","location"," "," "," "," ");
1386        adddatabrickscmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create,  "function"," "," "," "," "," ");
1387        adddatabrickscmds(ESqlStatementType.sstCreategroup, TBaseType.rrw_create,  "group"," "," "," "," "," ");
1388        adddatabrickscmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create,  "or","replace","function"," "," "," ");
1389        adddatabrickscmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,  "or","replace","table"," "," "," ");
1390        adddatabrickscmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create,  "or","replace","temp","function"," "," ");
1391        adddatabrickscmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,  "or","replace","temp","view"," "," ");
1392        adddatabrickscmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create,  "or","replace","temporary","function"," "," ");
1393        adddatabrickscmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,  "or","replace","temporary","view"," "," ");
1394        adddatabrickscmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,  "or","replace","view"," "," ", " ");
1395        adddatabrickscmds(ESqlStatementType.sstcreaterecipient, TBaseType.rrw_create,  "recipient"," "," "," "," "," ");
1396        adddatabrickscmds(ESqlStatementType.sstcreateschema, TBaseType.rrw_create,  "schema"," "," "," "," "," ");
1397        adddatabrickscmds(ESqlStatementType.sstcreateshare, TBaseType.rrw_create,  "share"," "," "," "," "," ");
1398        adddatabrickscmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create,  "temp","function"," "," "," "," ");
1399        adddatabrickscmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create,  "temporary","function"," "," "," "," ");
1400        adddatabrickscmds(ESqlStatementType.sstcreaterole, TBaseType.rrw_create,  "role"," "," "," "," "," ");
1401        adddatabrickscmds(ESqlStatementType.sstcreateschema, TBaseType.rrw_create,  "schema"," "," "," "," "," ");
1402        adddatabrickscmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,  "table"," "," "," "," "," ");
1403        adddatabrickscmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,  "view"," "," "," "," "," ");
1404        adddatabrickscmds(ESqlStatementType.sstdelete, TBaseType.rrw_delete,  "from"," "," "," "," "," ");
1405        adddatabrickscmds(ESqlStatementType.sstDeny, TBaseType.rrw_deny,  " "," "," "," "," "," ");
1406        adddatabrickscmds(ESqlStatementType.sstdescribe, TBaseType.rrw_databricks_desc,  " "," "," "," "," "," ");
1407        adddatabrickscmds(ESqlStatementType.sstdescribeCatalog, TBaseType.rrw_databricks_desc,  "catalog"," "," "," "," "," ");
1408        adddatabrickscmds(ESqlStatementType.sstdescribeFunction, TBaseType.rrw_databricks_desc,  "function"," "," "," "," "," ");
1409        adddatabrickscmds(ESqlStatementType.sstdescribeProvider, TBaseType.rrw_databricks_desc,  "provider"," "," "," "," "," ");
1410        adddatabrickscmds(ESqlStatementType.sstdescribeQuery, TBaseType.rrw_databricks_desc,  "query"," "," "," "," "," ");
1411        adddatabrickscmds(ESqlStatementType.sstdescribeRecipient, TBaseType.rrw_databricks_desc,  "recipient"," "," "," "," "," ");
1412        adddatabrickscmds(ESqlStatementType.sstdescribeSchema, TBaseType.rrw_databricks_desc,  "schema"," "," "," "," "," ");
1413        adddatabrickscmds(ESqlStatementType.sstdescribeShare, TBaseType.rrw_databricks_desc,  "share"," "," "," "," "," ");
1414        adddatabrickscmds(ESqlStatementType.sstdescribeTable, TBaseType.rrw_databricks_desc,  "table"," "," "," "," "," ");
1415        adddatabrickscmds(ESqlStatementType.sstdescribe, TBaseType.rrw_describe,  " "," "," "," "," "," ");
1416        adddatabrickscmds(ESqlStatementType.sstdescribeCatalog, TBaseType.rrw_describe,  "catalog"," "," "," "," "," ");
1417        adddatabrickscmds(ESqlStatementType.sstdescribeDatabase, TBaseType.rrw_describe,  "database"," "," "," "," "," ");
1418        adddatabrickscmds(ESqlStatementType.sstdescribeLocation, TBaseType.rrw_describe,  "external","location"," "," "," "," ");
1419        adddatabrickscmds(ESqlStatementType.sstdescribeFunction, TBaseType.rrw_describe,  "function"," "," "," "," "," ");
1420        adddatabrickscmds(ESqlStatementType.sstdescribeProvider, TBaseType.rrw_describe,  "provider"," "," "," "," "," ");
1421        adddatabrickscmds(ESqlStatementType.sstdescribeQuery, TBaseType.rrw_describe,  "query"," "," "," "," "," ");
1422        adddatabrickscmds(ESqlStatementType.sstdescribeRecipient, TBaseType.rrw_describe,  "recipient"," "," "," "," "," ");
1423        adddatabrickscmds(ESqlStatementType.sstdescribeSchema, TBaseType.rrw_describe,  "schema"," "," "," "," "," ");
1424        adddatabrickscmds(ESqlStatementType.sstdescribeShare, TBaseType.rrw_describe,  "share"," "," "," "," "," ");
1425        adddatabrickscmds(ESqlStatementType.sstdescribeCredential, TBaseType.rrw_describe,  "storage","credential"," "," "," "," ");
1426        adddatabrickscmds(ESqlStatementType.sstdescribeTable, TBaseType.rrw_describe,  "table"," "," "," "," "," ");
1427        adddatabrickscmds(ESqlStatementType.sstdropindex, TBaseType.rrw_drop,  "bloomfilter","index"," "," "," "," ");
1428        adddatabrickscmds(ESqlStatementType.sstdropcatalog, TBaseType.rrw_drop,  "catalog"," "," "," "," "," ");
1429        adddatabrickscmds(ESqlStatementType.sstdropdatabase, TBaseType.rrw_drop,  "database"," "," "," "," "," ");
1430        adddatabrickscmds(ESqlStatementType.sstdroplocation, TBaseType.rrw_drop,  "external","location"," "," "," "," ");
1431        adddatabrickscmds(ESqlStatementType.sstdropfunction, TBaseType.rrw_drop,  "function"," "," "," "," "," ");
1432        adddatabrickscmds(ESqlStatementType.sstDropGroup, TBaseType.rrw_drop,  "group"," "," "," "," "," ");
1433        adddatabrickscmds(ESqlStatementType.sstdropprovider, TBaseType.rrw_drop,  "provider"," "," "," "," "," ");
1434        adddatabrickscmds(ESqlStatementType.sstdroprecipient, TBaseType.rrw_drop,  "recipient"," "," "," "," "," ");
1435        adddatabrickscmds(ESqlStatementType.sstdropschema, TBaseType.rrw_drop,  "schema"," "," "," "," "," ");
1436        adddatabrickscmds(ESqlStatementType.sstdropshare, TBaseType.rrw_drop,  "share"," "," "," "," "," ");
1437        adddatabrickscmds(ESqlStatementType.sstdropcredential, TBaseType.rrw_drop,  "storage","credential"," "," "," "," ");
1438        adddatabrickscmds(ESqlStatementType.sstdropfunction, TBaseType.rrw_drop,  "temp","function"," "," "," "," ");
1439        adddatabrickscmds(ESqlStatementType.sstdropfunction, TBaseType.rrw_drop,  "temporary","function"," "," "," "," ");
1440        adddatabrickscmds(ESqlStatementType.sstdroptable, TBaseType.rrw_drop,  "table"," "," "," "," "," ");
1441        adddatabrickscmds(ESqlStatementType.sstdropview, TBaseType.rrw_drop,  "view"," "," "," "," "," ");
1442        adddatabrickscmds(ESqlStatementType.sstExplain, TBaseType.rrw_explain,  " "," "," "," "," "," ");
1443        adddatabrickscmds(ESqlStatementType.sstmsckrepairtable, TBaseType.rrw_databricks_fsck,  "repair"," "," "," "," "," ");
1444        adddatabrickscmds(ESqlStatementType.sstGrant, TBaseType.rrw_grant,  " "," "," "," "," "," ");
1445        adddatabrickscmds(ESqlStatementType.sstGrant, TBaseType.rrw_grant,  "select","on","share"," "," "," ");
1446        adddatabrickscmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert,  " "," "," "," "," "," ");
1447        adddatabrickscmds(ESqlStatementType.sstList, TBaseType.rrw_databricks_list,  " "," "," "," "," "," ");
1448        adddatabrickscmds(ESqlStatementType.sstLoadData, TBaseType.rrw_load,  "data"," "," "," "," "," ");
1449        adddatabrickscmds(ESqlStatementType.sstmerge, TBaseType.rrw_merge,  "into"," "," "," "," "," ");
1450        adddatabrickscmds(ESqlStatementType.sstmsckrepairtable, TBaseType.rrw_databricks_msck,  "repair"," "," "," "," "," ");
1451        adddatabrickscmds(ESqlStatementType.sstmsckrepairtable, TBaseType.rrw_databricks_msck,  "repair","table"," "," "," "," ");
1452        adddatabrickscmds(ESqlStatementType.sstOptimize, TBaseType.rrw_optimize,  " "," "," "," "," "," ");
1453        adddatabrickscmds(ESqlStatementType.sstRefresh, TBaseType.rrw_refresh,  " "," "," "," "," "," ");
1454        adddatabrickscmds(ESqlStatementType.sstRefreshFunction, TBaseType.rrw_refresh,  "function"," "," "," "," "," ");
1455        adddatabrickscmds(ESqlStatementType.sstRefreshTable, TBaseType.rrw_refresh,  "table"," "," "," "," "," ");
1456        adddatabrickscmds(ESqlStatementType.sstReorgTable, TBaseType.rrw_databricks_reorg,  "table"," "," "," "," "," ");
1457        adddatabrickscmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_replace,  "table"," "," "," "," "," ");
1458        adddatabrickscmds(ESqlStatementType.sstReset, TBaseType.rrw_reset,  " "," "," "," "," "," ");
1459        adddatabrickscmds(ESqlStatementType.sstRestoreTable, TBaseType.rrw_restore,  " "," "," "," "," "," ");
1460        adddatabrickscmds(ESqlStatementType.sstRevoke, TBaseType.rrw_revoke,  " "," "," "," "," "," ");
1461        adddatabrickscmds(ESqlStatementType.sstRevoke, TBaseType.rrw_revoke,  "select","on","share"," "," "," ");
1462        adddatabrickscmds(ESqlStatementType.sstset, TBaseType.rrw_set,  " "," "," "," "," "," ");
1463        adddatabrickscmds(ESqlStatementType.sstUseCatalog, TBaseType.rrw_set,  "catalog"," "," "," "," "," ");
1464        adddatabrickscmds(ESqlStatementType.sstset, TBaseType.rrw_set,  "time","zone"," "," "," "," ");
1465        adddatabrickscmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "all","functions"," "," "," "," ");
1466        adddatabrickscmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "all","in","share"," "," "," ");
1467        adddatabrickscmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "catalogs"," "," "," "," "," ");
1468        adddatabrickscmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "columns"," "," "," "," "," ");
1469        adddatabrickscmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "create","table"," "," "," "," ");
1470        adddatabrickscmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "external","locations"," "," "," "," ");
1471        adddatabrickscmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "functions"," "," "," "," "," ");
1472        adddatabrickscmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "grants"," "," "," "," "," ");
1473        adddatabrickscmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "grants","on","share"," "," "," ");
1474        adddatabrickscmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "grants","to","recipient"," "," "," ");
1475        adddatabrickscmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "groups"," "," "," "," "," ");
1476        adddatabrickscmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "partitions"," "," "," "," "," ");
1477        adddatabrickscmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "providers"," "," "," "," "," ");
1478        adddatabrickscmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "recipients"," "," "," "," "," ");
1479        adddatabrickscmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "schemas"," "," "," "," "," ");
1480        adddatabrickscmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "shares"," "," "," "," "," ");
1481        adddatabrickscmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "storage","credentials"," "," "," "," ");
1482        adddatabrickscmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "system","functions"," "," "," "," ");
1483        adddatabrickscmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "table","extended"," "," "," "," ");
1484        adddatabrickscmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "tables"," "," "," "," "," ");
1485        adddatabrickscmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "tblproperties"," "," "," "," "," ");
1486        adddatabrickscmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "user","functions"," "," "," "," ");
1487        adddatabrickscmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "users"," "," "," "," "," ");
1488        adddatabrickscmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "views"," "," "," "," "," ");
1489        adddatabrickscmds(ESqlStatementType.sstsync, TBaseType.rrw_databricks_sync,  "schema"," "," "," "," "," ");
1490        adddatabrickscmds(ESqlStatementType.sstsync, TBaseType.rrw_databricks_sync,  "table"," "," "," "," "," ");
1491        adddatabrickscmds(ESqlStatementType.ssttruncatetable, TBaseType.rrw_truncate,  "table"," "," "," "," "," ");
1492        adddatabrickscmds(ESqlStatementType.sstUnCacheTable, TBaseType.rrw_databricks_uncache,  "table"," "," "," "," "," ");
1493        adddatabrickscmds(ESqlStatementType.sstupdate, TBaseType.rrw_update,  " "," "," "," "," "," ");
1494        adddatabrickscmds(ESqlStatementType.sstUseSchema, TBaseType.rrw_use,  " "," "," "," "," "," ");
1495        adddatabrickscmds(ESqlStatementType.sstUseCatalog, TBaseType.rrw_use,  "catalog"," "," "," "," "," ");
1496        adddatabrickscmds(ESqlStatementType.sstUseSchema, TBaseType.rrw_use,  "database"," "," "," "," "," ");
1497        adddatabrickscmds(ESqlStatementType.sstUseSchema, TBaseType.rrw_use,  "schema"," "," "," "," "," ");
1498        adddatabrickscmds(ESqlStatementType.sstVacuum, TBaseType.rrw_databricks_vacuum,  " "," "," "," "," "," ");
1499
1500        adddatabrickscmds(ESqlStatementType.sstValues, TBaseType.rrw_values,  " "," "," "," "," "," ");
1501
1502        adddatabrickscmds(ESqlStatementType.sstGrant, TBaseType.rrw_grant,  " "," "," "," "," "," ");
1503        adddatabrickscmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert,  " "," "," "," "," "," ");
1504        adddatabrickscmds(ESqlStatementType.sstprepare, TBaseType.rrw_prepare,  " "," "," "," "," "," ");
1505        adddatabrickscmds(ESqlStatementType.sstcreaterole, TBaseType.rrw_replace,  "table"," "," "," "," "," ");
1506        adddatabrickscmds(ESqlStatementType.sstResetSession, TBaseType.rrw_reset,  "session"," "," "," "," "," ");
1507        adddatabrickscmds(ESqlStatementType.sstRevoke, TBaseType.rrw_revoke,  " "," "," "," "," "," ");
1508        adddatabrickscmds(ESqlStatementType.sstrollback, TBaseType.rrw_rollback,  " "," "," "," "," "," ");
1509        adddatabrickscmds(ESqlStatementType.sstselect, TBaseType.rrw_select,  " "," "," "," "," "," ");
1510        adddatabrickscmds(ESqlStatementType.sstset, TBaseType.rrw_set,  "role"," "," "," "," "," ");
1511        adddatabrickscmds(ESqlStatementType.sstset, TBaseType.rrw_set,  "session"," "," "," "," "," ");
1512
1513        adddatabrickscmds(ESqlStatementType.sstStartTransaction, TBaseType.rrw_start,  "transaction"," "," "," "," "," ");
1514
1515    }
1516    void initprestocmds(){
1517        addprestocmds(ESqlStatementType.sstalterfunction, TBaseType.rrw_alter,  "function"," "," "," "," "," ");
1518        addprestocmds(ESqlStatementType.sstAlterSchema, TBaseType.rrw_alter,  "schema"," "," "," "," "," ");
1519        addprestocmds(ESqlStatementType.sstaltertable, TBaseType.rrw_alter,  "table"," "," "," "," "," ");
1520        addprestocmds(ESqlStatementType.sstAnalyzeTable, TBaseType.rrw_analyze,  " "," "," "," "," "," ");
1521        addprestocmds(ESqlStatementType.sstcall, TBaseType.rrw_call,  " "," "," "," "," "," ");
1522        addprestocmds(ESqlStatementType.sstcommit, TBaseType.rrw_commit,  " "," "," "," "," "," ");
1523        addprestocmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create,  "function"," "," "," "," "," ");
1524        addprestocmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create,  "or","replace","function"," "," "," ");
1525        addprestocmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create,  "temporary","function"," "," "," "," ");
1526        addprestocmds(ESqlStatementType.sstcreaterole, TBaseType.rrw_create,  "role"," "," "," "," "," ");
1527        addprestocmds(ESqlStatementType.sstcreateschema, TBaseType.rrw_create,  "schema"," "," "," "," "," ");
1528        addprestocmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,  "table"," "," "," "," "," ");
1529        addprestocmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,  "view"," "," "," "," "," ");
1530        addprestocmds(ESqlStatementType.sstpostgresqlDeallocate, TBaseType.rrw_deallocate,  "prepare"," "," "," "," "," ");
1531        addprestocmds(ESqlStatementType.sstdelete, TBaseType.rrw_delete,  " "," "," "," "," "," ");
1532        addprestocmds(ESqlStatementType.sstdescribe, TBaseType.rrw_describe,  " "," "," "," "," "," ");
1533        addprestocmds(ESqlStatementType.sstdropfunction, TBaseType.rrw_drop,  "function"," "," "," "," "," ");
1534        addprestocmds(ESqlStatementType.sstdroprole, TBaseType.rrw_drop,  "role"," "," "," "," "," ");
1535        addprestocmds(ESqlStatementType.sstdropschema, TBaseType.rrw_drop,  "schema"," "," "," "," "," ");
1536        addprestocmds(ESqlStatementType.sstdroptable, TBaseType.rrw_drop,  "table"," "," "," "," "," ");
1537        addprestocmds(ESqlStatementType.sstdropview, TBaseType.rrw_drop,  "view"," "," "," "," "," ");
1538        addprestocmds(ESqlStatementType.sstExecute, TBaseType.rrw_execute,  " "," "," "," "," "," ");
1539        addprestocmds(ESqlStatementType.sstExplain, TBaseType.rrw_explain,  " "," "," "," "," "," ");
1540        addprestocmds(ESqlStatementType.sstGrant, TBaseType.rrw_grant,  " "," "," "," "," "," ");
1541        addprestocmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert,  " "," "," "," "," "," ");
1542        addprestocmds(ESqlStatementType.sstprepare, TBaseType.rrw_prepare,  " "," "," "," "," "," ");
1543        addprestocmds(ESqlStatementType.sstResetSession, TBaseType.rrw_reset,  "session"," "," "," "," "," ");
1544        addprestocmds(ESqlStatementType.sstRevoke, TBaseType.rrw_revoke,  " "," "," "," "," "," ");
1545        addprestocmds(ESqlStatementType.sstrollback, TBaseType.rrw_rollback,  " "," "," "," "," "," ");
1546        addprestocmds(ESqlStatementType.sstselect, TBaseType.rrw_select,  " "," "," "," "," "," ");
1547        addprestocmds(ESqlStatementType.sstset, TBaseType.rrw_set,  "role"," "," "," "," "," ");
1548        addprestocmds(ESqlStatementType.sstset, TBaseType.rrw_set,  "session"," "," "," "," "," ");
1549        addprestocmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "catalogs"," "," "," "," "," ");
1550        addprestocmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "columns"," "," "," "," "," ");
1551        addprestocmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "create","function"," "," "," "," ");
1552        addprestocmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "create","table"," "," "," "," ");
1553        addprestocmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "create","view"," "," "," "," ");
1554        addprestocmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "current","roles"," "," "," "," ");
1555        addprestocmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "functions"," "," "," "," "," ");
1556        addprestocmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "grants"," "," "," "," "," ");
1557        addprestocmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "role","grants"," "," "," "," ");
1558        addprestocmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "roles"," "," "," "," "," ");
1559        addprestocmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "schemas"," "," "," "," "," ");
1560        addprestocmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "session"," "," "," "," "," ");
1561        addprestocmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "stats"," "," "," "," "," ");
1562        addprestocmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "tables"," "," "," "," "," ");
1563        addprestocmds(ESqlStatementType.sstStartTransaction, TBaseType.rrw_start,  "transaction"," "," "," "," "," ");
1564        addprestocmds(ESqlStatementType.sstUse, TBaseType.rrw_use,  " "," "," "," "," "," ");
1565        addprestocmds(ESqlStatementType.sstValues, TBaseType.rrw_values,  " "," "," "," "," "," ");
1566    }
1567
1568    void initathenacmds(){
1569        addathenacmds(ESqlStatementType.sstalterdatabase, TBaseType.rrw_alter,  "database"," "," "," "," "," ");
1570        addathenacmds(ESqlStatementType.sstalterfunction, TBaseType.rrw_alter,  "function"," "," "," "," "," ");
1571        addathenacmds(ESqlStatementType.sstalterdatabase, TBaseType.rrw_alter,  "schema"," "," "," "," "," ");
1572        addathenacmds(ESqlStatementType.sstaltertable, TBaseType.rrw_alter,  "table"," "," "," "," "," ");
1573        addathenacmds(ESqlStatementType.sstAnalyzeTable, TBaseType.rrw_analyze,  " "," "," "," "," "," ");
1574        addathenacmds(ESqlStatementType.sstcall, TBaseType.rrw_call,  " "," "," "," "," "," ");
1575        addathenacmds(ESqlStatementType.sstcommit, TBaseType.rrw_commit,  " "," "," "," "," "," ");
1576        addathenacmds(ESqlStatementType.sstcreatedatabase, TBaseType.rrw_create,  "database"," "," "," "," "," ");
1577        addathenacmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create,  "function"," "," "," "," "," ");
1578        addathenacmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create,  "or","replace","function"," "," "," ");
1579        addathenacmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create,  "temporary","function"," "," "," "," ");
1580        addathenacmds(ESqlStatementType.sstcreaterole, TBaseType.rrw_create,  "role"," "," "," "," "," ");
1581        addathenacmds(ESqlStatementType.sstcreatedatabase, TBaseType.rrw_create,  "schema"," "," "," "," "," ");
1582        addathenacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,  "table"," "," "," "," "," ");
1583        addathenacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,  "external","table"," "," "," "," ");
1584        addathenacmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,  "view"," "," "," "," "," ");
1585        addathenacmds(ESqlStatementType.sstpostgresqlDeallocate, TBaseType.rrw_deallocate,  "prepare"," "," "," "," "," ");
1586        addathenacmds(ESqlStatementType.sstdelete, TBaseType.rrw_delete,  " "," "," "," "," "," ");
1587        addathenacmds(ESqlStatementType.sstdescribe, TBaseType.rrw_describe,  " "," "," "," "," "," ");
1588        addathenacmds(ESqlStatementType.sstdropdatabase, TBaseType.rrw_drop,  "database"," "," "," "," "," ");
1589        addathenacmds(ESqlStatementType.sstdropfunction, TBaseType.rrw_drop,  "function"," "," "," "," "," ");
1590        addathenacmds(ESqlStatementType.sstdroprole, TBaseType.rrw_drop,  "role"," "," "," "," "," ");
1591        addathenacmds(ESqlStatementType.sstdropdatabase, TBaseType.rrw_drop,  "schema"," "," "," "," "," ");
1592        addathenacmds(ESqlStatementType.sstdroptable, TBaseType.rrw_drop,  "table"," "," "," "," "," ");
1593        addathenacmds(ESqlStatementType.sstdropview, TBaseType.rrw_drop,  "view"," "," "," "," "," ");
1594        addathenacmds(ESqlStatementType.sstExecute, TBaseType.rrw_execute,  " "," "," "," "," "," ");
1595        addathenacmds(ESqlStatementType.sstExplain, TBaseType.rrw_explain,  " "," "," "," "," "," ");
1596        addathenacmds(ESqlStatementType.sstGrant, TBaseType.rrw_grant,  " "," "," "," "," "," ");
1597        addathenacmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert,  " "," "," "," "," "," ");
1598        addathenacmds(ESqlStatementType.sstmsck, TBaseType.rrw_athena_msck,  " "," "," "," "," "," ");
1599        addathenacmds(ESqlStatementType.sstprepare, TBaseType.rrw_prepare,  " "," "," "," "," "," ");
1600        addathenacmds(ESqlStatementType.sstResetSession, TBaseType.rrw_reset,  "session"," "," "," "," "," ");
1601        addathenacmds(ESqlStatementType.sstRevoke, TBaseType.rrw_revoke,  " "," "," "," "," "," ");
1602        addathenacmds(ESqlStatementType.sstrollback, TBaseType.rrw_rollback,  " "," "," "," "," "," ");
1603        addathenacmds(ESqlStatementType.sstselect, TBaseType.rrw_select,  " "," "," "," "," "," ");
1604        addathenacmds(ESqlStatementType.sstset, TBaseType.rrw_set,  "role"," "," "," "," "," ");
1605        addathenacmds(ESqlStatementType.sstset, TBaseType.rrw_set,  "session"," "," "," "," "," ");
1606        addathenacmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "catalogs"," "," "," "," "," ");
1607        addathenacmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "columns"," "," "," "," "," ");
1608        addathenacmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "create","function"," "," "," "," ");
1609        addathenacmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "create","table"," "," "," "," ");
1610        addathenacmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "create","view"," "," "," "," ");
1611        addathenacmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "current","roles"," "," "," "," ");
1612        addathenacmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "databases"," "," "," "," "," ");
1613        addathenacmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "functions"," "," "," "," "," ");
1614        addathenacmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "grants"," "," "," "," "," ");
1615        addathenacmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "partitions"," "," "," "," "," ");
1616        addathenacmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "role","grants"," "," "," "," ");
1617        addathenacmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "roles"," "," "," "," "," ");
1618        addathenacmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "schemas"," "," "," "," "," ");
1619        addathenacmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "session"," "," "," "," "," ");
1620        addathenacmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "stats"," "," "," "," "," ");
1621        addathenacmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "tables"," "," "," "," "," ");
1622        addathenacmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "tblproperties"," "," "," "," "," ");
1623        addathenacmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "views"," "," "," "," "," ");
1624        addathenacmds(ESqlStatementType.sstStartTransaction, TBaseType.rrw_start,  "transaction"," "," "," "," "," ");
1625        addathenacmds(ESqlStatementType.sstunload, TBaseType.rrw_athena_unload, " ", " ", " ", " ", " ", " ");
1626        addathenacmds(ESqlStatementType.sstUse, TBaseType.rrw_use,  " "," "," "," "," "," ");
1627        addathenacmds(ESqlStatementType.sstValues, TBaseType.rrw_values,  " "," "," "," "," "," ");
1628    }
1629
1630 void initsparksqlcmds(){
1631     addsparksqlcmds(ESqlStatementType.sstAddFile, TBaseType.rrw_add,  "file"," "," "," "," "," ");
1632     addsparksqlcmds(ESqlStatementType.sstAddJar, TBaseType.rrw_add,  "jar"," "," "," "," "," ");
1633     addsparksqlcmds(ESqlStatementType.sstalterdatabase, TBaseType.rrw_alter,  "database"," "," "," "," "," ");
1634     addsparksqlcmds(ESqlStatementType.sstaltertable, TBaseType.rrw_alter,  "table"," "," "," "," "," ");
1635     addsparksqlcmds(ESqlStatementType.sstalterview, TBaseType.rrw_alter,  "view"," "," "," "," "," ");
1636     addsparksqlcmds(ESqlStatementType.sstanalyzeTable, TBaseType.rrw_analyze,  "table"," "," "," "," "," ");
1637     addsparksqlcmds(ESqlStatementType.sstCacheTable, TBaseType.rrw_cache,  "table"," "," "," "," "," ");
1638     addsparksqlcmds(ESqlStatementType.sstCacheTable, TBaseType.rrw_cache,  "lazy","table"," "," "," "," ");
1639     addsparksqlcmds(ESqlStatementType.sstClearCache, TBaseType.rrw_clear,  "cache"," "," "," "," "," ");
1640     addsparksqlcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,  "external","table"," "," "," "," ");
1641     addsparksqlcmds(ESqlStatementType.sstcreatedatabase, TBaseType.rrw_create,  "database"," "," "," "," "," ");
1642     addsparksqlcmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create,  "function"," "," "," "," "," ");
1643     addsparksqlcmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,  "global","temporary","view"," "," "," ");
1644     addsparksqlcmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create,  "or","replace","function"," "," "," ");
1645     addsparksqlcmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,  "or","replace","global","temporary","view"," ");
1646     addsparksqlcmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create,  "or","replace","temporary","function"," "," ");
1647     addsparksqlcmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,  "or","replace","temporary","view"," "," ");
1648     addsparksqlcmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,  "or","replace","view"," "," "," ");
1649     addsparksqlcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,  "table"," "," "," "," "," ");
1650     addsparksqlcmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create,  "temporary","function"," "," "," "," ");
1651     addsparksqlcmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,  "temporary","view"," "," "," "," ");
1652     addsparksqlcmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,  "view"," "," "," "," "," ");
1653     addsparksqlcmds(ESqlStatementType.sstdescribeTable, TBaseType.rrw_spark_desc,  " "," "," "," "," "," ");
1654     addsparksqlcmds(ESqlStatementType.sstdescribeTable, TBaseType.rrw_describe,  " "," "," "," "," "," ");
1655     addsparksqlcmds(ESqlStatementType.sstdescribeDatabase, TBaseType.rrw_spark_desc,  "database"," "," "," "," "," ");
1656     addsparksqlcmds(ESqlStatementType.sstdescribeFunction, TBaseType.rrw_spark_desc,  "function"," "," "," "," "," ");
1657     addsparksqlcmds(ESqlStatementType.sstdescribeQuery, TBaseType.rrw_spark_desc,  "query"," "," "," "," "," ");
1658     addsparksqlcmds(ESqlStatementType.sstdescribeTable, TBaseType.rrw_spark_desc,  "table"," "," "," "," "," ");
1659     addsparksqlcmds(ESqlStatementType.sstdescribeFunction, TBaseType.rrw_describe,  "function"," "," "," "," "," ");
1660     addsparksqlcmds(ESqlStatementType.sstdescribeDatabase, TBaseType.rrw_describe,  "database"," "," "," "," "," ");
1661     addsparksqlcmds(ESqlStatementType.sstdescribeQuery, TBaseType.rrw_describe,  "query"," "," "," "," "," ");
1662     addsparksqlcmds(ESqlStatementType.sstdescribeTable, TBaseType.rrw_describe,  "table"," "," "," "," "," ");
1663     addsparksqlcmds(ESqlStatementType.sstdropdatabase, TBaseType.rrw_drop,  "schema"," "," "," "," "," ");
1664     addsparksqlcmds(ESqlStatementType.sstdropdatabase, TBaseType.rrw_drop,  "database"," "," "," "," "," ");
1665     addsparksqlcmds(ESqlStatementType.sstdropfunction, TBaseType.rrw_drop,  "function"," "," "," "," "," ");
1666     addsparksqlcmds(ESqlStatementType.sstdropfunction, TBaseType.rrw_drop,  "temporary","function"," "," "," "," ");
1667     addsparksqlcmds(ESqlStatementType.sstdroptable, TBaseType.rrw_drop,  "table"," "," "," "," "," ");
1668     addsparksqlcmds(ESqlStatementType.sstdropview, TBaseType.rrw_drop,  "view"," "," "," "," "," ");
1669     addsparksqlcmds(ESqlStatementType.sstExplain, TBaseType.rrw_explain,  " "," "," "," "," "," ");
1670     addsparksqlcmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert,  " "," "," "," "," "," ");
1671     addsparksqlcmds(ESqlStatementType.sstListFile, TBaseType.rrw_spark_list,  "file"," "," "," "," "," ");
1672     addsparksqlcmds(ESqlStatementType.sstListJar, TBaseType.rrw_spark_list,  "jar"," "," "," "," "," ");
1673     addsparksqlcmds(ESqlStatementType.sstLoadData, TBaseType.rrw_load,  "data"," "," "," "," "," ");
1674     addsparksqlcmds(ESqlStatementType.sstmsck, TBaseType.rrw_spark_msck, "repair","table"," "," "," "," ");
1675     addsparksqlcmds(ESqlStatementType.sstRefresh, TBaseType.rrw_refresh,  " "," "," "," "," "," ");
1676     addsparksqlcmds(ESqlStatementType.sstRefreshFunction, TBaseType.rrw_refresh,  "function"," "," "," "," "," ");
1677     addsparksqlcmds(ESqlStatementType.sstRefreshTable, TBaseType.rrw_refresh,  "table"," "," "," "," "," ");
1678     addsparksqlcmds(ESqlStatementType.sstReset, TBaseType.rrw_reset,  " "," "," "," "," "," ");
1679     addsparksqlcmds(ESqlStatementType.sstselect, TBaseType.rrw_select,  " "," "," "," "," "," ");
1680     addsparksqlcmds(ESqlStatementType.sstset, TBaseType.rrw_set,  " "," "," "," "," "," ");
1681     addsparksqlcmds(ESqlStatementType.sstSetTimeZone, TBaseType.rrw_set,  "time","zone"," "," "," "," ");
1682     addsparksqlcmds(ESqlStatementType.sstShowColumns, TBaseType.rrw_show,  "columns"," "," "," "," "," ");
1683     addsparksqlcmds(ESqlStatementType.sstShowCreateTable, TBaseType.rrw_show,  "create","table"," "," "," "," ");
1684     addsparksqlcmds(ESqlStatementType.sstShowDatabases, TBaseType.rrw_show,  "databases"," "," "," "," "," ");
1685     addsparksqlcmds(ESqlStatementType.sstShowFunctions, TBaseType.rrw_show,  "functions"," "," "," "," "," ");
1686     addsparksqlcmds(ESqlStatementType.sstShowPartitions, TBaseType.rrw_show,  "partitions"," "," "," "," "," ");
1687     addsparksqlcmds(ESqlStatementType.sstShowTableExtended, TBaseType.rrw_show,  "table","extended"," "," "," "," ");
1688     addsparksqlcmds(ESqlStatementType.sstShowTables, TBaseType.rrw_show,  "tables"," "," "," "," "," ");
1689     addsparksqlcmds(ESqlStatementType.sstShowTblProperties, TBaseType.rrw_show,  "tblproperties"," "," "," "," "," ");
1690     addsparksqlcmds(ESqlStatementType.sstShowUser, TBaseType.rrw_show,  "user"," "," "," "," "," ");
1691     addsparksqlcmds(ESqlStatementType.sstShowViews, TBaseType.rrw_show,  "views"," "," "," "," "," ");
1692     addsparksqlcmds(ESqlStatementType.ssttruncatetable, TBaseType.rrw_truncate,  "table"," "," "," "," "," ");
1693     addsparksqlcmds(ESqlStatementType.sstrepairtable, TBaseType.rrw_repair,  "table"," "," "," "," "," ");
1694     addsparksqlcmds(ESqlStatementType.sstUnCacheTable, TBaseType.rrw_spark_uncache,  "table"," "," "," "," "," ");
1695     addsparksqlcmds(ESqlStatementType.sstUse, TBaseType.rrw_use,  " "," "," "," "," "," ");
1696
1697 }
1698
1699 void initmysqlcmds(){
1700// cmd must be sort alphabetically
1701    addmysqlcmds(ESqlStatementType.sstmysqlalterview, TBaseType.rrw_alter,  "algorithm"," "," "," "," "," ");
1702    addmysqlcmds(ESqlStatementType.sstmysqlalterdatabase, TBaseType.rrw_alter,  "database"," "," "," "," "," ");
1703     addmysqlcmds(ESqlStatementType.sstmysqlalterfunction, TBaseType.rrw_alter,  "function"," "," "," "," "," ");
1704     addmysqlcmds(ESqlStatementType.sstmysqlalterprocedure, TBaseType.rrw_alter,  "procedure"," "," "," "," "," ");
1705     addmysqlcmds(ESqlStatementType.sstmysqlalterview, TBaseType.rrw_alter,  "sql","security","definer","view"," "," ");
1706     addmysqlcmds(ESqlStatementType.sstmysqlalterview, TBaseType.rrw_alter,  "sql","security","invoker","view"," "," ");
1707     addmysqlcmds(ESqlStatementType.sstaltertable, TBaseType.rrw_alter,  "table"," "," "," "," "," ");
1708     addmysqlcmds(ESqlStatementType.sstmysqlalterview, TBaseType.rrw_alter,  "view"," "," "," "," "," ");
1709     addmysqlcmds(ESqlStatementType.sstmysqlanalyzetable, TBaseType.rrw_analyze,  "table"," "," "," "," "," ");
1710     addmysqlcmds(ESqlStatementType.sstmysqlbackuptable, TBaseType.rrw_backup, "table"," "," "," "," "," ");
1711     addmysqlcmds(ESqlStatementType.sstmysqlstarttransaction, TBaseType.rrw_begin, " "," "," "," "," "," ");
1712     addmysqlcmds(ESqlStatementType.sstmysqlcacheindex, TBaseType.rrw_cache,  "index"," "," "," "," "," ");
1713     addmysqlcmds(ESqlStatementType.sstmysqlcall, TBaseType.rrw_call," "," "," "," "," "," ");
1714     addmysqlcmds(ESqlStatementType.sstmysqlcase, TBaseType.rrw_case," "," "," "," "," "," ");
1715     addmysqlcmds(ESqlStatementType.sstmysqlchangemasterto, TBaseType.rrw_change,"master", "to"," "," "," "," ");
1716     addmysqlcmds(ESqlStatementType.sstmysqlchecktable, TBaseType.rrw_check,"table"," "," "," "," "," ");
1717     addmysqlcmds(ESqlStatementType.sstmysqlchecktable, TBaseType.rrw_check,"tables"," "," "," "," "," ");
1718     addmysqlcmds(ESqlStatementType.sstmysqlchecksumtable, TBaseType.rrw_checksum,"table"," "," "," "," "," ");
1719     addmysqlcmds(ESqlStatementType.sstmysqlclose, TBaseType.rrw_close," "," "," "," "," "," ");
1720     addmysqlcmds(ESqlStatementType.sstmysqlcommit, TBaseType.rrw_commit," "," "," "," "," "," ");
1721     addmysqlcmds(ESqlStatementType.sstmysqlcreatefunction, TBaseType.rrw_create,"aggregate","function"," "," "," "," ");
1722     addmysqlcmds(ESqlStatementType.sstmysqlcreatedatabase, TBaseType.rrw_create,"database"," "," "," "," "," ");
1723     addmysqlcmds(ESqlStatementType.sstmysqlcreatefunction, TBaseType.rrw_create,"definer", "=", "current_user", "function"," "," ");
1724     addmysqlcmds(ESqlStatementType.sstmysqlcreateprocedure, TBaseType.rrw_create,"definer", "=", "current_user", "procedure"," "," ");
1725     addmysqlcmds(ESqlStatementType.sstcreatetrigger, TBaseType.rrw_create,"definer", "=", "current_user", "trigger"," "," ");
1726     addmysqlcmds(ESqlStatementType.sstmysqlcreateprocedure, TBaseType.rrw_create,"definer", "=","*","procedure"," "," ");
1727     addmysqlcmds(ESqlStatementType.sstmysqlcreatefunction, TBaseType.rrw_create,"definer", "=","*","function"," "," ");
1728     addmysqlcmds(ESqlStatementType.sstcreatetrigger, TBaseType.rrw_create,"definer", "=","*","trigger"," "," ");
1729     addmysqlcmds(ESqlStatementType.sstmysqlcreatefunction, TBaseType.rrw_create,"definer", "=","*","*","*","function");
1730     addmysqlcmds(ESqlStatementType.sstmysqlcreateprocedure, TBaseType.rrw_create,"definer", "=","*","*","*","procedure");
1731     addmysqlcmds(ESqlStatementType.sstcreatetrigger, TBaseType.rrw_create,"definer", "=","*","*","*","trigger");
1732     addmysqlcmds(ESqlStatementType.sstmysqlcreateindex, TBaseType.rrw_create,"fulltext","index"," "," "," "," ");
1733     addmysqlcmds(ESqlStatementType.sstmysqlcreatefunction, TBaseType.rrw_create,"function"," "," "," "," "," ");
1734     addmysqlcmds(ESqlStatementType.sstmysqlcreateindex, TBaseType.rrw_create,"index"," "," "," "," "," ");
1735     addmysqlcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"or","replace","table"," "," "," ");
1736     addmysqlcmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,"or","replace","view"," "," "," ");
1737     addmysqlcmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,"or","replace","*","*","*","view");
1738     addmysqlcmds(ESqlStatementType.sstmysqlcreateprocedure, TBaseType.rrw_create,"procedure"," "," "," "," "," ");
1739     addmysqlcmds(ESqlStatementType.sstmysqlcreateindex, TBaseType.rrw_create,"spatial","index"," "," "," "," ");
1740     addmysqlcmds(ESqlStatementType.sstmysqlcreatedatabase, TBaseType.rrw_create,"schema"," "," "," "," "," ");
1741     addmysqlcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"table"," "," "," "," "," ");
1742     addmysqlcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"temp","table"," "," "," "," ");
1743     addmysqlcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"temporary","table"," "," "," "," ");
1744     addmysqlcmds(ESqlStatementType.sstcreatetrigger, TBaseType.rrw_create,"trigger"," "," "," "," "," ");
1745     addmysqlcmds(ESqlStatementType.sstmysqlcreateindex, TBaseType.rrw_create,"unique","index"," "," "," "," ");
1746     addmysqlcmds(ESqlStatementType.sstmysqlcreateuser, TBaseType.rrw_create,"user"," "," "," "," "," ");
1747     addmysqlcmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,"view"," "," "," "," "," ");
1748     addmysqlcmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,"*","*","*","*","*","view");
1749     addmysqlcmds(ESqlStatementType.sstmysqldeallocateprepare, TBaseType.rrw_deallocate,"prepare"," "," "," "," "," ");
1750     addmysqlcmds(ESqlStatementType.sstmysqldeclare, TBaseType.rrw_declare," "," "," "," "," "," ");
1751     addmysqlcmds(ESqlStatementType.sstdelete, TBaseType.rrw_delete," "," "," "," "," "," ");
1752     addmysqlcmds(ESqlStatementType.sstmysqldelimiter, TBaseType.rrw_mysql_delimiter," "," "," "," "," "," ");
1753     addmysqlcmds(ESqlStatementType.sstdescribe, TBaseType.rrw_mysql_desc," "," "," "," "," "," ");
1754     addmysqlcmds(ESqlStatementType.sstdescribe, TBaseType.rrw_describe," "," "," "," "," "," ");
1755     addmysqlcmds(ESqlStatementType.sstmysqldo, TBaseType.rrw_do," "," "," "," "," "," ");
1756     addmysqlcmds(ESqlStatementType.sstmysqldropdatabase, TBaseType.rrw_drop,"database"," "," "," "," "," ");
1757     addmysqlcmds(ESqlStatementType.sstmysqldropfunction, TBaseType.rrw_drop,"function"," "," "," "," "," ");
1758     addmysqlcmds(ESqlStatementType.sstmysqldropindex, TBaseType.rrw_drop,"index"," "," "," "," "," ");
1759     addmysqlcmds(ESqlStatementType.sstmysqldropprepare, TBaseType.rrw_drop,"prepare"," "," "," "," "," ");
1760     addmysqlcmds(ESqlStatementType.sstmysqldropprocedure, TBaseType.rrw_drop,"procedure"," "," "," "," "," ");
1761     addmysqlcmds(ESqlStatementType.sstmysqldropdatabase, TBaseType.rrw_drop,"schema"," "," "," "," "," ");
1762     addmysqlcmds(ESqlStatementType.sstmysqldroptable, TBaseType.rrw_drop,"table"," "," "," "," "," ");
1763     addmysqlcmds(ESqlStatementType.sstmysqldroptable, TBaseType.rrw_drop,"tables"," "," "," "," "," ");
1764     addmysqlcmds(ESqlStatementType.sstmysqldroptable, TBaseType.rrw_drop,"temporary","table"," "," "," "," ");
1765     addmysqlcmds(ESqlStatementType.sstmysqldroptrigger, TBaseType.rrw_drop,"trigger"," "," "," "," "," ");
1766     addmysqlcmds(ESqlStatementType.sstmysqldropuser, TBaseType.rrw_drop,"user"," "," "," "," "," ");
1767     addmysqlcmds(ESqlStatementType.sstdropview, TBaseType.rrw_drop,"view"," "," "," "," "," ");
1768     addmysqlcmds(ESqlStatementType.sstmysqlexecute, TBaseType.rrw_execute," "," "," "," "," "," ");
1769     addmysqlcmds(ESqlStatementType.sstExplain, TBaseType.rrw_explain," "," "," "," "," "," ");
1770     addmysqlcmds(ESqlStatementType.sstmysqlfetch, TBaseType.rrw_fetch," "," "," "," "," "," ");
1771     addmysqlcmds(ESqlStatementType.sstmysqlflush, TBaseType.rrw_flush," "," "," "," "," "," ");
1772     addmysqlcmds(ESqlStatementType.sstmysqlgrant, TBaseType.rrw_grant," "," "," "," "," "," ");
1773     addmysqlcmds(ESqlStatementType.sstmysqlhandler, TBaseType.rrw_handler," "," "," "," "," "," ");
1774     addmysqlcmds(ESqlStatementType.sstmysqlifstmt, TBaseType.rrw_if," "," "," "," "," "," ");
1775     addmysqlcmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert," "," "," "," "," "," ");
1776     addmysqlcmds(ESqlStatementType.sstmysqliterate, TBaseType.rrw_iterate," "," "," "," "," "," ");
1777     addmysqlcmds(ESqlStatementType.sstmysqlkill, TBaseType.rrw_kill," "," "," "," "," "," ");
1778     addmysqlcmds(ESqlStatementType.sstmysqlleave, TBaseType.rrw_leave," "," "," "," "," "," ");
1779     addmysqlcmds(ESqlStatementType.sstmysqlloaddatafrommaster, TBaseType.rrw_load,"data", "from", "master"," "," "," ");
1780     addmysqlcmds(ESqlStatementType.sstmysqlloaddatainfile, TBaseType.rrw_load,"data", "infile"," "," "," "," ");
1781     addmysqlcmds(ESqlStatementType.sstmysqlloaddatainfile, TBaseType.rrw_load,"data", "local","infile"," "," "," ");
1782     addmysqlcmds(ESqlStatementType.sstmysqlloadindexintocache, TBaseType.rrw_load,"index", "into", "cache"," "," "," ");
1783     addmysqlcmds(ESqlStatementType.sstmysqlloadtable, TBaseType.rrw_load,"table"," "," "," "," "," ");
1784     addmysqlcmds(ESqlStatementType.sstmysqllocktable, TBaseType.rrw_lock,"table"," "," "," "," "," ");
1785     addmysqlcmds(ESqlStatementType.sstmysqllocktable, TBaseType.rrw_lock,"tables"," "," "," "," "," ");
1786     addmysqlcmds(ESqlStatementType.sstmysqlloop, TBaseType.rrw_loop," "," "," "," "," "," ");
1787     addmysqlcmds(ESqlStatementType.sstmysqlopen, TBaseType.rrw_open," "," "," "," "," "," ");
1788     addmysqlcmds(ESqlStatementType.sstmysqloptimizetable, TBaseType.rrw_optimize,"local","table"," "," "," "," ");
1789     addmysqlcmds(ESqlStatementType.sstmysqloptimizetable, TBaseType.rrw_optimize,"no_write_to_binlog","table"," "," "," "," ");
1790     addmysqlcmds(ESqlStatementType.sstmysqloptimizetable, TBaseType.rrw_optimize,"table"," "," "," "," "," ");
1791     addmysqlcmds(ESqlStatementType.sstmysqlprepare, TBaseType.rrw_prepare," "," "," "," "," "," ");
1792     addmysqlcmds(ESqlStatementType.sstmysqlpurgelogs, TBaseType.rrw_purge,"binary","logs"," "," "," "," ");
1793     addmysqlcmds(ESqlStatementType.sstmysqlpurgelogs, TBaseType.rrw_purge,"logs"," "," "," "," "," ");
1794     addmysqlcmds(ESqlStatementType.sstmysqlpurgelogs, TBaseType.rrw_purge,"master","logs"," "," "," "," ");
1795     addmysqlcmds(ESqlStatementType.sstmysqlreleasesavepoint,TBaseType. rrw_release,"savepoint"," "," "," "," "," ");
1796     addmysqlcmds(ESqlStatementType.sstmysqlrenametable, TBaseType.rrw_rename,"table"," "," "," "," "," ");
1797     addmysqlcmds(ESqlStatementType.sstmysqlrenameuser, TBaseType.rrw_rename,"user"," "," "," "," "," ");
1798     addmysqlcmds(ESqlStatementType.sstmysqlrepairtable,TBaseType.rrw_repair,"local","table"," "," "," "," ");
1799     addmysqlcmds(ESqlStatementType.sstmysqlrepairtable, TBaseType.rrw_repair,"no_write_to_binlog","table"," "," "," "," ");
1800     addmysqlcmds(ESqlStatementType.sstmysqlrepairtable, TBaseType.rrw_repair,"table"," "," "," "," "," ");
1801     addmysqlcmds(ESqlStatementType.sstmysqlrepeat, TBaseType.rrw_repeat," "," "," "," "," "," ");
1802     addmysqlcmds(ESqlStatementType.sstmysqlreplace, TBaseType.rrw_replace," "," "," "," "," "," ");
1803     addmysqlcmds(ESqlStatementType.sstmysqlreset, TBaseType.rrw_reset," "," "," "," "," "," ");
1804     addmysqlcmds(ESqlStatementType.sstmysqlresetmaster, TBaseType.rrw_reset,"master"," "," "," "," "," ");
1805     addmysqlcmds(ESqlStatementType.sstmysqlresetslave, TBaseType.rrw_reset,"slave"," "," "," "," "," ");
1806     addmysqlcmds(ESqlStatementType.sstmysqlrestoretable, TBaseType.rrw_restore,"table"," "," "," "," "," ");
1807     addmysqlcmds(ESqlStatementType.sstmysqlrevoke, TBaseType.rrw_revoke," "," "," "," "," "," ");
1808     addmysqlcmds(ESqlStatementType.sstmysqlrollback, TBaseType.rrw_rollback," "," "," "," "," "," ");
1809     addmysqlcmds(ESqlStatementType.sstmysqlsavepoint, TBaseType.rrw_savepoint," "," "," "," "," "," ");
1810     addmysqlcmds(ESqlStatementType.sstselect, TBaseType.rrw_select," "," "," "," "," "," ");
1811     addmysqlcmds(ESqlStatementType.sstmysqlset, TBaseType.rrw_set," "," "," "," "," "," ");
1812     addmysqlcmds(ESqlStatementType.sstmysqlsetautocommit, TBaseType.rrw_set,"autocommit"," "," "," "," "," ");
1813     addmysqlcmds(ESqlStatementType.sstmysqldelimiter, TBaseType.rrw_set,"delimiter"," "," "," "," "," ");
1814     addmysqlcmds(ESqlStatementType.sstmysqlsetglobalsql_slave_skip_counter, TBaseType.rrw_set,"global", "sql_slave_skip_counter"," "," "," "," ");
1815     addmysqlcmds(ESqlStatementType.sstmysqlsettransaction, TBaseType.rrw_set,"global","transaction"," "," "," "," ");
1816     addmysqlcmds(ESqlStatementType.sstmysqlset, TBaseType.rrw_set,"PASSWORD"," "," "," "," "," ");
1817     addmysqlcmds(ESqlStatementType.sstmysqlsettransaction, TBaseType.rrw_set,"session","transaction"," "," "," "," ");
1818     addmysqlcmds(ESqlStatementType.sstmysqlsetsql_log_bin, TBaseType.rrw_set,"sql_log_bin"," "," "," "," "," ");
1819     addmysqlcmds(ESqlStatementType.sstmysqlsettransaction, TBaseType.rrw_set,"transaction"," "," "," "," "," ");
1820     addmysqlcmds(ESqlStatementType.sstmysqlshowlogs, TBaseType.rrw_show,"bdb","logs"," "," "," "," ");
1821     addmysqlcmds(ESqlStatementType.sstmysqlshowbinlogevents, TBaseType.rrw_show,"binlog", "events"," "," "," "," ");
1822     addmysqlcmds(ESqlStatementType.sstmysqlshowcharacterset, TBaseType.rrw_show,"character", "set"," "," "," "," ");
1823     addmysqlcmds(ESqlStatementType.sstmysqlshowcharacterset, TBaseType.rrw_show,"charset", " "," "," "," "," ");
1824     addmysqlcmds(ESqlStatementType.sstmysqlshowcollation, TBaseType.rrw_show,"collation"," "," "," "," "," ");
1825     addmysqlcmds(ESqlStatementType.sstmysqlshowcolumns, TBaseType.rrw_show,"columns"," "," "," "," "," ");
1826     addmysqlcmds(ESqlStatementType.sstmysqlshowwarnings, TBaseType.rrw_show,"count"," "," "," "," "," ");
1827     addmysqlcmds(ESqlStatementType.sstmysqlshowcreateschema, TBaseType.rrw_show,"create", "schema"," "," "," "," ");
1828     addmysqlcmds(ESqlStatementType.sstmysqlshowcreatedatabase, TBaseType.rrw_show,"create", "database"," "," "," "," ");
1829     addmysqlcmds(ESqlStatementType.sstmysqlshowcreatefunction, TBaseType.rrw_show,"create","function"," "," "," "," ");
1830     addmysqlcmds(ESqlStatementType.sstmysqlshowcreateprocedure, TBaseType.rrw_show,"create","procedure"," "," "," "," ");
1831     addmysqlcmds(ESqlStatementType.sstmysqlshowcreatetable, TBaseType.rrw_show,"create","table"," "," "," "," ");
1832     addmysqlcmds(ESqlStatementType.sstmysqlshowcreateview, TBaseType.rrw_show,"create","view"," "," "," "," ");
1833     addmysqlcmds(ESqlStatementType.sstmysqlshowdatabases, TBaseType.rrw_show,"databases"," "," "," "," "," ");
1834     addmysqlcmds(ESqlStatementType.sstmysqlshowengine, TBaseType.rrw_show,"engine"," "," "," "," "," ");
1835     addmysqlcmds(ESqlStatementType.sstmysqlshowengines, TBaseType.rrw_show,"engines"," "," "," "," "," ");
1836     addmysqlcmds(ESqlStatementType.sstmysqlshowerrors, TBaseType.rrw_show,"errors"," "," "," "," "," ");
1837     addmysqlcmds(ESqlStatementType.sstmysqlshowindex, TBaseType.rrw_show,"extend","index"," "," "," "," ");
1838     addmysqlcmds(ESqlStatementType.sstmysqlshowindex, TBaseType.rrw_show,"extend","indexes"," "," "," "," ");
1839     addmysqlcmds(ESqlStatementType.sstmysqlshowindex, TBaseType.rrw_show,"extend","keys"," "," "," "," ");
1840     addmysqlcmds(ESqlStatementType.sstmysqlshowfields, TBaseType.rrw_show,"fields"," "," "," "," "," ");
1841     addmysqlcmds(ESqlStatementType.sstmysqlshowcolumns, TBaseType.rrw_show,"full","columns"," "," "," "," ");
1842     addmysqlcmds(ESqlStatementType.sstmysqlshowfields, TBaseType.rrw_show,"full","fields"," "," "," "," ");
1843     addmysqlcmds(ESqlStatementType.sstmysqlshowprocesslist, TBaseType.rrw_show,"full","processlist"," "," "," "," ");
1844     addmysqlcmds(ESqlStatementType.sstmysqlshowtables, TBaseType.rrw_show,"full","tables"," "," "," "," ");
1845     addmysqlcmds(ESqlStatementType.sstmysqlshowfunctionstatus, TBaseType.rrw_show,"function", "status"," "," "," "," ");
1846     addmysqlcmds(ESqlStatementType.sstmysqlshowstatus, TBaseType.rrw_show,"global","status"," "," "," "," ");
1847     addmysqlcmds(ESqlStatementType.sstmysqlshowvariables, TBaseType.rrw_show,"global","variables"," "," "," "," ");
1848     addmysqlcmds(ESqlStatementType.sstmysqlshowgrants, TBaseType.rrw_show,"grants"," "," "," "," "," ");
1849     addmysqlcmds(ESqlStatementType.sstmysqlshowindex, TBaseType.rrw_show,"index"," "," "," "," "," ");
1850     addmysqlcmds(ESqlStatementType.sstmysqlshowindex, TBaseType.rrw_show,"indexes"," "," "," "," "," ");
1851     addmysqlcmds(ESqlStatementType.sstmysqlshowinnodbstatus, TBaseType.rrw_show,"innodb", "status"," "," "," "," ");
1852     addmysqlcmds(ESqlStatementType.sstmysqlshowindex, TBaseType.rrw_show,"keys"," "," "," "," "," ");
1853     addmysqlcmds(ESqlStatementType.sstmysqlshowlogs, TBaseType.rrw_show,"logs"," "," "," "," "," ");
1854     addmysqlcmds(ESqlStatementType.sstmysqlshowmasterlogs, TBaseType.rrw_show,"master", "logs"," "," "," "," ");
1855     addmysqlcmds(ESqlStatementType.sstmysqlshowmasterstatus, TBaseType.rrw_show,"master", "status"," "," "," "," ");
1856     addmysqlcmds(ESqlStatementType.sstmysqlshowtables, TBaseType.rrw_show,"open","tables"," "," "," "," ");
1857     addmysqlcmds(ESqlStatementType.sstmysqlshowplugins, TBaseType.rrw_show,"plugins"," "," "," "," "," ");
1858     addmysqlcmds(ESqlStatementType.sstmysqlshowprivileges, TBaseType.rrw_show,"privileges"," "," "," "," "," ");
1859     addmysqlcmds(ESqlStatementType.sstmysqlshowfunctionstatus, TBaseType.rrw_show,"procedure", "status"," "," "," "," ");
1860     addmysqlcmds(ESqlStatementType.sstmysqlshowprocesslist, TBaseType.rrw_show,"processlist"," "," "," "," "," ");
1861     addmysqlcmds(ESqlStatementType.sstmysqlshowprofile, TBaseType.rrw_show,"profile"," "," "," "," "," ");
1862     addmysqlcmds(ESqlStatementType.sstmysqlshowprofiles, TBaseType.rrw_show,"profiles"," "," "," "," "," ");
1863     addmysqlcmds(ESqlStatementType.sstmysqlshowreplicaStatus, TBaseType.rrw_show,"replica","status"," "," "," "," ");
1864     addmysqlcmds(ESqlStatementType.sstmysqlshowstatus, TBaseType.rrw_show,"session","status"," "," "," "," ");
1865     addmysqlcmds(ESqlStatementType.sstmysqlshowvariables, TBaseType.rrw_show,"session","variables"," "," "," "," ");
1866     addmysqlcmds(ESqlStatementType.sstmysqlshowslavehosts, TBaseType.rrw_show,"slave", "hosts"," "," "," "," ");
1867     addmysqlcmds(ESqlStatementType.sstmysqlshowslavestatus, TBaseType.rrw_show,"slave", "status"," "," "," "," ");
1868     addmysqlcmds(ESqlStatementType.sstmysqlshowstatus, TBaseType.rrw_show,"status"," "," "," "," "," ");
1869     addmysqlcmds(ESqlStatementType.sstmysqlshowengines, TBaseType.rrw_show,"storage","engines"," "," "," "," ");
1870     addmysqlcmds(ESqlStatementType.sstmysqlshowtablestatus, TBaseType.rrw_show,"table", "status"," "," "," "," ");
1871     addmysqlcmds(ESqlStatementType.sstmysqlshowtables, TBaseType.rrw_show,"tables"," "," "," "," "," ");
1872     addmysqlcmds(ESqlStatementType.sstmysqlshowtriggers, TBaseType.rrw_show,"triggers"," "," "," "," "," ");
1873     addmysqlcmds(ESqlStatementType.sstmysqlshowvariables, TBaseType.rrw_show,"variables"," "," "," "," "," ");
1874     addmysqlcmds(ESqlStatementType.sstmysqlshowwarnings, TBaseType.rrw_show,"warnings"," "," "," "," "," ");
1875     addmysqlcmds(ESqlStatementType.sstmysqlsignal, TBaseType.rrw_signal," "," "," "," "," "," ");
1876     addmysqlcmds(ESqlStatementType.sstmysqlstartslave, TBaseType.rrw_start,"slave"," "," "," "," "," ");
1877     addmysqlcmds(ESqlStatementType.sstmysqlstarttransaction, TBaseType.rrw_start,"transaction"," "," "," "," "," ");
1878     addmysqlcmds(ESqlStatementType.sstmysqlstopslave, TBaseType.rrw_stop,"slave"," "," "," "," "," ");
1879     addmysqlcmds(ESqlStatementType.sstmysqltruncate, TBaseType.rrw_truncate," "," "," "," "," "," ");
1880     addmysqlcmds(ESqlStatementType.sstmysqlunlocktable, TBaseType.rrw_unlock,"tables"," "," "," "," "," ");
1881     addmysqlcmds(ESqlStatementType.sstupdate, TBaseType.rrw_update," "," "," "," "," "," ");
1882     addmysqlcmds(ESqlStatementType.sstmysqluse, TBaseType.rrw_use," "," "," "," "," "," ");
1883     addmysqlcmds(ESqlStatementType.sstmysqlwhile, TBaseType.rrw_while," "," "," "," "," "," ");
1884
1885}
1886
1887void initmdxcmds(){
1888// cmd must be sort alphabetically
1889    addmdxcmds(ESqlStatementType.sstmdxaltercube, TBaseType.rrw_alter,"cube"," "," "," "," "," ");
1890    addmdxcmds(ESqlStatementType.sstmdxalterdimension, TBaseType.rrw_alter,"dimension"," "," "," "," "," ");
1891    addmdxcmds(ESqlStatementType.sstmdxcalculate, TBaseType.rrw_calculate," "," "," "," "," "," ");
1892    addmdxcmds(ESqlStatementType.sstmdxcall, TBaseType.rrw_call," "," "," "," "," "," ");
1893    addmdxcmds(ESqlStatementType.sstmdxcase, TBaseType.rrw_case," "," "," "," "," "," ");
1894    addmdxcmds(ESqlStatementType.sstmdxclearcalculations, TBaseType.rrw_clear,"calculations"," "," "," "," "," ");
1895    addmdxcmds(ESqlStatementType.sstmdxcreateaction, TBaseType.rrw_create,"action"," "," "," "," "," ");
1896    addmdxcmds(ESqlStatementType.sstmdxcreatemember, TBaseType.rrw_create,"calculated","member"," "," "," "," ");
1897    addmdxcmds(ESqlStatementType.sstmdxcreatecellcalculation, TBaseType.rrw_create,"cell","calculation"," "," "," "," ");
1898    addmdxcmds(ESqlStatementType.sstmdxcreatedimensionmember, TBaseType.rrw_create,"dimension","member"," "," "," "," ");
1899    addmdxcmds(ESqlStatementType.sstmdxcreateglobalcube, TBaseType.rrw_create,"global","cube"," "," "," "," ");
1900    addmdxcmds(ESqlStatementType.sstmdxcreateset, TBaseType.rrw_create,"hidden","set"," "," "," "," ");
1901    addmdxcmds(ESqlStatementType.sstmdxcreatemeasure, TBaseType.rrw_create,"measure"," "," "," "," "," ");
1902    addmdxcmds(ESqlStatementType.sstmdxcreatemember, TBaseType.rrw_create,"member"," "," "," "," "," ");
1903    addmdxcmds(ESqlStatementType.sstmdxcreatemember, TBaseType.rrw_create,"session","calculated","memeber"," "," "," ");
1904    addmdxcmds(ESqlStatementType.sstmdxcreatesessioncube, TBaseType.rrw_create,"session","cube"," "," "," "," ");
1905    addmdxcmds(ESqlStatementType.sstmdxcreatedimensionmember, TBaseType.rrw_create,"session","dimension","member"," "," "," ");
1906    addmdxcmds(ESqlStatementType.sstmdxcreateset, TBaseType.rrw_create,"session","hidden","set"," "," "," ");
1907    addmdxcmds(ESqlStatementType.sstmdxcreatemember, TBaseType.rrw_create,"session","memeber"," "," "," "," ");
1908    addmdxcmds(ESqlStatementType.sstmdxcreateset, TBaseType.rrw_create,"session","set"," "," "," "," ");
1909    addmdxcmds(ESqlStatementType.sstmdxcreateset, TBaseType.rrw_create,"set"," "," "," "," "," ");
1910    addmdxcmds(ESqlStatementType.sstmdxcreatesubcube, TBaseType.rrw_create,"subcube"," "," "," "," "," ");
1911    addmdxcmds(ESqlStatementType.sstmdxdrillthrough, TBaseType.rrw_drillthrough," "," "," "," "," "," ");
1912    addmdxcmds(ESqlStatementType.sstmdxdropaction, TBaseType.rrw_drop,"action"," "," "," "," "," ");
1913    addmdxcmds(ESqlStatementType.sstmdxdropmember, TBaseType.rrw_drop,"calculated","member"," "," "," "," ");
1914    addmdxcmds(ESqlStatementType.sstmdxdropcellcalculation, TBaseType.rrw_drop,"cell","calcution"," "," "," "," ");
1915    addmdxcmds(ESqlStatementType.sstmdxdropdimensionmember, TBaseType.rrw_drop,"dimension","member"," "," "," "," ");
1916    addmdxcmds(ESqlStatementType.sstmdxdropmember, TBaseType.rrw_drop,"member"," "," "," "," "," ");
1917    addmdxcmds(ESqlStatementType.sstmdxdropmember, TBaseType.rrw_drop,"session","member"," "," "," "," ");
1918    addmdxcmds(ESqlStatementType.sstmdxdropmember, TBaseType.rrw_drop,"session","calculated","member"," "," "," ");
1919    addmdxcmds(ESqlStatementType.sstmdxdropcellcalculation, TBaseType.rrw_drop,"session","cell","calcution"," "," "," ");
1920    addmdxcmds(ESqlStatementType.sstmdxdropset, TBaseType.rrw_drop,"set"," "," "," "," "," ");
1921    addmdxcmds(ESqlStatementType.sstmdxdropsubcube, TBaseType.rrw_drop,"subcube"," "," "," "," "," ");
1922    addmdxcmds(ESqlStatementType.sstmdxexisting, TBaseType.rrw_existing," "," "," "," "," "," ");
1923    addmdxcmds(ESqlStatementType.sstmdxfreeze, TBaseType.rrw_freeze," "," "," "," "," "," ");
1924    addmdxcmds(ESqlStatementType.sstmdxif, TBaseType.rrw_if," "," "," "," "," "," ");
1925    addmdxcmds(ESqlStatementType.sstmdxrefreshcube, TBaseType.rrw_refresh,"cube"," "," "," "," "," ");
1926    addmdxcmds(ESqlStatementType.sstmdxscope, TBaseType.rrw_scope," "," "," "," "," "," ");
1927    addmdxcmds(ESqlStatementType.sstmdxselect, TBaseType.rrw_select," "," "," "," "," "," ");
1928    addmdxcmds(ESqlStatementType.sstmdxupdate, TBaseType.rrw_update," "," "," "," "," "," ");
1929
1930}
1931
1932void initsybasecmds(){
1933// cmd must be sort alphabetically
1934    addsybasecmds(ESqlStatementType.sstmssqladdsignature, TBaseType.rrw_add,"counter","signature"," "," "," "," ");
1935    addsybasecmds(ESqlStatementType.sstmssqladdsignature, TBaseType.rrw_add,"signature"," "," "," "," "," ");
1936//alter
1937    addsybasecmds(ESqlStatementType.sstmssqlalterapplicationrole, TBaseType.rrw_alter,"application","role"," "," "," "," ");
1938    addsybasecmds(ESqlStatementType.sstmssqlalterassembly, TBaseType.rrw_alter,"assembly"," "," "," "," "," ");
1939    addsybasecmds(ESqlStatementType.sstmssqlalterasymmetrickey, TBaseType.rrw_alter,"asymmetric","key"," "," "," "," ");
1940    addsybasecmds(ESqlStatementType.sstmssqlalterauthorization, TBaseType.rrw_alter,"authorization"," "," "," "," "," ");
1941    addsybasecmds(ESqlStatementType.sstmssqlaltercertificate, TBaseType.rrw_alter,"certificate"," "," "," "," "," ");
1942    addsybasecmds(ESqlStatementType.sstmssqlaltercredential, TBaseType.rrw_alter,"credential"," "," "," "," "," ");
1943    addsybasecmds(ESqlStatementType.sstmssqlalterdatabase, TBaseType.rrw_alter,"database"," "," "," "," "," ");
1944    addsybasecmds(ESqlStatementType.sstsybasealterdbspace, TBaseType.rrw_alter,"dbspace"," "," "," "," "," ");
1945    addsybasecmds(ESqlStatementType.sstsybasealterdomain, TBaseType.rrw_alter,"domain"," "," "," "," "," ");
1946    addsybasecmds(ESqlStatementType.sstmssqlalterendpoint, TBaseType.rrw_alter,"endpoint"," "," "," "," "," ");
1947    addsybasecmds(ESqlStatementType.sstmssqlalterfulltextcatalog, TBaseType.rrw_alter,"fulltext","catalog"," "," "," "," ");
1948    addsybasecmds(ESqlStatementType.sstmssqlalterfulltextindex, TBaseType.rrw_alter,"fulltext","index"," "," "," "," ");
1949    addsybasecmds(ESqlStatementType.sstmssqlalterfunction, TBaseType.rrw_alter,"function"," "," "," "," "," ");
1950    addsybasecmds(ESqlStatementType.sstmssqlalterindex, TBaseType.rrw_alter,"index"," "," "," "," "," ");
1951    addsybasecmds(ESqlStatementType.sstmssqlalterlogin, TBaseType.rrw_alter,"login"," "," "," "," "," ");
1952    addsybasecmds(ESqlStatementType.sstmssqlaltermasterkey, TBaseType.rrw_alter,"master","key"," "," "," "," ");
1953    addsybasecmds(ESqlStatementType.sstmssqlaltermessagetype, TBaseType.rrw_alter,"message","type"," "," "," "," ");
1954    addsybasecmds(ESqlStatementType.sstmssqlalterpartitionfunction, TBaseType.rrw_alter,"partition","function"," "," "," "," ");
1955    addsybasecmds(ESqlStatementType.sstmssqlalterpartitionscheme, TBaseType.rrw_alter,"partition","scheme"," "," "," "," ");
1956    addsybasecmds(ESqlStatementType.sstmssqlalterprocedure, TBaseType.rrw_alter,"proc"," "," "," "," "," ");
1957    addsybasecmds(ESqlStatementType.sstmssqlalterprocedure, TBaseType.rrw_alter,"procedure"," "," "," "," "," ");
1958    addsybasecmds(ESqlStatementType.sstmssqlalterqueue, TBaseType.rrw_alter,"queue"," "," "," "," "," ");
1959    addsybasecmds(ESqlStatementType.sstmssqlalterremoteservicebinding, TBaseType.rrw_alter,"remote","service","binding"," "," "," ");
1960    addsybasecmds(ESqlStatementType.sstmssqlalterrole, TBaseType.rrw_alter,"role"," "," "," "," "," ");
1961    addsybasecmds(ESqlStatementType.sstmssqlalterroute, TBaseType.rrw_alter,"route"," "," "," "," "," ");
1962    addsybasecmds(ESqlStatementType.sstmssqlalterschema, TBaseType.rrw_alter,"schema"," "," "," "," "," ");
1963    addsybasecmds(ESqlStatementType.sstsybasealterserver, TBaseType.rrw_alter,"server"," "," "," "," "," ");
1964    addsybasecmds(ESqlStatementType.sstmssqlalterservice, TBaseType.rrw_alter,"service"," "," "," "," "," ");
1965    addsybasecmds(ESqlStatementType.sstmssqlalterservicemasterkey, TBaseType.rrw_alter,"service","master","key"," "," "," ");
1966    addsybasecmds(ESqlStatementType.sstmssqlaltersymmetrickey, TBaseType.rrw_alter,"symmetric","key"," "," "," "," ");
1967    addsybasecmds(ESqlStatementType.sstaltertable, TBaseType.rrw_alter,"table"," "," "," "," "," ");
1968    addsybasecmds(ESqlStatementType.sstmssqlaltertrigger, TBaseType.rrw_alter,"trigger"," "," "," "," "," ");
1969    addsybasecmds(ESqlStatementType.sstmssqlalteruser, TBaseType.rrw_alter,"user"," "," "," "," "," ");
1970    addsybasecmds(ESqlStatementType.sstmssqlalterview, TBaseType.rrw_alter,"view"," "," "," "," "," ");
1971    addsybasecmds(ESqlStatementType.sstmssqlalterxmlschemacollection, TBaseType.rrw_alter,"xml","schema","collection"," "," "," ");
1972//backup
1973    addsybasecmds(ESqlStatementType.sstmssqlbackupdatabase, TBaseType.rrw_backup,"database"," "," "," "," "," ");
1974    addsybasecmds(ESqlStatementType.sstmssqlbackupcertificate, TBaseType.rrw_backup,"certificate"," "," "," "," "," ");
1975    addsybasecmds(ESqlStatementType.sstmssqlbackuplog, TBaseType.rrw_backup,"log"," "," "," "," "," ");
1976    addsybasecmds(ESqlStatementType.sstmssqlbackupmasterkey, TBaseType.rrw_backup,"master","key"," "," "," "," ");
1977    addsybasecmds(ESqlStatementType.sstmssqlbackupservicemasterkey, TBaseType.rrw_backup,"service","master","key"," "," "," ");
1978//begin
1979    addsybasecmds(ESqlStatementType.sstmssqlbegincatch, TBaseType.rrw_begin,"catch"," "," "," "," "," ");
1980    addsybasecmds(ESqlStatementType.sstmssqlbeginconversationtimer, TBaseType.rrw_begin,"conversation","timer"," "," "," "," ");
1981    addsybasecmds(ESqlStatementType.sstmssqlbegindialog, TBaseType.rrw_begin,"dialog"," "," "," "," "," ");
1982    addsybasecmds(ESqlStatementType.sstmssqlbegindistributed, TBaseType.rrw_begin,"distributed"," "," "," "," "," ");
1983    addsybasecmds(ESqlStatementType.sstmssqlbegintran, TBaseType.rrw_begin,"tran"," "," "," "," "," ");
1984    addsybasecmds(ESqlStatementType.sstmssqlbegintran, TBaseType.rrw_begin,"transaction"," "," "," "," "," ");
1985    addsybasecmds(ESqlStatementType.sstmssqlbegintry, TBaseType.rrw_begin,"try"," "," "," "," "," ");
1986//break
1987    addsybasecmds(ESqlStatementType.sstbreak, TBaseType.rrw_break," "," "," "," "," "," ");
1988//bulk insert
1989    addsybasecmds(ESqlStatementType.sstmssqlbulkinsert, TBaseType.rrw_bulk,"insert"," "," "," "," "," ");
1990
1991    addsybasecmds(ESqlStatementType.sstcall, TBaseType.rrw_call," "," "," "," "," "," ");
1992
1993//checkpoint
1994    addsybasecmds(ESqlStatementType.sstmssqlcheckpoint, TBaseType.rrw_checkpoint," "," "," "," "," "," ");
1995//close
1996    addsybasecmds(ESqlStatementType.sstmssqlclose, TBaseType.rrw_close," "," "," "," "," "," ");
1997    addsybasecmds(ESqlStatementType.sstmssqlclosesymmetrickey, TBaseType.rrw_close,"all", "symmetric", "keys"," "," "," ");
1998    addsybasecmds(ESqlStatementType.sstmssqlclosemasterkey, TBaseType.rrw_close,"master", "key"," "," "," "," ");
1999    addsybasecmds(ESqlStatementType.sstmssqlclosesymmetrickey, TBaseType.rrw_close,"symmetric", "key"," "," "," "," ");
2000//commit
2001    addsybasecmds(ESqlStatementType.sstmssqlcommit, TBaseType.rrw_commit," "," "," "," "," "," ");
2002    addsybasecmds(ESqlStatementType.sstmssqlcommit, TBaseType.rrw_commit,"work"," "," "," "," "," ");
2003    addsybasecmds(ESqlStatementType.sstmssqlcommit, TBaseType.rrw_commit,"tran"," "," "," "," "," ");
2004    addsybasecmds(ESqlStatementType.sstmssqlcommit, TBaseType.rrw_commit,"transaction"," "," "," "," "," ");
2005//continue
2006    addsybasecmds(ESqlStatementType.sstmssqlcontinue, TBaseType.rrw_continue," "," "," "," "," "," ");
2007//create
2008    addsybasecmds(ESqlStatementType.sstmssqlcreateaggregate, TBaseType.rrw_create,"aggregate"," "," "," "," "," ");
2009    addsybasecmds(ESqlStatementType.sstmssqlcreateapplicationrole, TBaseType.rrw_create,"application", "role"," "," "," "," ");
2010    addsybasecmds(ESqlStatementType.sstmssqlcreateassembly, TBaseType.rrw_create,"assembly"," "," "," "," "," ");
2011    addsybasecmds(ESqlStatementType.sstmssqlcreateasymmetrickey, TBaseType.rrw_create,"asymmetric", "key"," "," "," "," ");
2012    addsybasecmds(ESqlStatementType.sstmssqlcreatecertificate, TBaseType.rrw_create,"certificate"," "," "," "," "," ");
2013    addsybasecmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"clustered","index"," "," "," "," ");
2014    addsybasecmds(ESqlStatementType.sstmssqlcreatecontract, TBaseType.rrw_create,"contract"," "," "," "," "," ");
2015    addsybasecmds(ESqlStatementType.sstmssqlcreatecredential, TBaseType.rrw_create,"credential"," "," "," "," "," ");
2016    addsybasecmds(ESqlStatementType.sstcreatedatabase, TBaseType.rrw_create,"database"," "," "," "," "," ");
2017    addsybasecmds(ESqlStatementType.sstsybasecreatedbspace, TBaseType.rrw_create,"dbspace"," "," "," "," "," ");
2018    addsybasecmds(ESqlStatementType.sstsybasecreatedomain, TBaseType.rrw_create,"domain"," "," "," "," "," ");
2019    addsybasecmds(ESqlStatementType.sstmssqlcreatedefault, TBaseType.rrw_create,"default"," "," "," "," "," ");
2020    addsybasecmds(ESqlStatementType.sstmssqlcreateendpoint, TBaseType.rrw_create,"endpoint"," "," "," "," "," ");
2021    addsybasecmds(ESqlStatementType.sstmssqlcreateeventnotification, TBaseType.rrw_create,"event", "notification"," "," "," "," ");
2022    addsybasecmds(ESqlStatementType.sstsybasecreateexistingtable, TBaseType.rrw_create,"existing","table"," "," "," "," ");
2023    addsybasecmds(ESqlStatementType.sstsybasecreateexternlogin, TBaseType.rrw_create,"externlogin"," "," "," "," "," ");
2024    addsybasecmds(ESqlStatementType.sstmssqlcreatefulltextcatalog, TBaseType.rrw_create,"fulltext", "catalog"," "," "," "," ");
2025    addsybasecmds(ESqlStatementType.sstmssqlcreatefulltextindex, TBaseType.rrw_create,"fulltext", "index"," "," "," "," ");
2026    addsybasecmds(ESqlStatementType.sstmssqlcreatefunction, TBaseType.rrw_create,"function"," "," "," "," "," ");
2027    addsybasecmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"index"," "," "," "," "," ");
2028    addsybasecmds(ESqlStatementType.sstsybasecreatejoinindex, TBaseType.rrw_create,"join","index"," "," "," "," ");
2029    addsybasecmds(ESqlStatementType.sstmssqlcreatelogin, TBaseType.rrw_create,"login"," "," "," "," "," ");
2030    addsybasecmds(ESqlStatementType.sstmssqlcreatemasterkey, TBaseType.rrw_create,"master","key"," "," "," "," ");
2031    addsybasecmds(ESqlStatementType.sstmssqlcreatemessagetype, TBaseType.rrw_create,"message","type"," "," "," "," ");
2032    addsybasecmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"nonclustered","index"," "," "," "," ");
2033    addsybasecmds(ESqlStatementType.sstmssqlcreatefunction, TBaseType.rrw_create,"or","replace","function"," "," "," ");
2034    addsybasecmds(ESqlStatementType.sstmssqlcreateprocedure, TBaseType.rrw_create,"or","replace","proc"," "," "," ");
2035    addsybasecmds(ESqlStatementType.sstmssqlcreateprocedure, TBaseType.rrw_create,"or","replace","procedure"," "," "," ");
2036    addsybasecmds(ESqlStatementType.sstmssqlcreatepartitionfunction, TBaseType.rrw_create,"partition","function"," "," "," "," ");
2037    addsybasecmds(ESqlStatementType.sstmssqlcreatepartitionscheme, TBaseType.rrw_create,"partition","scheme"," "," "," "," ");
2038    addsybasecmds(ESqlStatementType.sstmssqlcreateprocedure, TBaseType.rrw_create,"proc"," "," "," "," "," ");
2039    addsybasecmds(ESqlStatementType.sstmssqlcreateprocedure, TBaseType.rrw_create,"procedure"," "," "," "," "," ");
2040    addsybasecmds(ESqlStatementType.sstmssqlcreatequeue, TBaseType.rrw_create,"queue"," "," "," "," "," ");
2041    addsybasecmds(ESqlStatementType.sstmssqlcreateremoteservicebinding, TBaseType.rrw_create,"remote", "service", "binding"," "," "," ");
2042    addsybasecmds(ESqlStatementType.sstmssqlcreaterole, TBaseType.rrw_create,"role"," "," "," "," "," ");
2043    addsybasecmds(ESqlStatementType.sstmssqlcreateroute, TBaseType.rrw_create,"route"," "," "," "," "," ");
2044    addsybasecmds(ESqlStatementType.sstmssqlcreaterule, TBaseType.rrw_create,"rule"," "," "," "," "," ");
2045    addsybasecmds(ESqlStatementType.sstmssqlcreateschema, TBaseType.rrw_create,"schema"," "," "," "," "," ");
2046    addsybasecmds(ESqlStatementType.sstsybasecreateserver, TBaseType.rrw_create,"server"," "," "," "," "," ");
2047    addsybasecmds(ESqlStatementType.sstmssqlcreateservice, TBaseType.rrw_create,"service"," "," "," "," "," ");
2048    addsybasecmds(ESqlStatementType.sstmssqlcreatestatistics, TBaseType.rrw_create,"statistics"," "," "," "," "," ");
2049    addsybasecmds(ESqlStatementType.sstmssqlcreatesymmetrickey, TBaseType.rrw_create,"symmetric", "key"," "," "," "," ");
2050    addsybasecmds(ESqlStatementType.sstmssqlcreatesynonym, TBaseType.rrw_create,"synonym"," "," "," "," "," ");
2051    addsybasecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"table"," "," "," "," "," ");
2052    addsybasecmds(ESqlStatementType.sstcreatetrigger, TBaseType.rrw_create,"trigger"," "," "," "," "," ");
2053    addsybasecmds(ESqlStatementType.sstmssqlcreatetype, TBaseType.rrw_create,"type"," "," "," "," "," ");
2054    addsybasecmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"cmp","index"," "," "," "," ");
2055    addsybasecmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"date","index"," "," "," "," ");
2056    addsybasecmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"dttm","index"," "," "," "," ");
2057    addsybasecmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"hg","index"," "," "," "," ");
2058    addsybasecmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"hng","index"," "," "," "," ");
2059    addsybasecmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"lf","index"," "," "," "," ");
2060    addsybasecmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"time","index"," "," "," "," ");
2061    addsybasecmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"wd","index"," "," "," "," ");
2062    addsybasecmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"unique","clustered","index"," "," "," ");
2063    addsybasecmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"unique","index"," "," "," "," ");
2064    addsybasecmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"unique","nonclustered","index"," "," "," ");
2065    addsybasecmds(ESqlStatementType.sstmssqlcreateuser, TBaseType.rrw_create,"user"," "," "," "," "," ");
2066    addsybasecmds(ESqlStatementType.sstsybasecreatevariable, TBaseType.rrw_create,"variable"," "," "," "," "," ");
2067    addsybasecmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,"view"," "," "," "," "," ");
2068    addsybasecmds(ESqlStatementType.sstmssqlcreatexmlschemacollection, TBaseType.rrw_create,"xml", "schema", "collection"," "," "," ");
2069// DBCC
2070    addsybasecmds(ESqlStatementType.sstmssqldbcc, TBaseType.rrw_dbcc," "," "," "," "," "," ");
2071//DEALLOCATE
2072    addsybasecmds(ESqlStatementType.sstmssqldeallocate, TBaseType.rrw_deallocate," "," "," "," "," "," ");
2073//DECLARE
2074    addsybasecmds(ESqlStatementType.sstsybasedeallocatedescriptor, TBaseType.rrw_deallocate,"descriptor"," "," "," "," "," ");
2075    addsybasecmds(ESqlStatementType.sstmssqldeclare, TBaseType.rrw_declare," "," "," "," "," "," ");
2076//DELETE
2077    addsybasecmds(ESqlStatementType.sstsybasedeclarelocaltemptable, TBaseType.rrw_declare,"local","temporary","table"," "," "," ");
2078    addsybasecmds(ESqlStatementType.sstdelete, TBaseType.rrw_delete," "," "," "," "," "," ");
2079
2080//DELETE statistics
2081    addsybasecmds(ESqlStatementType.sstsybaseDeleteStatistics, TBaseType.rrw_delete,"shared","statistics"," "," "," "," ");
2082    addsybasecmds(ESqlStatementType.sstsybaseDeleteStatistics, TBaseType.rrw_delete,"statistics"," "," "," "," "," ");
2083
2084//DENY
2085    addsybasecmds(ESqlStatementType.sstmssqldeny, TBaseType.rrw_deny," "," "," "," "," "," ");
2086//DISABLE TRIGGER
2087    addsybasecmds(ESqlStatementType.sstmssqldisabletrigger, TBaseType.rrw_disable,"trigger"," "," "," "," "," ");
2088//drop
2089    addsybasecmds(ESqlStatementType.sstmssqldropaggregate, TBaseType.rrw_drop,"aggregate"," "," "," "," "," ");
2090    addsybasecmds(ESqlStatementType.sstmssqldropapplicationrole, TBaseType.rrw_drop,"application", "role"," "," "," "," ");
2091    addsybasecmds(ESqlStatementType.sstmssqldropassembly, TBaseType.rrw_drop,"assembly"," "," "," "," "," ");
2092    addsybasecmds(ESqlStatementType.sstmssqldropasymmetrickey, TBaseType.rrw_drop,"asymmetric", "key"," "," "," "," ");
2093    addsybasecmds(ESqlStatementType.sstmssqldropcertificate, TBaseType.rrw_drop,"certificate"," "," "," "," "," ");
2094    addsybasecmds(ESqlStatementType.sstsybasedropconnection, TBaseType.rrw_drop,"connection"," "," "," "," "," ");
2095    addsybasecmds(ESqlStatementType.sstmssqldropcontract, TBaseType.rrw_drop,"contract"," "," "," "," "," ");
2096    addsybasecmds(ESqlStatementType.sstmssqldropsignature, TBaseType.rrw_drop,"counter", "signature"," "," "," "," ");
2097    addsybasecmds(ESqlStatementType.sstmssqldropcredential, TBaseType.rrw_drop,"credential"," "," "," "," "," ");
2098    addsybasecmds(ESqlStatementType.sstmssqldropdatabase, TBaseType.rrw_drop,"database"," "," "," "," "," ");
2099    addsybasecmds(ESqlStatementType.sstmssqldropdefault, TBaseType.rrw_drop,"default"," "," "," "," "," ");
2100    addsybasecmds(ESqlStatementType.sstmssqldropendpoint, TBaseType.rrw_drop,"endpoint"," "," "," "," "," ");
2101    addsybasecmds(ESqlStatementType.sstmssqldropeventnotification, TBaseType.rrw_drop,"event", "notification"," "," "," "," ");
2102    addsybasecmds(ESqlStatementType.sstsybasedropexternlogin, TBaseType.rrw_drop,"externlogin"," "," "," "," "," ");
2103    addsybasecmds(ESqlStatementType.sstmssqldropfulltextcatalog, TBaseType.rrw_drop,"fulltext", "catalog"," "," "," "," ");
2104    addsybasecmds(ESqlStatementType.sstmssqldropfulltextindex, TBaseType.rrw_drop,"fulltext", "index"," "," "," "," ");
2105    addsybasecmds(ESqlStatementType.sstmssqldropfunction, TBaseType.rrw_drop,"function"," "," "," "," "," ");
2106    addsybasecmds(ESqlStatementType.sstmssqldropindex, TBaseType.rrw_drop,"index"," "," "," "," "," ");
2107    addsybasecmds(ESqlStatementType.sstmssqldroplogin, TBaseType.rrw_drop,"login"," "," "," "," "," ");
2108    addsybasecmds(ESqlStatementType.sstmssqldropmasterkey, TBaseType.rrw_drop,"master", "key"," "," "," "," ");
2109    addsybasecmds(ESqlStatementType.sstmssqldropmessagetype, TBaseType.rrw_drop,"message", "type"," "," "," "," ");
2110    addsybasecmds(ESqlStatementType.sstmssqldroppartitionfunction, TBaseType.rrw_drop,"partition", "function"," "," "," "," ");
2111    addsybasecmds(ESqlStatementType.sstmssqldroppartitionscheme, TBaseType.rrw_drop,"partition", "scheme"," "," "," "," ");
2112    addsybasecmds(ESqlStatementType.sstmssqldropprocedure, TBaseType.rrw_drop,"proc"," "," "," "," "," ");
2113    addsybasecmds(ESqlStatementType.sstmssqldropprocedure, TBaseType.rrw_drop,"procedure"," "," "," "," "," ");
2114    addsybasecmds(ESqlStatementType.sstmssqldropqueue, TBaseType.rrw_drop,"queue"," "," "," "," "," ");
2115    addsybasecmds(ESqlStatementType.sstmssqldropremoteservicebinding, TBaseType.rrw_drop,"remote", "service", "binding"," "," "," ");
2116    addsybasecmds(ESqlStatementType.sstmssqldroprole, TBaseType.rrw_drop,"role"," "," "," "," "," ");
2117    addsybasecmds(ESqlStatementType.sstmssqldroproute, TBaseType.rrw_drop,"route"," "," "," "," "," ");
2118    addsybasecmds(ESqlStatementType.sstmssqldroprule, TBaseType.rrw_drop,"rule"," "," "," "," "," ");
2119    addsybasecmds(ESqlStatementType.sstmssqldropschema, TBaseType.rrw_drop,"schema"," "," "," "," "," ");
2120    addsybasecmds(ESqlStatementType.sstsybasedropserver, TBaseType.rrw_drop,"server"," "," "," "," "," ");
2121    addsybasecmds(ESqlStatementType.sstmssqldropservice, TBaseType.rrw_drop,"service"," "," "," "," "," ");
2122    addsybasecmds(ESqlStatementType.sstmssqldropsignature, TBaseType.rrw_drop,"signature"," "," "," "," "," ");
2123    addsybasecmds(ESqlStatementType.sstsybasedropstatement, TBaseType.rrw_drop,"statement"," "," "," "," "," ");
2124    addsybasecmds(ESqlStatementType.sstmssqldropstatistics, TBaseType.rrw_drop,"statistics"," "," "," "," "," ");
2125    addsybasecmds(ESqlStatementType.sstmssqldropsymmetrickey, TBaseType.rrw_drop,"symmetric", "key"," "," "," "," ");
2126    addsybasecmds(ESqlStatementType.sstmssqldropsynonym, TBaseType.rrw_drop,"synonym"," "," "," "," "," ");
2127    addsybasecmds(ESqlStatementType.sstmssqldroptable, TBaseType.rrw_drop,"table"," "," "," "," "," ");
2128    addsybasecmds(ESqlStatementType.sstmssqldroptrigger, TBaseType.rrw_drop,"trigger"," "," "," "," "," ");
2129    addsybasecmds(ESqlStatementType.sstmssqldroptype, TBaseType.rrw_drop,"type"," "," "," "," "," ");
2130    addsybasecmds(ESqlStatementType.sstmssqldropuser, TBaseType.rrw_drop,"user"," "," "," "," "," ");
2131    addsybasecmds(ESqlStatementType.sstsybasedropvariable, TBaseType.rrw_drop,"variable"," "," "," "," "," ");
2132    addsybasecmds(ESqlStatementType.sstmssqldropview, TBaseType.rrw_drop,"view"," "," "," "," "," ");
2133    addsybasecmds(ESqlStatementType.sstmssqldropxmlschemacollection, TBaseType.rrw_drop,"xml", "schema", "collection"," "," "," ");
2134
2135    addsybasecmds(ESqlStatementType.sstsybasedumpTran, TBaseType.rrw_sybase_dump,"tran"," "," "," "," "," ");
2136    addsybasecmds(ESqlStatementType.sstsybasedumpTran, TBaseType.rrw_sybase_dump,"transaction"," "," "," "," "," ");
2137    addsybasecmds(ESqlStatementType.sstsybaseallocatedescriptor, TBaseType.rrw_allocate,"descriptor"," "," "," "," "," ");
2138    addsybasecmds(ESqlStatementType.sstcomment, TBaseType.rrw_comment," "," "," "," "," "," ");
2139    addsybasecmds(ESqlStatementType.sstconnect, TBaseType.rrw_connect," "," "," "," "," "," ");
2140    addsybasecmds(ESqlStatementType.sstdescribe, TBaseType.rrw_describe," "," "," "," "," "," ");
2141    addsybasecmds(ESqlStatementType.sstprepare, TBaseType.rrw_prepare," "," "," "," "," "," ");
2142    addsybasecmds(ESqlStatementType.sstsybasegetdescriptor, TBaseType.rrw_get,"descriptor"," "," "," "," "," ");
2143    addsybasecmds(ESqlStatementType.sstsybasestartdatabase, TBaseType.rrw_start,"database"," "," "," "," "," ");
2144    addsybasecmds(ESqlStatementType.sstsybasestartengine, TBaseType.rrw_start,"engine"," "," "," "," "," ");
2145    addsybasecmds(ESqlStatementType.sstsybasestopdatabase, TBaseType.rrw_stop,"database"," "," "," "," "," ");
2146    addsybasecmds(ESqlStatementType.sstsybasestopengine, TBaseType.rrw_stop,"engine"," "," "," "," "," ");
2147    addsybasecmds(ESqlStatementType.sstsybaseforwardto, TBaseType.rrw_sybase_forward,"to"," "," "," "," "," ");
2148    addsybasecmds(ESqlStatementType.sstsybaseinstalljava, TBaseType.rrw_sybase_install,"java"," "," "," "," "," ");
2149    addsybasecmds(ESqlStatementType.sstsybaseiqutilities, TBaseType.rrw_sybase_iq,"utilities"," "," "," "," "," ");
2150    addsybasecmds(ESqlStatementType.sstsybasemessage, TBaseType.rrw_sybase_message," "," "," "," "," "," ");
2151    addsybasecmds(ESqlStatementType.sstsybaseoutput, TBaseType.rrw_sybase_output,"to"," "," "," "," "," ");
2152    addsybasecmds(ESqlStatementType.sstsybaseput, TBaseType.rrw_sybase_put," "," "," "," "," "," ");
2153    addsybasecmds(ESqlStatementType.sstsybaseread, TBaseType.rrw_sybase_read," "," "," "," "," "," ");
2154    addsybasecmds(ESqlStatementType.sstsybaseremovejava, TBaseType.rrw_sybase_remove,"java"," "," "," "," "," ");
2155    addsybasecmds(ESqlStatementType.sstsybasesynchronizejoinindex, TBaseType.rrw_sybase_synchronize,"join","index"," "," "," "," ");
2156    addsybasecmds(ESqlStatementType.sstsybasetriggerevent, TBaseType.rrw_sybase_trigger,"event"," "," "," "," "," ");
2157//if
2158    addsybasecmds(ESqlStatementType.sstmssqlif, TBaseType.rrw_if," "," "," "," "," "," ");
2159//enable trigger
2160    addsybasecmds(ESqlStatementType.sstmssqlenabletrigger, TBaseType.rrw_enable,"trigger"," "," "," "," "," ");
2161//END CONVERSATION
2162// addsybasecmds(ESqlStatementType.sstMssqlEndCatch,TBaseType.rrw_end,'catch');
2163    addsybasecmds(ESqlStatementType.sstmssqlendconversation, TBaseType.rrw_end,"conversation"," "," "," "," "," ");
2164// addsybasecmds(ESqlStatementType.sstMssqlEndTry,TBaseType.rrw_end,'try');
2165//exec
2166//exec as
2167    addsybasecmds(ESqlStatementType.sstmssqlexec, TBaseType.rrw_exec," "," "," "," "," "," ");
2168    addsybasecmds(ESqlStatementType.sstmssqlexecuteas, TBaseType.rrw_exec,"as","caller"," "," "," "," ");
2169    addsybasecmds(ESqlStatementType.sstmssqlexecuteas, TBaseType.rrw_exec,"as","login"," "," "," "," ");
2170    addsybasecmds(ESqlStatementType.sstmssqlexecuteas, TBaseType.rrw_exec,"as","user"," "," "," "," ");
2171    addsybasecmds(ESqlStatementType.sstmssqlexec, TBaseType.rrw_execute, " "," "," "," "," "," ");
2172    addsybasecmds(ESqlStatementType.sstmssqlexecuteas, TBaseType.rrw_execute,"as","caller"," "," "," "," ");
2173    addsybasecmds(ESqlStatementType.sstmssqlexecuteas, TBaseType.rrw_execute,"as","login"," "," "," "," ");
2174    addsybasecmds(ESqlStatementType.sstmssqlexecuteas, TBaseType.rrw_execute,"as","user"," "," "," "," ");
2175//fetch
2176    addsybasecmds(ESqlStatementType.sstmssqlfetch, TBaseType.rrw_fetch," "," "," "," "," "," ");
2177//go
2178    addsybasecmds(ESqlStatementType.sstmssqlgo, TBaseType.rrw_go," "," "," "," "," "," ");
2179//goto
2180    addsybasecmds(ESqlStatementType.sstmssqlgoto, TBaseType.rrw_goto," "," "," "," "," "," ");
2181//GRANT
2182    addsybasecmds(ESqlStatementType.sstmssqlgrant, TBaseType.rrw_grant," "," "," "," "," "," ");
2183//GRANT
2184    addsybasecmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert," "," "," "," "," "," ");
2185
2186    addsybasecmds(ESqlStatementType.sstsybaseInsertBulk, TBaseType.rrw_insert,"bulk"," "," "," "," "," ");
2187//KILL
2188    addsybasecmds(ESqlStatementType.sstmssqlkill, TBaseType.rrw_kill," "," "," "," "," "," ");
2189//KILL
2190    addsybasecmds(ESqlStatementType.sstmssqlkill, TBaseType.rrw_kill," "," "," "," "," "," ");
2191    addsybasecmds(ESqlStatementType.sstmssqlkillquerynotificationsubscription, TBaseType.rrw_kill,"kill", "query", "notification", "subscription"," "," ");
2192    addsybasecmds(ESqlStatementType.sstmssqlkillstats, TBaseType.rrw_kill,"stats"," "," "," "," "," ");
2193
2194    addsybasecmds(ESqlStatementType.sstload,TBaseType.rrw_load,"table"," "," "," "," "," ");
2195//
2196 addsybasecmds(ESqlStatementType.sstsybaselocktable,TBaseType.rw_locktable,"table"," "," "," "," "," ");
2197//MOVE CONVERSATION
2198    addsybasecmds(ESqlStatementType.sstmssqlmoveconversation, TBaseType.rrw_move,"conversation"," "," "," "," "," ");
2199//merge
2200    addsybasecmds(ESqlStatementType.sstmerge, TBaseType.rrw_merge," "," "," "," "," "," ");
2201//open
2202    addsybasecmds(ESqlStatementType.sstmssqlopen, TBaseType.rrw_open," "," "," "," "," "," ");
2203    addsybasecmds(ESqlStatementType.sstmssqlopenmasterkey, TBaseType.rrw_open,"master", "key"," "," "," "," ");
2204    addsybasecmds(ESqlStatementType.sstmssqlopensymmetrickey, TBaseType.rrw_open,"symmetric", "key"," "," "," "," ");
2205//PRINT
2206    addsybasecmds(ESqlStatementType.sstmssqlprint, TBaseType.rrw_print," "," "," "," "," "," ");
2207//RAISERROR
2208    addsybasecmds(ESqlStatementType.sstmssqlraiserror, TBaseType.rrw_raiserror," "," "," "," "," "," ");
2209//READTEXT
2210    addsybasecmds(ESqlStatementType.sstmssqlreadtext, TBaseType.rrw_readtext," "," "," "," "," "," ");
2211//RECEIVE
2212    addsybasecmds(ESqlStatementType.sstmssqlreceive, TBaseType.rrw_receive," "," "," "," "," "," ");
2213//RECONFIGURE
2214    addsybasecmds(ESqlStatementType.sstmssqlreconfigure, TBaseType.rrw_reconfigure," "," "," "," "," "," ");
2215//RESTORE
2216    addsybasecmds(ESqlStatementType.sstmssqlrestoredatabase, TBaseType.rrw_restore,"database"," "," "," "," "," ");
2217    addsybasecmds(ESqlStatementType.sstmssqlrestorefilelistonly, TBaseType.rrw_restore,"filelistonly"," "," "," "," "," ");
2218    addsybasecmds(ESqlStatementType.sstmssqlrestoreheaderonly, TBaseType.rrw_restore,"headeronly"," "," "," "," "," ");
2219    addsybasecmds(ESqlStatementType.sstmssqlrestorelabelonly, TBaseType.rrw_restore,"labelonly"," "," "," "," "," ");
2220    addsybasecmds(ESqlStatementType.sstmssqlrestorelog, TBaseType.rrw_restore,"log"," "," "," "," "," ");
2221    addsybasecmds(ESqlStatementType.sstmssqlrestoremasterkey, TBaseType.rrw_restore,"master","key"," "," "," "," ");
2222    addsybasecmds(ESqlStatementType.sstmssqlrestorerewindonly, TBaseType.rrw_restore,"rewindonly"," "," "," "," "," ");
2223    addsybasecmds(ESqlStatementType.sstmssqlrestoreservicemasterkey, TBaseType.rrw_restore,"service","master","key"," "," "," ");
2224    addsybasecmds(ESqlStatementType.sstmssqlrestoreverifyonly, TBaseType.rrw_restore,"verifyonly"," "," "," "," "," ");
2225//RETURN
2226    addsybasecmds(ESqlStatementType.sstmssqlreturn, TBaseType.rrw_return," "," "," "," "," "," ");
2227//REVERT
2228    addsybasecmds(ESqlStatementType.sstmssqlrevert, TBaseType.rrw_revert," "," "," "," "," "," ");
2229//REVOKE
2230    addsybasecmds(ESqlStatementType.sstmssqlrevoke, TBaseType.rrw_revoke," "," "," "," "," "," ");
2231//ROLLBACK
2232    addsybasecmds(ESqlStatementType.sstmssqlrollback, TBaseType.rrw_rollback," "," "," "," "," "," ");
2233    addsybasecmds(ESqlStatementType.sstmssqlrollback, TBaseType.rrw_rollback,"tran"," "," "," "," "," ");
2234    addsybasecmds(ESqlStatementType.sstmssqlrollback, TBaseType.rrw_rollback,"transaction"," "," "," "," "," ");
2235    addsybasecmds(ESqlStatementType.sstmssqlrollback, TBaseType.rrw_rollback,"work"," "," "," "," "," ");
2236//SAVE
2237    addsybasecmds(ESqlStatementType.sstmssqlsavetran, TBaseType.rrw_save," "," "," "," "," "," ");
2238    addsybasecmds(ESqlStatementType.sstmssqlsavetran, TBaseType.rrw_save,"tran"," "," "," "," "," ");
2239    addsybasecmds(ESqlStatementType.sstmssqlsavetran, TBaseType.rrw_save,"transaction"," "," "," "," "," ");
2240//SELECT
2241    addsybasecmds(ESqlStatementType.sstselect, TBaseType.rrw_select," "," "," "," "," "," ");
2242//SEND ON CONVERSATION
2243    addsybasecmds(ESqlStatementType.sstmssqlsendonconversation, TBaseType.rrw_send,"on","conversation"," "," "," "," ");
2244//SET
2245    addsybasecmds(ESqlStatementType.sstmssqlset, TBaseType.rrw_set," "," "," "," "," "," ");
2246//SET
2247    addsybasecmds(ESqlStatementType.sstmssqlsetuser,TBaseType.rrw_setuser," "," "," "," "," "," ");
2248//SHUTDOWN
2249    addsybasecmds(ESqlStatementType.sstmssqlshutdown, TBaseType.rrw_shutdown," "," "," "," "," "," ");
2250//SIGN
2251//    addsybasecmds(ESqlStatementType.sstmssqlsign, rrw_sign," "," "," "," "," "," ");
2252//TRUNCATE TABLE
2253    addsybasecmds(ESqlStatementType.sstmssqltruncatetable, TBaseType.rrw_truncate,"table"," "," "," "," "," ");
2254//UPDATE
2255    addsybasecmds(ESqlStatementType.sstupdate, TBaseType.rrw_update," "," "," "," "," "," ");
2256//UPDATE all STATISTICS
2257    addsybasecmds(ESqlStatementType.sstmssqlupdatestatistics, TBaseType.rrw_update,"all","statistics"," "," "," "," ");
2258//UPDATE index STATISTICS
2259    addsybasecmds(ESqlStatementType.sstsybaseupdateindexstatistics, TBaseType.rrw_update,"index","statistics"," "," "," "," ");
2260//UPDATE STATISTICS
2261    addsybasecmds(ESqlStatementType.sstmssqlupdatestatistics, TBaseType.rrw_update,"statistics"," "," "," "," "," ");
2262//UPDATETEXT
2263    addsybasecmds(ESqlStatementType.sstmssqlupdatetext, TBaseType.rrw_updatetext," "," "," "," "," "," ");
2264//USE
2265    addsybasecmds(ESqlStatementType.sstmssqluse, TBaseType.rrw_use," "," "," "," "," "," ");
2266//WAITFOR
2267    addsybasecmds(ESqlStatementType.sstmssqlwaitfor, TBaseType.rrw_waitfor," "," "," "," "," "," ");
2268//WHILE
2269    addsybasecmds(ESqlStatementType.sstmssqlwhile, TBaseType.rrw_while," "," "," "," "," "," ");
2270//WITH, don't recongize here, let isMssqlSql do it
2271// addsybasecmds(ESqlStatementType.sstMssqlCTE,rrw_WITH,' ');
2272//WITH XMLNAMESPACES
2273    addsybasecmds(ESqlStatementType.sstmssqlwithxmlnamespaces, TBaseType.rrw_with,"xmlnamespaces"," "," "," "," "," ");
2274//WRITETEXT
2275    addsybasecmds(ESqlStatementType.sstsybaseWritetext, TBaseType.rrw_writetext," "," "," "," "," "," ");
2276
2277}
2278
2279void initmssqlcmds(){
2280// cmd must be sort alphabetically
2281    addmssqlcmds(ESqlStatementType.sstmssqladdsignature, TBaseType.rrw_add,"counter","signature"," "," "," "," ");
2282    addmssqlcmds(ESqlStatementType.sstmssqladdsignature, TBaseType.rrw_add,"signature"," "," "," "," "," ");
2283//alter
2284    addmssqlcmds(ESqlStatementType.sstmssqlalterapplicationrole, TBaseType.rrw_alter,"application","role"," "," "," "," ");
2285    addmssqlcmds(ESqlStatementType.sstmssqlalterassembly, TBaseType.rrw_alter,"assembly"," "," "," "," "," ");
2286    addmssqlcmds(ESqlStatementType.sstmssqlalterasymmetrickey, TBaseType.rrw_alter,"asymmetric","key"," "," "," "," ");
2287    addmssqlcmds(ESqlStatementType.sstmssqlalterauthorization, TBaseType.rrw_alter,"authorization"," "," "," "," "," ");
2288    addmssqlcmds(ESqlStatementType.sstmssqlaltercertificate, TBaseType.rrw_alter,"certificate"," "," "," "," "," ");
2289    addmssqlcmds(ESqlStatementType.sstmssqlaltercredential, TBaseType.rrw_alter,"credential"," "," "," "," "," ");
2290    addmssqlcmds(ESqlStatementType.sstmssqlalterdatabase, TBaseType.rrw_alter,"database"," "," "," "," "," ");
2291    addmssqlcmds(ESqlStatementType.sstmssqlalterendpoint, TBaseType.rrw_alter,"endpoint"," "," "," "," "," ");
2292    addmssqlcmds(ESqlStatementType.sstmssqlalterfulltextcatalog, TBaseType.rrw_alter,"fulltext","catalog"," "," "," "," ");
2293    addmssqlcmds(ESqlStatementType.sstmssqlalterfulltextindex, TBaseType.rrw_alter,"fulltext","index"," "," "," "," ");
2294    addmssqlcmds(ESqlStatementType.sstmssqlalterfunction, TBaseType.rrw_alter,"function"," "," "," "," "," ");
2295    addmssqlcmds(ESqlStatementType.sstmssqlalterindex, TBaseType.rrw_alter,"index"," "," "," "," "," ");
2296    addmssqlcmds(ESqlStatementType.sstmssqlalterlogin, TBaseType.rrw_alter,"login"," "," "," "," "," ");
2297    addmssqlcmds(ESqlStatementType.sstmssqlaltermasterkey, TBaseType.rrw_alter,"master","key"," "," "," "," ");
2298    addmssqlcmds(ESqlStatementType.sstmssqlaltermessagetype, TBaseType.rrw_alter,"message","type"," "," "," "," ");
2299    addmssqlcmds(ESqlStatementType.sstmssqlalterpartitionfunction, TBaseType.rrw_alter,"partition","function"," "," "," "," ");
2300    addmssqlcmds(ESqlStatementType.sstmssqlalterpartitionscheme, TBaseType.rrw_alter,"partition","scheme"," "," "," "," ");
2301    addmssqlcmds(ESqlStatementType.sstmssqlalterprocedure, TBaseType.rrw_alter,"proc"," "," "," "," "," ");
2302    addmssqlcmds(ESqlStatementType.sstmssqlalterprocedure, TBaseType.rrw_alter,"procedure"," "," "," "," "," ");
2303    addmssqlcmds(ESqlStatementType.sstmssqlalterqueue, TBaseType.rrw_alter,"queue"," "," "," "," "," ");
2304    addmssqlcmds(ESqlStatementType.sstmssqlalterremoteservicebinding, TBaseType.rrw_alter,"remote","service","binding"," "," "," ");
2305    addmssqlcmds(ESqlStatementType.sstmssqlalterrole, TBaseType.rrw_alter,"role"," "," "," "," "," ");
2306    addmssqlcmds(ESqlStatementType.sstmssqlalterroute, TBaseType.rrw_alter,"route"," "," "," "," "," ");
2307    addmssqlcmds(ESqlStatementType.sstmssqlalterschema, TBaseType.rrw_alter,"schema"," "," "," "," "," ");
2308    addmssqlcmds(ESqlStatementType.sstmssqlAlterSecurityPolicy, TBaseType.rrw_alter, "security", "policy", " ", " ", " ", " ");
2309    addmssqlcmds(ESqlStatementType.sstaltersequence, TBaseType.rrw_alter, "sequence", " ", " ", " ", " ", " ");
2310    addmssqlcmds(ESqlStatementType.sstmssqlalterservice, TBaseType.rrw_alter,"service"," "," "," "," "," ");
2311    addmssqlcmds(ESqlStatementType.sstmssqlalterservicemasterkey, TBaseType.rrw_alter,"service","master","key"," "," "," ");
2312    addmssqlcmds(ESqlStatementType.sstmssqlaltersymmetrickey, TBaseType.rrw_alter,"symmetric","key"," "," "," "," ");
2313    addmssqlcmds(ESqlStatementType.sstaltertable, TBaseType.rrw_alter,"table"," "," "," "," "," ");
2314    addmssqlcmds(ESqlStatementType.sstmssqlaltertrigger, TBaseType.rrw_alter,"trigger"," "," "," "," "," ");
2315    addmssqlcmds(ESqlStatementType.sstmssqlalteruser, TBaseType.rrw_alter,"user"," "," "," "," "," ");
2316    addmssqlcmds(ESqlStatementType.sstmssqlalterview, TBaseType.rrw_alter,"view"," "," "," "," "," ");
2317    addmssqlcmds(ESqlStatementType.sstmssqlalterxmlschemacollection, TBaseType.rrw_alter,"xml","schema","collection"," "," "," ");
2318//backup
2319    addmssqlcmds(ESqlStatementType.sstmssqlbackupcertificate, TBaseType.rrw_backup,"certificate"," "," "," "," "," ");
2320    addmssqlcmds(ESqlStatementType.sstmssqlbackupdatabase, TBaseType.rrw_backup,"database"," "," "," "," "," ");
2321    addmssqlcmds(ESqlStatementType.sstmssqlbackuplog, TBaseType.rrw_backup,"log"," "," "," "," "," ");
2322    addmssqlcmds(ESqlStatementType.sstmssqlbackupmasterkey, TBaseType.rrw_backup,"master","key"," "," "," "," ");
2323    addmssqlcmds(ESqlStatementType.sstmssqlbackupservicemasterkey, TBaseType.rrw_backup,"service","master","key"," "," "," ");
2324//begin
2325    addmssqlcmds(ESqlStatementType.sstmssqlbegincatch, TBaseType.rrw_begin,"catch"," "," "," "," "," ");
2326    addmssqlcmds(ESqlStatementType.sstmssqlbeginconversationtimer, TBaseType.rrw_begin,"conversation","timer"," "," "," "," ");
2327    addmssqlcmds(ESqlStatementType.sstmssqlbegindialog, TBaseType.rrw_begin,"dialog"," "," "," "," "," ");
2328    addmssqlcmds(ESqlStatementType.sstmssqlbegindistributed, TBaseType.rrw_begin,"distributed"," "," "," "," "," ");
2329    addmssqlcmds(ESqlStatementType.sstmssqlbegintran, TBaseType.rrw_begin,"tran"," "," "," "," "," ");
2330    addmssqlcmds(ESqlStatementType.sstmssqlbegintran, TBaseType.rrw_begin,"transaction"," "," "," "," "," ");
2331    addmssqlcmds(ESqlStatementType.sstmssqlbegintry, TBaseType.rrw_begin,"try"," "," "," "," "," ");
2332//break
2333    addmssqlcmds(ESqlStatementType.sstbreak, TBaseType.rrw_break," "," "," "," "," "," ");
2334//bulk insert
2335    addmssqlcmds(ESqlStatementType.sstmssqlbulkinsert, TBaseType.rrw_bulk,"insert"," "," "," "," "," ");
2336//checkpoint
2337    addmssqlcmds(ESqlStatementType.sstmssqlcheckpoint, TBaseType.rrw_checkpoint," "," "," "," "," "," ");
2338//close
2339    addmssqlcmds(ESqlStatementType.sstmssqlclose, TBaseType.rrw_close," "," "," "," "," "," ");
2340    addmssqlcmds(ESqlStatementType.sstmssqlclosesymmetrickey, TBaseType.rrw_close,"all", "symmetric", "keys"," "," "," ");
2341    addmssqlcmds(ESqlStatementType.sstmssqlclosemasterkey, TBaseType.rrw_close,"master", "key"," "," "," "," ");
2342    addmssqlcmds(ESqlStatementType.sstmssqlclosesymmetrickey, TBaseType.rrw_close,"symmetric", "key"," "," "," "," ");
2343//commit
2344    addmssqlcmds(ESqlStatementType.sstmssqlcommit, TBaseType.rrw_commit," "," "," "," "," "," ");
2345    addmssqlcmds(ESqlStatementType.sstmssqlcommit, TBaseType.rrw_commit,"work"," "," "," "," "," ");
2346    addmssqlcmds(ESqlStatementType.sstmssqlcommit, TBaseType.rrw_commit,"tran"," "," "," "," "," ");
2347    addmssqlcmds(ESqlStatementType.sstmssqlcommit, TBaseType.rrw_commit,"transaction"," "," "," "," "," ");
2348//continue
2349    addmssqlcmds(ESqlStatementType.sstmssqlcontinue, TBaseType.rrw_continue," "," "," "," "," "," ");
2350// copy into
2351    addmssqlcmds(ESqlStatementType.sstCopyInto, TBaseType.rrw_sqlserver_copyinto,"into"," "," "," "," "," ");
2352//create
2353    addmssqlcmds(ESqlStatementType.sstmssqlcreateaggregate, TBaseType.rrw_create,"aggregate"," "," "," "," "," ");
2354    addmssqlcmds(ESqlStatementType.sstmssqlcreateapplicationrole, TBaseType.rrw_create,"application", "role"," "," "," "," ");
2355    addmssqlcmds(ESqlStatementType.sstmssqlcreateassembly, TBaseType.rrw_create,"assembly"," "," "," "," "," ");
2356    addmssqlcmds(ESqlStatementType.sstmssqlcreateasymmetrickey, TBaseType.rrw_create,"asymmetric", "key"," "," "," "," ");
2357    addmssqlcmds(ESqlStatementType.sstmssqlcreatecertificate, TBaseType.rrw_create,"certificate"," "," "," "," "," ");
2358    addmssqlcmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"clustered","columnstore","index"," "," "," ");
2359    addmssqlcmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"clustered","index"," "," "," "," ");
2360    addmssqlcmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"columnstore","index"," "," "," "," ");
2361    addmssqlcmds(ESqlStatementType.sstmssqlcreatecontract, TBaseType.rrw_create,"contract"," "," "," "," "," ");
2362    addmssqlcmds(ESqlStatementType.sstcreatecredential, TBaseType.rrw_create,"credential"," "," "," "," "," ");
2363    addmssqlcmds(ESqlStatementType.sstcreatedatabase, TBaseType.rrw_create,"database"," "," "," "," "," ");
2364    addmssqlcmds(ESqlStatementType.sstmssqlcreatedatabaseencryptionkey, TBaseType.rrw_create,"database","encryption","key"," "," "," ");
2365    addmssqlcmds(ESqlStatementType.sstmssqlcreateselectivexmlindex, TBaseType.rrw_create,"selective","xml","index"," "," "," ");
2366    addmssqlcmds(ESqlStatementType.sstmssqlcreatejsonindex, TBaseType.rrw_create,"json","index"," "," "," "," ");
2367    addmssqlcmds(ESqlStatementType.sstmssqlcreatevectorindex, TBaseType.rrw_create,"vector","index"," "," "," "," ");
2368    addmssqlcmds(ESqlStatementType.sstmssqlrenameobject, TBaseType.rrw_rename,"object"," "," "," "," "," ");
2369    addmssqlcmds(ESqlStatementType.sstmssqlcreateremotetableasselect, TBaseType.rrw_create,"remote","table"," "," "," "," ");
2370    addmssqlcmds(ESqlStatementType.sstcreatecredential, TBaseType.rrw_create,"database","scoped","credential"," "," "," ");
2371    addmssqlcmds(ESqlStatementType.sstmssqlcreatedefault, TBaseType.rrw_create,"default"," "," "," "," "," ");
2372    addmssqlcmds(ESqlStatementType.sstmssqlcreateendpoint, TBaseType.rrw_create,"endpoint"," "," "," "," "," ");
2373    addmssqlcmds(ESqlStatementType.sstmssqlcreateeventnotification, TBaseType.rrw_create,"event", "notification"," "," "," "," ");
2374    addmssqlcmds(ESqlStatementType.sstmssqlcreateeventsession, TBaseType.rrw_create,"event", "session"," "," "," "," ");
2375    addmssqlcmds(ESqlStatementType.sstmssqlcreateevexternalDataSource, TBaseType.rrw_create,"external", "data","source"," "," "," ");
2376    addmssqlcmds(ESqlStatementType.sstCreateFileFormat, TBaseType.rrw_create,"external","file","format"," "," "," ");
2377    addmssqlcmds(ESqlStatementType.sstmssqlcreateevexternalLanguage, TBaseType.rrw_create,"external", "language"," "," "," "," ");
2378    addmssqlcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"external","table"," "," "," "," ");
2379    addmssqlcmds(ESqlStatementType.sstmssqlcreatefulltextcatalog, TBaseType.rrw_create,"fulltext", "catalog"," "," "," "," ");
2380    addmssqlcmds(ESqlStatementType.sstmssqlcreatefulltextindex, TBaseType.rrw_create,"fulltext", "index"," "," "," "," ");
2381    addmssqlcmds(ESqlStatementType.sstmssqlcreatefunction, TBaseType.rrw_create,"function"," "," "," "," "," ");
2382    addmssqlcmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"index"," "," "," "," "," ");
2383    addmssqlcmds(ESqlStatementType.sstmssqlcreatelogin, TBaseType.rrw_create,"login"," "," "," "," "," ");
2384    addmssqlcmds(ESqlStatementType.sstmssqlcreatemasterkey, TBaseType.rrw_create,"master","key"," "," "," "," ");
2385    addmssqlcmds(ESqlStatementType.sstcreatematerializedview, TBaseType.rrw_create,"materialized","view"," "," "," "," ");
2386
2387    addmssqlcmds(ESqlStatementType.sstmssqlcreatemessagetype, TBaseType.rrw_create,"message","type"," "," "," "," ");
2388    addmssqlcmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"nonclustered","columnstore","index"," "," "," ");
2389    addmssqlcmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"nonclustered","index"," "," "," "," ");
2390
2391    addmssqlcmds(ESqlStatementType.sstmssqlcreatefunction, TBaseType.rrw_create,"or","alter","function"," "," "," ");
2392
2393    addmssqlcmds(ESqlStatementType.sstmssqlcreateprocedure, TBaseType.rrw_create,"or","alter","proc"," "," "," ");
2394    addmssqlcmds(ESqlStatementType.sstmssqlcreateprocedure, TBaseType.rrw_create,"or","alter","procedure"," "," "," ");
2395
2396    addmssqlcmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,"or","alter","view"," "," "," ");
2397    addmssqlcmds(ESqlStatementType.sstmssqlcreatepartitionfunction, TBaseType.rrw_create,"partition","function"," "," "," "," ");
2398    addmssqlcmds(ESqlStatementType.sstmssqlcreatepartitionscheme, TBaseType.rrw_create,"partition","scheme"," "," "," "," ");
2399    addmssqlcmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"primary","xml","index"," "," "," ");
2400    addmssqlcmds(ESqlStatementType.sstmssqlcreateprocedure, TBaseType.rrw_create,"proc"," "," "," "," "," ");
2401    addmssqlcmds(ESqlStatementType.sstmssqlcreateprocedure, TBaseType.rrw_create,"procedure"," "," "," "," "," ");
2402    addmssqlcmds(ESqlStatementType.sstmssqlcreatequeue, TBaseType.rrw_create,"queue"," "," "," "," "," ");
2403    addmssqlcmds(ESqlStatementType.sstmssqlcreateremoteservicebinding, TBaseType.rrw_create,"remote", "service", "binding"," "," "," ");
2404    addmssqlcmds(ESqlStatementType.sstmssqlcreaterole, TBaseType.rrw_create,"role"," "," "," "," "," ");
2405    addmssqlcmds(ESqlStatementType.sstmssqlcreateroute, TBaseType.rrw_create,"route"," "," "," "," "," ");
2406    addmssqlcmds(ESqlStatementType.sstmssqlcreaterule, TBaseType.rrw_create,"rule"," "," "," "," "," ");
2407    addmssqlcmds(ESqlStatementType.sstmssqlcreateschema, TBaseType.rrw_create,"schema"," "," "," "," "," ");
2408    addmssqlcmds(ESqlStatementType.sstmssqlCreateSecurityPolicy, TBaseType.rrw_create, "security", "policy", " ", " ", " ", " ");
2409    addmssqlcmds(ESqlStatementType.sstcreatesequence, TBaseType.rrw_create, "sequence", " ", " ", " ", " ", " ");
2410    addmssqlcmds(ESqlStatementType.sstmssqlcreateservice, TBaseType.rrw_create,"service"," "," "," "," "," ");
2411    addmssqlcmds(ESqlStatementType.sstmssqlcreatestatistics, TBaseType.rrw_create,"statistics"," "," "," "," "," ");
2412    addmssqlcmds(ESqlStatementType.sstmssqlcreatesymmetrickey, TBaseType.rrw_create,"symmetric", "key"," "," "," "," ");
2413    addmssqlcmds(ESqlStatementType.sstmssqlcreatesynonym, TBaseType.rrw_create,"synonym"," "," "," "," "," ");
2414    addmssqlcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"table"," "," "," "," "," ");
2415    addmssqlcmds(ESqlStatementType.sstcreatetrigger, TBaseType.rrw_create,"trigger"," "," "," "," "," ");
2416    addmssqlcmds(ESqlStatementType.sstmssqlcreatetype, TBaseType.rrw_create,"type"," "," "," "," "," ");
2417    addmssqlcmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"unique","clustered","index"," "," "," ");
2418    addmssqlcmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"unique","index"," "," "," "," ");
2419    addmssqlcmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"unique","nonclustered","index"," "," "," ");
2420    addmssqlcmds(ESqlStatementType.sstmssqlcreateuser, TBaseType.rrw_create,"user"," "," "," "," "," ");
2421    addmssqlcmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,"view"," "," "," "," "," ");
2422    addmssqlcmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"xml","index"," "," "," "," ");
2423    addmssqlcmds(ESqlStatementType.sstmssqlcreatexmlschemacollection, TBaseType.rrw_create,"xml", "schema", "collection"," "," "," ");
2424// DBCC
2425    addmssqlcmds(ESqlStatementType.sstmssqldbcc, TBaseType.rrw_dbcc," "," "," "," "," "," ");
2426//DEALLOCATE
2427    addmssqlcmds(ESqlStatementType.sstmssqldeallocate, TBaseType.rrw_deallocate," "," "," "," "," "," ");
2428//DECLARE
2429    addmssqlcmds(ESqlStatementType.sstmssqldeclare, TBaseType.rrw_declare," "," "," "," "," "," ");
2430//DELETE
2431    addmssqlcmds(ESqlStatementType.sstdelete, TBaseType.rrw_delete," "," "," "," "," "," ");
2432//DENY
2433    addmssqlcmds(ESqlStatementType.sstmssqldeny, TBaseType.rrw_deny," "," "," "," "," "," ");
2434//DISABLE TRIGGER
2435    addmssqlcmds(ESqlStatementType.sstmssqldisabletrigger, TBaseType.rrw_disable,"trigger"," "," "," "," "," ");
2436//drop
2437    addmssqlcmds(ESqlStatementType.sstmssqldropaggregate, TBaseType.rrw_drop,"aggregate"," "," "," "," "," ");
2438    addmssqlcmds(ESqlStatementType.sstmssqldropapplicationrole, TBaseType.rrw_drop,"application", "role"," "," "," "," ");
2439    addmssqlcmds(ESqlStatementType.sstmssqldropassembly, TBaseType.rrw_drop,"assembly"," "," "," "," "," ");
2440    addmssqlcmds(ESqlStatementType.sstmssqldropasymmetrickey, TBaseType.rrw_drop,"asymmetric", "key"," "," "," "," ");
2441    addmssqlcmds(ESqlStatementType.sstmssqldropcertificate, TBaseType.rrw_drop,"certificate"," "," "," "," "," ");
2442    addmssqlcmds(ESqlStatementType.sstmssqldropcontract, TBaseType.rrw_drop,"contract"," "," "," "," "," ");
2443    addmssqlcmds(ESqlStatementType.sstmssqldropsignature, TBaseType.rrw_drop,"counter", "signature"," "," "," "," ");
2444    addmssqlcmds(ESqlStatementType.sstmssqldropcredential, TBaseType.rrw_drop,"credential"," "," "," "," "," ");
2445    addmssqlcmds(ESqlStatementType.sstmssqldropdatabase, TBaseType.rrw_drop,"database"," "," "," "," "," ");
2446    addmssqlcmds(ESqlStatementType.sstmssqldropdefault, TBaseType.rrw_drop,"default"," "," "," "," "," ");
2447    addmssqlcmds(ESqlStatementType.sstmssqldropendpoint, TBaseType.rrw_drop,"endpoint"," "," "," "," "," ");
2448    addmssqlcmds(ESqlStatementType.sstmssqldropeventnotification, TBaseType.rrw_drop,"event", "notification"," "," "," "," ");
2449    addmssqlcmds(ESqlStatementType.sstmssqldropeventsession, TBaseType.rrw_drop,"event", "session"," "," "," "," ");
2450    addmssqlcmds(ESqlStatementType.sstmssqldropfulltextcatalog, TBaseType.rrw_drop,"fulltext", "catalog"," "," "," "," ");
2451    addmssqlcmds(ESqlStatementType.sstmssqldropfulltextindex, TBaseType.rrw_drop,"fulltext", "index"," "," "," "," ");
2452    addmssqlcmds(ESqlStatementType.sstmssqldropfunction, TBaseType.rrw_drop,"function"," "," "," "," "," ");
2453    addmssqlcmds(ESqlStatementType.sstmssqldropindex, TBaseType.rrw_drop,"index"," "," "," "," "," ");
2454    addmssqlcmds(ESqlStatementType.sstmssqldroplogin, TBaseType.rrw_drop,"login"," "," "," "," "," ");
2455    addmssqlcmds(ESqlStatementType.sstmssqldropmasterkey, TBaseType.rrw_drop,"master", "key"," "," "," "," ");
2456    addmssqlcmds(ESqlStatementType.sstmssqldropmessagetype, TBaseType.rrw_drop,"message", "type"," "," "," "," ");
2457    addmssqlcmds(ESqlStatementType.sstmssqldroppartitionfunction, TBaseType.rrw_drop,"partition", "function"," "," "," "," ");
2458    addmssqlcmds(ESqlStatementType.sstmssqldroppartitionscheme, TBaseType.rrw_drop,"partition", "scheme"," "," "," "," ");
2459    addmssqlcmds(ESqlStatementType.sstmssqldropprocedure, TBaseType.rrw_drop,"proc"," "," "," "," "," ");
2460    addmssqlcmds(ESqlStatementType.sstmssqldropprocedure, TBaseType.rrw_drop,"procedure"," "," "," "," "," ");
2461    addmssqlcmds(ESqlStatementType.sstmssqldropqueue, TBaseType.rrw_drop,"queue"," "," "," "," "," ");
2462    addmssqlcmds(ESqlStatementType.sstmssqldropremoteservicebinding, TBaseType.rrw_drop,"remote", "service", "binding"," "," "," ");
2463    addmssqlcmds(ESqlStatementType.sstmssqldroprole, TBaseType.rrw_drop,"role"," "," "," "," "," ");
2464    addmssqlcmds(ESqlStatementType.sstmssqldroproute, TBaseType.rrw_drop,"route"," "," "," "," "," ");
2465    addmssqlcmds(ESqlStatementType.sstmssqldroprule, TBaseType.rrw_drop,"rule"," "," "," "," "," ");
2466    addmssqlcmds(ESqlStatementType.sstmssqldropschema, TBaseType.rrw_drop,"schema"," "," "," "," "," ");
2467    addmssqlcmds(ESqlStatementType.sstmssqlDropSecurityPolicy, TBaseType.rrw_drop, "security", "policy", " ", " ", " ", " ");
2468    addmssqlcmds(ESqlStatementType.sstdropsequence, TBaseType.rrw_drop,"sequence"," "," "," "," "," ");
2469    addmssqlcmds(ESqlStatementType.sstmssqldropservice, TBaseType.rrw_drop,"service"," "," "," "," "," ");
2470    addmssqlcmds(ESqlStatementType.sstmssqldropsignature, TBaseType.rrw_drop,"signature"," "," "," "," "," ");
2471    addmssqlcmds(ESqlStatementType.sstmssqldropstatistics, TBaseType.rrw_drop,"statistics"," "," "," "," "," ");
2472    addmssqlcmds(ESqlStatementType.sstmssqldropsymmetrickey, TBaseType.rrw_drop,"symmetric", "key"," "," "," "," ");
2473    addmssqlcmds(ESqlStatementType.sstmssqldropsynonym, TBaseType.rrw_drop,"synonym"," "," "," "," "," ");
2474    addmssqlcmds(ESqlStatementType.sstmssqldroptable, TBaseType.rrw_drop,"table"," "," "," "," "," ");
2475    addmssqlcmds(ESqlStatementType.sstmssqldroptrigger, TBaseType.rrw_drop,"trigger"," "," "," "," "," ");
2476    addmssqlcmds(ESqlStatementType.sstmssqldroptype, TBaseType.rrw_drop,"type"," "," "," "," "," ");
2477    addmssqlcmds(ESqlStatementType.sstmssqldropuser, TBaseType.rrw_drop,"user"," "," "," "," "," ");
2478    addmssqlcmds(ESqlStatementType.sstmssqldropview, TBaseType.rrw_drop,"view"," "," "," "," "," ");
2479    addmssqlcmds(ESqlStatementType.sstmssqldropxmlschemacollection, TBaseType.rrw_drop,"xml", "schema", "collection"," "," "," ");
2480//enable trigger
2481    addmssqlcmds(ESqlStatementType.sstmssqlenabletrigger, TBaseType.rrw_enable,"trigger"," "," "," "," "," ");
2482//END CONVERSATION
2483// AddMssqlCmds(ESqlStatementType.sstMssqlEndCatch,TBaseType.rrw_end,'catch');
2484    addmssqlcmds(ESqlStatementType.sstmssqlendconversation, TBaseType.rrw_end,"conversation"," "," "," "," "," ");
2485// AddMssqlCmds(ESqlStatementType.sstMssqlEndTry,TBaseType.rrw_end,'try');
2486//exec
2487//exec as
2488    addmssqlcmds(ESqlStatementType.sstmssqlexec, TBaseType.rrw_exec," "," "," "," "," "," ");
2489    addmssqlcmds(ESqlStatementType.sstmssqlexecuteas, TBaseType.rrw_exec,"as","caller"," "," "," "," ");
2490    addmssqlcmds(ESqlStatementType.sstmssqlexecuteas, TBaseType.rrw_exec,"as","login"," "," "," "," ");
2491    addmssqlcmds(ESqlStatementType.sstmssqlexecuteas, TBaseType.rrw_exec,"as","user"," "," "," "," ");
2492    addmssqlcmds(ESqlStatementType.sstmssqlexec, TBaseType.rrw_execute, " "," "," "," "," "," ");
2493    addmssqlcmds(ESqlStatementType.sstmssqlexecuteas, TBaseType.rrw_execute,"as","caller"," "," "," "," ");
2494    addmssqlcmds(ESqlStatementType.sstmssqlexecuteas, TBaseType.rrw_execute,"as","login"," "," "," "," ");
2495    addmssqlcmds(ESqlStatementType.sstmssqlexecuteas, TBaseType.rrw_execute,"as","user"," "," "," "," ");
2496//fetch
2497    addmssqlcmds(ESqlStatementType.sstmssqlfetch, TBaseType.rrw_fetch," "," "," "," "," "," ");
2498//go
2499    addmssqlcmds(ESqlStatementType.sstmssqlgo, TBaseType.rrw_go," "," "," "," "," "," ");
2500//goto
2501    addmssqlcmds(ESqlStatementType.sstmssqlgoto, TBaseType.rrw_goto," "," "," "," "," "," ");
2502//GRANT
2503    addmssqlcmds(ESqlStatementType.sstmssqlgrant, TBaseType.rrw_grant," "," "," "," "," "," ");
2504
2505//if
2506    addmssqlcmds(ESqlStatementType.sstmssqlif, TBaseType.rrw_if," "," "," "," "," "," ");
2507
2508//GRANT
2509    addmssqlcmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert," "," "," "," "," "," ");
2510    addmssqlcmds(ESqlStatementType.sstmssqlinsertbulk, TBaseType.rrw_insert,"bulk"," "," "," "," "," ");
2511//KILL
2512    addmssqlcmds(ESqlStatementType.sstmssqlkill, TBaseType.rrw_kill," "," "," "," "," "," ");
2513//KILL
2514    addmssqlcmds(ESqlStatementType.sstmssqlkill, TBaseType.rrw_kill," "," "," "," "," "," ");
2515    addmssqlcmds(ESqlStatementType.sstmssqlkillquerynotificationsubscription, TBaseType.rrw_kill,"kill", "query", "notification", "subscription"," "," ");
2516    addmssqlcmds(ESqlStatementType.sstmssqlkillstats, TBaseType.rrw_kill,"stats"," "," "," "," "," ");
2517
2518//
2519 addmssqlcmds(ESqlStatementType.sstsybaselocktable,TBaseType.rw_locktable,"table"," "," "," "," "," ");
2520//MOVE CONVERSATION
2521    addmssqlcmds(ESqlStatementType.sstmssqlmoveconversation, TBaseType.rrw_move,"conversation"," "," "," "," "," ");
2522//merge
2523    addmssqlcmds(ESqlStatementType.sstmerge, TBaseType.rrw_merge," "," "," "," "," "," ");
2524//open
2525    addmssqlcmds(ESqlStatementType.sstmssqlopen, TBaseType.rrw_open," "," "," "," "," "," ");
2526    addmssqlcmds(ESqlStatementType.sstmssqlopenmasterkey, TBaseType.rrw_open,"master", "key"," "," "," "," ");
2527    addmssqlcmds(ESqlStatementType.sstmssqlopensymmetrickey, TBaseType.rrw_open,"symmetric", "key"," "," "," "," ");
2528//PRINT
2529    addmssqlcmds(ESqlStatementType.sstmssqlprint, TBaseType.rrw_print," "," "," "," "," "," ");
2530//RAISERROR
2531    addmssqlcmds(ESqlStatementType.sstmssqlraiserror, TBaseType.rrw_raiserror," "," "," "," "," "," ");
2532//READTEXT
2533    addmssqlcmds(ESqlStatementType.sstmssqlreadtext, TBaseType.rrw_readtext," "," "," "," "," "," ");
2534//RECEIVE
2535    addmssqlcmds(ESqlStatementType.sstmssqlreceive, TBaseType.rrw_receive," "," "," "," "," "," ");
2536//RECONFIGURE
2537    addmssqlcmds(ESqlStatementType.sstmssqlreconfigure, TBaseType.rrw_reconfigure," "," "," "," "," "," ");
2538//RESTORE
2539    addmssqlcmds(ESqlStatementType.sstmssqlrestoredatabase, TBaseType.rrw_restore,"database"," "," "," "," "," ");
2540    addmssqlcmds(ESqlStatementType.sstmssqlrestorefilelistonly, TBaseType.rrw_restore,"filelistonly"," "," "," "," "," ");
2541    addmssqlcmds(ESqlStatementType.sstmssqlrestoreheaderonly, TBaseType.rrw_restore,"headeronly"," "," "," "," "," ");
2542    addmssqlcmds(ESqlStatementType.sstmssqlrestorelabelonly, TBaseType.rrw_restore,"labelonly"," "," "," "," "," ");
2543    addmssqlcmds(ESqlStatementType.sstmssqlrestorelog, TBaseType.rrw_restore,"log"," "," "," "," "," ");
2544    addmssqlcmds(ESqlStatementType.sstmssqlrestoremasterkey, TBaseType.rrw_restore,"master","key"," "," "," "," ");
2545    addmssqlcmds(ESqlStatementType.sstmssqlrestorerewindonly, TBaseType.rrw_restore,"rewindonly"," "," "," "," "," ");
2546    addmssqlcmds(ESqlStatementType.sstmssqlrestoreservicemasterkey, TBaseType.rrw_restore,"service","master","key"," "," "," ");
2547    addmssqlcmds(ESqlStatementType.sstmssqlrestoreverifyonly, TBaseType.rrw_restore,"verifyonly"," "," "," "," "," ");
2548//RETURN
2549    addmssqlcmds(ESqlStatementType.sstmssqlreturn, TBaseType.rrw_return," "," "," "," "," "," ");
2550//REVERT
2551    addmssqlcmds(ESqlStatementType.sstmssqlrevert, TBaseType.rrw_revert," "," "," "," "," "," ");
2552//REVOKE
2553    addmssqlcmds(ESqlStatementType.sstmssqlrevoke, TBaseType.rrw_revoke," "," "," "," "," "," ");
2554//ROLLBACK
2555    addmssqlcmds(ESqlStatementType.sstmssqlrollback, TBaseType.rrw_rollback," "," "," "," "," "," ");
2556    addmssqlcmds(ESqlStatementType.sstmssqlrollback, TBaseType.rrw_rollback,"tran"," "," "," "," "," ");
2557    addmssqlcmds(ESqlStatementType.sstmssqlrollback, TBaseType.rrw_rollback,"transaction"," "," "," "," "," ");
2558    addmssqlcmds(ESqlStatementType.sstmssqlrollback, TBaseType.rrw_rollback,"work"," "," "," "," "," ");
2559//SAVE
2560    addmssqlcmds(ESqlStatementType.sstmssqlsavetran, TBaseType.rrw_save," "," "," "," "," "," ");
2561    addmssqlcmds(ESqlStatementType.sstmssqlsavetran, TBaseType.rrw_save,"tran"," "," "," "," "," ");
2562    addmssqlcmds(ESqlStatementType.sstmssqlsavetran, TBaseType.rrw_save,"transaction"," "," "," "," "," ");
2563//SELECT
2564    addmssqlcmds(ESqlStatementType.sstselect, TBaseType.rrw_select," "," "," "," "," "," ");
2565//SEND ON CONVERSATION
2566    addmssqlcmds(ESqlStatementType.sstmssqlsendonconversation, TBaseType.rrw_send,"on","conversation"," "," "," "," ");
2567//SET
2568    addmssqlcmds(ESqlStatementType.sstmssqlset, TBaseType.rrw_set," "," "," "," "," "," ");
2569//SET rowcount
2570    addmssqlcmds(ESqlStatementType.sstmssqlsetrowcount, TBaseType.rrw_set,"rowcount"," "," "," "," "," ");
2571//SET
2572    addmssqlcmds(ESqlStatementType.sstmssqlsetuser,TBaseType.rrw_setuser," "," "," "," "," "," ");
2573//SHUTDOWN
2574    addmssqlcmds(ESqlStatementType.sstmssqlshutdown, TBaseType.rrw_shutdown," "," "," "," "," "," ");
2575//SIGN
2576//    addmssqlcmds(ESqlStatementType.sstmssqlsign, rrw_sign," "," "," "," "," "," ");
2577
2578//throw
2579    addmssqlcmds(ESqlStatementType.sstmssqlthrow, TBaseType.rrw_sqlserver_throw," "," "," "," "," "," ");
2580
2581//TRUNCATE TABLE
2582    addmssqlcmds(ESqlStatementType.sstmssqltruncatetable, TBaseType.rrw_truncate,"table"," "," "," "," "," ");
2583//UPDATE
2584    addmssqlcmds(ESqlStatementType.sstupdate, TBaseType.rrw_update," "," "," "," "," "," ");
2585//UPDATE STATISTICS
2586    addmssqlcmds(ESqlStatementType.sstmssqlupdatestatistics, TBaseType.rrw_update,"statistics"," "," "," "," "," ");
2587//UPDATETEXT
2588    addmssqlcmds(ESqlStatementType.sstmssqlupdatetext, TBaseType.rrw_updatetext," "," "," "," "," "," ");
2589//USE
2590    addmssqlcmds(ESqlStatementType.sstmssqluse, TBaseType.rrw_use," "," "," "," "," "," ");
2591//WAITFOR
2592    addmssqlcmds(ESqlStatementType.sstmssqlwaitfor, TBaseType.rrw_waitfor," "," "," "," "," "," ");
2593//WHILE
2594    addmssqlcmds(ESqlStatementType.sstmssqlwhile, TBaseType.rrw_while," "," "," "," "," "," ");
2595//WITH, don't recongize here, let isMssqlSql do it
2596// AddMssqlCmds(ESqlStatementType.sstMssqlCTE,rrw_WITH,' ');
2597//WITH XMLNAMESPACES
2598  //  addmssqlcmds(ESqlStatementType.sstmssqlwithxmlnamespaces, TBaseType.rrw_with,"xmlnamespaces"," "," "," "," "," ");
2599//WRITETEXT
2600    addmssqlcmds(ESqlStatementType.sstmssqlwritetext, TBaseType.rrw_writetext," "," "," "," "," "," ");
2601
2602}
2603
2604void initdb2cmds(){
2605// cmd must be sort alphabetically
2606    adddb2cmds(ESqlStatementType.sstdb2allocatecursor, TBaseType.rrw_allocate,"cursor"," "," "," "," "," ");
2607    adddb2cmds(ESqlStatementType.sstdb2alterbufferpool, TBaseType.rrw_alter,"bufferpool"," "," "," "," "," ");
2608    adddb2cmds(ESqlStatementType.sstdb2alterdatabasepartitiongroup, TBaseType.rrw_alter,"database", "partition", "group"," "," "," ");
2609    adddb2cmds(ESqlStatementType.sstdb2alterfunction, TBaseType.rrw_alter,"function"," "," "," "," "," ");
2610    adddb2cmds(ESqlStatementType.sstdb2altermethod, TBaseType.rrw_alter,"method"," "," "," "," "," ");
2611    adddb2cmds(ESqlStatementType.sstdb2alternickname, TBaseType.rrw_alter,"nickname"," "," "," "," "," ");
2612    adddb2cmds(ESqlStatementType.sstdb2alterprocedure, TBaseType.rrw_alter,"procedure"," "," "," "," "," ");
2613    adddb2cmds(ESqlStatementType.sstdb2altersequence, TBaseType.rrw_alter,"sequence"," "," "," "," "," ");
2614    adddb2cmds(ESqlStatementType.sstdb2alterserver, TBaseType.rrw_alter,"server"," "," "," "," "," ");
2615    adddb2cmds(ESqlStatementType.sstaltertable, TBaseType.rrw_alter,"table"," "," "," "," "," ");
2616    adddb2cmds(ESqlStatementType.sstdb2altertablespace, TBaseType.rrw_alter,"tablespace"," "," "," "," "," ");
2617    adddb2cmds(ESqlStatementType.sstdb2altertype, TBaseType.rrw_alter,"type"," "," "," "," "," ");
2618    adddb2cmds(ESqlStatementType.sstdb2alterusermapping, TBaseType.rrw_alter,"user","mapping"," "," "," "," ");
2619    adddb2cmds(ESqlStatementType.sstdb2alterview, TBaseType.rrw_alter,"view"," "," "," "," "," ");
2620    adddb2cmds(ESqlStatementType.sstdb2alterwrapper, TBaseType.rrw_alter,"wrapper"," "," "," "," "," ");
2621    adddb2cmds(ESqlStatementType.sstdb2associatelocators, TBaseType.rrw_associate,"locators"," "," "," "," "," ");
2622    adddb2cmds(ESqlStatementType.sstdb2begindeclaresection, TBaseType.rrw_begin,"declare", "section"," "," "," "," ");
2623    adddb2cmds(ESqlStatementType.sstdb2call, TBaseType.rrw_call," "," "," "," "," "," ");
2624    adddb2cmds(ESqlStatementType.sstdb2case, TBaseType.rrw_case," "," "," "," "," "," ");
2625    adddb2cmds(ESqlStatementType.sstdb2close, TBaseType.rrw_close," "," "," "," "," "," ");
2626    adddb2cmds(ESqlStatementType.sstdb2comment, TBaseType.rrw_comment," "," "," "," "," "," ");
2627    adddb2cmds(ESqlStatementType.sstdb2commit, TBaseType.rrw_commit," "," "," "," "," "," ");
2628    adddb2cmds(ESqlStatementType.sstdb2connect, TBaseType.rrw_connect," "," "," "," "," "," ");
2629    adddb2cmds(ESqlStatementType.sstdb2createalias, TBaseType.rrw_create,"alias"," "," "," "," "," ");
2630    adddb2cmds(ESqlStatementType.sstcreateauditpolicy, TBaseType.rrw_create,"audit","policy"," "," "," "," ");
2631    adddb2cmds(ESqlStatementType.sstdb2createbufferpool, TBaseType.rrw_create,"bufferpool"," "," "," "," "," ");
2632    adddb2cmds(ESqlStatementType.sstcreatedatabase, TBaseType.rrw_create,"database", " ", " "," "," "," ");
2633    adddb2cmds(ESqlStatementType.sstdb2createdatabasepartitiongroup, TBaseType.rrw_create,"database", "partition", "group"," "," "," ");
2634    adddb2cmds(ESqlStatementType.sstdb2createdistincttype, TBaseType.rrw_create,"distinct", "type"," "," "," "," ");
2635    adddb2cmds(ESqlStatementType.sstdb2createeventmonitor, TBaseType.rrw_create,"eventmonitor"," "," "," "," "," ");
2636    adddb2cmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create,"function"," "," "," "," "," ");
2637    adddb2cmds(ESqlStatementType.sstdb2createfunctionmapping, TBaseType.rrw_create,"function", "mapping"," "," "," "," ");
2638    adddb2cmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"global","temporary","table"," "," "," ");
2639    adddb2cmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"index"," "," "," "," "," ");
2640    adddb2cmds(ESqlStatementType.sstdb2createindexextension, TBaseType.rrw_create,"index", "extension"," "," "," "," ");
2641    adddb2cmds(ESqlStatementType.sstcreateTablespace, TBaseType.rrw_create,"large","tablespace"," "," "," "," ");
2642    adddb2cmds(ESqlStatementType.sstdb2createmethod, TBaseType.rrw_create,"method"," "," "," "," "," ");
2643    adddb2cmds(ESqlStatementType.sstdb2createnickname, TBaseType.rrw_create,"nickname"," "," "," "," "," ");
2644    adddb2cmds(ESqlStatementType.sstdb2createalias, TBaseType.rrw_create,"or","replace","alias"," "," "," ");
2645    adddb2cmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create,"or","replace","function"," "," "," ");
2646    adddb2cmds(ESqlStatementType.sstcreateprocedure, TBaseType.rrw_create,"or","replace","procedure"," "," "," ");
2647    adddb2cmds(ESqlStatementType.sstdb2createalias, TBaseType.rrw_create,"or","replace","public","alias"," "," ");
2648    adddb2cmds(ESqlStatementType.sstdb2createtrigger, TBaseType.rrw_create,"or","replace","trigger"," "," "," ");
2649    adddb2cmds(ESqlStatementType.sstdb2createvariable, TBaseType.rrw_create,"or","replace","variable"," "," "," ");
2650    adddb2cmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,"or","replace","view"," "," "," ");
2651    adddb2cmds(ESqlStatementType.sstcreateprocedure, TBaseType.rrw_create,"procedure"," "," "," "," "," ");
2652    adddb2cmds(ESqlStatementType.sstdb2createalias, TBaseType.rrw_create,"public","alias"," "," "," "," ");
2653    adddb2cmds(ESqlStatementType.sstcreatesynonym, TBaseType.rrw_create,"public","synonym"," "," "," "," ");
2654    adddb2cmds(ESqlStatementType.sstcreaterole, TBaseType.rrw_create,"role"," "," "," "," "," ");
2655    adddb2cmds(ESqlStatementType.sstdb2createschema, TBaseType.rrw_create,"schema"," "," "," "," "," ");
2656    adddb2cmds(ESqlStatementType.sstdb2createsequence, TBaseType.rrw_create,"sequence"," "," "," "," "," ");
2657    adddb2cmds(ESqlStatementType.sstdb2createserver, TBaseType.rrw_create,"server"," "," "," "," "," ");
2658    adddb2cmds(ESqlStatementType.sstdb2createstogroup, TBaseType.rrw_create,"stogroup"," "," "," "," "," ");
2659    adddb2cmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"summary","table"," "," "," "," ");
2660    adddb2cmds(ESqlStatementType.sstcreatesynonym, TBaseType.rrw_create,"synonym"," "," "," "," "," ");
2661    adddb2cmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"table"," "," "," "," "," ");
2662    adddb2cmds(ESqlStatementType.sstcreateTablespace, TBaseType.rrw_create,"tablespace"," "," "," "," "," ");
2663    adddb2cmds(ESqlStatementType.sstdb2createtransform, TBaseType.rrw_create,"transform"," "," "," "," "," ");
2664    adddb2cmds(ESqlStatementType.sstdb2createtrigger, TBaseType.rrw_create,"trigger"," "," "," "," "," ");
2665    adddb2cmds(ESqlStatementType.sstdb2createtype, TBaseType.rrw_create,"type"," "," "," "," "," ");
2666    adddb2cmds(ESqlStatementType.sstdb2createtypemapping, TBaseType.rrw_create,"type", "mapping"," "," "," "," ");
2667    adddb2cmds(ESqlStatementType.sstdb2createusermapping, TBaseType.rrw_create,"user", "mapping"," "," "," "," ");
2668    adddb2cmds(ESqlStatementType.sstdb2createvariable, TBaseType.rrw_create,"variable"," "," "," "," "," ");
2669    adddb2cmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,"view"," "," "," "," "," ");
2670    adddb2cmds(ESqlStatementType.sstdb2createwrapper, TBaseType.rrw_create,"wrapper"," "," "," "," "," ");
2671    adddb2cmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"*","index"," "," "," "," ");
2672    adddb2cmds(ESqlStatementType.sstdb2declareglobaltemporarytable, TBaseType.rrw_declare, "global", "temporary", "table"," "," "," ");
2673    adddb2cmds(ESqlStatementType.sstdb2declarecursor, TBaseType.rrw_declare,"*","cursor"," "," "," "," ");
2674    adddb2cmds(ESqlStatementType.sstdelete, TBaseType.rrw_delete," "," "," "," "," "," ");
2675    adddb2cmds(ESqlStatementType.sstdb2describe, TBaseType.rrw_describe," "," "," "," "," "," ");
2676    adddb2cmds(ESqlStatementType.sstdb2disconnect, TBaseType.rrw_disconnect," "," "," "," "," "," ");
2677    adddb2cmds(ESqlStatementType.sstdb2drop, TBaseType.rrw_drop," "," "," "," "," "," ");
2678    adddb2cmds(ESqlStatementType.sstdropindex, TBaseType.rrw_drop,"index"," "," "," "," "," ");
2679    adddb2cmds(ESqlStatementType.sstdroptable, TBaseType.rrw_drop,"table"," "," "," "," "," ");
2680    adddb2cmds(ESqlStatementType.sstdropview, TBaseType.rrw_drop,"view"," "," "," "," "," ");
2681    adddb2cmds(ESqlStatementType.sstdb2enddeclaresection, TBaseType.rrw_end,"declare","section"," "," "," "," ");
2682    adddb2cmds(ESqlStatementType.sstdb2execute, TBaseType.rrw_execute," "," "," "," "," "," ");
2683    adddb2cmds(ESqlStatementType.sstdb2executeimmediate, TBaseType.rrw_execute,"immediate"," "," "," "," "," ");
2684    adddb2cmds(ESqlStatementType.sstdb2explain, TBaseType.rrw_explain," "," "," "," "," "," ");
2685    adddb2cmds(ESqlStatementType.sstdb2fetch, TBaseType.rrw_fetch," "," "," "," "," "," ");
2686    adddb2cmds(ESqlStatementType.sstdb2flusheventmonitor, TBaseType.rrw_flush, "event", "monitor"," "," "," "," ");
2687    adddb2cmds(ESqlStatementType.sstdb2flushpackagecache, TBaseType.rrw_flush,"package", "cache"," "," "," "," ");
2688    adddb2cmds(ESqlStatementType.sstdb2for, TBaseType.rrw_for," "," "," "," "," "," ");
2689    adddb2cmds(ESqlStatementType.sstdb2freelocator, TBaseType.rrw_free,"locator"," "," "," "," "," ");
2690    adddb2cmds(ESqlStatementType.sstgetdiagnostics, TBaseType.rrw_get,"diagnostics"," "," "," "," "," ");
2691    adddb2cmds(ESqlStatementType.sstdb2goto, TBaseType.rrw_goto," "," "," "," "," "," ");
2692    adddb2cmds(ESqlStatementType.sstdb2grant, TBaseType.rrw_grant," "," "," "," "," "," ");
2693    adddb2cmds(ESqlStatementType.sstdb2if, TBaseType.rrw_if," "," "," "," "," "," ");
2694    adddb2cmds(ESqlStatementType.sstdb2include, TBaseType.rrw_include," "," "," "," "," "," ");
2695    adddb2cmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert," "," "," "," "," "," ");
2696    adddb2cmds(ESqlStatementType.sstdb2iterate, TBaseType.rrw_iterate," "," "," "," "," "," ");
2697    adddb2cmds(ESqlStatementType.sstdb2labelOn, TBaseType.rrw_db2_label,"on"," "," "," "," "," ");
2698    adddb2cmds(ESqlStatementType.sstdb2leave, TBaseType.rrw_leave," "," "," "," "," "," ");
2699    adddb2cmds(ESqlStatementType.sstdb2locktable, TBaseType.rrw_lock,"table"," "," "," "," "," ");
2700    adddb2cmds(ESqlStatementType.sstdb2loop, TBaseType.rrw_loop," "," "," "," "," "," ");
2701    adddb2cmds(ESqlStatementType.sstmerge, TBaseType.rrw_merge," "," "," "," "," "," ");
2702    adddb2cmds(ESqlStatementType.sstdb2open, TBaseType.rrw_open," "," "," "," "," "," ");
2703    adddb2cmds(ESqlStatementType.sstdb2prepare, TBaseType.rrw_prepare," "," "," "," "," "," ");
2704    adddb2cmds(ESqlStatementType.sstdb2refreshtable, TBaseType.rrw_refresh,"table"," "," "," "," "," ");
2705    adddb2cmds(ESqlStatementType.sstdb2release, TBaseType.rrw_release," "," "," "," "," "," ");
2706    adddb2cmds(ESqlStatementType.sstdb2releasesavepoint, TBaseType.rrw_release,"savepoint"," "," "," "," "," ");
2707    adddb2cmds(ESqlStatementType.sstdb2rename, TBaseType.rrw_rename," "," "," "," "," "," ");
2708    adddb2cmds(ESqlStatementType.sstdb2renametablespace, TBaseType.rrw_rename,"tablespace"," "," "," "," "," ");
2709    adddb2cmds(ESqlStatementType.sstdb2repeat, TBaseType.rrw_repeat," "," "," "," "," "," ");
2710    adddb2cmds(ESqlStatementType.sstdb2resignal, TBaseType.rrw_resignal," "," "," "," "," "," ");
2711    adddb2cmds(ESqlStatementType.sstdb2return, TBaseType.rrw_return," "," "," "," "," "," ");
2712    adddb2cmds(ESqlStatementType.sstdb2revoke, TBaseType.rrw_revoke," "," "," "," "," "," ");
2713    adddb2cmds(ESqlStatementType.sstdb2rollback, TBaseType.rrw_rollback," "," "," "," "," "," ");
2714    adddb2cmds(ESqlStatementType.sstRunStats, TBaseType.rrw_db2_runstats," "," "," "," "," "," ");
2715    adddb2cmds(ESqlStatementType.sstdb2savepoint, TBaseType.rrw_savepoint," "," "," "," "," "," ");
2716    adddb2cmds(ESqlStatementType.sstselect, TBaseType.rrw_select," "," "," "," "," "," ");
2717    adddb2cmds(ESqlStatementType.sstdb2setconnection, TBaseType.rrw_set,"connection"," "," "," "," "," ");
2718    adddb2cmds(ESqlStatementType.sstdb2set, TBaseType.rrw_set," "," "," "," "," "," ");
2719    adddb2cmds(ESqlStatementType.sstdb2setconnection, TBaseType.rrw_set,"connection"," "," "," "," "," ");
2720    adddb2cmds(ESqlStatementType.sstdb2setcurrentdefaulttransformgroup, TBaseType.rrw_set,"current default transform group"," "," "," "," "," ");
2721    adddb2cmds(ESqlStatementType.sstdb2setcurrentdegree, TBaseType.rrw_set,"current", "degree"," "," "," "," ");
2722    adddb2cmds(ESqlStatementType.sstdb2setcurrentexplainmode, TBaseType.rrw_set,"current", "explain", "mode"," "," "," ");
2723    adddb2cmds(ESqlStatementType.sstdb2setcurrentexplainsnapshot, TBaseType.rrw_set,"current", "explain", "snapshot"," "," "," ");
2724    adddb2cmds(ESqlStatementType.sstdb2setcurrentisolation, TBaseType.rrw_set,"current", "isolation"," "," "," "," ");
2725    adddb2cmds(ESqlStatementType.sstdb2setcurrentlocktimeout, TBaseType.rrw_set,"current", "lock", "timeout"," "," "," ");
2726    adddb2cmds(ESqlStatementType.sstdb2setcurrentmaintainedtabletypesforoptimization, TBaseType.rrw_set,"current", "maintained", "table", "types"," "," ");
2727    adddb2cmds(ESqlStatementType.sstdb2setcurrentpackagepath, TBaseType.rrw_set,"current", "package", "path"," "," "," ");
2728    adddb2cmds(ESqlStatementType.sstdb2setcurrentpackageset, TBaseType.rrw_set,"current", "packageset"," "," "," "," ");
2729    adddb2cmds(ESqlStatementType.sstdb2setcurrentqueryoptimization, TBaseType.rrw_set,"current", "query", "optimization"," "," "," ");
2730    adddb2cmds(ESqlStatementType.sstdb2setcurrentrefreshage, TBaseType.rrw_set,"current", "refresh", "age"," "," "," ");
2731    adddb2cmds(ESqlStatementType.sstdb2setschema, TBaseType.rrw_set,"current","schema"," "," "," "," ");
2732    adddb2cmds(ESqlStatementType.sstdb2setencryptionpassword, TBaseType.rrw_set,"encryption", "password"," "," "," "," ");
2733    adddb2cmds(ESqlStatementType.sstdb2seteventmonitorstate, TBaseType.rrw_set,"event", "monitor", "state"," "," "," ");
2734    adddb2cmds(ESqlStatementType.sstdb2setintegrity, TBaseType.rrw_set,"integrity"," "," "," "," "," ");
2735    adddb2cmds(ESqlStatementType.sstdb2setpassthru, TBaseType.rrw_set,"passthru"," "," "," "," "," ");
2736    adddb2cmds(ESqlStatementType.sstdb2setpath, TBaseType.rrw_set,"path"," "," "," "," "," ");
2737    adddb2cmds(ESqlStatementType.sstdb2setschema, TBaseType.rrw_set,"schema"," "," "," "," "," ");
2738    adddb2cmds(ESqlStatementType.sstdb2setserveroption, TBaseType.rrw_set,"server", "option"," "," "," "," ");
2739    adddb2cmds(ESqlStatementType.sstdb2setsessionauthorization, TBaseType.rrw_set,"session", "authorization"," "," "," "," ");
2740    adddb2cmds(ESqlStatementType.sstdb2signal, TBaseType.rrw_signal," "," "," "," "," "," ");
2741    adddb2cmds(ESqlStatementType.sstdb2terminate, TBaseType.rrw_terminate," "," "," "," "," "," ");
2742//TRUNCATE TABLE
2743    adddb2cmds(ESqlStatementType.ssttruncatetable, TBaseType.rrw_truncate," "," "," "," "," "," ");
2744
2745    adddb2cmds(ESqlStatementType.sstupdate, TBaseType.rrw_update," "," "," "," "," "," ");
2746    adddb2cmds(ESqlStatementType.sstdb2updateCommand, TBaseType.rrw_update,"command"," "," "," "," "," ");
2747// AddDB2Cmds(sstDB2VALUES,rrw_VALUES);
2748// AddDB2Cmds(sstDB2WHENEVER,rrw_WHENEVER);
2749    adddb2cmds(ESqlStatementType.sstdb2while, TBaseType.rrw_while," "," "," "," "," "," ");
2750
2751}
2752
2753void initnetezzacmds(){
2754    addnetezzacmds(ESqlStatementType.sstAlterSchema, TBaseType.rrw_alter, "schema", " ", " ", " ", " ", " ");
2755    addnetezzacmds(ESqlStatementType.sstnetezzaAlterDatabase, TBaseType.rrw_alter, "database", " ", " ", " ", " ", " ");
2756    addnetezzacmds(ESqlStatementType.sstnetezzaAlterGroup, TBaseType.rrw_alter, "group", " ", " ", " ", " ", " ");
2757    addnetezzacmds(ESqlStatementType.sstnetezzaAlterHistoryConfiguration, TBaseType.rrw_alter, "history", " ", " ", " ", " ", " ");
2758    addnetezzacmds(ESqlStatementType.sstnetezzaAlterSequence, TBaseType.rrw_alter, "sequence", " ", " ", " ", " ", " ");
2759    addnetezzacmds(ESqlStatementType.sstaltersession, TBaseType.rrw_alter, "session", " ", " ", " ", " ", " ");
2760    addnetezzacmds(ESqlStatementType.sstAlterSynonym, TBaseType.rrw_alter, "synonym", " ", " ", " ", " ", " ");
2761    addnetezzacmds(ESqlStatementType.sstnetezzaAlterTable, TBaseType.rrw_alter, "table", " ", " ", " ", " ", " ");
2762    addnetezzacmds(ESqlStatementType.sstnetezzaAlterUser, TBaseType.rrw_alter, "user", " ", " ", " ", " ", " ");
2763    addnetezzacmds(ESqlStatementType.sstnetezzaAlterView, TBaseType.rrw_alter, "view", " ", " ", " ", " ", " ");
2764    addnetezzacmds(ESqlStatementType.sstnetezzaAlterView, TBaseType.rrw_alter, "views", " ", " ", " ", " ", " ");
2765    addnetezzacmds(ESqlStatementType.sstnetezzaBegin, TBaseType.rrw_begin, " ", " ", " ", " ", " ", " ");
2766    addnetezzacmds(ESqlStatementType.sstcall, TBaseType.rrw_call, " ", " ", " ", " ", " ", " ");
2767    addnetezzacmds(ESqlStatementType.sstnetezzaComment, TBaseType.rrw_comment, " ", " ", " ", " ", " ", " ");
2768    addnetezzacmds(ESqlStatementType.sstnetezzaCommit, TBaseType.rrw_commit, " ", " ", " ", " ", " ", " ");
2769    addnetezzacmds(ESqlStatementType.sstnetezzaCopy, TBaseType.rrw_netezza_copy, " ", " ", " ", " ", " ", " ");
2770    addnetezzacmds(ESqlStatementType.sstcreatedatabase, TBaseType.rrw_create, "database", " ", " ", " ", " ", " ");
2771    addnetezzacmds(ESqlStatementType.sstnetezzaCreateExternalTable, TBaseType.rrw_create, "external", "table", " ", " ", " ", " ");
2772    addnetezzacmds(ESqlStatementType.sstnetezzaCreateGruop, TBaseType.rrw_create, "group", " ", " ", " ", " ", " ");
2773    addnetezzacmds(ESqlStatementType.sstnetezzaCreateHistoryConfiguration, TBaseType.rrw_create, "history", "configuration", " ", " ", " ", " ");
2774    addnetezzacmds(ESqlStatementType.sstcreatematerializedview, TBaseType.rrw_create, "materialized", "view", " ", " ", " ", " ");
2775    addnetezzacmds(ESqlStatementType.sstcreatematerializedview, TBaseType.rrw_create, "or", "replace", "materialized", "view", " ", " ");
2776    addnetezzacmds(ESqlStatementType.sstcreateprocedure, TBaseType.rrw_create, "or", "replace", "procedure", " ", " ", " ");
2777    addnetezzacmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create, "or", "replace", "view", " ", " ", " ");
2778    addnetezzacmds(ESqlStatementType.sstcreateprocedure, TBaseType.rrw_create, "procedure", " ", " ", " ", " ", " ");
2779    addnetezzacmds(ESqlStatementType.sstcreatesequence, TBaseType.rrw_create, "sequence", " ", " ", " ", " ", " ");
2780    addnetezzacmds(ESqlStatementType.sstcreatesynonym, TBaseType.rrw_create, "synonym", " ", " ", " ", " ", " ");
2781    addnetezzacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "table", " ", " ", " ", " ", " ");
2782    addnetezzacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "temp", "table", " ", " ", " ", " ");
2783    addnetezzacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "temporary", "table", " ", " ", " ", " ");
2784    addnetezzacmds(ESqlStatementType.sstnetezzaCreateUser, TBaseType.rrw_create, "user", " ", " ", " ", " ", " ");
2785    addnetezzacmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create, "view", " ", " ", " ", " ", " ");
2786//    addnetezzacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "volatile", "table", " ", " ", " ", " ");
2787    addnetezzacmds(ESqlStatementType.sstdelete, TBaseType.rrw_delete , " ", " ", " ", " ", " ", " ");
2788    addnetezzacmds(ESqlStatementType.sstnetezzaDropConnection, TBaseType.rrw_drop, "connection", " ", " ", " ", " ", " ");
2789    addnetezzacmds(ESqlStatementType.sstdropdatabase, TBaseType.rrw_drop, "database", " ", " ", " ", " ", " ");
2790    addnetezzacmds(ESqlStatementType.sstnetezzaDropGroup, TBaseType.rrw_drop, "group", " ", " ", " ", " ", " ");
2791    addnetezzacmds(ESqlStatementType.sstnetezzaDropHistoryConfiguration, TBaseType.rrw_drop, "history", "configuration", " ", " ", " ", " ");
2792    addnetezzacmds(ESqlStatementType.sstdropprocedure, TBaseType.rrw_drop, "procedure", " ", " ", " ", " ", " ");
2793    addnetezzacmds(ESqlStatementType.sstnetezzaDropSchema, TBaseType.rrw_drop, "schema", " ", " ", " ", " ", " ");
2794    addnetezzacmds(ESqlStatementType.sstnetezzaDropSequence, TBaseType.rrw_drop, "sequence", " ", " ", " ", " ", " ");
2795    addnetezzacmds(ESqlStatementType.sstnetezzaDropSession, TBaseType.rrw_drop, "session", " ", " ", " ", " ", " ");
2796    addnetezzacmds(ESqlStatementType.sstdropsynonym, TBaseType.rrw_drop, "synonym", " ", " ", " ", " ", " ");
2797    addnetezzacmds(ESqlStatementType.sstnetezzaDropTable, TBaseType.rrw_drop, "table", " ", " ", " ", " ", " ");
2798    addnetezzacmds(ESqlStatementType.sstnetezzaDropUser, TBaseType.rrw_drop, "user", " ", " ", " ", " ", " ");
2799    addnetezzacmds(ESqlStatementType.sstnetezzaDropView, TBaseType.rrw_drop, "view", " ", " ", " ", " ", " ");
2800    addnetezzacmds(ESqlStatementType.sstexecutestmt, TBaseType.rrw_exec, " ", " ", " ", " ", " ", " ");
2801    addnetezzacmds(ESqlStatementType.sstexecutestmt, TBaseType.rrw_execute, " ", " ", " ", " ", " ", " ");
2802    addnetezzacmds(ESqlStatementType.sstExplain, TBaseType.rrw_explain, " ", " ", " ", " ", " ", " ");
2803    addnetezzacmds(ESqlStatementType.sstnetezzaGenerateStatistics, TBaseType.rrw_netezza_generate, "express", "statistics", " ", " ", " ", " ");
2804    addnetezzacmds(ESqlStatementType.sstnetezzaGenerateStatistics, TBaseType.rrw_netezza_generate, "statistics", " ", " ", " ", " ", " ");
2805    addnetezzacmds(ESqlStatementType.sstnetezzaGrant, TBaseType.rrw_grant, " ", " ", " ", " ", " ", " ");
2806    addnetezzacmds(ESqlStatementType.sstnetezzaGroomTable, TBaseType.rrw_netezza_groom, "table", " ", " ", " ", " ", " ");
2807    addnetezzacmds(ESqlStatementType.sstlocktable, TBaseType.rrw_lock, "table", " ", " ", " ", " ", " ");
2808    addnetezzacmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert, " ", " ", " ", " ", " ", " ");
2809    addnetezzacmds(ESqlStatementType.sstmerge, TBaseType.rrw_merge, " ", " ", " ", " ", " ", " ");
2810    addnetezzacmds(ESqlStatementType.sstnetezzaReset, TBaseType.rrw_reset, " ", " ", " ", " ", " ", " ");
2811    addnetezzacmds(ESqlStatementType.sstnetezzaRevoke, TBaseType.rrw_revoke, " ", " ", " ", " ", " ", " ");
2812    addnetezzacmds(ESqlStatementType.sstnetezzaRollback, TBaseType.rrw_rollback, " ", " ", " ", " ", " ", " ");
2813    addnetezzacmds(ESqlStatementType.sstselect, TBaseType.rrw_select, " ", " ", " ", " ", " ", " ");
2814    addnetezzacmds(ESqlStatementType.sstnetezzaSet, TBaseType.rrw_set, " ", " ", " ", " ", " ", " ");
2815    addnetezzacmds(ESqlStatementType.sstSetCatalog, TBaseType.rrw_set, "catalog", " ", " ", " ", " ", " ");
2816    addnetezzacmds(ESqlStatementType.sstSetSchema, TBaseType.rrw_set, "schema", " ", " ", " ", " ", " ");
2817    addnetezzacmds(ESqlStatementType.sstnetezzaShow, TBaseType.rrw_show, " ", " ", " ", " ", " ", " ");
2818    addnetezzacmds(ESqlStatementType.sstTruncate, TBaseType.rrw_truncate, " ", " ", " ", " ", " ", " ");
2819    addnetezzacmds(ESqlStatementType.sstupdate, TBaseType.rrw_update, " ", " ", " ", " ", " ", " ");
2820}
2821    void initgaussdbcmds(){
2822// cmd must be sorted alphabetically
2823        addgaussdbcmds(ESqlStatementType.sstpostgresqlabort, TBaseType.rrw_abort, " ", " ", " ", " ", " ", " ");
2824        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterAggregate, TBaseType.rrw_alter, "aggregate", " ", " ", " ", " ", " ");
2825        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterCollation, TBaseType.rrw_alter, "collation", " ", " ", " ", " ", " ");
2826        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterConversion, TBaseType.rrw_alter, "conversion", " ", " ", " ", " ", " ");
2827        addgaussdbcmds(ESqlStatementType.sstpostgresqlalterdatabase, TBaseType.rrw_alter, "database", " ", " ", " ", " ", " ");
2828        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterDefaultPrivileges, TBaseType.rrw_alter, "default", "privileges", " ", " ", " ", " ");
2829        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterDomain, TBaseType.rrw_alter, "domain", " ", " ", " ", " ", " ");
2830        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterEventTrigger, TBaseType.rrw_alter, "event", "trigger", " ", " ", " ", " ");
2831        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterExtension, TBaseType.rrw_alter, "extension", " ", " ", " ", " ", " ");
2832        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterForeignDataWrapper, TBaseType.rrw_alter, "foreign", "data", "wrapper", " ", " ", " ");
2833        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterForeignTable, TBaseType.rrw_alter, "foreign", "Table", " ", " ", " ", " ");
2834
2835        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterfunction, TBaseType.rrw_alter, "function", " ", " ", " ", " ", " ");
2836        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterGroup, TBaseType.rrw_alter, "group", " ", " ", " ", " ", " ");
2837        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterIndex, TBaseType.rrw_alter, "index", " ", " ", " ", " ", " ");
2838        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterLanguage, TBaseType.rrw_alter, "language", " ", " ", " ", " ", " ");
2839        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterLargeObject, TBaseType.rrw_alter, "large", "object", " ", " ", " ", " ");
2840        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterMaterializedView, TBaseType.rrw_alter, "materialized", "view", " ", " ", " ", " ");
2841        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterOperator, TBaseType.rrw_alter, "operator", " ", " ", " ", " ", " ");
2842        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterOperatorClass, TBaseType.rrw_alter, "operator", "class", " ", " ", " ", " ");
2843        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterOperatorFamily, TBaseType.rrw_alter, "operator", "family", " ", " ", " ", " ");
2844        addgaussdbcmds(ESqlStatementType.sstAlterPackage, TBaseType.rrw_alter, "package", " ", " ", " ", " ", " ");
2845        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterPolicy, TBaseType.rrw_alter, "policy", " ", " ", " ", " ", " ");
2846        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterLanguage, TBaseType.rrw_alter, "procedural", "language", " ", " ", " ", " ");
2847        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterProcedure, TBaseType.rrw_alter, "procedure", " ", " ", " ", " ", " ");
2848        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterPublication, TBaseType.rrw_alter, "publication", " ", " ", " ", " ", " ");
2849        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterRole, TBaseType.rrw_alter, "role", " ", " ", " ", " ", " ");
2850        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterRoutine, TBaseType.rrw_alter, "routine", " ", " ", " ", " ", " ");
2851        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterRule, TBaseType.rrw_alter, "rule", " ", " ", " ", " ", " ");
2852        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterSchema, TBaseType.rrw_alter, "schema", " ", " ", " ", " ", " ");
2853        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterSequence, TBaseType.rrw_alter, "sequence", " ", " ", " ", " ", " ");
2854        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterServer, TBaseType.rrw_alter, "server", " ", " ", " ", " ", " ");
2855        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterStatistics, TBaseType.rrw_alter, "statistics", " ", " ", " ", " ", " ");
2856        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterSubscription, TBaseType.rrw_alter, "subscription", " ", " ", " ", " ", " ");
2857        addgaussdbcmds(ESqlStatementType.sstAlterSynonym, TBaseType.rrw_alter, "synonym", " ", " ", " ", " ", " ");
2858        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterSystem, TBaseType.rrw_alter, "system", " ", " ", " ", " ", " ");
2859
2860        addgaussdbcmds(ESqlStatementType.sstaltertable, TBaseType.rrw_alter, "table", " ", " ", " ", " ", " ");
2861        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterTablespace, TBaseType.rrw_alter, "tablespace", " ", " ", " ", " ", " ");
2862
2863        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterTextSearchConfiguration, TBaseType.rrw_alter, "text", "search", "configuration", " ", " ", " ");
2864        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterTextSearchDictionary, TBaseType.rrw_alter, "text", "search", "dictionary", " ", " ", " ");
2865        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterTextSearchParser, TBaseType.rrw_alter, "text", "search", "parser", " ", " ", " ");
2866        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterTextSearchTemplate, TBaseType.rrw_alter, "text", "search", "template", " ", " ", " ");
2867        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterTrigger, TBaseType.rrw_alter, "trigger", " ", " ", " ", " ", " ");
2868        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterType, TBaseType.rrw_alter, "type", " ", " ", " ", " ", " ");
2869        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterUser, TBaseType.rrw_alter, "user", " ", " ", " ", " ", " ");
2870        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterUserMapping, TBaseType.rrw_alter, "user", "mapping", " ", " ", " ", " ");
2871        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterView, TBaseType.rrw_alter, "view", " ", " ", " ", " ", " ");
2872        addgaussdbcmds(ESqlStatementType.sstpostgresqlAnalyze, TBaseType.rrw_analyze, " ", " ", " ", " ", " ", " ");
2873
2874        // begin is recognized in isgaussdb() method.
2875      //  addgaussdbcmds(ESqlStatementType.sstpostgresqlBegin, TBaseType.rrw_begin, " ", " ", " ", " ", " ", " ");
2876
2877        addgaussdbcmds(ESqlStatementType.sstcall, TBaseType.rrw_call, " ", " ", " ", " ", " ", " ");
2878
2879        addgaussdbcmds(ESqlStatementType.sstpostgresqlCheckpoint, TBaseType.rrw_checkpoint, " ", " ", " ", " ", " ", " ");
2880        addgaussdbcmds(ESqlStatementType.sstpostgresqlClose, TBaseType.rrw_close, " ", " ", " ", " ", " ", " ");
2881
2882        addgaussdbcmds(ESqlStatementType.sstpostgresqlCluster, TBaseType.rrw_postgresql_cluster, " ", " ", " ", " ", " ", " ");
2883
2884        addgaussdbcmds(ESqlStatementType.sstpostgresqlComment, TBaseType.rrw_comment, " ", " ", " ", " ", " ", " ");
2885
2886        addgaussdbcmds(ESqlStatementType.sstpostgresqlCommit, TBaseType.rrw_commit, " ", " ", " ", " ", " ", " ");
2887        addgaussdbcmds(ESqlStatementType.sstpostgresqlCommitPrepared, TBaseType.rrw_commit, "prepared", " ", " ", " ", " ", " ");
2888        addgaussdbcmds(ESqlStatementType.sstpostgresqlCopy, TBaseType.rrw_postgresql_copy, " ", " ", " ", " ", " ", " ");
2889
2890        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateAccessMethod, TBaseType.rrw_create, "access", "method", " ", " ", " ", " ");
2891        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateAggregate, TBaseType.rrw_create, "aggregate", " ", " ", " ", " ", " ");
2892        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateAssertion, TBaseType.rrw_create, "assertion", " ", " ", " ", " ", " ");
2893        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateCast, TBaseType.rrw_create, "cast", " ", " ", " ", " ", " ");
2894        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateCollation, TBaseType.rrw_create, "collation", " ", " ", " ", " ", " ");
2895
2896        addgaussdbcmds(ESqlStatementType.sstcreatetrigger, TBaseType.rrw_create, "constraint", "trigger", " ", " ", " ", " ");
2897
2898        addgaussdbcmds(ESqlStatementType.sstpostgresqlConversion, TBaseType.rrw_create, "conversion", " ", " ", " ", " ", " ");
2899        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateDatabase, TBaseType.rrw_create, "database", " ", " ", " ", " ", " ");
2900        addgaussdbcmds(ESqlStatementType.sstpostgresqlConversion, TBaseType.rrw_create, "default", "conversion", " ", " ", " ", " ");
2901        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateDomain, TBaseType.rrw_create, "domain", " ", " ", " ", " ", " ");
2902        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateEventTrigger, TBaseType.rrw_create, "event", "trigger", " ", " ", " ", " ");
2903        addgaussdbcmds(ESqlStatementType.sstcreateExtension, TBaseType.rrw_create, "extension", " ", " ", " ", " ", " ");
2904
2905        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateForeignDataWrapper, TBaseType.rrw_create, "foreign", "data", "wrapper", " ", " ", " ");
2906        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateForeignTable, TBaseType.rrw_create, "foreign", "table", " ", " ", " ", " ");
2907        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateFunction, TBaseType.rrw_create, "function", " ", " ", " ", " ", " ");
2908
2909        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateIndex, TBaseType.rrw_create, "global", "index", " ", " ", " ", " ");
2910
2911        addgaussdbcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "global", "temp", "table", " ", " ", " ");
2912        addgaussdbcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "global", "temporary", "table", " ", " ", " ");
2913        addgaussdbcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "global", "unlocked", "table", " ", " ", " ");
2914        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateIndex, TBaseType.rrw_create, "global", "unique", "index", " ", " ", " ");
2915
2916        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateGroup, TBaseType.rrw_create, "group", " ", " ", " ", " ", " ");
2917
2918        addgaussdbcmds(ESqlStatementType.sstcreatematerializedview, TBaseType.rrw_create, "incremental", "materialized", "view", " ", " ", " ");
2919
2920        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateIndex, TBaseType.rrw_create, "index", " ", " ", " ", " ", " ");
2921        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateLanguage, TBaseType.rrw_create, "language", " ", " ", " ", " ", " ");
2922
2923        addgaussdbcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "local", "temp", "table", " ", " ", " ");
2924        addgaussdbcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "local", "temporary", "table", " ", " ", " ");
2925        addgaussdbcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "local", "unlocked", "table", " ", " ", " ");
2926
2927        addgaussdbcmds(ESqlStatementType.sstcreatematerializedview, TBaseType.rrw_create, "materialized", "view", " ", " ", " ", " ");
2928
2929        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateOperator, TBaseType.rrw_create, "operator", " ", " ", " ", " ", " ");
2930        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateOperatorClass, TBaseType.rrw_create, "operator", "class", " ", " ", " ", " ");
2931        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateOperatorFimaly, TBaseType.rrw_create, "operator", "family", " ", " ", " ", " ");
2932
2933        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateFunction, TBaseType.rrw_create, "or", "replace", "function", " ", " ", " ");
2934        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateLanguage, TBaseType.rrw_create, "or", "replace", "language", " ", " ", " ");
2935
2936        addgaussdbcmds(ESqlStatementType.sstplsql_createpackage, TBaseType.rrw_create,"or","replace","package"," "," "," ");
2937        addgaussdbcmds(ESqlStatementType.sstoraclecreatepackagebody, TBaseType.rrw_create,"or","replace","package","body"," "," ");
2938
2939
2940        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateLanguage, TBaseType.rrw_create, "or", "replace", "procedural", "language", " ", " ");
2941        addgaussdbcmds(ESqlStatementType.sstcreateprocedure, TBaseType.rrw_create, "or", "replace", "procedure", " ", " ", " ");
2942        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateRole, TBaseType.rrw_create, "or", "replace", "role ", " ", " ", " ");
2943        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateRule, TBaseType.rrw_create, "or", "replace", "rule ", " ", " ", " ");
2944        addgaussdbcmds(ESqlStatementType.sstcreatesynonym, TBaseType.rrw_create,"or","replace","synonym"," "," "," ");
2945
2946        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateView, TBaseType.rrw_create, "or", "replace", "temp", "view", " ", " ");
2947        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateView, TBaseType.rrw_create, "or", "replace", "temporary", "view", " ", " ");
2948        addgaussdbcmds(ESqlStatementType.sstcreatetrigger, TBaseType.rrw_create, "or", "replace", "trigger", " ", " ", " ");
2949        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateLanguage, TBaseType.rrw_create, "or", "replace", "trusted", "language", " ", " ");
2950        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateLanguage, TBaseType.rrw_create, "or", "replace", "trusted", "procedural", "language", " ");
2951        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateView, TBaseType.rrw_create, "or", "replace", "view", " ", " ", " ");
2952
2953        addgaussdbcmds(ESqlStatementType.sstplsql_createpackage, TBaseType.rrw_create,"package"," "," "," "," "," ");
2954        addgaussdbcmds(ESqlStatementType.sstoraclecreatepackagebody, TBaseType.rrw_create,"package","body"," "," "," "," ");
2955
2956        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreatePolicy, TBaseType.rrw_create, "policy", " ", " ", " ", " ", " ");
2957        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateLanguage, TBaseType.rrw_create, "procedural", "language", " ", " ", " ", " ");
2958        addgaussdbcmds(ESqlStatementType.sstcreateprocedure, TBaseType.rrw_create, "procedure", " ", " ", " ", " ", " ");
2959        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreatePublication, TBaseType.rrw_create, "publication", " ", " ", " ", " ", " ");
2960
2961        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateRole, TBaseType.rrw_create, "role", " ", " ", " ", " ", " ");
2962        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateRule, TBaseType.rrw_create, "rule", " ", " ", " ", " ", " ");
2963
2964
2965        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateSchema, TBaseType.rrw_create, "schema", " ", " ", " ", " ", " ");
2966
2967        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateSequence, TBaseType.rrw_create, "sequence", " ", " ", " ", " ", " ");
2968
2969
2970        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateServer, TBaseType.rrw_create, "server", " ", " ", " ", " ", " ");
2971        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateStatistics, TBaseType.rrw_create, "statistics", " ", " ", " ", " ", " ");
2972        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateSubscription, TBaseType.rrw_create, "subscription", " ", " ", " ", " ", " ");
2973        addgaussdbcmds(ESqlStatementType.sstcreatesynonym, TBaseType.rrw_create,"synonym"," "," "," "," "," ");
2974
2975        addgaussdbcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "table", " ", " ", " ", " ", " ");
2976
2977        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateTablespace, TBaseType.rrw_create, "tablespace", " ", " ", " ", " ", " ");
2978
2979        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateSequence, TBaseType.rrw_create, "temp", "sequence", " ", " ", " ", " ");
2980        addgaussdbcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "temp", "table", " ", " ", " ", " ");
2981        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateView, TBaseType.rrw_create, "temp", "view", " ", " ", " ", " ");
2982        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateSequence, TBaseType.rrw_create, "temporary", "sequence", " ", " ", " ", " ");
2983        addgaussdbcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "temporary", "table", " ", " ", " ", " ");
2984        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateView, TBaseType.rrw_create, "temporary", "view", " ", " ", " ", " ");
2985
2986        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateTextSearchConfiguration, TBaseType.rrw_create, "text", "search", "configuration", " ", " ", " ");
2987        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateTextSearchDictionary, TBaseType.rrw_create, "text", "search", "dictionary", " ", " ", " ");
2988        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateTextSearchParser, TBaseType.rrw_create, "text", "search", "parser", " ", " ", " ");
2989        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateTextSearchTemplate, TBaseType.rrw_create, "text", "search", "template", " ", " ", " ");
2990
2991        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateTransform, TBaseType.rrw_create, "transform", " ", " ", " ", " ", " ");
2992        addgaussdbcmds(ESqlStatementType.sstcreatetrigger, TBaseType.rrw_create, "trigger", " ", " ", " ", " ", " ");
2993
2994        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateLanguage, TBaseType.rrw_create, "trusted", "language", " ", " ", " ", " ");
2995        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateLanguage, TBaseType.rrw_create, "trusted", "procedural", "language", " ", " ", " ");
2996
2997        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateType, TBaseType.rrw_create, "type", " ", " ", " ", " ", " ");
2998
2999        addgaussdbcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "unlocked", "table", " ", " ", " ", " ");
3000        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateSequence, TBaseType.rrw_create, "unlogged", "sequence", " ", " ", " ", " ");
3001        addgaussdbcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "unlogged", "table", " ", " ", " ", " ");
3002
3003        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateUser, TBaseType.rrw_create, "user", " ", " ", " ", " ", " ");
3004
3005        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateUserMapping, TBaseType.rrw_create, "user", "mapping", " ", " ", " ", " ");
3006
3007        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateView, TBaseType.rrw_create, "view", " ", " ", " ", " ", " ");
3008
3009        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateIndex, TBaseType.rrw_create, "unique", "index", " ", " ", " ", " ");
3010
3011
3012        addgaussdbcmds(ESqlStatementType.sstpostgresqlDeallocate, TBaseType.rrw_deallocate, " ", " ", " ", " ", " ", " ");
3013
3014        addgaussdbcmds(ESqlStatementType.sstpostgresqlDeclare, TBaseType.rrw_declare, " ", " ", " ", " ", " ", " ");
3015
3016        addgaussdbcmds(ESqlStatementType.sstdelete, TBaseType.rrw_delete, " ", " ", " ", " ", " ", " ");
3017
3018        addgaussdbcmds(ESqlStatementType.sstpostgresqlDiscard, TBaseType.rrw_postgresql_discard, " ", " ", " ", " ", " ", " ");
3019
3020        addgaussdbcmds(ESqlStatementType.sstpostgresqlDo, TBaseType.rrw_do, " ", " ", " ", " ", " ", " ");
3021
3022        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropAccessMethod, TBaseType.rrw_drop, "access", "method", " ", " ", " ", " ");
3023        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropAggregate, TBaseType.rrw_drop, "aggregate", " ", " ", " ", " ", " ");
3024        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropAssertion, TBaseType.rrw_drop, "assertion", " ", " ", " ", " ", " ");
3025
3026        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropCast, TBaseType.rrw_drop, "cast", " ", " ", " ", " ", " ");
3027
3028        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropCollation, TBaseType.rrw_drop, "collation", " ", " ", " ", " ", " ");
3029
3030        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropConversion, TBaseType.rrw_drop, "conversion", " ", " ", " ", " ", " ");
3031
3032        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropDatabase, TBaseType.rrw_drop, "database", " ", " ", " ", " ", " ");
3033
3034        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropDomain, TBaseType.rrw_drop, "domain", " ", " ", " ", " ", " ");
3035        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropEventTrigger, TBaseType.rrw_drop, "event", "trigger", " ", " ", " ", " ");
3036        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropExtension, TBaseType.rrw_drop, "extension", " ", " ", " ", " ", " ");
3037
3038        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropForeignDataWrapper, TBaseType.rrw_drop, "foreign", "data", "wrapper", " ", " ", " ");
3039
3040        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropForeignTable, TBaseType.rrw_drop, "foreign", "table", " ", " ", " ", " ");
3041
3042        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropFunction, TBaseType.rrw_drop, "function", " ", " ", " ", " ", " ");
3043
3044        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropGroup, TBaseType.rrw_drop, "group", " ", " ", " ", " ", " ");
3045
3046        addgaussdbcmds(ESqlStatementType.sstdropindex, TBaseType.rrw_drop, "index", " ", " ", " ", " ", " ");
3047
3048        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropLanguage, TBaseType.rrw_drop, "language", " ", " ", " ", " ", " ");
3049
3050        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropMaterializedView, TBaseType.rrw_drop, "materialized", "view", " ", " ", " ", " ");
3051
3052        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropOperator, TBaseType.rrw_drop, "operator", " ", " ", " ", " ", " ");
3053        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropOperatorClass, TBaseType.rrw_drop, "operator", "class", " ", " ", " ", " ");
3054        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropOperatorFamily, TBaseType.rrw_drop, "operator", "family ", " ", " ", " ", " ");
3055
3056        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropOwned, TBaseType.rrw_drop, "owned", " ", " ", " ", " ", " ");
3057        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropPolicy, TBaseType.rrw_drop, "policy", " ", " ", " ", " ", " ");
3058        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropLanguage, TBaseType.rrw_drop, "procedural", "language", " ", " ", " ", " ");
3059        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropProcedure, TBaseType.rrw_drop, "procedure", " ", " ", " ", " ", " ");
3060        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropPublication, TBaseType.rrw_drop, "publication", " ", " ", " ", " ", " ");
3061
3062        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropRole, TBaseType.rrw_drop, "role", " ", " ", " ", " ", " ");
3063        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropRoutine, TBaseType.rrw_drop, "routine", " ", " ", " ", " ", " ");
3064        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropRule, TBaseType.rrw_drop, "rule", " ", " ", " ", " ", " ");
3065        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropSchema, TBaseType.rrw_drop, "schema", " ", " ", " ", " ", " ");
3066        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropSequence, TBaseType.rrw_drop, "sequence", " ", " ", " ", " ", " ");
3067        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropServer, TBaseType.rrw_drop, "server", " ", " ", " ", " ", " ");
3068        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropStatistics, TBaseType.rrw_drop, "statistics", " ", " ", " ", " ", " ");
3069        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropSubscription, TBaseType.rrw_drop, "subscription", " ", " ", " ", " ", " ");
3070        addgaussdbcmds(ESqlStatementType.sstdropsynonym, TBaseType.rrw_drop,"synonym"," "," "," "," "," ");
3071        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropTable, TBaseType.rrw_drop, "table", " ", " ", " ", " ", " ");
3072        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropTablespace, TBaseType.rrw_drop, "tablespace", " ", " ", " ", " ", " ");
3073
3074        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropTextSearchConfiguration, TBaseType.rrw_drop, "text", "search", "configuration", " ", " ", " ");
3075        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropTextSearchDictionary, TBaseType.rrw_drop, "text", "search", "dictionary", " ", " ", " ");
3076        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropTextSearchParser, TBaseType.rrw_drop, "text", "search", "parser", " ", " ", " ");
3077        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropTextSearchTemplate, TBaseType.rrw_drop, "text", "search", "template", " ", " ", " ");
3078        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropTransform, TBaseType.rrw_drop, "transform", " ", " ", " ", " ", " ");
3079        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropTrigger, TBaseType.rrw_drop, "trigger", " ", " ", " ", " ", " ");
3080        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropType, TBaseType.rrw_drop, "type", " ", " ", " ", " ", " ");
3081        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropUser, TBaseType.rrw_drop, "user", " ", " ", " ", " ", " ");
3082        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropUserMapping, TBaseType.rrw_drop, "user", "mapping", " ", " ", " ", " ");
3083        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropView, TBaseType.rrw_drop, "view", " ", " ", " ", " ", " ");
3084
3085        addgaussdbcmds(ESqlStatementType.sstpostgresqlEnd, TBaseType.rrw_end, " ", " ", " ", " ", " ", " ");
3086
3087        addgaussdbcmds(ESqlStatementType.sstpostgresqlExecute, TBaseType.rrw_execute, " ", " ", " ", " ", " ", " ");
3088
3089        addgaussdbcmds(ESqlStatementType.sstpostgresqlExplain, TBaseType.rrw_explain, " ", " ", " ", " ", " ", " ");
3090
3091        addgaussdbcmds(ESqlStatementType.sstFetchFrom, TBaseType.rrw_fetch, " ", " ", " ", " ", " ", " ");
3092
3093        addgaussdbcmds(ESqlStatementType.sstpostgresqlGrant, TBaseType.rrw_grant, " ", " ", " ", " ", " ", " ");
3094        addgaussdbcmds(ESqlStatementType.sstPostgresqlImport, TBaseType.rrw_postgresql_import, "foreign", "schema", " ", " ", " ", " ");
3095        addgaussdbcmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert, " ", " ", " ", " ", " ", " ");
3096
3097        addgaussdbcmds(ESqlStatementType.sstpostgresqlListen, TBaseType.rrw_postgresql_listen, " ", " ", " ", " ", " ", " ");
3098
3099        addgaussdbcmds(ESqlStatementType.sstpostgresqlLoad, TBaseType.rrw_load, " ", " ", " ", " ", " ", " ");
3100
3101        addgaussdbcmds(ESqlStatementType.sstpostgresqlLock, TBaseType.rrw_lock, " ", " ", " ", " ", " ", " ");
3102        addgaussdbcmds(ESqlStatementType.sstmerge, TBaseType.rrw_merge," "," "," "," "," "," ");
3103
3104        addgaussdbcmds(ESqlStatementType.sstpostgresqlMove, TBaseType.rrw_move, " ", " ", " ", " ", " ", " ");
3105
3106        addgaussdbcmds(ESqlStatementType.sstpostgresqlNotify, TBaseType.rrw_postgresql_notify, " ", " ", " ", " ", " ", " ");
3107
3108        addgaussdbcmds(ESqlStatementType.sstPostgresqlBlock, TBaseType.rrw_plpgsql_function_delimiter, " ", " ", " ", " ", " ", " ");
3109
3110
3111        addgaussdbcmds(ESqlStatementType.sstpostgresqlPrepare, TBaseType.rrw_prepare, " ", " ", " ", " ", " ", " ");
3112
3113        addgaussdbcmds(ESqlStatementType.sstpostgresqlPrepareTransaction, TBaseType.rrw_prepare, "transaction", " ", " ", " ", " ", " ");
3114
3115        addgaussdbcmds(ESqlStatementType.sstpostgresqlReassignOwned, TBaseType.rrw_postgresql_reassign, "owned", " ", " ", " ", " ", " ");
3116
3117        addgaussdbcmds(ESqlStatementType.sstpostgresqlRefreshMaterializedView, TBaseType.rrw_refresh, "incremental","materialized", "view",  " ", " ", " ");
3118        addgaussdbcmds(ESqlStatementType.sstpostgresqlRefreshMaterializedView, TBaseType.rrw_refresh, "materialized", "view", " ", " ", " ", " ");
3119
3120        addgaussdbcmds(ESqlStatementType.sstReindex, TBaseType.rrw_postgresql_reindex, " ", " ", " ", " ", " ", " ");
3121
3122        addgaussdbcmds(ESqlStatementType.sstpostgresqlReleaseSavepoint, TBaseType.rrw_release, " ", " ", " ", " ", " ", " ");
3123        addgaussdbcmds(ESqlStatementType.sstpostgresqlReleaseSavepoint, TBaseType.rrw_release, "savepoint", " ", " ", " ", " ", " ");
3124
3125        addgaussdbcmds(ESqlStatementType.sstpostgresqlReset, TBaseType.rrw_reset, " ", " ", " ", " ", " ", " ");
3126
3127        addgaussdbcmds(ESqlStatementType.sstpostgresqlRevoke, TBaseType.rrw_revoke, " ", " ", " ", " ", " ", " ");
3128
3129        addgaussdbcmds(ESqlStatementType.sstpostgresqlRollback, TBaseType.rrw_rollback, " ", " ", " ", " ", " ", " ");
3130        addgaussdbcmds(ESqlStatementType.sstpostgresqlRollbackPrepared, TBaseType.rrw_rollback, "prepared", " ", " ", " ", " ", " ");
3131        addgaussdbcmds(ESqlStatementType.sstpostgresqlRollbackToSavepoint, TBaseType.rrw_rollback, "to", "savepoint", " ", " ", " ", " ");
3132        addgaussdbcmds(ESqlStatementType.sstsavepoint, TBaseType.rrw_savepoint, " ", " ", " ", " ", " ", " ");
3133
3134        addgaussdbcmds(ESqlStatementType.sstpostgresqlSecurityLabel, TBaseType.rrw_postgresql_security, "label", " ", " ", " ", " ", " ");
3135
3136
3137        addgaussdbcmds(ESqlStatementType.sstselect, TBaseType.rrw_select, " ", " ", " ", " ", " ", " ");
3138
3139        addgaussdbcmds(ESqlStatementType.sstpostgresqlSet, TBaseType.rrw_set, " ", " ", " ", " ", " ", " ");
3140
3141        addgaussdbcmds(ESqlStatementType.sstpostgresqlSetConstraints, TBaseType.rrw_set, "constraints", " ", " ", " ", " ", " ");
3142        addgaussdbcmds(ESqlStatementType.sstpostgresqlSetRole, TBaseType.rrw_set, "local", "role", " ", " ", " ", " ");
3143        addgaussdbcmds(ESqlStatementType.sstpostgresqlSetSessionAuthorization, TBaseType.rrw_set, "local", "session", "authorization", " ", " ", " ");
3144        addgaussdbcmds(ESqlStatementType.sstpostgresqlSetRole, TBaseType.rrw_set, "role", " ", " ", " ", " ", " ");
3145        addgaussdbcmds(ESqlStatementType.sstpostgresqlSetSearchPath, TBaseType.rrw_set, "search_path", " ", " ", " ", " ", " ");
3146        addgaussdbcmds(ESqlStatementType.sstpostgresqlSetSessionAuthorization, TBaseType.rrw_set, "session", "authorization", " ", " ", " ", " ");
3147        addgaussdbcmds(ESqlStatementType.sstpostgresqlSetTransaction, TBaseType.rrw_set, "session", "characteristics", "as", "transaction", " ", " ");
3148        addgaussdbcmds(ESqlStatementType.sstpostgresqlSetRole, TBaseType.rrw_set, "session", "role", " ", " ", " ", " ");
3149        addgaussdbcmds(ESqlStatementType.sstpostgresqlSetSessionAuthorization, TBaseType.rrw_set, "session", "session", "authorization", " ", " ", " ");
3150
3151        addgaussdbcmds(ESqlStatementType.sstpostgresqlSetTransaction, TBaseType.rrw_set, "transaction", " ", " ", " ", " ", " ");
3152        addgaussdbcmds(ESqlStatementType.sstpostgresqlShow, TBaseType.rrw_show, " ", " ", " ", " ", " ", " ");
3153        addgaussdbcmds(ESqlStatementType.sstpostgresqlShowSearchPath, TBaseType.rrw_show, "search_path", " ", " ", " ", " ", " ");
3154        // addgaussdbcmds(ESqlStatementType.sstpostgresqlStartTransaction, TBaseType.rrw_start, "transaction", " ", " ", " ", " ", " ");
3155        addgaussdbcmds(ESqlStatementType.sstPostgresqlTable, TBaseType.rrw_table, " ", " ", " ", " ", " ", " ");
3156        addgaussdbcmds(ESqlStatementType.sstStartTransaction, TBaseType.rrw_start, "transaction", " ", " ", " ", " ", " ");
3157        addgaussdbcmds(ESqlStatementType.sstpostgresqlTruncate, TBaseType.rrw_truncate, " ", " ", " ", " ", " ", " ");
3158
3159        addgaussdbcmds(ESqlStatementType.sstpostgresqlUnlisten, TBaseType.rrw_postgresql_unlisten, " ", " ", " ", " ", " ", " ");
3160
3161        addgaussdbcmds(ESqlStatementType.sstupdate, TBaseType.rrw_update, " ", " ", " ", " ", " ", " ");
3162        addgaussdbcmds(ESqlStatementType.sstVacuum, TBaseType.rrw_postgresql_vacuum, " ", " ", " ", " ", " ", " ");
3163        addgaussdbcmds(ESqlStatementType.sstValues, TBaseType.rrw_values, " ", " ", " ", " ", " ", " ");
3164
3165    }
3166
3167    void initpostgresqlcmds(){
3168// cmd must be sorted alphabetically
3169        addpostgresqlcmds(ESqlStatementType.sstpostgresqlabort, TBaseType.rrw_abort, " ", " ", " ", " ", " ", " ");
3170        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterAggregate, TBaseType.rrw_alter, "aggregate", " ", " ", " ", " ", " ");
3171        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterCollation, TBaseType.rrw_alter, "collation", " ", " ", " ", " ", " ");
3172        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterConversion, TBaseType.rrw_alter, "conversion", " ", " ", " ", " ", " ");
3173        addpostgresqlcmds(ESqlStatementType.sstpostgresqlalterdatabase, TBaseType.rrw_alter, "database", " ", " ", " ", " ", " ");
3174        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterDefaultPrivileges, TBaseType.rrw_alter, "default", "privileges", " ", " ", " ", " ");
3175        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterDomain, TBaseType.rrw_alter, "domain", " ", " ", " ", " ", " ");
3176        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterEventTrigger, TBaseType.rrw_alter, "event", "trigger", " ", " ", " ", " ");
3177        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterExtension, TBaseType.rrw_alter, "extension", " ", " ", " ", " ", " ");
3178        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterForeignDataWrapper, TBaseType.rrw_alter, "foreign", "data", "wrapper", " ", " ", " ");
3179        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterForeignTable, TBaseType.rrw_alter, "foreign", "Table", " ", " ", " ", " ");
3180
3181        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterfunction, TBaseType.rrw_alter, "function", " ", " ", " ", " ", " ");
3182        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterGroup, TBaseType.rrw_alter, "group", " ", " ", " ", " ", " ");
3183        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterIndex, TBaseType.rrw_alter, "index", " ", " ", " ", " ", " ");
3184        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterLanguage, TBaseType.rrw_alter, "language", " ", " ", " ", " ", " ");
3185        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterLargeObject, TBaseType.rrw_alter, "large", "object", " ", " ", " ", " ");
3186        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterMaterializedView, TBaseType.rrw_alter, "materialized", "view", " ", " ", " ", " ");
3187        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterOperator, TBaseType.rrw_alter, "operator", " ", " ", " ", " ", " ");
3188        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterOperatorClass, TBaseType.rrw_alter, "operator", "class", " ", " ", " ", " ");
3189        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterOperatorFamily, TBaseType.rrw_alter, "operator", "family", " ", " ", " ", " ");
3190        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterPolicy, TBaseType.rrw_alter, "policy", " ", " ", " ", " ", " ");
3191        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterLanguage, TBaseType.rrw_alter, "procedural", "language", " ", " ", " ", " ");
3192        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterProcedure, TBaseType.rrw_alter, "procedure", " ", " ", " ", " ", " ");
3193        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterPublication, TBaseType.rrw_alter, "publication", " ", " ", " ", " ", " ");
3194        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterRole, TBaseType.rrw_alter, "role", " ", " ", " ", " ", " ");
3195        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterRoutine, TBaseType.rrw_alter, "routine", " ", " ", " ", " ", " ");
3196        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterRule, TBaseType.rrw_alter, "rule", " ", " ", " ", " ", " ");
3197        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterSchema, TBaseType.rrw_alter, "schema", " ", " ", " ", " ", " ");
3198        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterSequence, TBaseType.rrw_alter, "sequence", " ", " ", " ", " ", " ");
3199        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterServer, TBaseType.rrw_alter, "server", " ", " ", " ", " ", " ");
3200        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterStatistics, TBaseType.rrw_alter, "statistics", " ", " ", " ", " ", " ");
3201        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterSubscription, TBaseType.rrw_alter, "subscription", " ", " ", " ", " ", " ");
3202        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterSystem, TBaseType.rrw_alter, "system", " ", " ", " ", " ", " ");
3203
3204        addpostgresqlcmds(ESqlStatementType.sstaltertable, TBaseType.rrw_alter, "table", " ", " ", " ", " ", " ");
3205        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterTablespace, TBaseType.rrw_alter, "tablespace", " ", " ", " ", " ", " ");
3206
3207        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterTextSearchConfiguration, TBaseType.rrw_alter, "text", "search", "configuration", " ", " ", " ");
3208        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterTextSearchDictionary, TBaseType.rrw_alter, "text", "search", "dictionary", " ", " ", " ");
3209        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterTextSearchParser, TBaseType.rrw_alter, "text", "search", "parser", " ", " ", " ");
3210        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterTextSearchTemplate, TBaseType.rrw_alter, "text", "search", "template", " ", " ", " ");
3211        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterTrigger, TBaseType.rrw_alter, "trigger", " ", " ", " ", " ", " ");
3212        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterType, TBaseType.rrw_alter, "type", " ", " ", " ", " ", " ");
3213        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterUser, TBaseType.rrw_alter, "user", " ", " ", " ", " ", " ");
3214        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterUserMapping, TBaseType.rrw_alter, "user", "mapping", " ", " ", " ", " ");
3215        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterView, TBaseType.rrw_alter, "view", " ", " ", " ", " ", " ");
3216        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAnalyze, TBaseType.rrw_analyze, " ", " ", " ", " ", " ", " ");
3217
3218        addpostgresqlcmds(ESqlStatementType.sstpostgresqlBegin, TBaseType.rrw_begin, " ", " ", " ", " ", " ", " ");
3219
3220        addpostgresqlcmds(ESqlStatementType.sstcall, TBaseType.rrw_call, " ", " ", " ", " ", " ", " ");
3221
3222        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCheckpoint, TBaseType.rrw_checkpoint, " ", " ", " ", " ", " ", " ");
3223        addpostgresqlcmds(ESqlStatementType.sstpostgresqlClose, TBaseType.rrw_close, " ", " ", " ", " ", " ", " ");
3224
3225        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCluster, TBaseType.rrw_postgresql_cluster, " ", " ", " ", " ", " ", " ");
3226
3227        addpostgresqlcmds(ESqlStatementType.sstpostgresqlComment, TBaseType.rrw_comment, " ", " ", " ", " ", " ", " ");
3228
3229        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCommit, TBaseType.rrw_commit, " ", " ", " ", " ", " ", " ");
3230        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCommitPrepared, TBaseType.rrw_commit, "prepared", " ", " ", " ", " ", " ");
3231        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCopy, TBaseType.rrw_postgresql_copy, " ", " ", " ", " ", " ", " ");
3232
3233        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateAccessMethod, TBaseType.rrw_create, "access", "method", " ", " ", " ", " ");
3234        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateAggregate, TBaseType.rrw_create, "aggregate", " ", " ", " ", " ", " ");
3235        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateAssertion, TBaseType.rrw_create, "assertion", " ", " ", " ", " ", " ");
3236        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateCast, TBaseType.rrw_create, "cast", " ", " ", " ", " ", " ");
3237        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateCollation, TBaseType.rrw_create, "collation", " ", " ", " ", " ", " ");
3238
3239        addpostgresqlcmds(ESqlStatementType.sstcreatetrigger, TBaseType.rrw_create, "constraint", "trigger", " ", " ", " ", " ");
3240
3241        addpostgresqlcmds(ESqlStatementType.sstpostgresqlConversion, TBaseType.rrw_create, "conversion", " ", " ", " ", " ", " ");
3242        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateDatabase, TBaseType.rrw_create, "database", " ", " ", " ", " ", " ");
3243        addpostgresqlcmds(ESqlStatementType.sstpostgresqlConversion, TBaseType.rrw_create, "default", "conversion", " ", " ", " ", " ");
3244        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateDomain, TBaseType.rrw_create, "domain", " ", " ", " ", " ", " ");
3245        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateEventTrigger, TBaseType.rrw_create, "event", "trigger", " ", " ", " ", " ");
3246        addpostgresqlcmds(ESqlStatementType.sstcreateExtension, TBaseType.rrw_create, "extension", " ", " ", " ", " ", " ");
3247
3248        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateForeignDataWrapper, TBaseType.rrw_create, "foreign", "data", "wrapper", " ", " ", " ");
3249        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateForeignTable, TBaseType.rrw_create, "foreign", "table", " ", " ", " ", " ");
3250        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateFunction, TBaseType.rrw_create, "function", " ", " ", " ", " ", " ");
3251
3252        addpostgresqlcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "global", "temp", "table", " ", " ", " ");
3253        addpostgresqlcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "global", "temporary", "table", " ", " ", " ");
3254        addpostgresqlcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "global", "unlocked", "table", " ", " ", " ");
3255
3256        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateGroup, TBaseType.rrw_create, "group", " ", " ", " ", " ", " ");
3257
3258
3259        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateIndex, TBaseType.rrw_create, "index", " ", " ", " ", " ", " ");
3260        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateLanguage, TBaseType.rrw_create, "language", " ", " ", " ", " ", " ");
3261
3262        addpostgresqlcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "local", "temp", "table", " ", " ", " ");
3263        addpostgresqlcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "local", "temporary", "table", " ", " ", " ");
3264        addpostgresqlcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "local", "unlocked", "table", " ", " ", " ");
3265
3266        addpostgresqlcmds(ESqlStatementType.sstcreatematerializedview, TBaseType.rrw_create, "materialized", "view", " ", " ", " ", " ");
3267
3268        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateOperator, TBaseType.rrw_create, "operator", " ", " ", " ", " ", " ");
3269        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateOperatorClass, TBaseType.rrw_create, "operator", "class", " ", " ", " ", " ");
3270        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateOperatorFimaly, TBaseType.rrw_create, "operator", "family", " ", " ", " ", " ");
3271
3272        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateFunction, TBaseType.rrw_create, "or", "replace", "function", " ", " ", " ");
3273        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateLanguage, TBaseType.rrw_create, "or", "replace", "language", " ", " ", " ");
3274        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateLanguage, TBaseType.rrw_create, "or", "replace", "procedural", "language", " ", " ");
3275        addpostgresqlcmds(ESqlStatementType.sstcreateprocedure, TBaseType.rrw_create, "or", "replace", "procedure", " ", " ", " ");
3276        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateRole, TBaseType.rrw_create, "or", "replace", "role ", " ", " ", " ");
3277        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateRule, TBaseType.rrw_create, "or", "replace", "rule ", " ", " ", " ");
3278        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateView, TBaseType.rrw_create, "or", "replace", "temp", "view", " ", " ");
3279        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateView, TBaseType.rrw_create, "or", "replace", "temporary", "view", " ", " ");
3280        addpostgresqlcmds(ESqlStatementType.sstcreatetrigger, TBaseType.rrw_create, "or", "replace", "trigger", " ", " ", " ");
3281        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateLanguage, TBaseType.rrw_create, "or", "replace", "trusted", "language", " ", " ");
3282        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateLanguage, TBaseType.rrw_create, "or", "replace", "trusted", "procedural", "language", " ");
3283        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateView, TBaseType.rrw_create, "or", "replace", "view", " ", " ", " ");
3284        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreatePolicy, TBaseType.rrw_create, "policy", " ", " ", " ", " ", " ");
3285        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateLanguage, TBaseType.rrw_create, "procedural", "language", " ", " ", " ", " ");
3286        addpostgresqlcmds(ESqlStatementType.sstcreateprocedure, TBaseType.rrw_create, "procedure", " ", " ", " ", " ", " ");
3287        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreatePublication, TBaseType.rrw_create, "publication", " ", " ", " ", " ", " ");
3288
3289        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateView, TBaseType.rrw_create, "recursive", "view", " ", " ", " ", " ");
3290
3291        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateRole, TBaseType.rrw_create, "role", " ", " ", " ", " ", " ");
3292        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateRule, TBaseType.rrw_create, "rule", " ", " ", " ", " ", " ");
3293
3294
3295        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateSchema, TBaseType.rrw_create, "schema", " ", " ", " ", " ", " ");
3296
3297        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateSequence, TBaseType.rrw_create, "sequence", " ", " ", " ", " ", " ");
3298
3299
3300        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateServer, TBaseType.rrw_create, "server", " ", " ", " ", " ", " ");
3301        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateStatistics, TBaseType.rrw_create, "statistics", " ", " ", " ", " ", " ");
3302        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateSubscription, TBaseType.rrw_create, "subscription", " ", " ", " ", " ", " ");
3303
3304        addpostgresqlcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "table", " ", " ", " ", " ", " ");
3305
3306        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateTablespace, TBaseType.rrw_create, "tablespace", " ", " ", " ", " ", " ");
3307
3308        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateSequence, TBaseType.rrw_create, "temp", "sequence", " ", " ", " ", " ");
3309        addpostgresqlcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "temp", "table", " ", " ", " ", " ");
3310        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateView, TBaseType.rrw_create, "temp", "view", " ", " ", " ", " ");
3311        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateSequence, TBaseType.rrw_create, "temporary", "sequence", " ", " ", " ", " ");
3312        addpostgresqlcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "temporary", "table", " ", " ", " ", " ");
3313        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateView, TBaseType.rrw_create, "temporary", "view", " ", " ", " ", " ");
3314
3315        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateTextSearchConfiguration, TBaseType.rrw_create, "text", "search", "configuration", " ", " ", " ");
3316        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateTextSearchDictionary, TBaseType.rrw_create, "text", "search", "dictionary", " ", " ", " ");
3317        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateTextSearchParser, TBaseType.rrw_create, "text", "search", "parser", " ", " ", " ");
3318        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateTextSearchTemplate, TBaseType.rrw_create, "text", "search", "template", " ", " ", " ");
3319
3320        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateTransform, TBaseType.rrw_create, "transform", " ", " ", " ", " ", " ");
3321        addpostgresqlcmds(ESqlStatementType.sstcreatetrigger, TBaseType.rrw_create, "trigger", " ", " ", " ", " ", " ");
3322
3323        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateLanguage, TBaseType.rrw_create, "trusted", "language", " ", " ", " ", " ");
3324        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateLanguage, TBaseType.rrw_create, "trusted", "procedural", "language", " ", " ", " ");
3325
3326        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateType, TBaseType.rrw_create, "type", " ", " ", " ", " ", " ");
3327
3328        addpostgresqlcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "unlocked", "table", " ", " ", " ", " ");
3329        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateSequence, TBaseType.rrw_create, "unlogged", "sequence", " ", " ", " ", " ");
3330        addpostgresqlcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "unlogged", "table", " ", " ", " ", " ");
3331
3332        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateUser, TBaseType.rrw_create, "user", " ", " ", " ", " ", " ");
3333
3334        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateUserMapping, TBaseType.rrw_create, "user", "mapping", " ", " ", " ", " ");
3335
3336        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateView, TBaseType.rrw_create, "view", " ", " ", " ", " ", " ");
3337
3338        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateIndex, TBaseType.rrw_create, "unique", "index", " ", " ", " ", " ");
3339
3340
3341        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDeallocate, TBaseType.rrw_deallocate, " ", " ", " ", " ", " ", " ");
3342
3343        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDeclare, TBaseType.rrw_declare, " ", " ", " ", " ", " ", " ");
3344
3345        addpostgresqlcmds(ESqlStatementType.sstdelete, TBaseType.rrw_delete, " ", " ", " ", " ", " ", " ");
3346
3347        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDiscard, TBaseType.rrw_postgresql_discard, " ", " ", " ", " ", " ", " ");
3348
3349        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDo, TBaseType.rrw_do, " ", " ", " ", " ", " ", " ");
3350
3351        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropAccessMethod, TBaseType.rrw_drop, "access", "method", " ", " ", " ", " ");
3352        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropAggregate, TBaseType.rrw_drop, "aggregate", " ", " ", " ", " ", " ");
3353        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropAssertion, TBaseType.rrw_drop, "assertion", " ", " ", " ", " ", " ");
3354
3355        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropCast, TBaseType.rrw_drop, "cast", " ", " ", " ", " ", " ");
3356
3357        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropCollation, TBaseType.rrw_drop, "collation", " ", " ", " ", " ", " ");
3358
3359        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropConversion, TBaseType.rrw_drop, "conversion", " ", " ", " ", " ", " ");
3360
3361        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropDatabase, TBaseType.rrw_drop, "database", " ", " ", " ", " ", " ");
3362
3363        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropDomain, TBaseType.rrw_drop, "domain", " ", " ", " ", " ", " ");
3364        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropEventTrigger, TBaseType.rrw_drop, "event", "trigger", " ", " ", " ", " ");
3365        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropExtension, TBaseType.rrw_drop, "extension", " ", " ", " ", " ", " ");
3366
3367        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropTable, TBaseType.rrw_drop, "external", "table", " ", " ", " ", " ");
3368
3369        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropForeignDataWrapper, TBaseType.rrw_drop, "foreign", "data", "wrapper", " ", " ", " ");
3370
3371        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropForeignTable, TBaseType.rrw_drop, "foreign", "table", " ", " ", " ", " ");
3372
3373        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropFunction, TBaseType.rrw_drop, "function", " ", " ", " ", " ", " ");
3374
3375        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropGroup, TBaseType.rrw_drop, "group", " ", " ", " ", " ", " ");
3376
3377        addpostgresqlcmds(ESqlStatementType.sstdropindex, TBaseType.rrw_drop, "index", " ", " ", " ", " ", " ");
3378
3379        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropLanguage, TBaseType.rrw_drop, "language", " ", " ", " ", " ", " ");
3380
3381        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropMaterializedView, TBaseType.rrw_drop, "materialized", "view", " ", " ", " ", " ");
3382
3383        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropOperator, TBaseType.rrw_drop, "operator", " ", " ", " ", " ", " ");
3384        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropOperatorClass, TBaseType.rrw_drop, "operator", "class", " ", " ", " ", " ");
3385        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropOperatorFamily, TBaseType.rrw_drop, "operator", "family ", " ", " ", " ", " ");
3386
3387        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropOwned, TBaseType.rrw_drop, "owned", " ", " ", " ", " ", " ");
3388        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropPolicy, TBaseType.rrw_drop, "policy", " ", " ", " ", " ", " ");
3389        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropLanguage, TBaseType.rrw_drop, "procedural", "language", " ", " ", " ", " ");
3390        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropProcedure, TBaseType.rrw_drop, "procedure", " ", " ", " ", " ", " ");
3391        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropPublication, TBaseType.rrw_drop, "publication", " ", " ", " ", " ", " ");
3392
3393        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropRole, TBaseType.rrw_drop, "role", " ", " ", " ", " ", " ");
3394        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropRoutine, TBaseType.rrw_drop, "routine", " ", " ", " ", " ", " ");
3395        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropRule, TBaseType.rrw_drop, "rule", " ", " ", " ", " ", " ");
3396        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropSchema, TBaseType.rrw_drop, "schema", " ", " ", " ", " ", " ");
3397        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropSequence, TBaseType.rrw_drop, "sequence", " ", " ", " ", " ", " ");
3398        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropServer, TBaseType.rrw_drop, "server", " ", " ", " ", " ", " ");
3399        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropStatistics, TBaseType.rrw_drop, "statistics", " ", " ", " ", " ", " ");
3400        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropSubscription, TBaseType.rrw_drop, "subscription", " ", " ", " ", " ", " ");
3401        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropTable, TBaseType.rrw_drop, "table", " ", " ", " ", " ", " ");
3402        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropTablespace, TBaseType.rrw_drop, "tablespace", " ", " ", " ", " ", " ");
3403
3404        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropTextSearchConfiguration, TBaseType.rrw_drop, "text", "search", "configuration", " ", " ", " ");
3405        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropTextSearchDictionary, TBaseType.rrw_drop, "text", "search", "dictionary", " ", " ", " ");
3406        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropTextSearchParser, TBaseType.rrw_drop, "text", "search", "parser", " ", " ", " ");
3407        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropTextSearchTemplate, TBaseType.rrw_drop, "text", "search", "template", " ", " ", " ");
3408        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropTransform, TBaseType.rrw_drop, "transform", " ", " ", " ", " ", " ");
3409        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropTrigger, TBaseType.rrw_drop, "trigger", " ", " ", " ", " ", " ");
3410        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropType, TBaseType.rrw_drop, "type", " ", " ", " ", " ", " ");
3411        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropUser, TBaseType.rrw_drop, "user", " ", " ", " ", " ", " ");
3412        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropUserMapping, TBaseType.rrw_drop, "user", "mapping", " ", " ", " ", " ");
3413        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropView, TBaseType.rrw_drop, "view", " ", " ", " ", " ", " ");
3414
3415        addpostgresqlcmds(ESqlStatementType.sstpostgresqlEnd, TBaseType.rrw_end, " ", " ", " ", " ", " ", " ");
3416
3417        addpostgresqlcmds(ESqlStatementType.sstpostgresqlExecute, TBaseType.rrw_execute, " ", " ", " ", " ", " ", " ");
3418
3419        addpostgresqlcmds(ESqlStatementType.sstpostgresqlExplain, TBaseType.rrw_explain, " ", " ", " ", " ", " ", " ");
3420
3421        addpostgresqlcmds(ESqlStatementType.sstFetchFrom, TBaseType.rrw_fetch, " ", " ", " ", " ", " ", " ");
3422
3423        addpostgresqlcmds(ESqlStatementType.sstpostgresqlGrant, TBaseType.rrw_grant, " ", " ", " ", " ", " ", " ");
3424        addpostgresqlcmds(ESqlStatementType.sstPostgresqlImport, TBaseType.rrw_postgresql_import, "foreign", "schema", " ", " ", " ", " ");
3425        addpostgresqlcmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert, " ", " ", " ", " ", " ", " ");
3426
3427        addpostgresqlcmds(ESqlStatementType.sstpostgresqlListen, TBaseType.rrw_postgresql_listen, " ", " ", " ", " ", " ", " ");
3428
3429        addpostgresqlcmds(ESqlStatementType.sstpostgresqlLoad, TBaseType.rrw_load, " ", " ", " ", " ", " ", " ");
3430
3431        addpostgresqlcmds(ESqlStatementType.sstpostgresqlLock, TBaseType.rrw_lock, " ", " ", " ", " ", " ", " ");
3432
3433        addpostgresqlcmds(ESqlStatementType.sstmerge, TBaseType.rrw_merge," "," "," "," "," "," ");
3434
3435        addpostgresqlcmds(ESqlStatementType.sstpostgresqlMove, TBaseType.rrw_move, " ", " ", " ", " ", " ", " ");
3436
3437        addpostgresqlcmds(ESqlStatementType.sstpostgresqlNotify, TBaseType.rrw_postgresql_notify, " ", " ", " ", " ", " ", " ");
3438
3439        addpostgresqlcmds(ESqlStatementType.sstPostgresqlBlock, TBaseType.rrw_plpgsql_function_delimiter, " ", " ", " ", " ", " ", " ");
3440
3441
3442        addpostgresqlcmds(ESqlStatementType.sstpostgresqlPrepare, TBaseType.rrw_prepare, " ", " ", " ", " ", " ", " ");
3443
3444        addpostgresqlcmds(ESqlStatementType.sstpostgresqlPrepareTransaction, TBaseType.rrw_prepare, "transaction", " ", " ", " ", " ", " ");
3445
3446        addpostgresqlcmds(ESqlStatementType.sstpostgresqlReassignOwned, TBaseType.rrw_postgresql_reassign, "owned", " ", " ", " ", " ", " ");
3447
3448        addpostgresqlcmds(ESqlStatementType.sstpostgresqlRefreshMaterializedView, TBaseType.rrw_refresh, "materialized", "view", " ", " ", " ", " ");
3449
3450        addpostgresqlcmds(ESqlStatementType.sstReindex, TBaseType.rrw_postgresql_reindex, " ", " ", " ", " ", " ", " ");
3451
3452        addpostgresqlcmds(ESqlStatementType.sstpostgresqlReleaseSavepoint, TBaseType.rrw_release, " ", " ", " ", " ", " ", " ");
3453        addpostgresqlcmds(ESqlStatementType.sstpostgresqlReleaseSavepoint, TBaseType.rrw_release, "savepoint", " ", " ", " ", " ", " ");
3454
3455        addpostgresqlcmds(ESqlStatementType.sstpostgresqlReset, TBaseType.rrw_reset, " ", " ", " ", " ", " ", " ");
3456
3457        addpostgresqlcmds(ESqlStatementType.sstpostgresqlRevoke, TBaseType.rrw_revoke, " ", " ", " ", " ", " ", " ");
3458
3459        addpostgresqlcmds(ESqlStatementType.sstpostgresqlRollback, TBaseType.rrw_rollback, " ", " ", " ", " ", " ", " ");
3460        addpostgresqlcmds(ESqlStatementType.sstpostgresqlRollbackPrepared, TBaseType.rrw_rollback, "prepared", " ", " ", " ", " ", " ");
3461        addpostgresqlcmds(ESqlStatementType.sstpostgresqlRollbackToSavepoint, TBaseType.rrw_rollback, "to", "savepoint", " ", " ", " ", " ");
3462        addpostgresqlcmds(ESqlStatementType.sstpostgresqlSavepoint, TBaseType.rrw_savepoint, " ", " ", " ", " ", " ", " ");
3463
3464        addpostgresqlcmds(ESqlStatementType.sstpostgresqlSecurityLabel, TBaseType.rrw_postgresql_security, "label", " ", " ", " ", " ", " ");
3465
3466
3467        addpostgresqlcmds(ESqlStatementType.sstselect, TBaseType.rrw_select, " ", " ", " ", " ", " ", " ");
3468
3469        addpostgresqlcmds(ESqlStatementType.sstpostgresqlSet, TBaseType.rrw_set, " ", " ", " ", " ", " ", " ");
3470
3471        addpostgresqlcmds(ESqlStatementType.sstpostgresqlSetConstraints, TBaseType.rrw_set, "constraints", " ", " ", " ", " ", " ");
3472        addpostgresqlcmds(ESqlStatementType.sstpostgresqlSetRole, TBaseType.rrw_set, "local", "role", " ", " ", " ", " ");
3473        addpostgresqlcmds(ESqlStatementType.sstpostgresqlSetSessionAuthorization, TBaseType.rrw_set, "local", "session", "authorization", " ", " ", " ");
3474        addpostgresqlcmds(ESqlStatementType.sstpostgresqlSetRole, TBaseType.rrw_set, "role", " ", " ", " ", " ", " ");
3475        addpostgresqlcmds(ESqlStatementType.sstpostgresqlSetSearchPath, TBaseType.rrw_set, "search_path", " ", " ", " ", " ", " ");
3476        addpostgresqlcmds(ESqlStatementType.sstpostgresqlSetSessionAuthorization, TBaseType.rrw_set, "session", "authorization", " ", " ", " ", " ");
3477        addpostgresqlcmds(ESqlStatementType.sstpostgresqlSetTransaction, TBaseType.rrw_set, "session", "characteristics", "as", "transaction", " ", " ");
3478        addpostgresqlcmds(ESqlStatementType.sstpostgresqlSetRole, TBaseType.rrw_set, "session", "role", " ", " ", " ", " ");
3479        addpostgresqlcmds(ESqlStatementType.sstpostgresqlSetSessionAuthorization, TBaseType.rrw_set, "session", "session", "authorization", " ", " ", " ");
3480
3481        addpostgresqlcmds(ESqlStatementType.sstpostgresqlSetTransaction, TBaseType.rrw_set, "transaction", " ", " ", " ", " ", " ");
3482        addpostgresqlcmds(ESqlStatementType.sstpostgresqlShow, TBaseType.rrw_show, " ", " ", " ", " ", " ", " ");
3483        addpostgresqlcmds(ESqlStatementType.sstpostgresqlShowSearchPath, TBaseType.rrw_show, "search_path", " ", " ", " ", " ", " ");
3484       // addpostgresqlcmds(ESqlStatementType.sstpostgresqlStartTransaction, TBaseType.rrw_start, "transaction", " ", " ", " ", " ", " ");
3485        addpostgresqlcmds(ESqlStatementType.sstPostgresqlTable, TBaseType.rrw_table, " ", " ", " ", " ", " ", " ");
3486        addpostgresqlcmds(ESqlStatementType.sstStartTransaction, TBaseType.rrw_start, "transaction", " ", " ", " ", " ", " ");
3487        addpostgresqlcmds(ESqlStatementType.sstpostgresqlTruncate, TBaseType.rrw_truncate, " ", " ", " ", " ", " ", " ");
3488
3489        addpostgresqlcmds(ESqlStatementType.sstpostgresqlUnlisten, TBaseType.rrw_postgresql_unlisten, " ", " ", " ", " ", " ", " ");
3490
3491        addpostgresqlcmds(ESqlStatementType.sstupdate, TBaseType.rrw_update, " ", " ", " ", " ", " ", " ");
3492        addpostgresqlcmds(ESqlStatementType.sstVacuum, TBaseType.rrw_postgresql_vacuum, " ", " ", " ", " ", " ", " ");
3493        addpostgresqlcmds(ESqlStatementType.sstValues, TBaseType.rrw_values, " ", " ", " ", " ", " ", " ");
3494
3495    }
3496
3497    void initbigquerycmds() {
3498// cmd must be sorted alphabetically
3499        addbigquerycmds(ESqlStatementType.sstalterview, TBaseType.rrw_alter, "view", " ", " ", " ", " ", " ");
3500        addbigquerycmds(ESqlStatementType.sstaltertable, TBaseType.rrw_alter, "table", " ", " ", " ", " ", " ");
3501
3502        addbigquerycmds(ESqlStatementType.sstBegin, TBaseType.rrw_begin, " ", " ", " ", " ", " ", " ");
3503        addbigquerycmds(ESqlStatementType.sstbegintran, TBaseType.rrw_begin, "transaction", " ", " ", " ", " ", " ");
3504
3505        addbigquerycmds(ESqlStatementType.sstcall, TBaseType.rrw_call, " ", " ", " ", " ", " ", " ");
3506        addbigquerycmds(ESqlStatementType.sst_casestmt, TBaseType.rrw_case, " ", " ", " ", " ", " ", " ");
3507        addbigquerycmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "external", "table", " ", " ", " ", " ");
3508        addbigquerycmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create, "function", " ", " ", " ", " ", " ");
3509        addbigquerycmds(ESqlStatementType.sstcreatematerializedview, TBaseType.rrw_create, "materialized", "view", " ", " ", " ", " ");
3510        addbigquerycmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "or", "replace", "external", "table", " ", " ");
3511        addbigquerycmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "or", "replace", "temporary", "table", " ", " ");
3512        addbigquerycmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create, "or", "replace", "function", " ", " ", " ");
3513        addbigquerycmds(ESqlStatementType.sstcreatematerializedview, TBaseType.rrw_create, "or", "replace", "materialized", "view", " ", " ");
3514        addbigquerycmds(ESqlStatementType.sstcreateprocedure, TBaseType.rrw_create, "or", "replace", "procedure", " ", " ", " ");
3515        addbigquerycmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "or", "replace", "table", " ", " ", " ");
3516        addbigquerycmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create, "or", "replace", "table", "function", " ", " ");
3517        addbigquerycmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create, "or", "replace", "temp", "function", " ", " ");
3518        addbigquerycmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "or", "replace", "temp", "table", " ", " ");
3519        addbigquerycmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create, "or", "replace", "temporary", "function", " ", " ");
3520        addbigquerycmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create, "or", "replace", "view", " ", " ", " ");
3521        addbigquerycmds(ESqlStatementType.sstcreateprocedure, TBaseType.rrw_create, "procedure", " ", " ", " ", " ", " ");
3522        addbigquerycmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "table", " ", " ", " ", " ", " ");
3523        addbigquerycmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create, "table", "function", " ", " ", " ", " ");
3524        addbigquerycmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create, "temp", "function", " ", " ", " ", " ");
3525        addbigquerycmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "temp", "table", " ", " ", " ", " ");
3526        addbigquerycmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create, "temporary", "function", " ", " ", " ", " ");
3527        addbigquerycmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "temporary", "table", " ", " ", " ", " ");
3528        addbigquerycmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "snapshot", "table", " ", " ", " ", " ");
3529        addbigquerycmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create, "view", " ", " ", " ", " ", " ");
3530        addbigquerycmds(ESqlStatementType.sstBigQueryDeclare, TBaseType.rrw_declare," "," "," "," "," "," ");
3531        addbigquerycmds(ESqlStatementType.sstdelete, TBaseType.rrw_delete, " ", " ", " ", " ", " ", " ");
3532        addbigquerycmds(ESqlStatementType.sstDropRowAccessPolicy, TBaseType.rrw_drop, "all","row", "access", "policies", " ", " ");
3533        addbigquerycmds(ESqlStatementType.sstDropAssignment, TBaseType.rrw_drop, "assignment", " ", " ", " ", " ", " ");
3534        addbigquerycmds(ESqlStatementType.sstdroptable, TBaseType.rrw_drop, "external", "table", " ", " ", " ", " ");
3535        addbigquerycmds(ESqlStatementType.sstdropfunction, TBaseType.rrw_drop, "function", " ", " ", " ", " ", " ");
3536        addbigquerycmds(ESqlStatementType.sstDropMaterializedView, TBaseType.rrw_drop, "materialized", "view", " ", " ", " ", " ");
3537        addbigquerycmds(ESqlStatementType.sstdropprocedure, TBaseType.rrw_drop, "procedure", " ", " ", " ", " ", " ");
3538        addbigquerycmds(ESqlStatementType.sstDropReservation, TBaseType.rrw_drop, "reservation", " ", " ", " ", " ", " ");
3539        addbigquerycmds(ESqlStatementType.sstDropRowAccessPolicy, TBaseType.rrw_drop, "row", "access", "policy", " ", " ", " ");
3540        addbigquerycmds(ESqlStatementType.sstdroptable, TBaseType.rrw_drop, "table", " ", " ", " ", " ", " ");
3541        addbigquerycmds(ESqlStatementType.sstDropTableFunction, TBaseType.rrw_drop, "table", "function", " ", " ", " ", " ");
3542        addbigquerycmds(ESqlStatementType.sstdropschema, TBaseType.rrw_drop, "schema", " ", " ", " ", " ", " ");
3543        addbigquerycmds(ESqlStatementType.sstDropSnapshotTable, TBaseType.rrw_drop, "snapshot", "table", " ", " ", " ", " ");
3544        addbigquerycmds(ESqlStatementType.sstdropview, TBaseType.rrw_drop, "view", " ", " ", " ", " ", " ");
3545
3546        addbigquerycmds(ESqlStatementType.sstExecute, TBaseType.rrw_execute,  "immediate"," "," "," "," "," ");
3547
3548        addbigquerycmds(ESqlStatementType.sstBigQueryExportData, TBaseType.rrw_bigquery_export, "data", " ", " ", " ", " ", " ");
3549        addbigquerycmds(ESqlStatementType.sstForStmt, TBaseType.rrw_for, " ", " ", " ", " ", " ", " ");
3550        addbigquerycmds(ESqlStatementType.sst_ifstmt, TBaseType.rrw_if, " ", " ", " ", " ", " ", " ");
3551        addbigquerycmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert, " ", " ", " ", " ", " ", " ");
3552        addbigquerycmds(ESqlStatementType.sst_loopstmt, TBaseType.rrw_loop, " ", " ", " ", " ", " ", " ");
3553        addbigquerycmds(ESqlStatementType.sstmerge, TBaseType.rrw_merge, " ", " ", " ", " ", " ", " ");
3554        addbigquerycmds(ESqlStatementType.sstRepeat, TBaseType.rrw_repeat, " ", " ", " ", " ", " ", " ");
3555        addbigquerycmds(ESqlStatementType.sstselect, TBaseType.rrw_select, " ", " ", " ", " ", " ", " ");
3556        addbigquerycmds(ESqlStatementType.sstset, TBaseType.rrw_set, " ", " ", " ", " ", " ", " ");
3557        addbigquerycmds(ESqlStatementType.sstTruncate, TBaseType.rrw_truncate, " ", " ", " ", " ", " ", " ");
3558        addbigquerycmds(ESqlStatementType.sstupdate, TBaseType.rrw_update, " ", " ", " ", " ", " ", " ");
3559        addbigquerycmds(ESqlStatementType.sstWhilestmt, TBaseType.rrw_while, " ", " ", " ", " ", " ", " ");
3560    }
3561
3562void initsnowflakecmds(){
3563// cmd must be sorted alphabetically
3564    addsnowflakecmds(ESqlStatementType.sstAlterAccount, TBaseType.rrw_alter, "account", " ", " ", " ", " ", " ");
3565    addsnowflakecmds(ESqlStatementType.sstalterdatabase, TBaseType.rrw_alter, "database", " ", " ", " ", " ", " ");
3566    addsnowflakecmds(ESqlStatementType.sstaltertable, TBaseType.rrw_alter, "external", "table", " ", " ", " ", " ");
3567    addsnowflakecmds(ESqlStatementType.sstAlterFileFormat, TBaseType.rrw_alter, "file", "format", " ", " ", " ", " ");
3568    addsnowflakecmds(ESqlStatementType.sstalterfunction, TBaseType.rrw_alter, "function", " ", " ", " ", " ", " ");
3569    addsnowflakecmds(ESqlStatementType.sstAlterMaterializedView, TBaseType.rrw_alter,"materialized","view"," "," "," "," ");
3570    addsnowflakecmds(ESqlStatementType.sstAlterNetworkPolicy, TBaseType.rrw_alter, "network", "policy", " ", " ", " ", " ");
3571    addsnowflakecmds(ESqlStatementType.sstAlterPipe, TBaseType.rrw_alter, "pipe", " ", " ", " ", " ", " ");
3572    addsnowflakecmds(ESqlStatementType.sstAlterResourceMonitor, TBaseType.rrw_alter, "resource", "monitor", " ", " ", " ", " ");
3573    addsnowflakecmds(ESqlStatementType.sstAlterRole, TBaseType.rrw_alter, "role", " ", " ", " ", " ", " ");
3574    addsnowflakecmds(ESqlStatementType.sstAlterTask, TBaseType.rrw_alter, "task", " ", " ", " ", " ", " ");
3575    addsnowflakecmds(ESqlStatementType.sstAlterSchema, TBaseType.rrw_alter, "schema", " ", " ", " ", " ", " ");
3576    addsnowflakecmds(ESqlStatementType.sstaltersession, TBaseType.rrw_alter, "session", " ", " ", " ", " ", " ");
3577    addsnowflakecmds(ESqlStatementType.sstaltersequence, TBaseType.rrw_alter, "sequence", " ", " ", " ", " ", " ");
3578    addsnowflakecmds(ESqlStatementType.sstAlterShare, TBaseType.rrw_alter, "share", " ", " ", " ", " ", " ");
3579    addsnowflakecmds(ESqlStatementType.sstAlterStage, TBaseType.rrw_alter, "stage", " ", " ", " ", " ", " ");
3580    addsnowflakecmds(ESqlStatementType.sstaltertable, TBaseType.rrw_alter, "table", " ", " ", " ", " ", " ");
3581    addsnowflakecmds(ESqlStatementType.sstalteruser, TBaseType.rrw_alter, "user", " ", " ", " ", " ", " ");
3582    addsnowflakecmds(ESqlStatementType.sstalterview, TBaseType.rrw_alter, "view", " ", " ", " ", " ", " ");
3583    addsnowflakecmds(ESqlStatementType.sstAlterWarehouse, TBaseType.rrw_alter, "warehouse", " ", " ", " ", " ", " ");
3584
3585    addsnowflakecmds(ESqlStatementType.sstBegin, TBaseType.rrw_begin, " ", " ", " ", " ", " ", " ");
3586    addsnowflakecmds(ESqlStatementType.sstbegintran, TBaseType.rrw_snowflake_begin_transaction, " ", " ", " ", " ", " ", " ");
3587
3588    addsnowflakecmds(ESqlStatementType.sstbegintran, TBaseType.rrw_begin, "work", " ", " ", " ", " ", " ");
3589    addsnowflakecmds(ESqlStatementType.sstbegintran, TBaseType.rrw_begin, "transaction", " ", " ", " ", " ", " ");
3590
3591    addsnowflakecmds(ESqlStatementType.sstcall, TBaseType.rrw_call, " ", " ", " ", " ", " ", " ");
3592    addsnowflakecmds(ESqlStatementType.sstcomment, TBaseType.rrw_comment, " ", " ", " ", " ", " ", " ");
3593
3594    addsnowflakecmds(ESqlStatementType.sstcommit, TBaseType.rrw_commit, " ", " ", " ", " ", " ", " ");
3595    addsnowflakecmds(ESqlStatementType.sstCopyInto, TBaseType.rrw_snowflake_copy, "into", " ", " ", " ", " ", " ");
3596
3597    addsnowflakecmds(ESqlStatementType.sstcreatedatabase, TBaseType.rrw_create, "database", " ", " ", " ", " ", " ");
3598    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "dynamic", "table", " ", " ", " ", " ");
3599    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "external", "table", " ", " ", " ", " ");
3600    addsnowflakecmds(ESqlStatementType.sstCreateFileFormat, TBaseType.rrw_create, "file", "format", " ", " ", " ", " ");
3601    addsnowflakecmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create, "function", " ", " ", " ", " ", " ");
3602    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "global", "table", " ", " ", " ", " ");
3603    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "global", "temp", "table", " ", " ", " ");
3604    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "global", "temporary", "table", " ", " ", " ");
3605    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "hybrid", "table", " ", " ", " ", " ");
3606    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "local", "table", " ", " ", " ", " ");
3607    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "local", "temp", "table", " ", " ", " ");
3608    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "local", "temporary", "table", " ", " ", " ");
3609    addsnowflakecmds(ESqlStatementType.sstcreatematerializedview, TBaseType.rrw_create,"materialized","view"," "," "," "," ");
3610    addsnowflakecmds(ESqlStatementType.sstCreateNetworkPolicy, TBaseType.rrw_create, "network", "policy", " ", " ", " ", " ");
3611    addsnowflakecmds(ESqlStatementType.sstCreatePipe, TBaseType.rrw_create, "or", "replace", "pipe", " ", " ", " ");
3612    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "or", "replace", "external", "table", " ", " ");
3613    addsnowflakecmds(ESqlStatementType.sstcreatedatabase, TBaseType.rrw_create, "or", "replace", "database", " ", " ", " ");
3614    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "or", "replace", "dynamic", "table", " ", " ");
3615    addsnowflakecmds(ESqlStatementType.sstCreateFileFormat, TBaseType.rrw_create, "or", "replace", "file", "format", " ", " ");
3616    addsnowflakecmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create, "or", "replace", "function", " ", " ", " ");
3617    addsnowflakecmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create, "or", "replace", "force", "view", " ", " ");
3618    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "or", "replace", "global","temporary", "table",  " ");
3619    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "or", "replace", "hybrid", "table", " ", " ");
3620    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "or", "replace", "local","temporary", "table",  " ");
3621    addsnowflakecmds(ESqlStatementType.sstcreatematerializedview, TBaseType.rrw_create,"or", "replace","materialized","view"," "," ");
3622    addsnowflakecmds(ESqlStatementType.sstCreateNetworkPolicy, TBaseType.rrw_create, "or", "replace", "network", "policy", " ", " ");
3623    addsnowflakecmds(ESqlStatementType.sstcreateprocedure, TBaseType.rrw_create,"or", "replace", "procedure", " ", " ", " ");
3624    addsnowflakecmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create, "or", "replace", "recursive", "view", " ", " ");
3625
3626    addsnowflakecmds(ESqlStatementType.sstCreateResourceMonitor, TBaseType.rrw_create, "or", "replace","resource", "monitor",  " ", " ");
3627    addsnowflakecmds(ESqlStatementType.sstcreaterole,             TBaseType.rrw_create, "or", "replace","role",  " ", " ", " ");
3628    addsnowflakecmds(ESqlStatementType.sstcreateschema, TBaseType.rrw_create, "or", "replace","schema", " ", " ", " ");
3629    addsnowflakecmds(ESqlStatementType.sstcreatematerializedview, TBaseType.rrw_create,"or", "replace","secure","materialized","view"," ");
3630    addsnowflakecmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create, "or", "replace", "secure", "view", " ", " ");
3631    addsnowflakecmds(ESqlStatementType.sstcreatesequence, TBaseType.rrw_create, "or", "replace","sequence", " ", " ", " ");
3632    addsnowflakecmds(ESqlStatementType.sstCreateShare, TBaseType.rrw_create, "or", "replace","share", " ", " ", " ");
3633    addsnowflakecmds(ESqlStatementType.sstCreateStage, TBaseType.rrw_create, "or", "replace","stage", " ", " ", " ");
3634    addsnowflakecmds(ESqlStatementType.sstCreateStream, TBaseType.rrw_create, "or", "replace","stream", " ", " ", " ");
3635    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "or", "replace", "table", " ", " ", " ");
3636    addsnowflakecmds(ESqlStatementType.sstCreateTask, TBaseType.rrw_create, "or", "replace", "task", " ", " ", " ");
3637    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "or", "replace", "temp", "table", " ", " ");
3638    addsnowflakecmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create, "or", "replace", "temp", "view", " ", " ");
3639    addsnowflakecmds(ESqlStatementType.sstCreateStage, TBaseType.rrw_create, "or", "replace","temporary", "stage", " ", " ");
3640    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "or", "replace", "temporary", "table", " ", " ");
3641    addsnowflakecmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create, "or", "replace", "temporary", "view", " ", " ");
3642    addsnowflakecmds(ESqlStatementType.sstcreatedatabase, TBaseType.rrw_create, "or", "replace", "transient", "database", " ", " ");
3643    addsnowflakecmds(ESqlStatementType.sstcreateschema, TBaseType.rrw_create, "or", "replace", "transient", "schema", " ", " ");
3644    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "or", "replace", "transient", "table", " ", " ");
3645    addsnowflakecmds(ESqlStatementType.sstcreateuser, TBaseType.rrw_create, "or", "replace","user", " ", " ", " ");
3646    addsnowflakecmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create, "or", "replace", "view", " ", " ", " ");
3647    addsnowflakecmds(ESqlStatementType.sstCreateWarehouse, TBaseType.rrw_create, "or", "replace", "warehouse", " ", " ", " ");
3648    addsnowflakecmds(ESqlStatementType.sstCreatePipe, TBaseType.rrw_create, "pipe", " ", " ", " ", " ", " ");
3649    addsnowflakecmds(ESqlStatementType.sstcreateprocedure, TBaseType.rrw_create, "procedure", " ", " ", " ", " ", " ");
3650    addsnowflakecmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create, "recursive", "view", " ", " ", " ", " ");
3651    addsnowflakecmds(ESqlStatementType.sstCreateResourceMonitor, TBaseType.rrw_create, "resource", "monitor", " ", " ", " ", " ");
3652    addsnowflakecmds(ESqlStatementType.sstcreaterole, TBaseType.rrw_create, "role", " ", " ", " ", " ", " ");
3653    addsnowflakecmds(ESqlStatementType.sstcreateschema, TBaseType.rrw_create, "schema", " ", " ", " ", " ", " ");
3654    addsnowflakecmds(ESqlStatementType.sstcreatematerializedview, TBaseType.rrw_create,"secure","materialized","view"," "," "," ");
3655    addsnowflakecmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create, "secure", "view", " ", " ", " ", " ");
3656    addsnowflakecmds(ESqlStatementType.sstcreatesequence, TBaseType.rrw_create, "sequence", " ", " ", " ", " ", " ");
3657    addsnowflakecmds(ESqlStatementType.sstCreateShare, TBaseType.rrw_create, "share", " ", " ", " ", " ", " ");
3658    addsnowflakecmds(ESqlStatementType.sstCreateStage, TBaseType.rrw_create, "stage", " ", " ", " ", " ", " ");
3659    addsnowflakecmds(ESqlStatementType.sstCreateStream, TBaseType.rrw_create, "stream", " ", " ", " ", " ", " ");
3660    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "table", " ", " ", " ", " ", " ");
3661    addsnowflakecmds(ESqlStatementType.sstCreateTask, TBaseType.rrw_create, "task", " ", " ", " ", " ", " ");
3662    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "temp", "table", " ", " ", " ", " ");
3663    addsnowflakecmds(ESqlStatementType.sstCreateStage, TBaseType.rrw_create,"temporary", "stage", " ", " ", " ", " ");
3664    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "temporary", "table", " ", " ", " ", " ");
3665    addsnowflakecmds(ESqlStatementType.sstcreatedatabase, TBaseType.rrw_create, "transient", "database", " ", " ", " ", " ");
3666    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "transient", "dynamic", "table", " ", " ", " ");
3667    addsnowflakecmds(ESqlStatementType.sstcreateschema, TBaseType.rrw_create, "transient","schema", " ", " ", " ", " ");
3668    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "transient", "table", " ", " "," "," ");
3669    addsnowflakecmds(ESqlStatementType.sstcreateuser, TBaseType.rrw_create, "user", " ", " ", " ", " ", " ");
3670    addsnowflakecmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create, "view", " ", " ", " ", " ", " ");
3671    addsnowflakecmds(ESqlStatementType.sstCreateWarehouse, TBaseType.rrw_create, "warehouse", " ", " ", " ", " ", " ");
3672
3673    addsnowflakecmds(ESqlStatementType.sstdelete, TBaseType.rrw_delete, " ", " ", " ", " ", " ", " ");
3674
3675    addsnowflakecmds(ESqlStatementType.sstDescFileFormat, TBaseType.rrw_snowflake_desc, "file", "format", " ", " ", " ", " ");
3676    addsnowflakecmds(ESqlStatementType.sstDescFunction, TBaseType.rrw_snowflake_desc, "function", " ", " ", " ", " ", " ");
3677    addsnowflakecmds(ESqlStatementType.sstDescNetworkPolicy, TBaseType.rrw_snowflake_desc, "network", "policy", " ", " ", " ", " ");
3678    addsnowflakecmds(ESqlStatementType.sstDescPipe, TBaseType.rrw_snowflake_desc, "pipe", " ", " ", " ", " ", " ");
3679    addsnowflakecmds(ESqlStatementType.sstDescResult, TBaseType.rrw_snowflake_desc, "result", " ", " ", " ", " ", " ");
3680    addsnowflakecmds(ESqlStatementType.sstDescShare, TBaseType.rrw_snowflake_desc, "share", " ", " ", " ", " ", " ");
3681    addsnowflakecmds(ESqlStatementType.sstDescStage, TBaseType.rrw_snowflake_desc, "stage", " ", " ", " ", " ", " ");
3682    addsnowflakecmds(ESqlStatementType.sstDescStorage, TBaseType.rrw_snowflake_desc, "storage", " ", " ", " ", " ", " ");
3683    addsnowflakecmds(ESqlStatementType.sstDescTable, TBaseType.rrw_snowflake_desc, "table", " ", " ", " ", " ", " ");
3684    addsnowflakecmds(ESqlStatementType.sstDescUser, TBaseType.rrw_snowflake_desc, "user", " ", " ", " ", " ", " ");
3685    addsnowflakecmds(ESqlStatementType.sstDescView, TBaseType.rrw_snowflake_desc, "view", " ", " ", " ", " ", " ");
3686
3687    addsnowflakecmds(ESqlStatementType.sstDescFileFormat, TBaseType.rrw_describe, "file", "format", " ", " ", " ", " ");
3688    addsnowflakecmds(ESqlStatementType.sstDescFunction, TBaseType.rrw_describe, "function", " ", " ", " ", " ", " ");
3689    addsnowflakecmds(ESqlStatementType.sstDescNetworkPolicy, TBaseType.rrw_describe, "network", "policy", " ", " ", " ", " ");
3690    addsnowflakecmds(ESqlStatementType.sstDescPipe, TBaseType.rrw_describe, "pipe", " ", " ", " ", " ", " ");
3691    addsnowflakecmds(ESqlStatementType.sstDescResult, TBaseType.rrw_describe, "result", " ", " ", " ", " ", " ");
3692    addsnowflakecmds(ESqlStatementType.sstDescShare, TBaseType.rrw_describe, "share", " ", " ", " ", " ", " ");
3693    addsnowflakecmds(ESqlStatementType.sstDescStage, TBaseType.rrw_describe, "stage", " ", " ", " ", " ", " ");
3694    addsnowflakecmds(ESqlStatementType.sstDescStorage, TBaseType.rrw_describe, "storage", " ", " ", " ", " ", " ");
3695    addsnowflakecmds(ESqlStatementType.sstDescTable, TBaseType.rrw_describe, "table", " ", " ", " ", " ", " ");
3696    addsnowflakecmds(ESqlStatementType.sstDescUser, TBaseType.rrw_describe, "user", " ", " ", " ", " ", " ");
3697    addsnowflakecmds(ESqlStatementType.sstDescView, TBaseType.rrw_describe, "view", " ", " ", " ", " ", " ");
3698
3699    addsnowflakecmds(ESqlStatementType.sstdropdatabase, TBaseType.rrw_drop, "database", " ", " ", " ", " ", " ");
3700    addsnowflakecmds(ESqlStatementType.sstDropFileFormat, TBaseType.rrw_drop, "file", "format", " ", " ", " ", " ");
3701    addsnowflakecmds(ESqlStatementType.sstdropfunction, TBaseType.rrw_drop, "function", " ", " ", " ", " ", " ");
3702    addsnowflakecmds(ESqlStatementType.sstDropMaterializedView, TBaseType.rrw_drop, "materialized", "view", " ", " ", " ", " ");
3703    addsnowflakecmds(ESqlStatementType.sstDropNetworkPolicy, TBaseType.rrw_drop, "network", "policy", " ", " ", " ", " ");
3704    addsnowflakecmds(ESqlStatementType.sstDropPipe, TBaseType.rrw_drop, "pipe", " ", " ", " ", " ", " ");
3705    addsnowflakecmds(ESqlStatementType.sstdropprocedure, TBaseType.rrw_drop, "procedure", " ", " ", " ", " ", " ");
3706    addsnowflakecmds(ESqlStatementType.sstDropResourceMonitor, TBaseType.rrw_drop, "resource", "monitor", " ", " ", " ", " ");
3707    addsnowflakecmds(ESqlStatementType.sstdroprole, TBaseType.rrw_drop, "role", " ", " ", " ", " ", " ");
3708    addsnowflakecmds(ESqlStatementType.sstdropschema, TBaseType.rrw_drop, "schema", " ", " ", " ", " ", " ");
3709    addsnowflakecmds(ESqlStatementType.sstDropShare, TBaseType.rrw_drop, "share", " ", " ", " ", " ", " ");
3710    addsnowflakecmds(ESqlStatementType.sstDropStage, TBaseType.rrw_drop, "stage", " ", " ", " ", " ", " ");
3711    addsnowflakecmds(ESqlStatementType.sstDropStream, TBaseType.rrw_drop, "stream", " ", " ", " ", " ", " ");
3712    addsnowflakecmds(ESqlStatementType.sstDropStreamlit, TBaseType.rrw_drop, "streamlit", " ", " ", " ", " ", " ");
3713    addsnowflakecmds(ESqlStatementType.sstdroptable, TBaseType.rrw_drop, "table", " ", " ", " ", " ", " ");
3714
3715    addsnowflakecmds(ESqlStatementType.sstdropuser, TBaseType.rrw_drop, "user", " ", " ", " ", " ", " ");
3716    addsnowflakecmds(ESqlStatementType.sstdropview, TBaseType.rrw_drop, "view", " ", " ", " ", " ", " ");
3717    addsnowflakecmds(ESqlStatementType.sstDropWarehouse, TBaseType.rrw_drop, "warehouse", " ", " ", " ", " ", " ");
3718
3719    addsnowflakecmds(ESqlStatementType.sstExecute, TBaseType.rrw_execute,  "immediate"," "," "," "," "," ");
3720
3721    addsnowflakecmds(ESqlStatementType.sstGet, TBaseType.rrw_get, " ", " ", " ", " ", " ", " ");
3722
3723    addsnowflakecmds(ESqlStatementType.sstGrant, TBaseType.rrw_grant, " ", " ", " ", " ", " ", " ");
3724
3725    addsnowflakecmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert, " ", " ", " ", " ", " ", " ");
3726
3727    addsnowflakecmds(ESqlStatementType.sstList, TBaseType.rrw_snowflake_list, " ", " ", " ", " ", " ", " ");
3728    addsnowflakecmds(ESqlStatementType.sstList, TBaseType.rrw_snowflake_ls, " ", " ", " ", " ", " ", " ");
3729
3730    addsnowflakecmds(ESqlStatementType.sstmerge, TBaseType.rrw_merge, " ", " ", " ", " ", " ", " ");
3731
3732    addsnowflakecmds(ESqlStatementType.sstSnowflakePseudoExprStmt, TBaseType.rrw_snowflake_pseudo_stmt_sign, " ", " ", " ", " ", " ", " ");
3733    addsnowflakecmds(ESqlStatementType.sstPut, TBaseType.rrw_snowflake_put, " ", " ", " ", " ", " ", " ");
3734
3735    addsnowflakecmds(ESqlStatementType.sstRemove, TBaseType.rrw_snowflake_remove, " ", " ", " ", " ", " ", " ");
3736
3737    addsnowflakecmds(ESqlStatementType.sstRevoke, TBaseType.rrw_revoke, " ", " ", " ", " ", " ", " ");
3738    addsnowflakecmds(ESqlStatementType.sstRemove, TBaseType.rrw_snowflake_rm, " ", " ", " ", " ", " ", " ");
3739    addsnowflakecmds(ESqlStatementType.sstrollback, TBaseType.rrw_rollback, " ", " ", " ", " ", " ", " ");
3740
3741
3742    addsnowflakecmds(ESqlStatementType.sstselect, TBaseType.rrw_select, " ", " ", " ", " ", " ", " ");
3743
3744    addsnowflakecmds(ESqlStatementType.sstset, TBaseType.rrw_set, " ", " ", " ", " ", " ", " ");
3745
3746    addsnowflakecmds(ESqlStatementType.sstShowColumns, TBaseType.rrw_show, "columns", " ", " ", " ", " ", " ");
3747    addsnowflakecmds(ESqlStatementType.sstShowDatabases, TBaseType.rrw_show, "databases", " ", " ", " ", " ", " ");
3748    addsnowflakecmds(ESqlStatementType.sstShowFileFormats, TBaseType.rrw_show, "file", "formats", " ", " ", " ", " ");
3749    addsnowflakecmds(ESqlStatementType.sstShowFunctions, TBaseType.rrw_show, "functions", " ", " ", " ", " ", " ");
3750    addsnowflakecmds(ESqlStatementType.sstShowGrants, TBaseType.rrw_show, "grants", " ", " ", " ", " ", " ");
3751    addsnowflakecmds(ESqlStatementType.sstShowLocks, TBaseType.rrw_show, "locks", " ", " ", " ", " ", " ");
3752    addsnowflakecmds(ESqlStatementType.sstShowNetworkPolicies, TBaseType.rrw_show, "network", "policies", " ", " ", " ", " ");
3753    addsnowflakecmds(ESqlStatementType.sstShowObjects, TBaseType.rrw_show, "objects", " ", " ", " ", " ", " ");
3754    addsnowflakecmds(ESqlStatementType.sstShowParameters, TBaseType.rrw_show, "parameters", " ", " ", " ", " ", " ");
3755    addsnowflakecmds(ESqlStatementType.sstShowPipes, TBaseType.rrw_show, "pipes", " ", " ", " ", " ", " ");
3756    addsnowflakecmds(ESqlStatementType.sstShowProcedures, TBaseType.rrw_show, "procedures", " ", " ", " ", " ", " ");
3757    addsnowflakecmds(ESqlStatementType.sstShowResourceMonitors, TBaseType.rrw_show, "resource", "monitors", " ", " ", " ", " ");
3758    addsnowflakecmds(ESqlStatementType.sstShowRoles, TBaseType.rrw_show, "roles", " ", " ", " ", " ", " ");
3759    addsnowflakecmds(ESqlStatementType.sstShowSchemas, TBaseType.rrw_show, "schemas", " ", " ", " ", " ", " ");
3760    addsnowflakecmds(ESqlStatementType.sstShowSequences, TBaseType.rrw_show, "sequences", " ", " ", " ", " ", " ");
3761    addsnowflakecmds(ESqlStatementType.sstShowShares, TBaseType.rrw_show, "shares", " ", " ", " ", " ", " ");
3762    addsnowflakecmds(ESqlStatementType.sstShowStages, TBaseType.rrw_show, "stages", " ", " ", " ", " ", " ");
3763    addsnowflakecmds(ESqlStatementType.sstShowStreams, TBaseType.rrw_show, "streams", " ", " ", " ", " ", " ");
3764    addsnowflakecmds(ESqlStatementType.sstShowTables, TBaseType.rrw_show, "tables", " ", " ", " ", " ", " ");
3765    addsnowflakecmds(ESqlStatementType.sstShowTasks, TBaseType.rrw_show, "tasks", " ", " ", " ", " ", " ");
3766    addsnowflakecmds(ESqlStatementType.sstShowDatabases, TBaseType.rrw_show, "terse", "databases", " ", " ", " ", " ");
3767    addsnowflakecmds(ESqlStatementType.sstShowStreams, TBaseType.rrw_show, "terse", "streams", " ", " ", " ", " ");
3768    addsnowflakecmds(ESqlStatementType.sstShowTasks, TBaseType.rrw_show, "terse", "tasks", " ", " ", " ", " ");
3769    addsnowflakecmds(ESqlStatementType.sstShowTransactions, TBaseType.rrw_show, "transactions", " ", " ", " ", " ", " ");
3770    addsnowflakecmds(ESqlStatementType.sstShowUserFunctions, TBaseType.rrw_show, "user", "functions", " ", " ", " ", " ");
3771    addsnowflakecmds(ESqlStatementType.sstShowUsers, TBaseType.rrw_show, "users", " ", " ", " ", " ", " ");
3772    addsnowflakecmds(ESqlStatementType.sstShowVariables, TBaseType.rrw_show, "variables", " ", " ", " ", " ", " ");
3773    addsnowflakecmds(ESqlStatementType.sstShowViews, TBaseType.rrw_show, "views", " ", " ", " ", " ", " ");
3774    addsnowflakecmds(ESqlStatementType.sstShowWarehouses, TBaseType.rrw_show, "warehouses", " ", " ", " ", " ", " ");
3775    addsnowflakecmds(ESqlStatementType.sstbegintran, TBaseType.rrw_start, "transaction", " ", " ", " ", " ", " ");
3776    addsnowflakecmds(ESqlStatementType.sstpostgresqlTruncate, TBaseType.rrw_truncate, " ", " ", " ", " ", " ", " ");
3777
3778    addsnowflakecmds(ESqlStatementType.sstUndropDatabase, TBaseType.rrw_snowflake_undrop, "database", " ", " ", " ", " ", " ");
3779    addsnowflakecmds(ESqlStatementType.sstUndropSchema, TBaseType.rrw_snowflake_undrop, "schema", " ", " ", " ", " ", " ");
3780    addsnowflakecmds(ESqlStatementType.sstUndropTable, TBaseType.rrw_snowflake_undrop, "table", " ", " ", " ", " ", " ");
3781
3782    addsnowflakecmds(ESqlStatementType.sstunset, TBaseType.rrw_snowflake_unset, " ", " ", " ", " ", " ", " ");
3783    addsnowflakecmds(ESqlStatementType.sstupdate, TBaseType.rrw_update, " ", " ", " ", " ", " ", " ");
3784    addsnowflakecmds(ESqlStatementType.sstUse, TBaseType.rrw_use, " ", " ", " ", " ", " ", " ");
3785    addsnowflakecmds(ESqlStatementType.sstUseSecondaryRoles, TBaseType.rrw_use, "secondary", "roles", " ", " ", " ", " ");
3786}
3787
3788void initredshiftcmds() {
3789// cmd must be sorted alphabetically
3790    addredshiftcmds(ESqlStatementType.sstredshiftAbort, TBaseType.rrw_abort, " ", " ", " ", " ", " ", " ");
3791    addredshiftcmds(ESqlStatementType.sstredshiftAbort, TBaseType.rrw_abort, "transaction", " ", " ", " ", " ", " ");
3792    addredshiftcmds(ESqlStatementType.sstredshiftAbort, TBaseType.rrw_abort, "work", " ", " ", " ", " ", " ");
3793    addredshiftcmds(ESqlStatementType.sstalterdatabase, TBaseType.rrw_alter, "database", " ", " ", " ", " ", " ");
3794    addredshiftcmds(ESqlStatementType.sstredshiftAlterGroup, TBaseType.rrw_alter, "group", " ", " ", " ", " ", " ");
3795    addredshiftcmds(ESqlStatementType.sstredshiftAlterSchema, TBaseType.rrw_alter, "schema", " ", " ", " ", " ", " ");
3796    addredshiftcmds(ESqlStatementType.sstaltertable, TBaseType.rrw_alter, "table", " ", " ", " ", " ", " ");
3797    addredshiftcmds(ESqlStatementType.sstredshiftAlterUser, TBaseType.rrw_alter, "user", " ", " ", " ", " ", " ");
3798    addredshiftcmds(ESqlStatementType.sstredshiftAnalyze, TBaseType.rrw_analyze, " ", " ", " ", " ", " ", " ");
3799    addredshiftcmds(ESqlStatementType.sstredshiftAnalyzeCompression, TBaseType.rrw_analyze, "Compression", " ", " ", " ", " ", " ");
3800    addredshiftcmds(ESqlStatementType.sstredshiftBegin, TBaseType.rrw_begin, " ", " ", " ", " ", " ", " ");
3801    addredshiftcmds(ESqlStatementType.sstredshiftCancel, TBaseType.rrw_redshift_cancel, " ", " ", " ", " ", " ", " ");
3802    addredshiftcmds(ESqlStatementType.sstcall, TBaseType.rrw_call, " ", " ", " ", " ", " ", " ");
3803
3804    addredshiftcmds(ESqlStatementType.sstredshiftClose, TBaseType.rrw_close, " ", " ", " ", " ", " ", " ");
3805    addredshiftcmds(ESqlStatementType.sstredshiftComment, TBaseType.rrw_comment, "on", " ", " ", " ", " ", " ");
3806    addredshiftcmds(ESqlStatementType.sstredshiftCommit, TBaseType.rrw_commit, " ", " ", " ", " ", " ", " ");
3807    addredshiftcmds(ESqlStatementType.sstredshiftCopy, TBaseType.rrw_redshift_copy, " ", " ", " ", " ", " ", " ");
3808    addredshiftcmds(ESqlStatementType.sstredshiftCreateSchema, TBaseType.rrw_create, "external", "schema", " ", " ", " ", " ");
3809    addredshiftcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "external", "table", " ", " ", " ", " ");
3810    addredshiftcmds(ESqlStatementType.sstcreatedatabase, TBaseType.rrw_create, "database", " ", " ", " ", " ", " ");
3811    addredshiftcmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create, "function", " ", " ", " ", " ", " ");
3812    addredshiftcmds(ESqlStatementType.sstredshiftCreateGroup, TBaseType.rrw_create, "group", " ", " ", " ", " ", " ");
3813    addredshiftcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "local", "table", " ", " ", " ", " ");
3814    addredshiftcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "local","temp", "table", " ", " ", " ");
3815    addredshiftcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "local","temporary", "table", " ", " ", " ");
3816    addredshiftcmds(ESqlStatementType.sstcreatematerializedview, TBaseType.rrw_create,"materialized","view"," "," "," "," ");
3817    addredshiftcmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create, "or", "replace","function", " ", " ", " ");
3818    addredshiftcmds(ESqlStatementType.sstcreatematerializedview, TBaseType.rrw_create,"or", "replace","materialized","view"," "," ");
3819    addredshiftcmds(ESqlStatementType.sstcreateprocedure, TBaseType.rrw_create, "or", "replace","procedure", " ", " ", " ");
3820    addredshiftcmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create, "or", "replace", "view", " ", " ", " ");
3821    addredshiftcmds(ESqlStatementType.sstcreateprocedure, TBaseType.rrw_create, "procedure", " ", " ", " ", " ", " ");
3822    addredshiftcmds(ESqlStatementType.sstredshiftCreateSchema, TBaseType.rrw_create, "schema", " ", " ", " ", " ", " ");
3823    addredshiftcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "table", " ", " ", " ", " ", " ");
3824    addredshiftcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "temp", "table", " ", " ", " ", " ");
3825    addredshiftcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "temporary", "table", " ", " ", " ", " ");
3826    addredshiftcmds(ESqlStatementType.sstredshiftCreateUser, TBaseType.rrw_create, "user", " ", " ", " ", " ", " ");
3827    addredshiftcmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create, "view", " ", " ", " ", " ", " ");
3828    addredshiftcmds(ESqlStatementType.sstredshiftDeallocate, TBaseType.rrw_deallocate, " ", " ", " ", " ", " ", " ");
3829    addredshiftcmds(ESqlStatementType.sstredshiftDeclare, TBaseType.rrw_declare, " ", " ", " ", " ", " ", " ");
3830    addredshiftcmds(ESqlStatementType.sstdelete, TBaseType.rrw_delete, " ", " ", " ", " ", " ", " ");
3831    addredshiftcmds(ESqlStatementType.sstredshiftDropDatabase, TBaseType.rrw_drop, "database", " ", " ", " ", " ", " ");
3832    addredshiftcmds(ESqlStatementType.sstredshiftDropGroup, TBaseType.rrw_drop, "group", " ", " ", " ", " ", " ");
3833    addredshiftcmds(ESqlStatementType.sstredshiftDropSchema, TBaseType.rrw_drop, "schema", " ", " ", " ", " ", " ");
3834    addredshiftcmds(ESqlStatementType.sstdroptable, TBaseType.rrw_drop, "table", " ", " ", " ", " ", " ");
3835    addredshiftcmds(ESqlStatementType.sstredshiftDropUser, TBaseType.rrw_drop, "user", " ", " ", " ", " ", " ");
3836    addredshiftcmds(ESqlStatementType.sstdropview, TBaseType.rrw_drop, "view", " ", " ", " ", " ", " ");
3837    addredshiftcmds(ESqlStatementType.sstredshiftEnd, TBaseType.rrw_end, " ", " ", " ", " ", " ", " ");
3838    addredshiftcmds(ESqlStatementType.sstExecutePreparedStmt, TBaseType.rrw_execute, " ", " ", " ", " ", " ", " ");
3839    addredshiftcmds(ESqlStatementType.sstExplain, TBaseType.rrw_explain, " ", " ", " ", " ", " ", " ");
3840    addredshiftcmds(ESqlStatementType.sstFetchFrom, TBaseType.rrw_fetch, " ", " ", " ", " ", " ", " ");
3841    addredshiftcmds(ESqlStatementType.sstGrant, TBaseType.rrw_grant, " ", " ", " ", " ", " ", " ");
3842    addredshiftcmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert, "into", " ", " ", " ", " ", " ");
3843    addredshiftcmds(ESqlStatementType.sstredshiftLock, TBaseType.rrw_lock, " ", " ", " ", " ", " ", " ");
3844    addredshiftcmds(ESqlStatementType.sstmerge, TBaseType.rrw_merge," "," "," "," "," "," ");
3845
3846    addredshiftcmds(ESqlStatementType.sstredshiftPrepare, TBaseType.rrw_prepare, " ", " ", " ", " ", " ", " ");
3847    addredshiftcmds(ESqlStatementType.sstredshiftReset, TBaseType.rrw_reset, " ", " ", " ", " ", " ", " ");
3848    addredshiftcmds(ESqlStatementType.sstRevoke, TBaseType.rrw_revoke, " ", " ", " ", " ", " ", " ");
3849    addredshiftcmds(ESqlStatementType.sstredshiftRollback, TBaseType.rrw_rollback, " ", " ", " ", " ", " ", " ");
3850    addredshiftcmds(ESqlStatementType.sstselect, TBaseType.rrw_select, " ", " ", " ", " ", " ", " ");
3851    addredshiftcmds(ESqlStatementType.sstredshiftSet, TBaseType.rrw_set, " ", " ", " ", " ", " ", " ");
3852    addredshiftcmds(ESqlStatementType.sstredshiftSetSessionAuthorization, TBaseType.rrw_set, "Authorization", " ", " ", " ", " ", " ");
3853    addredshiftcmds(ESqlStatementType.sstredshiftSetSessionCharacteristics, TBaseType.rrw_set, "Characteristics", " ", " ", " ", " ", " ");
3854    addredshiftcmds(ESqlStatementType.sstredshiftSetSessionAuthorization, TBaseType.rrw_set, "local", "Authorization", " ", " ", " ", " ");
3855    addredshiftcmds(ESqlStatementType.sstredshiftShow, TBaseType.rrw_show, " ", " ", " ", " ", " ", " ");
3856    addredshiftcmds(ESqlStatementType.sstStartTransaction, TBaseType.rrw_start, "Transaction", " ", " ", " ", " ", " ");
3857    addredshiftcmds(ESqlStatementType.sstTruncate, TBaseType.rrw_truncate, " ", " ", " ", " ", " ", " ");
3858    addredshiftcmds(ESqlStatementType.sstredshiftUnload, TBaseType.rrw_redshift_unload, " ", " ", " ", " ", " ", " ");
3859    addredshiftcmds(ESqlStatementType.sstupdate, TBaseType.rrw_update, " ", " ", " ", " ", " ", " ");
3860    addredshiftcmds(ESqlStatementType.sstredshiftVacuum, TBaseType.rrw_redshift_vacuum, " ", " ", " ", " ", " ", " ");
3861}
3862
3863void initgreenplumcmds(){
3864// cmd must be sorted alphabetically
3865    addgreenplumcmds(ESqlStatementType.sstpostgresqlabort, TBaseType.rrw_abort, " ", " ", " ", " ", " ", " ");
3866    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterAggregate, TBaseType.rrw_alter, "aggregate", " ", " ", " ", " ", " ");
3867    //addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterCollation, TBaseType.rrw_alter, "collation", " ", " ", " ", " ", " ");
3868    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterConversion, TBaseType.rrw_alter, "conversion", " ", " ", " ", " ", " ");
3869    addgreenplumcmds(ESqlStatementType.sstpostgresqlalterdatabase, TBaseType.rrw_alter, "database", " ", " ", " ", " ", " ");
3870    //addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterDefaultPrivileges, TBaseType.rrw_alter, "default", "privileges", " ", " ", " ", " ");
3871    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterDomain, TBaseType.rrw_alter, "domain", " ", " ", " ", " ", " ");
3872
3873    addgreenplumcmds(ESqlStatementType.sstgreenplumAlterExternalTable, TBaseType.rrw_alter, "external", "table", " ", " ", " ", " ");
3874    addgreenplumcmds(ESqlStatementType.sstgreenplumAlterFilespace, TBaseType.rrw_alter, "filespace", " ", " ", " ", " ", " ");
3875
3876//    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterEventTrigger, TBaseType.rrw_alter, "event", "trigger", " ", " ", " ", " ");
3877//    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterExtension, TBaseType.rrw_alter, "extension", " ", " ", " ", " ", " ");
3878//    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterForeignDataWrapper, TBaseType.rrw_alter, "foreign", "data", "wrapper", " ", " ", " ");
3879//    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterForeignTable, TBaseType.rrw_alter, "foreign", "Table", " ", " ", " ", " ");
3880
3881    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterfunction, TBaseType.rrw_alter, "function", " ", " ", " ", " ", " ");
3882    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterGroup, TBaseType.rrw_alter, "group", " ", " ", " ", " ", " ");
3883    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterIndex, TBaseType.rrw_alter, "index", " ", " ", " ", " ", " ");
3884    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterLanguage, TBaseType.rrw_alter, "language", " ", " ", " ", " ", " ");
3885//    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterLargeObject, TBaseType.rrw_alter, "large", "object", " ", " ", " ", " ");
3886    //addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterMaterializedView, TBaseType.rrw_alter, "materialized", "view", " ", " ", " ", " ");
3887    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterOperator, TBaseType.rrw_alter, "operator", " ", " ", " ", " ", " ");
3888    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterOperatorClass, TBaseType.rrw_alter, "operator", "class", " ", " ", " ", " ");
3889    //addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterOperatorFamily, TBaseType.rrw_alter, "operator", "family", " ", " ", " ", " ");
3890    //addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterLanguage, TBaseType.rrw_alter, "procedural", "language", " ", " ", " ", " ");
3891    addgreenplumcmds(ESqlStatementType.sstgreenplumAlterProtocol, TBaseType.rrw_alter, "protocol", " ", " ", " ", " ", " ");
3892    addgreenplumcmds(ESqlStatementType.sstgreenplumAlterResourceQueue, TBaseType.rrw_alter, "resource", "queue", " ", " ", " ", " ");
3893    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterRole, TBaseType.rrw_alter, "role", " ", " ", " ", " ", " ");
3894    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterSchema, TBaseType.rrw_alter, "schema", " ", " ", " ", " ", " ");
3895    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterSequence, TBaseType.rrw_alter, "sequence", " ", " ", " ", " ", " ");
3896    //addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterServer, TBaseType.rrw_alter, "server", " ", " ", " ", " ", " ");
3897    addgreenplumcmds(ESqlStatementType.sstaltertable, TBaseType.rrw_alter, "table", " ", " ", " ", " ", " ");
3898    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterTablespace, TBaseType.rrw_alter, "tablespace", " ", " ", " ", " ", " ");
3899
3900//    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterTextSearchConfiguration, TBaseType.rrw_alter, "text", "search", "configuration", " ", " ", " ");
3901//    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterTextSearchDictionary, TBaseType.rrw_alter, "text", "search", "dictionary", " ", " ", " ");
3902//    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterTextSearchParser, TBaseType.rrw_alter, "text", "search", "parser", " ", " ", " ");
3903//    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterTextSearchTemplate, TBaseType.rrw_alter, "text", "search", "template", " ", " ", " ");
3904    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterTrigger, TBaseType.rrw_alter, "trigger", " ", " ", " ", " ", " ");
3905
3906    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterType, TBaseType.rrw_alter, "type", " ", " ", " ", " ", " ");
3907    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterUser, TBaseType.rrw_alter, "user", " ", " ", " ", " ", " ");
3908//    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterUserMapping, TBaseType.rrw_alter, "user", "mapping", " ", " ", " ", " ");
3909//    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterView, TBaseType.rrw_alter, "view", " ", " ", " ", " ", " ");
3910    addgreenplumcmds(ESqlStatementType.sstpostgresqlAnalyze, TBaseType.rrw_greenplum_analyse, " ", " ", " ", " ", " ", " ");
3911    addgreenplumcmds(ESqlStatementType.sstpostgresqlAnalyze, TBaseType.rrw_analyze, " ", " ", " ", " ", " ", " ");
3912
3913    addgreenplumcmds(ESqlStatementType.sstpostgresqlBegin, TBaseType.rrw_begin, " ", " ", " ", " ", " ", " ");
3914    addgreenplumcmds(ESqlStatementType.sstcall, TBaseType.rrw_call, " ", " ", " ", " ", " ", " ");
3915
3916    addgreenplumcmds(ESqlStatementType.sstpostgresqlCheckpoint, TBaseType.rrw_checkpoint, " ", " ", " ", " ", " ", " ");
3917    addgreenplumcmds(ESqlStatementType.sstpostgresqlClose, TBaseType.rrw_close, " ", " ", " ", " ", " ", " ");
3918
3919    addgreenplumcmds(ESqlStatementType.sstpostgresqlCluster, TBaseType.rrw_greenplum_cluster, " ", " ", " ", " ", " ", " ");
3920
3921    addgreenplumcmds(ESqlStatementType.sstpostgresqlComment, TBaseType.rrw_comment, "on", " ", " ", " ", " ", " ");
3922
3923    addgreenplumcmds(ESqlStatementType.sstpostgresqlCommit, TBaseType.rrw_commit, " ", " ", " ", " ", " ", " ");
3924    //addgreenplumcmds(ESqlStatementType.sstpostgresqlCommitPrepared, TBaseType.rrw_commit, "prepared", " ", " ", " ", " ", " ");
3925    addgreenplumcmds(ESqlStatementType.sstpostgresqlCopy, TBaseType.rrw_greenplum_copy, " ", " ", " ", " ", " ", " ");
3926
3927    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateAggregate, TBaseType.rrw_create, "aggregate", " ", " ", " ", " ", " ");
3928    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateCast, TBaseType.rrw_create, "cast", " ", " ", " ", " ", " ");
3929
3930    //addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateCollation, TBaseType.rrw_create, "collation", " ", " ", " ", " ", " ");
3931
3932    addgreenplumcmds(ESqlStatementType.sstcreatetrigger, TBaseType.rrw_create, "constraint", "trigger", " ", " ", " ", " ");
3933
3934    addgreenplumcmds(ESqlStatementType.sstpostgresqlConversion, TBaseType.rrw_create, "conversion", " ", " ", " ", " ", " ");
3935    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateDatabase, TBaseType.rrw_create, "database", " ", " ", " ", " ", " ");
3936    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateDomain, TBaseType.rrw_create, "domain", " ", " ", " ", " ", " ");
3937    //addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateEventTrigger, TBaseType.rrw_create, "event", "trigger", " ", " ", " ", " ");
3938    addgreenplumcmds(ESqlStatementType.sstcreateExtension, TBaseType.rrw_create, "extension", " ", " ", " ", " ", " ");
3939
3940//    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateForeignDataWrapper, TBaseType.rrw_create, "foreign", "data", "wrapper", " ", " ", " ");
3941//    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateForeignTable, TBaseType.rrw_create, "foreign", "table", " ", " ", " ", " ");
3942    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateExternalTable, TBaseType.rrw_create, "external", "table", " ", " ", " ", " ");
3943    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateExternalTable, TBaseType.rrw_create, "external", "temp", "table", " ", " ", " ");
3944    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateExternalTable, TBaseType.rrw_create, "external", "temporary", "table", " ", " ", " ");
3945    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateExternalTable, TBaseType.rrw_create, "external", "web", "table", " ", " ", " ");
3946    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateExternalTable, TBaseType.rrw_create, "external", "web", "temp", "table", " ", " ");
3947    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateExternalTable, TBaseType.rrw_create, "external", "web", "temporary", "table", " ", " ");
3948    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateFilespace, TBaseType.rrw_create, "filespace", " ", " ", " ", " ", " ");
3949
3950    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateFunction, TBaseType.rrw_create, "function", " ", " ", " ", " ", " ");
3951
3952    addgreenplumcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "global", "temp", "table", " ", " ", " ");
3953    addgreenplumcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "global", "temporary", "table", " ", " ", " ");
3954    addgreenplumcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "global", "unlocked", "table", " ", " ", " ");
3955
3956    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateGroup, TBaseType.rrw_create, "group", " ", " ", " ", " ", " ");
3957
3958
3959    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateIndex, TBaseType.rrw_create, "index", " ", " ", " ", " ", " ");
3960    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateLanguage, TBaseType.rrw_create, "language", " ", " ", " ", " ", " ");
3961
3962    addgreenplumcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "local", "temp", "table", " ", " ", " ");
3963    addgreenplumcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "local", "temporary", "table", " ", " ", " ");
3964    addgreenplumcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "local", "unlocked", "table", " ", " ", " ");
3965
3966    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateMaterializedView, TBaseType.rrw_create, "materialized", "view", " ", " ", " ", " ");
3967
3968    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateOperator, TBaseType.rrw_create, "operator", " ", " ", " ", " ", " ");
3969//    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateOperatorClass, TBaseType.rrw_create, "operator", "class", " ", " ", " ", " ");
3970//    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateOperatorFimaly, TBaseType.rrw_create, "operator", "family", " ", " ", " ", " ");
3971
3972    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateExternalTable, TBaseType.rrw_create, "readable", "external", "table", " ", " ", " ");
3973    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateExternalTable, TBaseType.rrw_create, "readable", "external", "temp", "table", " ", " ");
3974    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateExternalTable, TBaseType.rrw_create, "readable", "external", "temporary", "table", " ", " ");
3975    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateExternalTable, TBaseType.rrw_create, "readable","external", "web", "table", " ", " ");
3976    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateExternalTable, TBaseType.rrw_create, "readable","external", "web", "temp", "table", " ");
3977    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateExternalTable, TBaseType.rrw_create, "readable","external", "web", "temporary", "table", " ");
3978    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateExternalTable, TBaseType.rrw_create, "writable", "external", "table", " ", " ", " ");
3979    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateExternalTable, TBaseType.rrw_create, "writable", "external", "temp", "table", " ", " ");
3980    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateExternalTable, TBaseType.rrw_create, "writable", "external", "temporary", "table", " ", " ");
3981    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateExternalTable, TBaseType.rrw_create, "writable","external", "web", "table", " ", " ");
3982    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateExternalTable, TBaseType.rrw_create, "writable","external", "web", "temp", "table", " ");
3983    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateExternalTable, TBaseType.rrw_create, "writable","external", "web", "temporary", "table", " ");
3984
3985    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateResourceQueue, TBaseType.rrw_create, "resource", "queue", " ", " ", " ", " ");
3986
3987    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateFunction, TBaseType.rrw_create, "or", "replace", "function", " ", " ", " ");
3988    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateLanguage, TBaseType.rrw_create, "or", "replace", "language", " ", " ", " ");
3989    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateRole, TBaseType.rrw_create, "or", "replace", "role ", " ", " ", " ");
3990    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateView, TBaseType.rrw_create, "or", "replace", "temp", "view", " ", " ");
3991    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateView, TBaseType.rrw_create, "or", "replace", "temporary", "view", " ", " ");
3992    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateLanguage, TBaseType.rrw_create, "or", "replace", "trusted", "language", " ", " ");
3993    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateView, TBaseType.rrw_create, "or", "replace", "view", " ", " ", " ");
3994
3995    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateRole, TBaseType.rrw_create, "role", " ", " ", " ", " ", " ");
3996    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateRule, TBaseType.rrw_create, "rule", " ", " ", " ", " ", " ");
3997
3998
3999    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateSchema, TBaseType.rrw_create, "schema", " ", " ", " ", " ", " ");
4000
4001    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateSequence, TBaseType.rrw_create, "sequence", " ", " ", " ", " ", " ");
4002
4003
4004    //addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateServer, TBaseType.rrw_create, "server", " ", " ", " ", " ", " ");
4005
4006    addgreenplumcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "table", " ", " ", " ", " ", " ");
4007
4008    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateTablespace, TBaseType.rrw_create, "tablespace", " ", " ", " ", " ", " ");
4009
4010    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateSequence, TBaseType.rrw_create, "temp", "sequence", " ", " ", " ", " ");
4011    addgreenplumcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "temp", "table", " ", " ", " ", " ");
4012    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateView, TBaseType.rrw_create, "temp", "view", " ", " ", " ", " ");
4013    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateSequence, TBaseType.rrw_create, "temporary", "sequence", " ", " ", " ", " ");
4014    addgreenplumcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "temporary", "table", " ", " ", " ", " ");
4015    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateView, TBaseType.rrw_create, "temporary", "view", " ", " ", " ", " ");
4016
4017//    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateTextSearchConfiguration, TBaseType.rrw_create, "text", "search", "configuration", " ", " ", " ");
4018//    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateTextSearchDictionary, TBaseType.rrw_create, "text", "search", "dictionary", " ", " ", " ");
4019//    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateTextSearchParser, TBaseType.rrw_create, "text", "search", "parser", " ", " ", " ");
4020//    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateTextSearchTemplate, TBaseType.rrw_create, "text", "search", "template", " ", " ", " ");
4021
4022    addgreenplumcmds(ESqlStatementType.sstcreatetrigger, TBaseType.rrw_create, "trigger", " ", " ", " ", " ", " ");
4023
4024    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateLanguage, TBaseType.rrw_create, "trusted", "language", " ", " ", " ", " ");
4025
4026    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateType, TBaseType.rrw_create, "type", " ", " ", " ", " ", " ");
4027
4028    addgreenplumcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "unlocked", "table", " ", " ", " ", " ");
4029
4030    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateUser, TBaseType.rrw_create, "user", " ", " ", " ", " ", " ");
4031
4032//    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateUserMapping, TBaseType.rrw_create, "user", "mapping", " ", " ", " ", " ");
4033
4034    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateView, TBaseType.rrw_create, "view", " ", " ", " ", " ", " ");
4035
4036    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateIndex, TBaseType.rrw_create, "unique", "index", " ", " ", " ", " ");
4037
4038    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateExternalTable, TBaseType.rrw_create, "writable", "external", "table", " ", " ", " ");
4039    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateExternalTable, TBaseType.rrw_create, "writable", "external", "web", "table", " ", " ");
4040
4041    addgreenplumcmds(ESqlStatementType.sstpostgresqlDeallocate, TBaseType.rrw_deallocate, " ", " ", " ", " ", " ", " ");
4042
4043    addgreenplumcmds(ESqlStatementType.sstpostgresqlDeclare, TBaseType.rrw_declare, " ", " ", " ", " ", " ", " ");
4044
4045    addgreenplumcmds(ESqlStatementType.sstdelete, TBaseType.rrw_delete, " ", " ", " ", " ", " ", " ");
4046
4047//    addgreenplumcmds(ESqlStatementType.sstpostgresqlDiscard, TBaseType.rrw_discard, " ", " ", " ", " ", " ", " ");
4048    addgreenplumcmds(ESqlStatementType.sstpostgresqlDo, TBaseType.rrw_do, " ", " ", " ", " ", " ", " ");
4049
4050    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropAggregate, TBaseType.rrw_drop, "aggregate", " ", " ", " ", " ", " ");
4051
4052    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropCast, TBaseType.rrw_drop, "cast", " ", " ", " ", " ", " ");
4053
4054//    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropCollation, TBaseType.rrw_drop, "collation", " ", " ", " ", " ", " ");
4055
4056    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropConversion, TBaseType.rrw_drop, "conversion", " ", " ", " ", " ", " ");
4057
4058    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropDatabase, TBaseType.rrw_drop, "database", " ", " ", " ", " ", " ");
4059
4060    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropDomain, TBaseType.rrw_drop, "domain", " ", " ", " ", " ", " ");
4061
4062    addgreenplumcmds(ESqlStatementType.sstgreenplumDropExternalTable, TBaseType.rrw_drop, "external", "table", " ", " ", " ", " ");
4063
4064    addgreenplumcmds(ESqlStatementType.sstgreenplumDropExternalTable, TBaseType.rrw_drop, "external", "web", "table", " ", " ", " ");
4065
4066    addgreenplumcmds(ESqlStatementType.sstgreenplumDropFilespace, TBaseType.rrw_drop, "filespace", " ", " ", " ", " ", " ");
4067
4068//    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropExtension, TBaseType.rrw_drop, "extension", " ", " ", " ", " ", " ");
4069//    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropForeignDataWrapper, TBaseType.rrw_drop, "foreign", "data", "wrapper", " ", " ", " ");
4070//    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropForeignTable, TBaseType.rrw_drop, "foreign", "table", " ", " ", " ", " ");
4071
4072    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropFunction, TBaseType.rrw_drop, "function", " ", " ", " ", " ", " ");
4073
4074    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropGroup, TBaseType.rrw_drop, "group", " ", " ", " ", " ", " ");
4075
4076    addgreenplumcmds(ESqlStatementType.sstdropindex, TBaseType.rrw_drop, "index", " ", " ", " ", " ", " ");
4077
4078    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropLanguage, TBaseType.rrw_drop, "language", " ", " ", " ", " ", " ");
4079
4080    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropMaterializedView, TBaseType.rrw_drop, "materialized", "view", " ", " ", " ", " ");
4081
4082    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropOperator, TBaseType.rrw_drop, "operator", " ", " ", " ", " ", " ");
4083//    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropOperatorClass, TBaseType.rrw_drop, "operator", "class", " ", " ", " ", " ");
4084//    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropOperatorFamily, TBaseType.rrw_drop, "operator", "family ", " ", " ", " ", " ");
4085
4086    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropOwned, TBaseType.rrw_drop, "owned", " ", " ", " ", " ", " ");
4087
4088
4089    addgreenplumcmds(ESqlStatementType.sstgreenplumDropResourceQueue, TBaseType.rrw_drop, "resource", "queue", " ", " ", " ", " ");
4090    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropLanguage, TBaseType.rrw_drop, "procedural", "language", " ", " ", " ", " ");
4091
4092    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropRole, TBaseType.rrw_drop, "role", " ", " ", " ", " ", " ");
4093    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropRule, TBaseType.rrw_drop, "rule", " ", " ", " ", " ", " ");
4094    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropSchema, TBaseType.rrw_drop, "schema", " ", " ", " ", " ", " ");
4095    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropSequence, TBaseType.rrw_drop, "sequence", " ", " ", " ", " ", " ");
4096    //addgreenplumcmds(ESqlStatementType.sstpostgresqlDropServer, TBaseType.rrw_drop, "server", " ", " ", " ", " ", " ");
4097    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropTable, TBaseType.rrw_drop, "table", " ", " ", " ", " ", " ");
4098    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropTablespace, TBaseType.rrw_drop, "tablespace", " ", " ", " ", " ", " ");
4099
4100//    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropTextSearchConfiguration, TBaseType.rrw_drop, "text", "search", "configuration", " ", " ", " ");
4101//    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropTextSearchDictionary, TBaseType.rrw_drop, "text", "search", "dictionary", " ", " ", " ");
4102//    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropTextSearchParser, TBaseType.rrw_drop, "text", "search", "parser", " ", " ", " ");
4103//    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropTextSearchTemplate, TBaseType.rrw_drop, "text", "search", "template", " ", " ", " ");
4104
4105    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropTrigger, TBaseType.rrw_drop, "trigger", " ", " ", " ", " ", " ");
4106    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropType, TBaseType.rrw_drop, "type", " ", " ", " ", " ", " ");
4107    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropUser, TBaseType.rrw_drop, "user", " ", " ", " ", " ", " ");
4108    //addgreenplumcmds(ESqlStatementType.sstpostgresqlDropUserMapping, TBaseType.rrw_drop, "user", "mapping", " ", " ", " ", " ");
4109    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropView, TBaseType.rrw_drop, "view", " ", " ", " ", " ", " ");
4110
4111    addgreenplumcmds(ESqlStatementType.sstpostgresqlEnd, TBaseType.rrw_end, " ", " ", " ", " ", " ", " ");
4112
4113    addgreenplumcmds(ESqlStatementType.sstpostgresqlExecute, TBaseType.rrw_execute, " ", " ", " ", " ", " ", " ");
4114
4115    addgreenplumcmds(ESqlStatementType.sstpostgresqlExplain, TBaseType.rrw_explain, " ", " ", " ", " ", " ", " ");
4116
4117    addgreenplumcmds(ESqlStatementType.sstFetchFrom, TBaseType.rrw_fetch, " ", " ", " ", " ", " ", " ");
4118
4119    addgreenplumcmds(ESqlStatementType.sstpostgresqlGrant, TBaseType.rrw_grant, " ", " ", " ", " ", " ", " ");
4120
4121    addgreenplumcmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert, " ", " ", " ", " ", " ", " ");
4122
4123//    addgreenplumcmds(ESqlStatementType.sstpostgresqlListen, TBaseType.rrw_listen, " ", " ", " ", " ", " ", " ");
4124
4125    addgreenplumcmds(ESqlStatementType.sstpostgresqlLoad, TBaseType.rrw_load, " ", " ", " ", " ", " ", " ");
4126
4127    addgreenplumcmds(ESqlStatementType.sstpostgresqlLock, TBaseType.rrw_lock, " ", " ", " ", " ", " ", " ");
4128
4129    addgreenplumcmds(ESqlStatementType.sstpostgresqlMove, TBaseType.rrw_move, " ", " ", " ", " ", " ", " ");
4130
4131    //addgreenplumcmds(ESqlStatementType.sstpostgresqlNotify, TBaseType.rrw_notify, " ", " ", " ", " ", " ", " ");
4132
4133    addgreenplumcmds(ESqlStatementType.sstpostgresqlPrepare, TBaseType.rrw_prepare, " ", " ", " ", " ", " ", " ");
4134
4135//    addgreenplumcmds(ESqlStatementType.sstpostgresqlPrepareTransaction, TBaseType.rrw_prepare, "transaction", " ", " ", " ", " ", " ");
4136
4137    addgreenplumcmds(ESqlStatementType.sstpostgresqlReassignOwned, TBaseType.rrw_greenplum_reassign, "owned", " ", " ", " ", " ", " ");
4138
4139    addgreenplumcmds(ESqlStatementType.sstpostgresqlRefreshMaterializedView, TBaseType.rrw_refresh, "materialized", "view", " ", " ", " ", " ");
4140
4141    addgreenplumcmds(ESqlStatementType.sstpostgresqlReindex, TBaseType.rrw_greenplum_reindex, " ", " ", " ", " ", " ", " ");
4142
4143    addgreenplumcmds(ESqlStatementType.sstpostgresqlReleaseSavepoint, TBaseType.rrw_release, " ", " ", " ", " ", " ", " ");
4144    addgreenplumcmds(ESqlStatementType.sstpostgresqlReleaseSavepoint, TBaseType.rrw_release, "savepoint", " ", " ", " ", " ", " ");
4145
4146    addgreenplumcmds(ESqlStatementType.sstpostgresqlReset, TBaseType.rrw_reset, " ", " ", " ", " ", " ", " ");
4147
4148    addgreenplumcmds(ESqlStatementType.sstpostgresqlRevoke, TBaseType.rrw_revoke, " ", " ", " ", " ", " ", " ");
4149
4150    addgreenplumcmds(ESqlStatementType.sstpostgresqlRollback, TBaseType.rrw_rollback, " ", " ", " ", " ", " ", " ");
4151//    addgreenplumcmds(ESqlStatementType.sstpostgresqlRollbackPrepared, TBaseType.rrw_rollback, "prepared", " ", " ", " ", " ", " ");
4152
4153    addgreenplumcmds(ESqlStatementType.sstpostgresqlSavepoint, TBaseType.rrw_savepoint, " ", " ", " ", " ", " ", " ");
4154
4155//    addgreenplumcmds(ESqlStatementType.sstpostgresqlSecurityLabel, TBaseType.rrw_security, "label", " ", " ", " ", " ", " ");
4156
4157    addgreenplumcmds(ESqlStatementType.sstselect, TBaseType.rrw_select, " ", " ", " ", " ", " ", " ");
4158
4159    addgreenplumcmds(ESqlStatementType.sstpostgresqlSet, TBaseType.rrw_set, " ", " ", " ", " ", " ", " ");
4160
4161//    addgreenplumcmds(ESqlStatementType.sstpostgresqlSetConstraints, TBaseType.rrw_set, "constraints", " ", " ", " ", " ", " ");
4162    addgreenplumcmds(ESqlStatementType.sstpostgresqlSetRole, TBaseType.rrw_set, "local", "role", " ", " ", " ", " ");
4163    addgreenplumcmds(ESqlStatementType.sstpostgresqlSetSessionAuthorization, TBaseType.rrw_set, "local", "session", "authorization", " ", " ", " ");
4164    addgreenplumcmds(ESqlStatementType.sstpostgresqlSetRole, TBaseType.rrw_set, "role", " ", " ", " ", " ", " ");
4165
4166    addgreenplumcmds(ESqlStatementType.sstpostgresqlSetSessionAuthorization, TBaseType.rrw_set, "session", "authorization", " ", " ", " ", " ");
4167    addgreenplumcmds(ESqlStatementType.sstpostgresqlSetTransaction, TBaseType.rrw_set, "session", "characteristics", "as", "transaction", " ", " ");
4168    addgreenplumcmds(ESqlStatementType.sstpostgresqlSetRole, TBaseType.rrw_set, "session", "role", " ", " ", " ", " ");
4169    addgreenplumcmds(ESqlStatementType.sstpostgresqlSetSessionAuthorization, TBaseType.rrw_set, "session", "session", "authorization", " ", " ", " ");
4170
4171    addgreenplumcmds(ESqlStatementType.sstpostgresqlSetTransaction, TBaseType.rrw_set, "transaction", " ", " ", " ", " ", " ");
4172
4173    addgreenplumcmds(ESqlStatementType.sstgreenplumShow, TBaseType.rrw_show, " ", " ", " ", " ", " ", " ");
4174
4175    addgreenplumcmds(ESqlStatementType.sstgreenplumStartTransaction, TBaseType.rrw_start, "transaction", " ", " ", " ", " ", " ");
4176
4177    addgreenplumcmds(ESqlStatementType.sstpostgresqlTruncate, TBaseType.rrw_truncate, " ", " ", " ", " ", " ", " ");
4178
4179    //addgreenplumcmds(ESqlStatementType.sstpostgresqlUnlisten, TBaseType.rrw_unlisten, " ", " ", " ", " ", " ", " ");
4180
4181    addgreenplumcmds(ESqlStatementType.sstupdate, TBaseType.rrw_update, " ", " ", " ", " ", " ", " ");
4182
4183    addgreenplumcmds(ESqlStatementType.sstgreenplumVacuum, TBaseType.rrw_greenplum_vacuum, " ", " ", " ", " ", " ", " ");
4184    addgreenplumcmds(ESqlStatementType.sstValues, TBaseType.rrw_values, " ", " ", " ", " ", " ", " ");
4185
4186}
4187
4188
4189void initoraclecmds(){
4190// cmd must be sort alphabetically
4191    addoraclecmds(ESqlStatementType.sstoraclealtercluster, TBaseType.rrw_alter,"cluster"," "," "," "," "," ");
4192    addoraclecmds(ESqlStatementType.sstoraclealterdatabase, TBaseType.rrw_alter,"database"," "," "," "," "," ");
4193    addoraclecmds(ESqlStatementType.sstoraclealterdimension, TBaseType.rrw_alter,"dimension"," "," "," "," "," ");
4194    addoraclecmds(ESqlStatementType.sstoraclealterdiskgroup, TBaseType.rrw_alter,"diskgroup"," "," "," "," "," ");
4195    addoraclecmds(ESqlStatementType.sstoraclealterfunction, TBaseType.rrw_alter,"function"," "," "," "," "," ");
4196    addoraclecmds(ESqlStatementType.sstoraclealterindex, TBaseType.rrw_alter,"index"," "," "," "," "," ");
4197    addoraclecmds(ESqlStatementType.sstoraclealterindextype, TBaseType.rrw_alter,"indextype"," "," "," "," "," ");
4198    addoraclecmds(ESqlStatementType.sstoraclealterjava, TBaseType.rrw_alter,"java"," "," "," "," "," ");
4199    addoraclecmds(ESqlStatementType.sstAlterMaterializedView, TBaseType.rrw_alter,"materialized","view"," "," "," "," ");
4200    addoraclecmds(ESqlStatementType.sstoraclealtermaterializedviewlog, TBaseType.rrw_alter,"materialized","view","log"," "," "," ");
4201    addoraclecmds(ESqlStatementType.sstoraclealteroperator, TBaseType.rrw_alter,"operator"," "," "," "," "," ");
4202    addoraclecmds(ESqlStatementType.sstoraclealteroutline, TBaseType.rrw_alter,"outline"," "," "," "," "," ");
4203    addoraclecmds(ESqlStatementType.sstoraclealterpackage, TBaseType.rrw_alter,"package"," "," "," "," "," ");
4204    addoraclecmds(ESqlStatementType.sstoraclealterprocedure, TBaseType.rrw_alter,"procedure"," "," "," "," "," ");
4205    addoraclecmds(ESqlStatementType.sstoraclealterprofile, TBaseType.rrw_alter,"profile"," "," "," "," "," ");
4206    addoraclecmds(ESqlStatementType.sstoraclealterresourcecost, TBaseType.rrw_alter,"resource","cost"," "," "," "," ");
4207    addoraclecmds(ESqlStatementType.sstoraclealterrole, TBaseType.rrw_alter,"role"," "," "," "," "," ");
4208    addoraclecmds(ESqlStatementType.sstoraclealterrollbacksegment, TBaseType.rrw_alter,"rollback","segment"," "," "," "," ");
4209    addoraclecmds(ESqlStatementType.sstoraclealtersequence, TBaseType.rrw_alter,"sequence"," "," "," "," "," ");
4210    addoraclecmds(ESqlStatementType.sstoraclealtersession, TBaseType.rrw_alter,"session"," "," "," "," "," ");
4211    addoraclecmds(ESqlStatementType.sstoraclealtersystem, TBaseType.rrw_alter,"system"," "," "," "," "," ");
4212    addoraclecmds(ESqlStatementType.sstaltertable, TBaseType.rrw_alter,"table"," "," "," "," "," ");
4213    addoraclecmds(ESqlStatementType.sstoraclealtertablespace, TBaseType.rrw_alter,"tablespace"," "," "," "," "," ");
4214    addoraclecmds(ESqlStatementType.sstaltertrigger, TBaseType.rrw_alter,"trigger"," "," "," "," "," ");
4215    addoraclecmds(ESqlStatementType.sstoraclealtertype, TBaseType.rrw_alter,"type"," "," "," "," "," ");
4216    addoraclecmds(ESqlStatementType.sstoraclealteruser, TBaseType.rrw_alter,"user"," "," "," "," "," ");
4217    addoraclecmds(ESqlStatementType.sstoraclealterview, TBaseType.rrw_alter,"view"," "," "," "," "," ");
4218    addoraclecmds(ESqlStatementType.sstoracleanalyze, TBaseType.rrw_analyze," "," "," "," "," "," ");
4219    addoraclecmds(ESqlStatementType.sstoracleassociatestatistics, TBaseType.rrw_associate,"statistics"," "," "," "," "," ");
4220    addoraclecmds(ESqlStatementType.sstoracleaudit, TBaseType.rrw_audit," "," "," "," "," "," ");
4221    addoraclecmds(ESqlStatementType.sstoraclecall, TBaseType.rrw_call," "," "," "," "," "," ");
4222    addoraclecmds(ESqlStatementType.sstCommentOn, TBaseType.rrw_comment," "," "," "," "," "," ");
4223    addoraclecmds(ESqlStatementType.sstoraclecommit, TBaseType.rrw_commit," "," "," "," "," "," ");
4224    addoraclecmds(ESqlStatementType.sstoraclecreatetablespace, TBaseType.rrw_create,"bigfile","tablespace"," "," "," "," ");
4225    addoraclecmds(ESqlStatementType.sstoraclecreateindex, TBaseType.rrw_create,"bitmap","index"," "," "," "," ");
4226    addoraclecmds(ESqlStatementType.sstoraclecreatecluster, TBaseType.rrw_create,"cluster"," "," "," "," "," ");
4227    addoraclecmds(ESqlStatementType.sstoraclecreatecontext, TBaseType.rrw_create,"context"," "," "," "," "," ");
4228    addoraclecmds(ESqlStatementType.sstoraclecreatecontrolfile, TBaseType.rrw_create,"controlfile"," "," "," "," "," ");
4229    addoraclecmds(ESqlStatementType.sstplsql_createfunction, TBaseType.rrw_create,"editionable","function"," "," "," "," ");
4230    addoraclecmds(ESqlStatementType.sstplsql_createpackage, TBaseType.rrw_create,"editionable","package"," "," "," "," ");
4231    addoraclecmds(ESqlStatementType.sstoraclecreatepackagebody, TBaseType.rrw_create,"editionable","package","body"," "," "," ");
4232    addoraclecmds(ESqlStatementType.sstplsql_createprocedure, TBaseType.rrw_create,"editionable","procedure"," "," "," "," ");
4233    addoraclecmds(ESqlStatementType.sstoraclecreateview, TBaseType.rrw_create,"editioning","view"," "," "," "," ");
4234    addoraclecmds(ESqlStatementType.sstoraclecreatedatabase, TBaseType.rrw_create,"database"," "," "," "," "," ");
4235    addoraclecmds(ESqlStatementType.sstoraclecreatedatabaselink, TBaseType.rrw_create,"database","link"," "," "," "," ");
4236    addoraclecmds(ESqlStatementType.sstoraclecreatedimension, TBaseType.rrw_create,"dimension"," "," "," "," "," ");
4237    addoraclecmds(ESqlStatementType.sstoraclecreatedirectory, TBaseType.rrw_create,"directory"," "," "," "," "," ");
4238    addoraclecmds(ESqlStatementType.sstoraclecreatediskgroup, TBaseType.rrw_create,"diskgroup"," "," "," "," "," ");
4239    addoraclecmds(ESqlStatementType.sstoraclecreateview, TBaseType.rrw_create,"force","view"," "," "," "," ");
4240    addoraclecmds(ESqlStatementType.sstplsql_createfunction, TBaseType.rrw_create,"function"," "," "," "," "," ");
4241    addoraclecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"global","temp","table"," "," "," ");
4242    addoraclecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"global","temporary","table"," "," "," ");
4243    addoraclecmds(ESqlStatementType.sstoraclecreateindex, TBaseType.rrw_create,"index"," "," "," "," "," ");
4244    addoraclecmds(ESqlStatementType.sstoraclecreateindextype, TBaseType.rrw_create,"indextype"," "," "," "," "," ");
4245    addoraclecmds(ESqlStatementType.sstoraclecreatejava, TBaseType.rrw_create,"java"," "," "," "," "," ");
4246    addoraclecmds(ESqlStatementType.sstoraclecreatelibrary, TBaseType.rrw_create,"library"," "," "," "," "," ");
4247    addoraclecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"local","temp","table"," "," "," ");
4248    addoraclecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"local","temporary","table"," "," "," ");
4249    addoraclecmds(ESqlStatementType.sstcreatematerializedview, TBaseType.rrw_create,"materialized","view"," "," "," "," ");
4250    addoraclecmds(ESqlStatementType.sstoraclecreatematerializedviewlog, TBaseType.rrw_create, "materialized","view","log"," "," "," ");
4251    addoraclecmds(ESqlStatementType.sstoraclecreateview, TBaseType.rrw_create,"noforce","view"," "," "," "," ");
4252    addoraclecmds(ESqlStatementType.sstplsql_createfunction, TBaseType.rrw_create,"noneditionable","function"," "," "," "," ");
4253    addoraclecmds(ESqlStatementType.sstplsql_createpackage, TBaseType.rrw_create,"noneditionable","package"," "," "," "," ");
4254    addoraclecmds(ESqlStatementType.sstoraclecreatepackagebody, TBaseType.rrw_create,"noneditionable","package","body"," "," "," ");
4255    addoraclecmds(ESqlStatementType.sstplsql_createprocedure, TBaseType.rrw_create,"noneditionable","procedure"," "," "," "," ");
4256    addoraclecmds(ESqlStatementType.sstoraclecreateoperator, TBaseType.rrw_create,"operator"," "," "," "," "," ");
4257    addoraclecmds(ESqlStatementType.sstoraclecreatecontext, TBaseType.rrw_create,"or","replace","context"," "," "," ");
4258    addoraclecmds(ESqlStatementType.sstoraclecreateview, TBaseType.rrw_create,"or","replace","editionable","editioning","view"," ");
4259    addoraclecmds(ESqlStatementType.sstplsql_createfunction, TBaseType.rrw_create,"or","replace","editionable","function"," "," ");
4260    addoraclecmds(ESqlStatementType.sstplsql_createpackage, TBaseType.rrw_create,"or","replace","editionable","package"," "," ");
4261    addoraclecmds(ESqlStatementType.sstoraclecreatepackagebody, TBaseType.rrw_create,"or","replace","editionable","package","body"," ");
4262    addoraclecmds(ESqlStatementType.sstplsql_createprocedure, TBaseType.rrw_create,"or","replace","editionable","procedure"," "," ");
4263    addoraclecmds(ESqlStatementType.sstplsql_createtrigger, TBaseType.rrw_create,"or","replace","editionable","trigger"," "," ");
4264    addoraclecmds(ESqlStatementType.sstoraclecreateview, TBaseType.rrw_create,"or","replace","editionable","view"," "," ");
4265    addoraclecmds(ESqlStatementType.sstoraclecreateview, TBaseType.rrw_create,"or","replace","editioning","view"," "," ");
4266    addoraclecmds(ESqlStatementType.sstoraclecreatedirectory, TBaseType.rrw_create,"or","replace","directory"," "," "," ");
4267    addoraclecmds(ESqlStatementType.sstoraclecreateview, TBaseType.rrw_create,"or","replace","force","view"," "," ");
4268    addoraclecmds(ESqlStatementType.sstoraclecreateview, TBaseType.rrw_create,"or","replace","force","editionable","view"," ");
4269    addoraclecmds(ESqlStatementType.sstoraclecreateview, TBaseType.rrw_create,"or","replace","force","editionable","editioning","view");
4270    addoraclecmds(ESqlStatementType.sstoraclecreateview, TBaseType.rrw_create,"or","replace","force","editioning","view"," ");
4271    addoraclecmds(ESqlStatementType.sstoraclecreateview, TBaseType.rrw_create,"or","replace","force","noneditionable","view"," ");
4272    addoraclecmds(ESqlStatementType.sstplsql_createfunction, TBaseType.rrw_create,"or","replace","function"," "," "," ");
4273    addoraclecmds(ESqlStatementType.sstoraclecreatelibrary, TBaseType.rrw_create,"or","replace","library"," "," "," ");
4274    addoraclecmds(ESqlStatementType.sstoraclecreateview, TBaseType.rrw_create,"or","replace","noforce","view"," "," ");
4275    addoraclecmds(ESqlStatementType.sstplsql_createfunction, TBaseType.rrw_create,"or","replace","noneditionable","function"," "," ");
4276    addoraclecmds(ESqlStatementType.sstplsql_createpackage, TBaseType.rrw_create,"or","replace","noneditionable","package"," "," ");
4277    addoraclecmds(ESqlStatementType.sstoraclecreatepackagebody, TBaseType.rrw_create,"or","replace","noneditionable","package","body"," ");
4278    addoraclecmds(ESqlStatementType.sstplsql_createprocedure, TBaseType.rrw_create,"or","replace","noneditionable","procedure"," "," ");
4279    addoraclecmds(ESqlStatementType.sstoraclecreatesynonym, TBaseType.rrw_create,"or","replace","noneditionable","public","synonym"," ");
4280    addoraclecmds(ESqlStatementType.sstplsql_createtrigger, TBaseType.rrw_create,"or","replace","noneditionable","trigger"," "," ");
4281    addoraclecmds(ESqlStatementType.sstoraclecreateview, TBaseType.rrw_create,"or","replace","noneditionable","view"," "," ");
4282    addoraclecmds(ESqlStatementType.sstplsql_createpackage, TBaseType.rrw_create,"or","replace","package"," "," "," ");
4283    addoraclecmds(ESqlStatementType.sstoraclecreatepackagebody, TBaseType.rrw_create,"or","replace","package","body"," "," ");
4284    addoraclecmds(ESqlStatementType.sstplsql_createprocedure, TBaseType.rrw_create,"or","replace","procedure"," "," "," ");
4285    addoraclecmds(ESqlStatementType.sstoraclecreatesynonym, TBaseType.rrw_create,"or","replace","public","synonym"," "," ");
4286    addoraclecmds(ESqlStatementType.sstoraclecreatesynonym, TBaseType.rrw_create,"or","replace","synonym"," "," "," ");
4287    addoraclecmds(ESqlStatementType.sstplsql_createtrigger, TBaseType.rrw_create,"or","replace","trigger"," "," "," ");
4288    addoraclecmds(ESqlStatementType.sstplsql_createtype_placeholder, TBaseType.rrw_create,"or","replace","type"," "," "," ");
4289    addoraclecmds(ESqlStatementType.sstplsql_createtypebody, TBaseType.rrw_create,"or","replace","type","body"," "," ");
4290    addoraclecmds(ESqlStatementType.sstoraclecreateview, TBaseType.rrw_create,"or","replace","view"," "," "," ");
4291    addoraclecmds(ESqlStatementType.sstoraclecreateoutline, TBaseType.rrw_create,"outline"," "," "," "," "," ");
4292    addoraclecmds(ESqlStatementType.sstplsql_createpackage, TBaseType.rrw_create,"package"," "," "," "," "," ");
4293    addoraclecmds(ESqlStatementType.sstoraclecreatepackagebody, TBaseType.rrw_create,"package","body"," "," "," "," ");
4294    addoraclecmds(ESqlStatementType.sstoraclecreatepfile, TBaseType.rrw_create,"pfile"," "," "," "," "," ");
4295    addoraclecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"private","temporary","table"," "," "," ");
4296    addoraclecmds(ESqlStatementType.sstplsql_createprocedure, TBaseType.rrw_create,"procedure"," "," "," "," "," ");
4297    addoraclecmds(ESqlStatementType.sstoraclecreateprofile, TBaseType.rrw_create,"profile"," "," "," "," "," ");
4298    addoraclecmds(ESqlStatementType.sstoraclecreatedatabaselink, TBaseType.rrw_create,"public","database","link"," "," "," ");
4299    addoraclecmds(ESqlStatementType.sstoraclecreatesynonym, TBaseType.rrw_create,"public","synonym"," "," "," "," ");
4300    addoraclecmds(ESqlStatementType.sstoraclecreaterestorepoint, TBaseType.rrw_create,"resotre","point"," "," "," "," ");
4301    addoraclecmds(ESqlStatementType.sstoraclecreaterole, TBaseType.rrw_create,"role"," "," "," "," "," ");
4302    addoraclecmds(ESqlStatementType.sstoraclecreaterollbacksegment, TBaseType.rrw_create,"rollback","segment"," "," "," "," ");
4303    addoraclecmds(ESqlStatementType.sstoraclecreatedatabaselink, TBaseType.rrw_create,"shared","database","link"," "," "," ");
4304    addoraclecmds(ESqlStatementType.sstoraclecreatedatabaselink, TBaseType.rrw_create,"shared","public","database","link"," "," ");
4305    addoraclecmds(ESqlStatementType.sstoraclecreateschema, TBaseType.rrw_create,"schema"," "," "," "," "," ");
4306    addoraclecmds(ESqlStatementType.sstoraclecreatesequence, TBaseType.rrw_create,"sequence"," "," "," "," "," ");
4307    addoraclecmds(ESqlStatementType.sstoraclecreatetablespace, TBaseType.rrw_create,"smallfile","tablespace"," "," "," "," ");
4308    addoraclecmds(ESqlStatementType.sstoraclecreatespfile, TBaseType.rrw_create,"spfile"," "," "," "," "," ");
4309    addoraclecmds(ESqlStatementType.sstoraclecreatesynonym, TBaseType.rrw_create,"synonym"," "," "," "," "," ");
4310    addoraclecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"table"," "," "," "," "," ");
4311    addoraclecmds(ESqlStatementType.sstoraclecreatetablespace, TBaseType.rrw_create,"tablespace"," "," "," "," "," ");
4312    addoraclecmds(ESqlStatementType.sstoraclecreatetablespace, TBaseType.rrw_create,"temporary","tablespace"," "," "," "," ");
4313    addoraclecmds(ESqlStatementType.sstplsql_createtrigger, TBaseType.rrw_create,"trigger"," "," "," "," "," ");
4314    addoraclecmds(ESqlStatementType.sstplsql_createtype_placeholder, TBaseType.rrw_create,"type"," "," "," "," "," ");
4315    addoraclecmds(ESqlStatementType.sstplsql_createtypebody, TBaseType.rrw_create,"type","body"," "," "," "," ");
4316    addoraclecmds(ESqlStatementType.sstoraclecreatetablespace, TBaseType.rrw_create,"undo","tablespace"," "," "," "," ");
4317    addoraclecmds(ESqlStatementType.sstoraclecreateindex, TBaseType.rrw_create,"unique","index"," "," "," "," ");
4318    addoraclecmds(ESqlStatementType.sstoraclecreateuser, TBaseType.rrw_create,"user"," "," "," "," "," ");
4319    addoraclecmds(ESqlStatementType.sstoraclecreateview, TBaseType.rrw_create,"view"," "," "," "," "," ");
4320    addoraclecmds(ESqlStatementType.sstplsql_createpackage, TBaseType.rrw_custom,"package"," "," "," "," "," ");
4321    addoraclecmds(ESqlStatementType.sstoraclecreatepackagebody, TBaseType.rrw_custom,"package","body"," "," "," "," ");
4322    addoraclecmds(ESqlStatementType.sstdelete, TBaseType.rrw_delete," "," "," "," "," "," ");
4323    addoraclecmds(ESqlStatementType.sstoracledisassociatestatistics, TBaseType.rrw_disassociate, "statistics"," "," "," "," "," ");
4324    addoraclecmds(ESqlStatementType.sstoracledropcluster, TBaseType.rrw_drop,"cluster"," "," "," "," "," ");
4325    addoraclecmds(ESqlStatementType.sstoracledropcontext, TBaseType.rrw_drop,"context"," "," "," "," "," ");
4326    addoraclecmds(ESqlStatementType.sstoracledropdatabase, TBaseType.rrw_drop,"database"," "," "," "," "," ");
4327    addoraclecmds(ESqlStatementType.sstoracledropdatabaselink, TBaseType.rrw_drop,"database","link"," "," "," "," ");
4328    addoraclecmds(ESqlStatementType.sstoracledropdimension, TBaseType.rrw_drop,"dimension"," "," "," "," "," ");
4329    addoraclecmds(ESqlStatementType.sstoracledropdirectory, TBaseType.rrw_drop,"directory"," "," "," "," "," ");
4330    addoraclecmds(ESqlStatementType.sstoracledropdiskgroup, TBaseType.rrw_drop,"diskgroup"," "," "," "," "," ");
4331    addoraclecmds(ESqlStatementType.sstoracledropfunction, TBaseType.rrw_drop,"function"," "," "," "," "," ");
4332    addoraclecmds(ESqlStatementType.sstoracledropindex, TBaseType.rrw_drop,"index"," "," "," "," "," ");
4333    addoraclecmds(ESqlStatementType.sstoracledropindextype, TBaseType.rrw_drop,"indextype"," "," "," "," "," ");
4334    addoraclecmds(ESqlStatementType.sstoracledropjava, TBaseType.rrw_drop,"java"," "," "," "," "," ");
4335    addoraclecmds(ESqlStatementType.sstoracledroplibrary, TBaseType.rrw_drop,"library"," "," "," "," "," ");
4336    addoraclecmds(ESqlStatementType.sstoracledropmaterializedview, TBaseType.rrw_drop,"materialized","view"," "," "," "," ");
4337    addoraclecmds(ESqlStatementType.sstoracledropmaterializedviewlog, TBaseType.rrw_drop,"materialized","view","log"," "," "," ");
4338    addoraclecmds(ESqlStatementType.sstoracledropoperator, TBaseType.rrw_drop,"operator"," "," "," "," "," ");
4339    addoraclecmds(ESqlStatementType.sstoracledropoutline, TBaseType.rrw_drop,"outline"," "," "," "," "," ");
4340    addoraclecmds(ESqlStatementType.sstoracledroppackage, TBaseType.rrw_drop,"package"," "," "," "," "," ");
4341    addoraclecmds(ESqlStatementType.sstoracledropprocedure, TBaseType.rrw_drop,"procedure"," "," "," "," "," ");
4342    addoraclecmds(ESqlStatementType.sstoracledropprofile, TBaseType.rrw_drop,"profile"," "," "," "," "," ");
4343    addoraclecmds(ESqlStatementType.sstoracledropdatabaselink, TBaseType.rrw_drop,"public","database","link"," "," "," ");
4344    addoraclecmds(ESqlStatementType.sstoracledropsynonym, TBaseType.rrw_drop,"public","synonym"," "," "," "," ");
4345    addoraclecmds(ESqlStatementType.sstoracledroprestorepoint, TBaseType.rrw_drop,"restore","point"," "," "," "," ");
4346    addoraclecmds(ESqlStatementType.sstoracledroprole, TBaseType.rrw_drop,"role"," "," "," "," "," ");
4347    addoraclecmds(ESqlStatementType.sstoracledroprollbacksegment, TBaseType.rrw_drop,"rollback","segment"," "," "," "," ");
4348    addoraclecmds(ESqlStatementType.sstoracledropsequence, TBaseType.rrw_drop,"sequence"," "," "," "," "," ");
4349    addoraclecmds(ESqlStatementType.sstoracledropsynonym, TBaseType.rrw_drop,"synonym"," "," "," "," "," ");
4350    addoraclecmds(ESqlStatementType.sstoracledroptable, TBaseType.rrw_drop,"table"," "," "," "," "," ");
4351    addoraclecmds(ESqlStatementType.sstoracledroptablespace, TBaseType.rrw_drop,"tablespace"," "," "," "," "," ");
4352    addoraclecmds(ESqlStatementType.sstoracledroptrigger, TBaseType.rrw_drop,"trigger"," "," "," "," "," ");
4353    addoraclecmds(ESqlStatementType.sstoracledroptype, TBaseType.rrw_drop,"type"," "," "," "," "," ");
4354    addoraclecmds(ESqlStatementType.sstoracledroptypebody, TBaseType.rrw_drop,"type","body"," "," "," "," ");
4355    addoraclecmds(ESqlStatementType.sstoracledropuser, TBaseType.rrw_drop,"user"," "," "," "," "," ");
4356    addoraclecmds(ESqlStatementType.sstoracledropview, TBaseType.rrw_drop,"view"," "," "," "," "," ");
4357    addoraclecmds(ESqlStatementType.sstoracleexecuteprocedure, TBaseType.rrw_execute," "," "," "," "," "," ");
4358    addoraclecmds(ESqlStatementType.sstplsql_execimmestmt, TBaseType.rrw_execute,"immediate"," "," "," "," "," ");
4359    addoraclecmds(ESqlStatementType.sstExplain, TBaseType.rrw_explain,"plan"," "," "," "," "," ");
4360    addoraclecmds(ESqlStatementType.sstoracleflashbackdatabase, TBaseType.rrw_flashback,"database"," "," "," "," "," ");
4361    addoraclecmds(ESqlStatementType.sstoracleflashbacktable, TBaseType.rrw_flashback,"table"," "," "," "," "," ");
4362    addoraclecmds(ESqlStatementType.sstoraclegrant, TBaseType.rrw_grant," "," "," "," "," "," ");
4363    addoraclecmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert," "," "," "," "," "," ");
4364    addoraclecmds(ESqlStatementType.sstoraclelocktable, TBaseType.rrw_lock,"table"," "," "," "," "," ");
4365    addoraclecmds(ESqlStatementType.sstmerge, TBaseType.rrw_merge," "," "," "," "," "," ");
4366    addoraclecmds(ESqlStatementType.sstoraclenoaudit, TBaseType.rrw_noaudit," "," "," "," "," "," ");
4367    addoraclecmds(ESqlStatementType.sstoraclepurge, TBaseType.rrw_purge," "," "," "," "," "," ");
4368    addoraclecmds(ESqlStatementType.sstoraclerename, TBaseType.rrw_rename," "," "," "," "," "," ");
4369    addoraclecmds(ESqlStatementType.sstoraclerevoke, TBaseType.rrw_revoke," "," "," "," "," "," ");
4370    addoraclecmds(ESqlStatementType.sstoraclerollback, TBaseType.rrw_rollback," "," "," "," "," "," ");
4371    addoraclecmds(ESqlStatementType.sstoraclesavepoint, TBaseType.rrw_savepoint," "," "," "," "," "," ");
4372    addoraclecmds(ESqlStatementType.sstselect, TBaseType.rrw_select," "," "," "," "," "," ");
4373    addoraclecmds(ESqlStatementType.sstoraclesetconstraint, TBaseType.rrw_set,"constraint"," "," "," "," "," ");
4374    addoraclecmds(ESqlStatementType.sstoraclesetconstraint, TBaseType.rrw_set,"constraints"," "," "," "," "," ");
4375    addoraclecmds(ESqlStatementType.sstoraclesetrole, TBaseType.rrw_set,"role"," "," "," "," "," ");
4376    addoraclecmds(ESqlStatementType.sstoraclesettransaction, TBaseType.rrw_set,"transaction"," "," "," "," "," ");
4377    addoraclecmds(ESqlStatementType.sstTruncate, TBaseType.rrw_truncate," "," "," "," "," "," ");
4378    addoraclecmds(ESqlStatementType.sstplsql_createtype_placeholder, TBaseType.rrw_type2," "," "," "," "," "," ");
4379    addoraclecmds(ESqlStatementType.sstupdate, TBaseType.rrw_update," "," "," "," "," "," ");
4380
4381}
4382
4383void initinformixcmds(){
4384// cmd must be sort alphabetically
4385    addinformixcmds(ESqlStatementType.sstinformixAllocateCollection, TBaseType.rrw_allocate,"collection"," "," "," "," "," ");
4386    addinformixcmds(ESqlStatementType.sstinformixAllocateDescriptor, TBaseType.rrw_allocate,"descriptor"," "," "," "," "," ");
4387    addinformixcmds(ESqlStatementType.sstinformixAlterAccess_Method, TBaseType.rrw_alter,"access_method"," "," "," "," "," ");
4388    addinformixcmds(ESqlStatementType.sstinformixAlterFragment, TBaseType.rrw_alter,"fragment"," "," "," "," "," ");
4389    addinformixcmds(ESqlStatementType.sstinformixAlterFunction, TBaseType.rrw_alter,"function"," "," "," "," "," ");
4390    addinformixcmds(ESqlStatementType.sstinformixAlterIndex, TBaseType.rrw_alter,"index"," "," "," "," "," ");
4391    addinformixcmds(ESqlStatementType.sstinformixAlterProcedure, TBaseType.rrw_alter,"procedure"," "," "," "," "," ");
4392    addinformixcmds(ESqlStatementType.sstinformixAlterRoutine, TBaseType.rrw_alter,"routine"," "," "," "," "," ");
4393    addinformixcmds(ESqlStatementType.sstinformixAlterSecurityLabelComponent, TBaseType.rrw_alter,"security","label","component"," "," "," ");
4394    addinformixcmds(ESqlStatementType.sstinformixAlterSequence, TBaseType.rrw_alter,"sequence"," "," "," "," "," ");
4395    addinformixcmds(ESqlStatementType.sstinformixAlterTable, TBaseType.rrw_alter,"table"," "," "," "," "," ");
4396    addinformixcmds(ESqlStatementType.sstinformixAlterTrustedContext, TBaseType.rrw_alter,"trusted","context"," "," "," "," ");
4397    addinformixcmds(ESqlStatementType.sstinformixAlterUser, TBaseType.rrw_alter,"user"," "," "," "," "," ");
4398    addinformixcmds(ESqlStatementType.sstinformixBegin, TBaseType.rrw_begin," "," "," "," "," "," ");
4399    addinformixcmds(ESqlStatementType.sstinformixClose, TBaseType.rrw_close," "," "," "," "," "," ");
4400    addinformixcmds(ESqlStatementType.sstinformixCloseDatabase, TBaseType.rrw_close,"database"," "," "," "," "," ");
4401    addinformixcmds(ESqlStatementType.sstinformixCommit, TBaseType.rrw_commit," "," "," "," "," "," ");
4402    addinformixcmds(ESqlStatementType.sstinformixConnect, TBaseType.rrw_informix_connect_to," "," "," "," "," "," ");
4403    addinformixcmds(ESqlStatementType.sstinformixCreateAccess_Method, TBaseType.rrw_create,"access_method"," "," "," "," "," ");
4404    addinformixcmds(ESqlStatementType.sstinformixCreateAggregate, TBaseType.rrw_create,"aggregate"," "," "," "," "," ");
4405    addinformixcmds(ESqlStatementType.sstinformixCreateCast, TBaseType.rrw_create,"cast"," "," "," "," "," ");
4406    addinformixcmds(ESqlStatementType.sstinformixCreateIndex, TBaseType.rrw_create,"cluster","index"," "," "," "," ");
4407    addinformixcmds(ESqlStatementType.sstinformixCreateDatabase, TBaseType.rrw_create,"database"," "," "," "," "," ");
4408    addinformixcmds(ESqlStatementType.sstinformixCreateFunction, TBaseType.rrw_create,"dba","function"," "," "," "," ");
4409    addinformixcmds(ESqlStatementType.sstinformixCreateProcedure, TBaseType.rrw_create,"dba","procedure"," "," "," "," ");
4410    addinformixcmds(ESqlStatementType.sstinformixCreateDefaultUser, TBaseType.rrw_create,"default","user"," "," "," "," ");
4411    addinformixcmds(ESqlStatementType.sstinformixCreateIndex, TBaseType.rrw_create,"distinct","cluster","index"," "," "," ");
4412    addinformixcmds(ESqlStatementType.sstinformixCreateIndex, TBaseType.rrw_create,"distinct","index"," "," "," "," ");
4413    addinformixcmds(ESqlStatementType.sstinformixCreateDistinctType, TBaseType.rrw_create,"distinct","type"," "," "," "," ");
4414    addinformixcmds(ESqlStatementType.sstinformixCreateExternalTable, TBaseType.rrw_create,"external","table"," "," "," "," ");
4415    addinformixcmds(ESqlStatementType.sstinformixCreateFunction, TBaseType.rrw_create,"function"," "," "," "," "," ");
4416    addinformixcmds(ESqlStatementType.sstinformixCreateFunctionFrom, TBaseType.rrw_create,"function","from"," "," "," "," ");
4417    addinformixcmds(ESqlStatementType.sstinformixCreateIndex, TBaseType.rrw_create,"index"," "," "," "," "," ");
4418    addinformixcmds(ESqlStatementType.sstinformixCreateOpaqueType, TBaseType.rrw_create,"opaque","type"," "," "," "," ");
4419    addinformixcmds(ESqlStatementType.sstinformixCreateOpclass, TBaseType.rrw_create,"opclass"," "," "," "," "," ");
4420    addinformixcmds(ESqlStatementType.sstinformixCreateSynonym, TBaseType.rrw_create,"private","synonym"," "," "," "," ");
4421    addinformixcmds(ESqlStatementType.sstinformixCreateProcedure, TBaseType.rrw_create,"procedure"," "," "," "," "," ");
4422    addinformixcmds(ESqlStatementType.sstinformixCreateProcedureFrom, TBaseType.rrw_create,"procedure","from"," "," "," "," ");
4423    addinformixcmds(ESqlStatementType.sstinformixCreateSynonym, TBaseType.rrw_create,"public","synonym"," "," "," "," ");
4424    addinformixcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"raw","table"," "," "," "," ");
4425    addinformixcmds(ESqlStatementType.sstinformixCreateRole, TBaseType.rrw_create,"role"," "," "," "," "," ");
4426    addinformixcmds(ESqlStatementType.sstinformixCreateRoutineFrom, TBaseType.rrw_create,"routine","from"," "," "," "," ");
4427    addinformixcmds(ESqlStatementType.sstinformixCreateRowType, TBaseType.rrw_create,"row","type"," "," "," "," ");
4428    addinformixcmds(ESqlStatementType.sstinformixCreateSchema, TBaseType.rrw_create,"schema"," "," "," "," "," ");
4429    addinformixcmds(ESqlStatementType.sstinformixCreateSecurityLabel, TBaseType.rrw_create,"security","label"," "," "," "," ");
4430    addinformixcmds(ESqlStatementType.sstinformixCreateSecurityLabelComponent, TBaseType.rrw_create,"security","label","component"," "," "," ");
4431    addinformixcmds(ESqlStatementType.sstinformixCreateSecurityPolicy, TBaseType.rrw_create,"security","policy"," "," "," "," ");
4432    addinformixcmds(ESqlStatementType.sstinformixCreateSequence, TBaseType.rrw_create,"sequence"," "," "," "," "," ");
4433    addinformixcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"standard","table"," "," "," "," ");
4434    addinformixcmds(ESqlStatementType.sstinformixCreateSynonym, TBaseType.rrw_create,"synonym"," "," "," "," "," ");
4435    addinformixcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"table"," "," "," "," "," ");
4436    addinformixcmds(ESqlStatementType.sstinformixCreateTempTable, TBaseType.rrw_create,"temp","table"," "," "," "," ");
4437    addinformixcmds(ESqlStatementType.sstcreatetrigger, TBaseType.rrw_create,"trigger"," "," "," "," "," ");
4438    addinformixcmds(ESqlStatementType.sstinformixCreateTrustedContext, TBaseType.rrw_create,"trusted","context"," "," "," "," ");
4439    addinformixcmds(ESqlStatementType.sstinformixCreateIndex, TBaseType.rrw_create,"unique","cluster","index"," "," "," ");
4440    addinformixcmds(ESqlStatementType.sstinformixCreateIndex, TBaseType.rrw_create,"unique","index"," "," "," "," ");
4441    addinformixcmds(ESqlStatementType.sstinformixCreateUser, TBaseType.rrw_create,"user"," "," "," "," "," ");
4442    addinformixcmds(ESqlStatementType.sstinformixCreateView, TBaseType.rrw_create,"view"," "," "," "," "," ");
4443    addinformixcmds(ESqlStatementType.sstinformixCreateXaDatasource, TBaseType.rrw_create,"xadatasource"," "," "," "," "," ");
4444    addinformixcmds(ESqlStatementType.sstinformixCreateXaDatasourceType, TBaseType.rrw_create,"xadatasource","type"," "," "," "," ");
4445    //addinformixcmds(ESqlStatementType.sstinformixDatabase, TBaseType.rrw_database," "," "," "," "," "," ");
4446    addinformixcmds(ESqlStatementType.sstinformixDeallocateCollection, TBaseType.rrw_deallocate,"collection"," "," "," "," "," ");
4447    addinformixcmds(ESqlStatementType.sstinformixDeallocateDescriptor, TBaseType.rrw_deallocate, "descriptor"," "," "," "," "," ");
4448    addinformixcmds(ESqlStatementType.sstinformixDeallocateRow, TBaseType.rrw_deallocate,"row"," "," "," "," "," ");
4449    addinformixcmds(ESqlStatementType.sstinformixDeclare, TBaseType.rrw_declare," "," "," "," "," "," ");
4450    addinformixcmds(ESqlStatementType.sstdelete, TBaseType.rrw_delete," "," "," "," "," "," ");
4451    addinformixcmds(ESqlStatementType.sstinformixDescribe, TBaseType.rrw_describe," "," "," "," "," "," ");
4452    addinformixcmds(ESqlStatementType.sstinformixDescribeInput, TBaseType.rrw_describe,"input"," "," "," "," "," ");
4453    addinformixcmds(ESqlStatementType.sstinformixDisconnect, TBaseType.rrw_disconnect," "," "," "," "," "," ");
4454    addinformixcmds(ESqlStatementType.sstinformixDropAccess_Method, TBaseType.rrw_drop,"access_method"," "," "," "," "," ");
4455    addinformixcmds(ESqlStatementType.sstinformixDropAggregate, TBaseType.rrw_drop,"aggregate"," "," "," "," "," ");
4456    addinformixcmds(ESqlStatementType.sstinformixDropCast, TBaseType.rrw_drop,"cast"," "," "," "," "," ");
4457    addinformixcmds(ESqlStatementType.sstdropdatabase, TBaseType.rrw_drop,"database"," "," "," "," "," ");
4458    addinformixcmds(ESqlStatementType.sstinformixDropFunction, TBaseType.rrw_drop,"function"," "," "," "," "," ");
4459    addinformixcmds(ESqlStatementType.sstinformixDropIndex, TBaseType.rrw_drop,"index"," "," "," "," "," ");
4460    addinformixcmds(ESqlStatementType.sstinformixDropOpclass, TBaseType.rrw_drop,"opclass"," "," "," "," "," ");
4461    addinformixcmds(ESqlStatementType.sstinformixDropProcedure, TBaseType.rrw_drop,"procedure"," "," "," "," "," ");
4462    addinformixcmds(ESqlStatementType.sstinformixDropRole, TBaseType.rrw_drop,"role"," "," "," "," "," ");
4463    addinformixcmds(ESqlStatementType.sstinformixDropRoutine, TBaseType.rrw_drop,"routine"," "," "," "," "," ");
4464    addinformixcmds(ESqlStatementType.sstinformixDropRowType, TBaseType.rrw_drop,"row","type"," "," "," "," ");
4465    addinformixcmds(ESqlStatementType.sstinformixDropSecurity, TBaseType.rrw_drop,"security"," "," "," "," "," ");
4466    addinformixcmds(ESqlStatementType.sstinformixDropSequence, TBaseType.rrw_drop,"sequence"," "," "," "," "," ");
4467    addinformixcmds(ESqlStatementType.sstinformixDropSynonym, TBaseType.rrw_drop,"synonym"," "," "," "," "," ");
4468    addinformixcmds(ESqlStatementType.sstinformixDropTable, TBaseType.rrw_drop,"table"," "," "," "," "," ");
4469    addinformixcmds(ESqlStatementType.sstinformixDropTrigger, TBaseType.rrw_drop,"trigger"," "," "," "," "," ");
4470    addinformixcmds(ESqlStatementType.sstinformixDropTrustedContext, TBaseType.rrw_drop,"trusted","context"," "," "," "," ");
4471    addinformixcmds(ESqlStatementType.sstinformixDropType, TBaseType.rrw_drop,"type"," "," "," "," "," ");
4472    addinformixcmds(ESqlStatementType.sstinformixDropUser, TBaseType.rrw_drop,"user"," "," "," "," "," ");
4473    addinformixcmds(ESqlStatementType.sstinformixDropView, TBaseType.rrw_drop,"view"," "," "," "," "," ");
4474    addinformixcmds(ESqlStatementType.sstinformixDropXaDatasource, TBaseType.rrw_drop,"xadatasource"," "," "," "," "," ");
4475    addinformixcmds(ESqlStatementType.sstinformixDropXaDatasourceType, TBaseType.rrw_drop,"xadatasource","type"," "," "," "," ");
4476    addinformixcmds(ESqlStatementType.sstinformixExecute, TBaseType.rrw_exec," "," "," "," "," "," ");
4477    addinformixcmds(ESqlStatementType.sstinformixExecute, TBaseType.rrw_execute," "," "," "," "," "," ");
4478    addinformixcmds(ESqlStatementType.sstinformixExecuteFunction, TBaseType.rrw_execute,"function"," "," "," "," "," ");
4479    addinformixcmds(ESqlStatementType.sstinformixExecuteImmediate, TBaseType.rrw_execute,"immediate"," "," "," "," "," ");
4480    addinformixcmds(ESqlStatementType.sstinformixExecuteProcedure, TBaseType.rrw_execute,"procedure"," "," "," "," "," ");
4481    addinformixcmds(ESqlStatementType.sstinformixFetch, TBaseType.rrw_fetch," "," "," "," "," "," ");
4482    addinformixcmds(ESqlStatementType.sstinformixFlush, TBaseType.rrw_flush," "," "," "," "," "," ");
4483    addinformixcmds(ESqlStatementType.sstinformixFree, TBaseType.rrw_free," "," "," "," "," "," ");
4484    addinformixcmds(ESqlStatementType.sstinformixGetDescriptor, TBaseType.rrw_get,"descriptor"," "," "," "," "," ");
4485    addinformixcmds(ESqlStatementType.sstinformixGetDiagnostics, TBaseType.rrw_get,"diagnostics"," "," "," "," "," ");
4486    addinformixcmds(ESqlStatementType.sstinformixGrant, TBaseType.rrw_grant," "," "," "," "," "," ");
4487    addinformixcmds(ESqlStatementType.sstinformixGrantFragment, TBaseType.rrw_grant,"fragment"," "," "," "," "," ");
4488    addinformixcmds(ESqlStatementType.sstinformixInfo, TBaseType.rrw_informix_info," "," "," "," "," "," ");
4489    addinformixcmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert, " "," "," "," "," "," ");
4490    addinformixcmds(ESqlStatementType.sstinformixLoad, TBaseType.rrw_load," "," "," "," "," "," ");
4491    addinformixcmds(ESqlStatementType.sstinformixLockTable, TBaseType.rrw_lock,"table"," "," "," "," "," ");
4492    addinformixcmds(ESqlStatementType.sstmerge, TBaseType.rrw_merge," "," "," "," "," "," ");
4493    addinformixcmds(ESqlStatementType.sstinformixOpen, TBaseType.rrw_open," "," "," "," "," "," ");
4494    addinformixcmds(ESqlStatementType.sstinformixOutput, TBaseType.rrw_informix_output," "," "," "," "," "," ");
4495    addinformixcmds(ESqlStatementType.sstinformixPrepare, TBaseType.rrw_prepare," "," "," "," "," "," ");
4496    addinformixcmds(ESqlStatementType.sstinformixPut, TBaseType.rrw_informix_put," "," "," "," "," "," ");
4497    addinformixcmds(ESqlStatementType.sstinformixReleaseSavepoint, TBaseType.rrw_release,"savepoint"," "," "," "," "," ");
4498    addinformixcmds(ESqlStatementType.sstinformixRenameColumn, TBaseType.rrw_rename,"column"," "," "," "," "," ");
4499    addinformixcmds(ESqlStatementType.sstinformixRenameDatabase, TBaseType.rrw_rename,"database"," "," "," "," "," ");
4500    addinformixcmds(ESqlStatementType.sstinformixRenameIndex, TBaseType.rrw_rename,"index"," "," "," "," "," ");
4501    addinformixcmds(ESqlStatementType.sstinformixRenameSecurity, TBaseType.rrw_rename,"security"," "," "," "," "," ");
4502    addinformixcmds(ESqlStatementType.sstinformixRenameSequence, TBaseType.rrw_rename,"sequence"," "," "," "," "," ");
4503    addinformixcmds(ESqlStatementType.sstinformixRenameTable, TBaseType.rrw_rename,"table"," "," "," "," "," ");
4504    addinformixcmds(ESqlStatementType.sstinformixRenameTrustedContext, TBaseType.rrw_rename,"trusted","context"," "," "," "," ");
4505    addinformixcmds(ESqlStatementType.sstinformixRenameUser, TBaseType.rrw_rename,"user"," "," "," "," "," ");
4506    addinformixcmds(ESqlStatementType.sstinformixRevoke, TBaseType.rrw_revoke," "," "," "," "," "," ");
4507    addinformixcmds(ESqlStatementType.sstinformixRevokeFragment, TBaseType.rrw_revoke,"fragment"," "," "," "," "," ");
4508    addinformixcmds(ESqlStatementType.sstinformixRollbackWork, TBaseType.rrw_rollback," "," "," "," "," "," ");
4509    addinformixcmds(ESqlStatementType.sstinformixRollbackWork, TBaseType.rrw_rollback,"work"," "," "," "," "," ");
4510    addinformixcmds(ESqlStatementType.sstinformixSaveExternalDirectives, TBaseType.rrw_save,"external","directives"," "," "," "," ");
4511    addinformixcmds(ESqlStatementType.sstinformixSavepoint, TBaseType.rrw_savepoint," "," "," "," "," "," ");
4512    addinformixcmds(ESqlStatementType.sstselect, TBaseType.rrw_select," "," "," "," "," "," ");
4513    addinformixcmds(ESqlStatementType.sstinformixSetAutofree, TBaseType.rrw_set,"autofree"," "," "," "," "," ");
4514    addinformixcmds(ESqlStatementType.sstinformixSetCollation, TBaseType.rrw_set,"collation"," "," "," "," "," ");
4515    addinformixcmds(ESqlStatementType.sstinformixSetConnection, TBaseType.rrw_set,"connection"," "," "," "," "," ");
4516    addinformixcmds(ESqlStatementType.sstinformixSetConstraints, TBaseType.rrw_set,"constraints"," "," "," "," "," ");
4517    addinformixcmds(ESqlStatementType.sstinformixSetDatabaseObject, TBaseType.rrw_set,"database","object"," "," "," "," ");
4518    addinformixcmds(ESqlStatementType.sstinformixSetDataskip, TBaseType.rrw_set,"dataskip"," "," "," "," "," ");
4519    addinformixcmds(ESqlStatementType.sstinformixSetDebugFile, TBaseType.rrw_set,"debug","file"," "," "," "," ");
4520    addinformixcmds(ESqlStatementType.sstinformixSetDeferred_Prepare, TBaseType.rrw_set,"defferred_prepare"," "," "," "," "," ");
4521    addinformixcmds(ESqlStatementType.sstinformixSetDescriptor, TBaseType.rrw_set,"descriptor"," "," "," "," "," ");
4522    addinformixcmds(ESqlStatementType.sstinformixSetEncryptionPassword, TBaseType.rrw_set,"encryption","password"," "," "," "," ");
4523    addinformixcmds(ESqlStatementType.sstinformixSetEnvironment, TBaseType.rrw_set,"environment"," "," "," "," "," ");
4524    addinformixcmds(ESqlStatementType.sstinformixSetExplain, TBaseType.rrw_set,"explain"," "," "," "," "," ");
4525    addinformixcmds(ESqlStatementType.sstinformixSetIndexes, TBaseType.rrw_set,"indexes"," "," "," "," "," ");
4526    addinformixcmds(ESqlStatementType.sstinformixSetIsolation, TBaseType.rrw_set,"isolation"," "," "," "," "," ");
4527    addinformixcmds(ESqlStatementType.sstinformixSetLockMode, TBaseType.rrw_set,"lock","mode"," "," "," "," ");
4528    addinformixcmds(ESqlStatementType.sstinformixSetLog, TBaseType.rrw_set,"log"," "," "," "," "," ");
4529    addinformixcmds(ESqlStatementType.sstinformixSetOptimization, TBaseType.rrw_set,"optimization"," "," "," "," "," ");
4530    addinformixcmds(ESqlStatementType.sstinformixSetPDQPriority, TBaseType.rrw_set,"pdqpriority"," "," "," "," "," ");
4531    addinformixcmds(ESqlStatementType.sstinformixSetRole, TBaseType.rrw_set,"role"," "," "," "," "," ");
4532    addinformixcmds(ESqlStatementType.sstinformixSetSessionAuthorization, TBaseType.rrw_set,"session","authorization"," "," "," "," ");
4533    addinformixcmds(ESqlStatementType.sstinformixSetStatementCache, TBaseType.rrw_set,"statement","cache"," "," "," "," ");
4534    addinformixcmds(ESqlStatementType.sstinformixSetTransaction, TBaseType.rrw_set,"transaction"," "," "," "," "," ");
4535    addinformixcmds(ESqlStatementType.sstinformixSetTransactionMode, TBaseType.rrw_set,"transaction","mode"," "," "," "," ");
4536    addinformixcmds(ESqlStatementType.sstinformixSetTriggers, TBaseType.rrw_set,"triggers"," "," "," "," "," ");
4537    addinformixcmds(ESqlStatementType.sstinformixSetUserPassword, TBaseType.rrw_set,"user","password"," "," "," "," ");
4538    addinformixcmds(ESqlStatementType.sstinformixStartViolationsTable, TBaseType.rrw_start,"violations","table"," "," "," "," ");
4539    addinformixcmds(ESqlStatementType.sstinformixStopViolationsTable, TBaseType.rrw_stop,"violations","table"," "," "," "," ");
4540    addinformixcmds(ESqlStatementType.sstTruncate, TBaseType.rrw_truncate," "," "," "," "," "," ");
4541    addinformixcmds(ESqlStatementType.sstinformixUnload, TBaseType.rrw_informix_unload," "," "," "," "," "," ");
4542    addinformixcmds(ESqlStatementType.sstinformixUnlockTable, TBaseType.rrw_unlock,"table"," "," "," "," "," ");
4543    addinformixcmds(ESqlStatementType.sstupdate, TBaseType.rrw_update," "," "," "," "," "," ");
4544    addinformixcmds(ESqlStatementType.sstinformixUpdateStatistics, TBaseType.rrw_update,"statistics"," "," "," "," "," ");
4545    addinformixcmds(ESqlStatementType.sstinformixWhenever, TBaseType.rrw_informix_whenever," "," "," "," "," "," ");
4546}
4547    public void initcouchbasecmds() {
4548        addcouchbasecmds(ESqlStatementType.sstBuildIndex,   TBaseType.rrw_couchbase_build, "index"," ", " ", " ", " ", " ");
4549        addcouchbasecmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create, "index", " ", " ", " ", " ", " ");
4550        addcouchbasecmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create, "primary", "index", " ", " ", " ", " ");
4551        addcouchbasecmds(ESqlStatementType.sstdelete, TBaseType.rrw_delete, " ", " ", " ", " ", " ", " ");
4552        addcouchbasecmds(ESqlStatementType.sstdropindex, TBaseType.rrw_drop, "index", " ", " ", " ", " ", " ");
4553        addcouchbasecmds(ESqlStatementType.sstdropindex, TBaseType.rrw_drop, "primary", "index", " ", " ", " ", " ");
4554        addcouchbasecmds(ESqlStatementType.sstExecutePreparedStmt, TBaseType.rrw_execute, " ", " ", " ", " ", " ", " ");
4555        addcouchbasecmds(ESqlStatementType.sstExplain, TBaseType.rrw_explain, " ", " ", " ", " ", " ", " ");
4556        addcouchbasecmds(ESqlStatementType.sstinfer, TBaseType.rrw_couchbase_infer, " ", " ", " ", " ", " ", " ");
4557        addcouchbasecmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert, " ", " ", " ", " ", " ", " ");
4558        addcouchbasecmds(ESqlStatementType.sstmerge, TBaseType.rrw_merge, " ", " ", " ", " ", " ", " ");
4559        addcouchbasecmds(ESqlStatementType.sstprepare, TBaseType.rrw_prepare, " ", " ", " ", " ", " ", " ");
4560        addcouchbasecmds(ESqlStatementType.sstselect, TBaseType.rrw_select, " ", " ", " ", " ", " ", " ");
4561        addcouchbasecmds(ESqlStatementType.sstupdate, TBaseType.rrw_update, " ", " ", " ", " ", " ", " ");
4562        addcouchbasecmds(ESqlStatementType.sstupsert, TBaseType.rrw_couchbase_upsert, " ", " ", " ", " ", " ", " ");
4563    }
4564
4565    void initverticacmds(){
4566
4567        addverticacmds(ESqlStatementType.sstActivateDirectedQuery, TBaseType.rrw_vertica_activate, "directed", "query",      " ", " ", " ", " ");
4568
4569        addverticacmds(ESqlStatementType.sstAlterAccessPolicy,   TBaseType.rrw_alter, "access",          "policy", " ", " ", " ", " ");
4570        addverticacmds(ESqlStatementType.sstAlterAuthentication, TBaseType.rrw_alter, "authentication", " ",      " ", " ", " ", " ");
4571        addverticacmds(ESqlStatementType.sstalterdatabase, TBaseType.rrw_alter, "database", " ", " ", " ", " ", " ");
4572        addverticacmds(ESqlStatementType.sstAlterFaultGroup, TBaseType.rrw_alter, "fault", "group", " ", " ", " ", " ");
4573        addverticacmds(ESqlStatementType.sstalterfunction, TBaseType.rrw_alter, "function", " ", " ", " ", " ", " ");
4574        addverticacmds(ESqlStatementType.sstAlterLibrary, TBaseType.rrw_alter, "library", " ", " ", " ", " ", " ");
4575        addverticacmds(ESqlStatementType.sstAlterNode, TBaseType.rrw_alter, "node", " ", " ", " ", " ", " ");
4576        addverticacmds(ESqlStatementType.sstAlterNetworkInterface, TBaseType.rrw_alter, "network", "interface", " ", " ", " ", " ");
4577        addverticacmds(ESqlStatementType.sstAlterProjection, TBaseType.rrw_alter, "projection", " ", " ", " ", " ", " ");
4578        addverticacmds(ESqlStatementType.sstAlterProfile, TBaseType.rrw_alter, "profile", " ", " ", " ", " ", " ");
4579        addverticacmds(ESqlStatementType.sstAlterResourcePool, TBaseType.rrw_alter, "resource", "pool", " ", " ", " ", " ");
4580        addverticacmds(ESqlStatementType.sstAlterRole, TBaseType.rrw_alter, "role", " ", " ", " ", " ", " ");
4581        addverticacmds(ESqlStatementType.sstAlterSchema, TBaseType.rrw_alter, "schema", " ", " ", " ", " ", " ");
4582        addverticacmds(ESqlStatementType.sstaltersequence, TBaseType.rrw_alter, "sequence", " ", " ", " ", " ", " ");
4583        addverticacmds(ESqlStatementType.sstaltersession, TBaseType.rrw_alter, "session", " ", " ", " ", " ", " ");
4584        addverticacmds(ESqlStatementType.sstAlterSubnet, TBaseType.rrw_alter, "subnet", " ", " ", " ", " ", " ");
4585        addverticacmds(ESqlStatementType.sstaltertable, TBaseType.rrw_alter, "table", " ", " ", " ", " ", " ");
4586        addverticacmds(ESqlStatementType.sstalteruser, TBaseType.rrw_alter, "user", " ", " ", " ", " ", " ");
4587        addverticacmds(ESqlStatementType.sstalterview, TBaseType.rrw_alter, "view", " ", " ", " ", " ", " ");
4588
4589        addverticacmds(ESqlStatementType.sstBegin, TBaseType.rrw_begin, " ", " ", " ", " ", " ", " ");
4590        addverticacmds(ESqlStatementType.sstcall, TBaseType.rrw_call, " ", " ", " ", " ", " ", " ");
4591
4592        addverticacmds(ESqlStatementType.sstCommentOn, TBaseType.rrw_comment, "on", " ", " ", " ", " ", " ");
4593        addverticacmds(ESqlStatementType.sstcommit, TBaseType.rrw_commit, " ", " ", " ", " ", " ", " ");
4594        addverticacmds(ESqlStatementType.sstconnect, TBaseType.rrw_connect, "to", " ", " ", " ", " ", " ");
4595        addverticacmds(ESqlStatementType.sstCopy, TBaseType.rrw_vertica_copy, " ", " ", " ", " ", " ", " ");
4596
4597        addverticacmds(ESqlStatementType.sstCreateAccessPolicy,   TBaseType.rrw_create, "access",          "policy", " ", " ", " ", " ");
4598        addverticacmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create , "aggregate", "function", " ", " ", " ", " ");
4599        addverticacmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create , "analytic", "function", " ", " ", " ", " ");
4600        addverticacmds(ESqlStatementType.sstCreateAuthentication, TBaseType.rrw_create, "authentication", " ",      " ", " ", " ", " ");
4601        addverticacmds(ESqlStatementType.sstCreateDirectedQuery, TBaseType.rrw_create, "directed", "query",      " ", " ", " ", " ");
4602        addverticacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "external", "table",      " ", " ", " ", " ");
4603        addverticacmds(ESqlStatementType.sstCreateFaultGroup, TBaseType.rrw_create , "fault", "group", " ", " ", " ", " ");
4604        addverticacmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create , "filter", " ", " ", " ", " ", " ");
4605        addverticacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create , "flex", "table", " ", " ", " ", " ");
4606        addverticacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create , "flex", "local", "temp", "table", " ", " ");
4607        addverticacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create , "flex", "local", "temporary", "table", " ", " ");
4608        addverticacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create , "flexible", "table", " ", " ", " ", " ");
4609        addverticacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create , "flexible", "local", "temp", "table", " ", " ");
4610        addverticacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create , "flexible", "local", "temporary", "table", " ", " ");
4611
4612        addverticacmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create , "function", " ", " ", " ", " ", " ");
4613        addverticacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create , "global", "temp", "table", " ", " ", " ");
4614        addverticacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create , "global", "temporary", "table", " ", " ", " ");
4615        addverticacmds(ESqlStatementType.sstCreateHCatalogSchema, TBaseType.rrw_create , "hcatalog", "schema", " ", " ", " ", " ");
4616        addverticacmds(ESqlStatementType.sstCreateLibrary, TBaseType.rrw_create, "library", " ", " ", " ", " ", " ");
4617        addverticacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create , "local", "temp", "table", " ", " ", " ");
4618        addverticacmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create , "local", "temp", "view", " ", " ", " ");
4619        addverticacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create , "local", "temporary", "table", " ", " ", " ");
4620        addverticacmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create , "local", "temporary", "view", " ", " ", " ");
4621        addverticacmds(ESqlStatementType.sstCreateLocation, TBaseType.rrw_create , "location", " ", " ", " ", " ", " ");
4622        addverticacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create , "managed", "external", "table", " ", " ", " ");
4623        addverticacmds(ESqlStatementType.sstCreateNetworkInterface, TBaseType.rrw_create, "network", "interface", " ", " ", " ", " ");
4624        addverticacmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create , "or", "replace", "aggregate", "function", " ", " ");
4625        addverticacmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create , "or", "replace", "function", " ", " ", " ");
4626        addverticacmds(ESqlStatementType.sstCreateLibrary, TBaseType.rrw_create , "or", "replace", "library", " ", " ", " ");
4627        addverticacmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create , "or", "replace", "local", "temp", "view", " ");
4628        addverticacmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create , "or", "replace", "local", "temporary", "view", " ");
4629        addverticacmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create , "or", "replace", "view", " ", " ", " ");
4630        addverticacmds(ESqlStatementType.sstcreateprocedure, TBaseType.rrw_create , "or", "replace", "procedure", " ", " ", " ");
4631
4632        addverticacmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create , "parser", " ", " ", " ", " ", " ");
4633        addverticacmds(ESqlStatementType.sstcreateprocedure, TBaseType.rrw_create , "procedure", " ", " ", " ", " ", " ");
4634        addverticacmds(ESqlStatementType.sstCreateProfile, TBaseType.rrw_create , "profile", " ", " ", " ", " ", " ");
4635        addverticacmds(ESqlStatementType.sstCreateProjection, TBaseType.rrw_create , "projection", " ", " ", " ", " ", " ");
4636        addverticacmds(ESqlStatementType.sstCreateResourcePool, TBaseType.rrw_create , "resource", "pool", " ", " ", " ", " ");
4637        addverticacmds(ESqlStatementType.sstcreaterole, TBaseType.rrw_create , "role", " ", " ", " ", " ", " ");
4638        addverticacmds(ESqlStatementType.sstcreateschema, TBaseType.rrw_create , "schema", " ", " ", " ", " ", " ");
4639        addverticacmds(ESqlStatementType.sstcreatesequence, TBaseType.rrw_create , "sequence", " ", " ", " ", " ", " ");
4640        addverticacmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create , "source", " ", " ", " ", " ", " ");
4641        addverticacmds(ESqlStatementType.sstCreateSubnet, TBaseType.rrw_create , "subnet", " ", " ", " ", " ", " ");
4642
4643        addverticacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create , "table", " ", " ", " ", " ", " ");
4644        addverticacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create , "temp", "table", " ", " ", " ", " ");
4645        addverticacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create , "temporary", "table", " ", " ", " ", " ");
4646        addverticacmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create , "text", "index", " ", " ", " ", " ");
4647        addverticacmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create , "transform", "function", " ", " ", " ", " ");
4648        addverticacmds(ESqlStatementType.sstcreateuser, TBaseType.rrw_create , "user", " ", " ", " ", " ", " ");
4649        addverticacmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create , "view", " ", " ", " ", " ", " ");
4650
4651        addverticacmds(ESqlStatementType.sstDeActivateDirectedQuery, TBaseType.rrw_vertica_deactivate, "directed", "query",      " ", " ", " ", " ");
4652
4653        addverticacmds(ESqlStatementType.sstdelete, TBaseType.rrw_delete , " ", " ", " ", " ", " ", " ");
4654        addverticacmds(ESqlStatementType.sstDisconnect, TBaseType.rrw_disconnect , " ", " ", " ", " ", " ", " ");
4655
4656        addverticacmds(ESqlStatementType.sstDeActivateDirectedQuery, TBaseType.rrw_drop, "directed", "query",      " ", " ", " ", " ");
4657        addverticacmds(ESqlStatementType.sstDropAccessPolicy,   TBaseType.rrw_drop, "access","policy", " ", " ", " ", " ");
4658        addverticacmds(ESqlStatementType.sstDropAggregateFunction, TBaseType.rrw_drop, "aggregate","function", " ", " ", " ", " ");
4659        addverticacmds(ESqlStatementType.sstDropAuthentication, TBaseType.rrw_drop, "authentication"," ", " ", " ", " ", " ");
4660
4661        addverticacmds(ESqlStatementType.sstDropFaultGroup, TBaseType.rrw_drop, "fault","group", " ", " ", " ", " ");
4662
4663        addverticacmds(ESqlStatementType.sstdropfunction, TBaseType.rrw_drop, "function"," ", " ", " ", " ", " ");
4664        addverticacmds(ESqlStatementType.sstDropLibrary, TBaseType.rrw_drop, "library"," ", " ", " ", " ", " ");
4665        addverticacmds(ESqlStatementType.sstDropNetworkInterface, TBaseType.rrw_drop, "network","interface", " ", " ", " ", " ");
4666        addverticacmds(ESqlStatementType.sstdropprocedure, TBaseType.rrw_drop, "procedure"," ", " ", " ", " ", " ");
4667        addverticacmds(ESqlStatementType.sstDropProfile, TBaseType.rrw_drop, "profile"," ", " ", " ", " ", " ");
4668        addverticacmds(ESqlStatementType.sstDropProjection, TBaseType.rrw_drop, "projection"," ", " ", " ", " ", " ");
4669        addverticacmds(ESqlStatementType.sstDropResourcePool, TBaseType.rrw_drop, "resource","pool", " ", " ", " ", " ");
4670        addverticacmds(ESqlStatementType.sstdroprole, TBaseType.rrw_drop, "role"," ", " ", " ", " ", " ");
4671        addverticacmds(ESqlStatementType.sstdropschema, TBaseType.rrw_drop, "schema"," ", " ", " ", " ", " ");
4672        addverticacmds(ESqlStatementType.sstdropsequence, TBaseType.rrw_drop, "sequence"," ", " ", " ", " ", " ");
4673        addverticacmds(ESqlStatementType.sstDropSubnet, TBaseType.rrw_drop, "subnet"," ", " ", " ", " ", " ");
4674        addverticacmds(ESqlStatementType.sstdroptable, TBaseType.rrw_drop, "table"," ", " ", " ", " ", " ");
4675        addverticacmds(ESqlStatementType.sstDropTextIndex, TBaseType.rrw_drop, "text","index", " ", " ", " ", " ");
4676        addverticacmds(ESqlStatementType.sstDropTransformFunction, TBaseType.rrw_drop, "transform","function", " ", " ", " ", " ");
4677        addverticacmds(ESqlStatementType.sstdropuser, TBaseType.rrw_drop, "user"," ", " ", " ", " ", " ");
4678        addverticacmds(ESqlStatementType.sstdropview, TBaseType.rrw_drop, "view"," ", " ", " ", " ", " ");
4679
4680        addverticacmds(ESqlStatementType.sstEnd, TBaseType.rrw_end, " ", " "," ", " ", " ", " ");
4681        addverticacmds(ESqlStatementType.sstExplain, TBaseType.rrw_explain, " ", " "," ", " ", " ", " ");
4682        addverticacmds(ESqlStatementType.sstExportToVertica, TBaseType.rrw_vertica_export, "to", "vertica"," ", " ", " ", " ");
4683        addverticacmds(ESqlStatementType.sstGrant, TBaseType.rrw_grant, " ", " "," ", " ", " ", " ");
4684        addverticacmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert, " ", " "," ", " ", " ", " ");
4685        addverticacmds(ESqlStatementType.sstmerge, TBaseType.rrw_merge, " ", " "," ", " ", " ", " ");
4686        addverticacmds(ESqlStatementType.sstProfile, TBaseType.rrw_vertica_profile, " ", " "," ", " ", " ", " ");
4687        addverticacmds(ESqlStatementType.sstReleaseSavepoint, TBaseType.rrw_release, " ", " "," ", " ", " ", " ");
4688        addverticacmds(ESqlStatementType.sstRevoke, TBaseType.rrw_revoke, " ", " "," ", " ", " ", " ");
4689        addverticacmds(ESqlStatementType.sstrollback, TBaseType.rrw_rollback, " ", " "," ", " ", " ", " ");
4690        addverticacmds(ESqlStatementType.sstsavepoint, TBaseType.rrw_savepoint, " ", " "," ", " ", " ", " ");
4691        addverticacmds(ESqlStatementType.sstselect, TBaseType.rrw_select, " ", " "," ", " ", " ", " ");
4692        addverticacmds(ESqlStatementType.sstset, TBaseType.rrw_set, "datestyle", "to"," ", " ", " ", " ");
4693        addverticacmds(ESqlStatementType.sstset, TBaseType.rrw_set, "escape_string_warning", "to"," ", " ", " ", " ");
4694        addverticacmds(ESqlStatementType.sstset, TBaseType.rrw_set, "intervalstyle", "to"," ", " ", " ", " ");
4695        addverticacmds(ESqlStatementType.sstset, TBaseType.rrw_set, "locale", " "," ", " ", " ", " ");
4696        addverticacmds(ESqlStatementType.sstset, TBaseType.rrw_set, "role", " "," ", " ", " ", " ");
4697        addverticacmds(ESqlStatementType.sstset, TBaseType.rrw_set, "search_path", " "," ", " ", " ", " ");
4698        addverticacmds(ESqlStatementType.sstset, TBaseType.rrw_set, "session", " "," ", " ", " ", " ");
4699        addverticacmds(ESqlStatementType.sstset, TBaseType.rrw_set, "standard_conforming_strings", " "," ", " ", " ", " ");
4700        addverticacmds(ESqlStatementType.sstset, TBaseType.rrw_set, "time", "zone"," ", " ", " ", " ");
4701        addverticacmds(ESqlStatementType.sstShow, TBaseType.rrw_show, " ", " "," ", " ", " ", " ");
4702        addverticacmds(ESqlStatementType.sstStartTransaction, TBaseType.rrw_start, " ", " "," ", " ", " ", " ");
4703        addverticacmds(ESqlStatementType.sstTruncate, TBaseType.rrw_truncate, "table", " "," ", " ", " ", " ");
4704        addverticacmds(ESqlStatementType.sstupdate, TBaseType.rrw_update, " ", " "," ", " ", " ", " ");
4705
4706
4707       // addverticacmds(ESqlStatementType.sstGetDirectedQuery, TBaseType.rrw_get, "directed", "query",      " ", " ", " ", " ");
4708       // addverticacmds(ESqlStatementType.sstSaveQuery, TBaseType.rrw_save, "query", " "," ", " ", " ", " ");
4709
4710    }
4711
4712    void inithanacmds(){
4713//alter
4714        addhanacmds(ESqlStatementType.sstalterauditpolicy, TBaseType.rrw_alter, "audit", "policy", " ", " ", " ", " ");
4715        addhanacmds(ESqlStatementType.sstaltercredential, TBaseType.rrw_alter, "credential", " ", " ", " ", " ", " ");
4716        addhanacmds(ESqlStatementType.sstalterdatabase, TBaseType.rrw_alter, "database", " ", " ", " ", " ", " ");
4717        addhanacmds(ESqlStatementType.sstalterfulltextindex, TBaseType.rrw_alter, "fulltext", "index", " ", " ", " ", " ");
4718        addhanacmds(ESqlStatementType.sstalterfunction, TBaseType.rrw_alter, "function", " ", " ", " ", " ", " ");
4719        addhanacmds(ESqlStatementType.sstalterindex, TBaseType.rrw_alter, "index", " ", " ", " ", " ", " ");
4720        addhanacmds(ESqlStatementType.sstalterldapprovider, TBaseType.rrw_alter, "ldap", "provider", " ", " ", " ", " ");
4721        addhanacmds(ESqlStatementType.sstalterjwtprovider, TBaseType.rrw_alter, "jwt", "provider", " ", " ", " ", " ");
4722        addhanacmds(ESqlStatementType.sstalterpse, TBaseType.rrw_alter, "pse", " ", " ", " ", " ", " ");
4723        addhanacmds(ESqlStatementType.sstalterprocedure, TBaseType.rrw_alter, "procedure", " ", " ", " ", " ", " ");
4724        addhanacmds(ESqlStatementType.sstalterremotesource, TBaseType.rrw_alter, "remote", "source", " ", " ", " ", " ");
4725        addhanacmds(ESqlStatementType.sstAlterRole, TBaseType.rrw_alter, "role", " ", " ", " ", " ", " ");
4726        addhanacmds(ESqlStatementType.sstaltersamlprovider, TBaseType.rrw_alter, "saml", "provider", " ", " ", " ", " ");
4727        addhanacmds(ESqlStatementType.sstaltersequence, TBaseType.rrw_alter, "sequence", " ", " ", " ", " ", " ");
4728        addhanacmds(ESqlStatementType.sstalterstatistics, TBaseType.rrw_alter, "statistics", " ", " ", " ", " ", " ");
4729        addhanacmds(ESqlStatementType.sstalterstructuredprivilege, TBaseType.rrw_alter, "structured", "privilege", " ", " ", " ", " ");
4730        addhanacmds(ESqlStatementType.sstaltersystem, TBaseType.rrw_alter, "system", " ", " ", " ", " ", " ");
4731        addhanacmds(ESqlStatementType.sstaltertable, TBaseType.rrw_alter, "table", " ", " ", " ", " ", " ");
4732        addhanacmds(ESqlStatementType.sstalteruser, TBaseType.rrw_alter, "user", " ", " ", " ", " ", " ");
4733        addhanacmds(ESqlStatementType.sstalterusergroup, TBaseType.rrw_alter, "usergroup", " ", " ", " ", " ", " ");
4734        addhanacmds(ESqlStatementType.sstalterview, TBaseType.rrw_alter, "view", " ", " ", " ", " ", " ");
4735        addhanacmds(ESqlStatementType.sstalterviewcache, TBaseType.rrw_alter, "view", "cache", " ", " ", " ", " ");
4736        addhanacmds(ESqlStatementType.sstaltervirtualtable, TBaseType.rrw_alter, "virtual", "table", " ", " ", " ", " ");
4737        addhanacmds(ESqlStatementType.sstalterworkloadclass, TBaseType.rrw_alter, "workload", "class", " ", " ", " ", " ");
4738        addhanacmds(ESqlStatementType.sstalterworkloadmapping, TBaseType.rrw_alter, "workload", "mapping", " ", " ", " ", " ");
4739
4740//backup
4741        addhanacmds(ESqlStatementType.sstbackupcancel, TBaseType.rrw_backup,"cancel"," "," "," "," "," ");
4742        addhanacmds(ESqlStatementType.sstbackupcatalogdelete, TBaseType.rrw_backup, "catalog", "delete", " ", " ", " ", " ");
4743        addhanacmds(ESqlStatementType.sstbackupcheck, TBaseType.rrw_backup,"check"," "," "," "," "," ");
4744        addhanacmds(ESqlStatementType.sstbackupcheckaccess, TBaseType.rrw_backup, "check", "access", " ", " ", " ", " ");
4745        addhanacmds(ESqlStatementType.sstbackupdata, TBaseType.rrw_backup, "data", " ", " ", " ", " ", " ");
4746        addhanacmds(ESqlStatementType.sstbackuplistdata, TBaseType.rrw_backup, "list", "data", " ", " ", " ", " ");
4747
4748        addhanacmds(ESqlStatementType.sstcall, TBaseType.rrw_call, " ", " ", " ", " ", " ", " ");
4749
4750//commit
4751        addhanacmds(ESqlStatementType.sstcomment, TBaseType.rrw_comment, "on", " ", " ", " ", " ", " ");
4752        addhanacmds(ESqlStatementType.sstcommit, TBaseType.rrw_commit, " ", " ", " ", " ", " ", " ");
4753        addhanacmds(ESqlStatementType.sstconnect, TBaseType.rrw_connect, " ", " ", " ", " ", " ", " ");
4754
4755//create
4756        addhanacmds(ESqlStatementType.sstcreateauditpolicy, TBaseType.rrw_create, "audit", "policy", " ", " ", " ", " ");
4757        addhanacmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create, "btree", "index", " ", " ", " ", " ");
4758        addhanacmds(ESqlStatementType.sstcreatecertificate, TBaseType.rrw_create, "certificate", " ", " ", " ", " ", " ");
4759        addhanacmds(ESqlStatementType.sstcreatecollection, TBaseType.rrw_create, "collection", " ", " ", " ", " ", " ");
4760        addhanacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "column", "table", " ", " ", " ", " ");
4761        addhanacmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create, "cpbtree", "index", " ", " ", " ", " ");
4762        addhanacmds(ESqlStatementType.sstcreatecredential, TBaseType.rrw_create, "credential", " ", " ", " ", " ", " ");
4763        addhanacmds(ESqlStatementType.sstcreatedatabase, TBaseType.rrw_create, "database", " ", " ", " ", " ", " ");
4764        addhanacmds(ESqlStatementType.sstcreatefulltextindex, TBaseType.rrw_create, "fulltext", "index", " ", " ", " ", " ");
4765        addhanacmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create, "function", " ", " ", " ", " ", " ");
4766        addhanacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "global", "temporary", "column", "table", " ", " ");
4767        addhanacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"global","temporary","table"," "," "," ");
4768        addhanacmds(ESqlStatementType.sstcreategraphworkspace, TBaseType.rrw_create, "graph", "workspace", " ", " ", " ", " ");
4769        addhanacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"history","column","table"," "," "," ");
4770        addhanacmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create, "index", " ", " ", " ", " ", " ");
4771        addhanacmds(ESqlStatementType.sstcreateJWTProvider, TBaseType.rrw_create, "jwt", "provider", " ", " ", " ", " ");
4772        addhanacmds(ESqlStatementType.sstcreateLDAPProvider, TBaseType.rrw_create, "ldap", "provider", " ", " ", " ", " ");
4773        addhanacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"local","temporary","column","table"," "," ");
4774        addhanacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "local", "temporary", "table", " ", " ", " ");
4775        addhanacmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create, "or", "replace", "force", "editionable", "view", " ");
4776        addhanacmds(ESqlStatementType.sstcreatesynonym, TBaseType.rrw_create, "or", "replace", "public", "synonym", " ", " ");
4777        addhanacmds(ESqlStatementType.sstcreatesynonym, TBaseType.rrw_create, "or", "replace", "synonym", " ", " ", " ");
4778        addhanacmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create, "or", "replace", "view", " ", " ", " ");
4779        addhanacmds(ESqlStatementType.sstcreateprocedure, TBaseType.rrw_create, "procedure", " ", " ", " ", " ", " ");
4780        addhanacmds(ESqlStatementType.sstcreatepse, TBaseType.rrw_create, "pse", " ", " ", " ", " ", " ");
4781        addhanacmds(ESqlStatementType.sstcreatesynonym, TBaseType.rrw_create, "public", "synonym", " ", " ", " ", " ");
4782        addhanacmds(ESqlStatementType.sstcreateremotesource, TBaseType.rrw_create, "remote", "source", " ", " ", " ", " ");
4783        addhanacmds(ESqlStatementType.sstcreateuser, TBaseType.rrw_create, "restricted", "user", " ", " ", " ", " ");
4784        addhanacmds(ESqlStatementType.sstcreaterole, TBaseType.rrw_create, "role", " ", " ", " ", " ", " ");
4785        addhanacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "row", "table", " ", " ", " ", " ");
4786        addhanacmds(ESqlStatementType.sstcreatesamlprovider, TBaseType.rrw_create, "saml", "provider", " ", " ", " ", " ");
4787        addhanacmds(ESqlStatementType.sstcreateschema, TBaseType.rrw_create, "schema", " ", " ", " ", " ", " ");
4788        addhanacmds(ESqlStatementType.sstcreatesequence, TBaseType.rrw_create, "sequence", " ", " ", " ", " ", " ");
4789        addhanacmds(ESqlStatementType.sstcreatestatistics, TBaseType.rrw_create, "statistics", " ", " ", " ", " ", " ");
4790        addhanacmds(ESqlStatementType.sstcreatestructuredprivilege, TBaseType.rrw_create, "structured", "privilege", " ", " ", " ", " ");
4791        addhanacmds(ESqlStatementType.sstcreatesynonym, TBaseType.rrw_create, "synonym", " ", " ", " ", " ", " ");
4792        addhanacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "table", " ", " ", " ", " ", " ");
4793        addhanacmds(ESqlStatementType.sstcreatetrigger, TBaseType.rrw_create, "trigger", " ", " ", " ", " ", " ");
4794        addhanacmds(ESqlStatementType.sstcreatetype, TBaseType.rrw_create, "type", " ", " ", " ", " ", " ");
4795        addhanacmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create, "unique", "index", " ", " ", " ", " ");
4796        addhanacmds(ESqlStatementType.sstcreateuser, TBaseType.rrw_create, "user", " ", " ", " ", " ", " ");
4797        addhanacmds(ESqlStatementType.sstcreateusergroup, TBaseType.rrw_create, "usergroup", " ", " ", " ", " ", " ");
4798        addhanacmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create, "view", " ", " ", " ", " ", " ");
4799        addhanacmds(ESqlStatementType.sstcreatevirtualfunction, TBaseType.rrw_create, "virtual", "function", " ", " ", " ", " ");
4800        addhanacmds(ESqlStatementType.sstcreatevirtualtable, TBaseType.rrw_create, "virtual", "table", " ", " ", " ", " ");
4801        addhanacmds(ESqlStatementType.sstcreateworkloadclass, TBaseType.rrw_create, "workload", "class", " ", " ", " ", " ");
4802        addhanacmds(ESqlStatementType.sstcreateworkloadmapping, TBaseType.rrw_create, "workload", "mapping", " ", " ", " ", " ");
4803
4804//DELETE
4805        addhanacmds(ESqlStatementType.sstdelete, TBaseType.rrw_delete, " ", " ", " ", " ", " ", " ");
4806
4807        addhanacmds(ESqlStatementType.sstdobeginend, TBaseType.rrw_do, "begin", " ", " ", " ", " ", " ");
4808
4809//drop
4810        addhanacmds(ESqlStatementType.sstdropauditpolicy, TBaseType.rrw_drop, "audit", "policy", " ", " ", " ", " ");
4811        addhanacmds(ESqlStatementType.sstdropcertificate, TBaseType.rrw_drop, "certificate", " ", " ", " ", " ", " ");
4812        addhanacmds(ESqlStatementType.sstdropcollection, TBaseType.rrw_drop, "collection", " ", " ", " ", " ", " ");
4813        addhanacmds(ESqlStatementType.sstdropcredential, TBaseType.rrw_drop, "credential", " ", " ", " ", " ", " ");
4814        addhanacmds(ESqlStatementType.sstdropdatabase, TBaseType.rrw_drop, "database", " ", " ", " ", " ", " ");
4815        addhanacmds(ESqlStatementType.sstdropfulltextindex, TBaseType.rrw_drop, "fulltext", "index", " ", " ", " ", " ");
4816        addhanacmds(ESqlStatementType.sstdropfunction, TBaseType.rrw_drop, "function", " ", " ", " ", " ", " ");
4817        addhanacmds(ESqlStatementType.sstdropgraphworkspace, TBaseType.rrw_drop, "graph", "workspace", " ", " ", " ", " ");
4818        addhanacmds(ESqlStatementType.sstdropindex, TBaseType.rrw_drop, "index", " ", " ", " ", " ", " ");
4819        addhanacmds(ESqlStatementType.sstdropJWTProvider, TBaseType.rrw_drop, "jwt", "provider", " ", " ", " ", " ");
4820        addhanacmds(ESqlStatementType.sstdropLDAPProvider, TBaseType.rrw_drop, "ldap", "provider", " ", " ", " ", " ");
4821        addhanacmds(ESqlStatementType.sstdropprocedure, TBaseType.rrw_drop, "procedure", " ", " ", " ", " ", " ");
4822        addhanacmds(ESqlStatementType.sstdroppse, TBaseType.rrw_drop, "pse", " ", " ", " ", " ", " ");
4823        addhanacmds(ESqlStatementType.sstdropsynonym, TBaseType.rrw_drop, "public", "synonym", " ", " ", " ", " ");
4824        addhanacmds(ESqlStatementType.sstdropremotesource, TBaseType.rrw_drop, "remote", "source", " ", " ", " ", " ");
4825        addhanacmds(ESqlStatementType.sstdroprole, TBaseType.rrw_drop, "role", " ", " ", " ", " ", " ");
4826        addhanacmds(ESqlStatementType.sstdropsamlprovider, TBaseType.rrw_drop, "saml", "provider", " ", " ", " ", " ");
4827        addhanacmds(ESqlStatementType.sstdropschema, TBaseType.rrw_drop, "schema", " ", " ", " ", " ", " ");
4828        addhanacmds(ESqlStatementType.sstdropsequence, TBaseType.rrw_drop, "sequence", " ", " ", " ", " ", " ");
4829        addhanacmds(ESqlStatementType.sstdropstatistics, TBaseType.rrw_drop, "statistics", " ", " ", " ", " ", " ");
4830        addhanacmds(ESqlStatementType.sstdropstructuredprivilege, TBaseType.rrw_drop, "structured", "privilege", " ", " ", " ", " ");
4831        addhanacmds(ESqlStatementType.sstdropsynonym, TBaseType.rrw_drop, "synonym", " ", " ", " ", " ", " ");
4832        addhanacmds(ESqlStatementType.sstdroptable, TBaseType.rrw_drop, "table", " ", " ", " ", " ", " ");
4833        addhanacmds(ESqlStatementType.sstdroptrigger, TBaseType.rrw_drop, "trigger", " ", " ", " ", " ", " ");
4834        addhanacmds(ESqlStatementType.sstdroptype, TBaseType.rrw_drop, "type", " ", " ", " ", " ", " ");
4835        addhanacmds(ESqlStatementType.sstdropuser, TBaseType.rrw_drop, "user", " ", " ", " ", " ", " ");
4836        addhanacmds(ESqlStatementType.sstdropusergroup, TBaseType.rrw_drop, "usergroup", " ", " ", " ", " ", " ");
4837        addhanacmds(ESqlStatementType.sstdropview, TBaseType.rrw_drop, "view", " ", " ", " ", " ", " ");
4838        addhanacmds(ESqlStatementType.sstdropworkloadclass, TBaseType.rrw_drop, "workload", "class", " ", " ", " ", " ");
4839        addhanacmds(ESqlStatementType.sstdropworkloadmapping, TBaseType.rrw_drop, "workload", "mapping", " ", " ", " ", " ");
4840
4841        addhanacmds(ESqlStatementType.sstExplain, TBaseType.rrw_explain, "plan", " ", " ", " ", " ", " ");
4842        addhanacmds(ESqlStatementType.sstexport, TBaseType.rrw_hana_export, " ", " ", " ", " ", " ", " ");
4843
4844//GRANT
4845        addhanacmds(ESqlStatementType.sstGrant, TBaseType.rrw_grant, " ", " ", " ", " ", " ", " ");
4846
4847        addhanacmds(ESqlStatementType.sstimport, TBaseType.rrw_hana_import, " ", " ", " ", " ", " ", " ");
4848        addhanacmds(ESqlStatementType.sstimportfrom, TBaseType.rrw_hana_import, "from", " ", " ", " ", " ", " ");
4849        addhanacmds(ESqlStatementType.sstimportscan, TBaseType.rrw_hana_import, "scan", " ", " ", " ", " ", " ");
4850
4851//insert
4852        addhanacmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert, " ", " ", " ", " ", " ", " ");
4853
4854//
4855        addhanacmds(ESqlStatementType.sstload, TBaseType.rrw_load, " ", " ", " ", " ", " ", " ");
4856        addhanacmds(ESqlStatementType.sstlocktable, TBaseType.rrw_lock, "table", " ", " ", " ", " ", " ");
4857
4858        addhanacmds(ESqlStatementType.sstmerge, TBaseType.rrw_merge, "into", " ", " ", " ", " ", " ");
4859
4860        addhanacmds(ESqlStatementType.sstmergedelta, TBaseType.rrw_merge, "delta", " ", " ", " ", " ", " ");
4861        addhanacmds(ESqlStatementType.sstmergedelta, TBaseType.rrw_merge,"history","delta"," "," "," "," ");
4862
4863        addhanacmds(ESqlStatementType.sstrecoverdata, TBaseType.rrw_hana_recover,"data"," "," "," "," "," ");
4864        addhanacmds(ESqlStatementType.sstrecoverdatabase, TBaseType.rrw_hana_recover, "database", " ", " ", " ", " ", " ");
4865        addhanacmds(ESqlStatementType.sstrefreshstatistics, TBaseType.rrw_refresh, "statistics", " ", " ", " ", " ", " ");
4866        addhanacmds(ESqlStatementType.sstrenamecollection, TBaseType.rrw_rename,"collection"," "," "," "," "," ");
4867        addhanacmds(ESqlStatementType.sstrenamecolumn, TBaseType.rrw_rename,"column"," "," "," "," "," ");
4868        addhanacmds(ESqlStatementType.sstrenamedatabase, TBaseType.rrw_rename,"database"," "," "," "," "," ");
4869        addhanacmds(ESqlStatementType.sstrenameindex, TBaseType.rrw_rename,"index"," "," "," "," "," ");
4870        addhanacmds(ESqlStatementType.sstrenametable, TBaseType.rrw_rename,"table"," "," "," "," "," ");
4871        addhanacmds(ESqlStatementType.sstreplace, TBaseType.rrw_replace, " ", " ", " ", " ", " ", " ");
4872
4873        addhanacmds(ESqlStatementType.sstRevoke, TBaseType.rrw_revoke, " ", " ", " ", " ", " ", " ");
4874
4875        addhanacmds(ESqlStatementType.sstrollback, TBaseType.rrw_rollback, " ", " ", " ", " ", " ", " ");
4876
4877        addhanacmds(ESqlStatementType.sstsavepoint, TBaseType.rrw_savepoint, " ", " ", " ", " ", " ", " ");
4878//SELECT
4879        addhanacmds(ESqlStatementType.sstselect, TBaseType.rrw_select, " ", " ", " ", " ", " ", " ");
4880
4881//SET
4882        addhanacmds(ESqlStatementType.sstset, TBaseType.rrw_set, " ", " ", " ", " ", " ", " ");
4883        addhanacmds(ESqlStatementType.sssethistorysession, TBaseType.rrw_set, "history", "session", " ", " ", " ", " ");
4884        addhanacmds(ESqlStatementType.sstsetpse, TBaseType.rrw_set, "pse", " ", " ", " ", " ", " ");
4885        addhanacmds(ESqlStatementType.sstsetschema, TBaseType.rrw_set, "schema", " ", " ", " ", " ", " ");
4886        addhanacmds(ESqlStatementType.sstsetsystemlicense, TBaseType.rrw_set, "system", "license", " ", " ", " ", " ");
4887        addhanacmds(ESqlStatementType.sstsettransaction, TBaseType.rrw_set, "transaction", " ", " ", " ", " ", " ");
4888        addhanacmds(ESqlStatementType.sstsettransactionautocommit, TBaseType.rrw_set, "transaction", "autocommit", " ", " ", " ", " ");
4889
4890        addhanacmds(ESqlStatementType.sstStartTransaction, TBaseType.rrw_start, "transaction", " ", " ", " ", " ", " ");
4891
4892
4893//TRUNCATE TABLE
4894        addhanacmds(ESqlStatementType.ssttruncatecollection, TBaseType.rrw_truncate, "collection", " ", " ", " ", " ", " ");
4895        addhanacmds(ESqlStatementType.ssttruncatetable, TBaseType.rrw_truncate, "table", " ", " ", " ", " ", " ");
4896        addhanacmds(ESqlStatementType.sstunload, TBaseType.rrw_hana_unload, " ", " ", " ", " ", " ", " ");
4897        addhanacmds(ESqlStatementType.sstunset, TBaseType.rrw_hana_unset, " ", " ", " ", " ", " ", " ");
4898        addhanacmds(ESqlStatementType.sstunsetpse, TBaseType.rrw_hana_unset, "pse", " ", " ", " ", " ", " ");
4899        addhanacmds(ESqlStatementType.sstunsetsystemlicense, TBaseType.rrw_hana_unset, "system", "license", " ", " ", " ", " ");
4900
4901//UPDATE
4902        addhanacmds(ESqlStatementType.sstupdate, TBaseType.rrw_update, " ", " ", " ", " ", " ", " ");
4903
4904        addhanacmds(ESqlStatementType.sstupsert, TBaseType.rrw_hana_upsert, " ", " ", " ", " ", " ", " ");
4905        addhanacmds(ESqlStatementType.sstvalidateLDAPProvider, TBaseType.rrw_hana_validate, "ldap", "provider", " ", " ", " ", " ");
4906        addhanacmds(ESqlStatementType.sstvalidateUser, TBaseType.rrw_hana_validate, "user", " ", " ", " ", " ", " ");
4907
4908    }
4909
4910ESqlStatementType findsybasecmd(TSourceToken ptoken){
4911    if (sybasecmds.size() == 0) {initsybasecmds();}
4912    return finddbcmd(ptoken,sybasecmds);
4913}
4914
4915ESqlStatementType findsybaseasecmd(TSourceToken ptoken){
4916    // Sybase ASE twin. Reads ITS OWN list -- the earlier twins delegated to
4917    // findsybasecmd and therefore consulted the BASE list (Codex review
4918    // finding); with recognize-then-reject the lists are content-identical,
4919    // but reading the base list would still break isolation.
4920    if (sybaseasecmds.size() == 0) {initsybaseasecmds();}
4921    return finddbcmd(ptoken,sybaseasecmds);
4922}
4923
4924ESqlStatementType findsqlanywherecmd(TSourceToken ptoken){
4925    // SQL Anywhere twin. Reads ITS OWN list -- the earlier twins delegated to
4926    // findsybasecmd and therefore consulted the BASE list (Codex review
4927    // finding); with recognize-then-reject the lists are content-identical,
4928    // but reading the base list would still break isolation.
4929    if (sqlanywherecmds.size() == 0) {initsqlanywherecmds();}
4930    return finddbcmd(ptoken,sqlanywherecmds);
4931}
4932
4933ESqlStatementType findsybaseiqcmd(TSourceToken ptoken){
4934    // Sybase IQ twin. Reads ITS OWN list -- the earlier twins delegated to
4935    // findsybasecmd and therefore consulted the BASE list (Codex review
4936    // finding); with recognize-then-reject the lists are content-identical,
4937    // but reading the base list would still break isolation.
4938    if (sybaseiqcmds.size() == 0) {initsybaseiqcmds();}
4939    return finddbcmd(ptoken,sybaseiqcmds);
4940}
4941
4942    ESqlStatementType findmssqlcmd(TSourceToken ptoken){
4943        if (mssqlcmds.size() == 0) {initmssqlcmds();}
4944        return finddbcmd(ptoken,mssqlcmds);
4945    }
4946
4947    ESqlStatementType findteradatacmd(TSourceToken ptoken){
4948    if (teradatacmds.size() == 0) {initteradatacmds();}
4949    return finddbcmd(ptoken,teradatacmds);
4950}
4951
4952ESqlStatementType findpostgresqlcmd(TSourceToken ptoken){
4953    if (postgresqlcmds.size() == 0) {initpostgresqlcmds();}
4954    return finddbcmd(ptoken,postgresqlcmds);
4955}
4956
4957    ESqlStatementType findredshiftcmd(TSourceToken ptoken){
4958        if (redshiftcmds.size() == 0) {initredshiftcmds();}
4959        return finddbcmd(ptoken,redshiftcmds);
4960    }
4961
4962
4963    ESqlStatementType findgreenplumcmd(TSourceToken ptoken){
4964    if (greenplumcmds.size() == 0) {initgreenplumcmds();}
4965    return finddbcmd(ptoken,greenplumcmds);
4966}
4967
4968
4969ESqlStatementType findnetezzacmd(TSourceToken ptoken){
4970    if (netezzacmds.size() == 0) {initnetezzacmds();}
4971    return finddbcmd(ptoken,netezzacmds);
4972}
4973
4974ESqlStatementType findsparksqlcmd(TSourceToken ptoken){
4975        if (sparksqlcmds.size() == 0) {initsparksqlcmds();}
4976        return finddbcmd(ptoken,sparksqlcmds);
4977    }
4978
4979ESqlStatementType finddatabrickscmd(TSourceToken ptoken){
4980    if (databrickscmds.size() == 0) {initdatabrickscmds();}
4981    return finddbcmd(ptoken,databrickscmds);
4982}
4983    ESqlStatementType findgaussdbcmd(TSourceToken ptoken){
4984        if (gaussdbcmds.size() == 0) {initgaussdbcmds();}
4985        return finddbcmd(ptoken,gaussdbcmds);
4986    }
4987ESqlStatementType findprestocmd(TSourceToken ptoken){
4988    if (prestocmds.size() == 0) {initprestocmds();}
4989    return finddbcmd(ptoken,prestocmds);
4990}
4991
4992ESqlStatementType findathenacmd(TSourceToken ptoken){
4993    if (athenacmds.size() == 0) {initathenacmds();}
4994    return finddbcmd(ptoken,athenacmds);
4995}
4996
4997ESqlStatementType findmysqlcmd(TSourceToken ptoken){
4998    if (mysqlcmds.size() == 0) {initmysqlcmds();}
4999    return finddbcmd(ptoken,mysqlcmds);
5000}
5001
5002ESqlStatementType findhivecmd(TSourceToken ptoken){
5003        if (hivecmds.size() == 0) {inithivecmds();}
5004        return finddbcmd(ptoken,hivecmds);
5005    }
5006
5007ESqlStatementType finddb2cmd(TSourceToken ptoken){
5008            if (db2cmds.size() == 0) {initdb2cmds();}
5009            return finddbcmd(ptoken,db2cmds);
5010        }
5011
5012
5013ESqlStatementType findoraclecmd(TSourceToken ptoken){
5014            if (oraclecmds.size() == 0) {initoraclecmds();}
5015            return finddbcmd(ptoken,oraclecmds);
5016        }
5017
5018ESqlStatementType findmdxcmd(TSourceToken ptoken){
5019                    if (mdxcmds.size() == 0) {initmdxcmds();}
5020                    return finddbcmd(ptoken,mdxcmds);
5021                }
5022
5023ESqlStatementType findinformixcmd(TSourceToken ptoken){
5024                    if (informixcmds.size() == 0) {initinformixcmds();}
5025                    return finddbcmd(ptoken,informixcmds);
5026                }
5027
5028ESqlStatementType findhanacmd(TSourceToken ptoken){
5029    if (hanacmds.size() == 0) {inithanacmds();}
5030    return finddbcmd(ptoken,hanacmds);
5031}
5032
5033ESqlStatementType findverticacmd(TSourceToken ptoken){
5034    if (verticacmds.size() == 0) {initverticacmds();}
5035    return finddbcmd(ptoken,verticacmds);
5036}
5037
5038ESqlStatementType findcouchbasecmd(TSourceToken ptoken){
5039    if (couchbasecmds.size() == 0) {initcouchbasecmds();}
5040    return finddbcmd(ptoken,couchbasecmds);
5041}
5042
5043ESqlStatementType findsnowflakecmd(TSourceToken ptoken){
5044    if (snowflakecmds.size() == 0) {initsnowflakecmds();}
5045    return finddbcmd(ptoken,snowflakecmds);
5046}
5047
5048ESqlStatementType findbigquerycmd(TSourceToken ptoken){
5049    if (bigquerycmds.size() == 0) {initbigquerycmds();}
5050    return finddbcmd(ptoken,bigquerycmds);
5051}
5052
5053TCustomSqlStatement isnetezza(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
5054    TCustomSqlStatement ret = null;
5055
5056    gnewsqlstatementtype = ESqlStatementType.sstinvalid;
5057
5058    if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
5059       || (pcst.tokencode  == TBaseType.cmtslashstar)
5060       || (pcst.tokencode  == TBaseType.lexspace)
5061       || (pcst.tokencode  == TBaseType.lexnewline)
5062        || (pcst.tokentype == ETokenType.ttsemicolon) )
5063    {
5064      return null;
5065    }
5066
5067    int lcpos = pcst.posinlist;
5068    TSourceTokenList lcsourcetokenlist = pcst.container;
5069    TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
5070
5071    //subquery after semicolon or at first line
5072    if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
5073      {
5074        int k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
5075        if ( k >0 )
5076          {
5077            ret = new TSelectSqlStatement(pdbvendor);
5078          }
5079
5080          k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_with,1,"("); // ( with
5081          if ( k >0 )
5082          {
5083              ret = new TSelectSqlStatement(pdbvendor);
5084          }
5085
5086        return ret;
5087      }
5088
5089    //cte
5090    if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
5091      {
5092        ret = findcte(pcst,pdbvendor);
5093        if ( (ret != null) )  return ret;
5094      }
5095
5096    gnewsqlstatementtype = findnetezzacmd(pcst);
5097
5098    TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
5099    switch (gnewsqlstatementtype) {    //
5100        case sstinvalid:
5101          {
5102            ret = null;
5103
5104            if ( pstate == EFindSqlStateType.stnormal )
5105              {
5106              }
5107              break;
5108          }
5109        case sstselect:
5110          {
5111            boolean lcisnewsql = true;
5112
5113            if ( pstate != EFindSqlStateType.stnormal )
5114              {
5115                // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
5116                if ( (lcprevsolidtoken != null) )
5117                  {
5118                    if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
5119                      lcisnewsql = false; //subqery
5120                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
5121                      lcisnewsql = false;
5122                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
5123                      lcisnewsql = false;
5124                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
5125                      lcisnewsql = false;
5126                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
5127                      lcisnewsql = false;
5128                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
5129                      lcisnewsql = false;
5130                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
5131                      {
5132                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
5133                          lcisnewsql = false;
5134                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
5135                          lcisnewsql = false;
5136                      }
5137
5138                    if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
5139                      {
5140                        TSourceToken lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
5141                        if ( (lcpprevsolidtoken != null) )
5142                          {
5143                            if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
5144                              lcisnewsql = false;
5145                          }
5146                      }
5147
5148                  }
5149
5150
5151                if ( (lccurrentsqlstatement != null) )
5152                  {
5153                    if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
5154                      lcisnewsql = false;
5155                  }
5156
5157              }
5158
5159            if ( lcisnewsql )
5160              ret = new TSelectSqlStatement(pdbvendor);
5161
5162            break;
5163          }
5164        case sstinsert:
5165          {
5166            boolean lcisnewsql = true;
5167            if ( pstate != EFindSqlStateType.stnormal )
5168              {
5169                if ( (lccurrentsqlstatement != null) )
5170                  {
5171
5172                  }
5173              }
5174
5175            if ( lcisnewsql )
5176              ret = new TInsertSqlStatement(pdbvendor);
5177
5178            break;
5179          }
5180        case sstupdate:
5181          {
5182            boolean lcisnewsql = true;
5183            if ( pstate != EFindSqlStateType.stnormal )
5184              {
5185                lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
5186                if ( (lcprevsolidtoken != null) )
5187                  { //
5188                    if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
5189                      lcisnewsql = false;
5190                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
5191                      lcisnewsql = false;
5192                  }
5193
5194                TSourceToken lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
5195                if ( (lcnextsolidtoken != null) )
5196                  {
5197                    if ( lcnextsolidtoken.tokentype == ETokenType.ttleftparenthesis)
5198                      {
5199                        int k = lcsourcetokenlist.solidtokenafterpos(lcnextsolidtoken.posinlist,TBaseType.rrw_select,1,"(");
5200                        if ( k  == 0 ) lcisnewsql = false;
5201                      }
5202                  }
5203
5204
5205                if ( (lccurrentsqlstatement != null) )
5206                  {
5207                  }
5208              }
5209
5210            if ( lcisnewsql )
5211              {
5212                ret = new TUpdateSqlStatement(pdbvendor);
5213                ret.dummytag = 1; // means set clause in update is not found yet, used to seperate set clause from set statement
5214              }
5215            break;
5216          }
5217        case sstdelete:
5218          {
5219            boolean lcisnewsql = true;
5220
5221            if ( pstate != EFindSqlStateType.stnormal )
5222              {
5223                lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
5224                if ( (lcprevsolidtoken != null) )
5225                  {
5226                    if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
5227                      lcisnewsql = false;
5228                  }
5229
5230                if ( (lccurrentsqlstatement != null) )
5231                  {
5232                  }
5233              }
5234
5235            if ( lcisnewsql )
5236              ret = new TDeleteSqlStatement(pdbvendor);
5237
5238            break;
5239          }
5240        case sstTruncate:
5241          {
5242            ret = new TTruncateStatement(pdbvendor);
5243            ret.sqlstatementtype = gnewsqlstatementtype;
5244            break;
5245          }
5246        case sstcreatetable:
5247        case sstnetezzaCreateExternalTable:
5248          {
5249            ret = new TCreateTableSqlStatement(pdbvendor);
5250            break;
5251          }
5252        case sstcreateview:
5253          {
5254            ret = new TCreateViewSqlStatement(pdbvendor);
5255              break;
5256          }
5257        case sstcreatematerializedview:{
5258            ret = new TCreateMaterializedSqlStatement(pdbvendor);
5259            break;
5260        }
5261        case sstcreatedatabase:
5262          {
5263            ret = new TCreateDatabaseSqlStatement(pdbvendor);
5264              break;
5265          }
5266        case sstdroptable:
5267          {
5268            ret = new TDropTableSqlStatement(pdbvendor);
5269              break;
5270          }
5271        case sstdropview:
5272          {
5273           ret = new TDropViewSqlStatement(pdbvendor);
5274              break;
5275          }
5276        case sstaltertable:
5277          {
5278            ret = new TAlterTableStatement(pdbvendor);
5279              break;
5280          }
5281        case sstaltersession:
5282          {
5283            ret = new TAlterSessionStatement(pdbvendor);
5284              break;
5285          }
5286        case sstnetezzaGroomTable:
5287        {
5288            ret = new TNetezzaGroomTable(pdbvendor);
5289            break;
5290        }
5291        case sstnetezzaGenerateStatistics:
5292        {
5293            ret = new TNetezzaGenerateStatistics(pdbvendor);
5294            break;
5295        }
5296        case sstnetezzaAlterTable:
5297        {
5298            ret = new TAlterTableStatement(pdbvendor);
5299            break;
5300        }
5301        case sstnetezzaDropSchema:
5302        {
5303            ret = new TDropSchemaSqlStatement(pdbvendor);
5304            break;
5305        }
5306        case sstnetezzaCreateUser:
5307        {
5308            ret = new TCreateUserStmt(pdbvendor);
5309            break;
5310        }
5311        case sstnetezzaAlterView:
5312        {
5313            ret = new TAlterViewStatement(pdbvendor);
5314            break;
5315        }
5316        case sstnetezzaAlterDatabase:
5317        {
5318            ret = new TAlterDatabaseStmt(pdbvendor);
5319            break;
5320        }
5321        case sstAlterSchema:
5322        {
5323            ret = new TAlterSchemaStmt(pdbvendor);
5324            break;
5325        }
5326        case sstAlterSynonym:
5327        {
5328            ret = new TAlterSynonymStmt(pdbvendor);
5329            break;
5330        }
5331        case sstnetezzaDropTable:
5332        {
5333            ret = new TDropTableSqlStatement(pdbvendor);
5334            break;
5335        }
5336        case sstnetezzaDropView:
5337        {
5338            ret = new TDropViewSqlStatement(pdbvendor);
5339            break;
5340        }
5341        case sstmerge:
5342        {
5343            ret = new TMergeSqlStatement(pdbvendor);
5344            break;
5345        }
5346        case sstdropprocedure:
5347        {
5348            ret = new TDropProcedureStmt(pdbvendor);
5349            break;
5350        }
5351        case sstdropsynonym:
5352            ret = new TDropSynonymStmt(pdbvendor);
5353            break;
5354        case sstdropdatabase:
5355            ret = new TDropDatabaseStmt(pdbvendor);
5356            break;
5357        case sstcall:
5358            ret = new TCallStatement(pdbvendor);
5359            break;
5360        case sstcreatesynonym:
5361            ret = new TCreateSynonymStmt(pdbvendor);
5362            break;
5363        case sstcreatesequence:
5364            ret = new TCreateSequenceStmt(pdbvendor);
5365            break;
5366        case sstnetezzaDropSequence:
5367            ret = new TDropSequenceStmt(pdbvendor);
5368            break;
5369        case sstnetezzaGrant:
5370            ret = new TGrantStmt(pdbvendor);
5371            break;
5372        case sstexecutestmt:
5373            ret = new TExecuteSqlStatement(pdbvendor);
5374            break;
5375        case sstlocktable:
5376            ret = new TLockTableStmt(pdbvendor);
5377            break;
5378        case sstnetezzaComment:
5379            ret = new TCommentOnSqlStmt(pdbvendor);
5380            break;
5381        case sstcreateprocedure:
5382            ret = new TCreateProcedureStmt(pdbvendor);
5383            break;
5384        case sstnetezzaCopy:
5385            ret = new TCopyStmt(pdbvendor);
5386            break;
5387        case sstExplain:
5388            ret = new TExplainPlan(pdbvendor);
5389            break;
5390        case sstSetCatalog:
5391            ret = new TSetCatalogStmt(pdbvendor);
5392            break;
5393        case sstSetSchema:
5394            ret = new TSetSchemaStmt(pdbvendor);
5395            break;
5396        case sstnetezzaCommit:
5397        case sstnetezzaRollback:
5398        case sstnetezzaRevoke:
5399        default:
5400          {
5401            ret = new TUnknownSqlStatement(pdbvendor);
5402            ret.sqlstatementtype = gnewsqlstatementtype;
5403            break;
5404          }
5405    }    // case
5406
5407    return ret;
5408}
5409
5410    TCustomSqlStatement isredshift(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
5411        TCustomSqlStatement ret = null;
5412
5413        gnewsqlstatementtype = ESqlStatementType.sstinvalid;
5414
5415        if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
5416                || (pcst.tokencode  == TBaseType.cmtslashstar)
5417                || (pcst.tokencode  == TBaseType.lexspace)
5418                || (pcst.tokencode  == TBaseType.lexnewline)
5419                || (pcst.tokentype == ETokenType.ttsemicolon) )
5420        {
5421            return null;
5422        }
5423
5424        int lcpos = pcst.posinlist;
5425        TSourceTokenList lcsourcetokenlist = pcst.container;
5426        TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
5427
5428        //subquery after semicolon or at first line
5429        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
5430        {
5431            int k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
5432            if ( k >0 )
5433            {
5434                ret = new TSelectSqlStatement(pdbvendor);
5435            }
5436
5437            return ret;
5438        }
5439
5440        //cte
5441        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
5442        {
5443            ret = findcte(pcst,pdbvendor);
5444            if ( (ret != null) )  return ret;
5445        }
5446
5447        gnewsqlstatementtype = findredshiftcmd(pcst);
5448
5449        TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
5450        switch (gnewsqlstatementtype) {    //
5451            case sstinvalid:
5452            {
5453                ret = null;
5454                break;
5455            }
5456            case sstselect:
5457            {
5458                boolean lcisnewsql = true;
5459
5460                if ( pstate != EFindSqlStateType.stnormal )
5461                {
5462                    // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
5463                    if ( (lcprevsolidtoken != null) )
5464                    {
5465                        if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
5466                            lcisnewsql = false; //subqery
5467                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
5468                            lcisnewsql = false;
5469                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
5470                            lcisnewsql = false;
5471                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
5472                            lcisnewsql = false;
5473                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
5474                            lcisnewsql = false;
5475                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
5476                            lcisnewsql = false;
5477                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
5478                        {
5479                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
5480                                lcisnewsql = false;
5481                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
5482                                lcisnewsql = false;
5483                        }
5484
5485                        if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
5486                        {
5487                            TSourceToken lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
5488                            if ( (lcpprevsolidtoken != null) )
5489                            {
5490                                if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
5491                                    lcisnewsql = false;
5492                            }
5493                        }
5494
5495                    }
5496
5497
5498                    if ( (lccurrentsqlstatement != null) )
5499                    {
5500                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
5501                            lcisnewsql = false;
5502                    }
5503
5504                }
5505
5506                if ( lcisnewsql )
5507                    ret = new TSelectSqlStatement(pdbvendor);
5508
5509                break;
5510            }
5511            case sstinsert:
5512            {
5513                boolean lcisnewsql = true;
5514                if ( pstate != EFindSqlStateType.stnormal )
5515                {
5516                    if ( (lccurrentsqlstatement != null) )
5517                    {
5518
5519                    }
5520                }
5521
5522                if ( lcisnewsql )
5523                    ret = new TInsertSqlStatement(pdbvendor);
5524
5525                break;
5526            }
5527            case sstupdate:
5528            {
5529                boolean lcisnewsql = true;
5530                if ( pstate != EFindSqlStateType.stnormal )
5531                {
5532                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
5533                    if ( (lcprevsolidtoken != null) )
5534                    { //
5535                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
5536                            lcisnewsql = false;
5537                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
5538                            lcisnewsql = false;
5539                    }
5540
5541                    TSourceToken lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
5542                    if ( (lcnextsolidtoken != null) )
5543                    {
5544                        if ( lcnextsolidtoken.tokentype == ETokenType.ttleftparenthesis)
5545                        {
5546                            int k = lcsourcetokenlist.solidtokenafterpos(lcnextsolidtoken.posinlist,TBaseType.rrw_select,1,"(");
5547                            if ( k  == 0 ) lcisnewsql = false;
5548                        }
5549                    }
5550
5551
5552                    if ( (lccurrentsqlstatement != null) )
5553                    {
5554                    }
5555                }
5556
5557                if ( lcisnewsql )
5558                {
5559                    ret = new TUpdateSqlStatement(pdbvendor);
5560                    ret.dummytag = 1; // means set clause in update is not found yet, used to seperate set clause from set statement
5561                }
5562                break;
5563            }
5564            case sstdelete:
5565            {
5566                boolean lcisnewsql = true;
5567
5568                if ( pstate != EFindSqlStateType.stnormal )
5569                {
5570                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
5571                    if ( (lcprevsolidtoken != null) )
5572                    {
5573                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
5574                            lcisnewsql = false;
5575                    }
5576
5577                    if ( (lccurrentsqlstatement != null) )
5578                    {
5579                    }
5580                }
5581
5582                if ( lcisnewsql )
5583                    ret = new TDeleteSqlStatement(pdbvendor);
5584
5585                break;
5586            }
5587            case sstredshiftAbort:
5588            {
5589                ret = new TRedshiftAbort(pdbvendor);
5590                ret.sqlstatementtype = gnewsqlstatementtype;
5591                break;
5592            }
5593            case sstalterdatabase:
5594            {
5595                ret = new TAlterDatabaseStmt(pdbvendor);
5596                break;
5597            }
5598            case sstredshiftAlterGroup:
5599            {
5600                ret = new TAlterGroup(pdbvendor);
5601                break;
5602            }
5603            case sstredshiftAlterSchema:
5604            {
5605                ret = new TRedshiftAlterSchema(pdbvendor);
5606                break;
5607            }
5608            case sstaltertable:
5609            {
5610                ret = new TAlterTableStatement(pdbvendor);
5611                break;
5612            }
5613            case sstredshiftAlterUser:
5614            {
5615                ret = new TRedshiftAlterUser(pdbvendor);
5616                break;
5617            }
5618            case sstredshiftAnalyze:
5619            {
5620                ret = new TRedshiftAnalyze(pdbvendor);
5621                break;
5622            }
5623            case sstredshiftAnalyzeCompression:
5624            {
5625                ret = new TRedshiftAnalyzeCompression(pdbvendor);
5626                break;
5627            }
5628            case sstredshiftBegin:
5629            {
5630                ret = new TRedshiftBegin(pdbvendor);
5631                break;
5632            }
5633            case sstredshiftCancel:
5634            {
5635                ret = new TRedshiftCancel(pdbvendor);
5636                break;
5637            }
5638            case sstredshiftClose:
5639            {
5640                ret = new TCloseStmt(pdbvendor);
5641                break;
5642            }
5643            case sstredshiftComment:
5644            {
5645                ret = new TRedshiftComment(pdbvendor);
5646                break;
5647            }
5648            case sstredshiftCommit:
5649            {
5650                ret = new TRedshiftCommit(pdbvendor);
5651                break;
5652            }
5653            case sstredshiftCopy:
5654            {
5655                ret = new TRedshiftCopy(pdbvendor);
5656                break;
5657            }
5658            case sstcreatedatabase:
5659            {
5660                ret = new TCreateDatabaseSqlStatement(pdbvendor);
5661                break;
5662            }
5663            case sstredshiftCreateGroup:
5664            {
5665                ret = new TCreateGroup(pdbvendor);
5666                break;
5667            }
5668            case sstredshiftCreateSchema:
5669            {
5670                ret = new TCreateSchemaSqlStatement(pdbvendor);
5671                break;
5672            }
5673            case sstcreatetable:
5674            {
5675                ret = new TCreateTableSqlStatement(pdbvendor);
5676                break;
5677            }
5678            case sstredshiftCreateUser:
5679            {
5680                ret = new TRedshiftCreateUser(pdbvendor);
5681                break;
5682            }
5683            case sstcreateview:
5684            {
5685                ret = new TCreateViewSqlStatement(pdbvendor);
5686                break;
5687            }
5688            case sstredshiftDeallocate:
5689            {
5690                ret = new TRedshiftDeallocate(pdbvendor);
5691                break;
5692            }
5693            case sstredshiftDeclare:
5694            {
5695                ret = new TRedshiftDeclare(pdbvendor);
5696                break;
5697            }
5698            case sstredshiftDropDatabase:
5699            {
5700                ret = new TDropDatabaseStmt(pdbvendor);
5701                break;
5702            }
5703            case sstredshiftDropGroup:
5704            {
5705                ret = new TDropGroup(pdbvendor);
5706                break;
5707            }
5708            case sstredshiftDropSchema:
5709            {
5710                ret = new TRedshiftDropSchema(pdbvendor);
5711                break;
5712            }
5713            case sstdroptable:
5714            {
5715                ret = new TDropTableSqlStatement(pdbvendor);
5716                break;
5717            }
5718            case sstredshiftDropUser:
5719            {
5720                ret = new TRedshiftDropUser(pdbvendor);
5721                break;
5722            }
5723            case sstdropview:
5724            {
5725                ret = new TDropViewSqlStatement(pdbvendor);
5726                break;
5727            }
5728            case sstredshiftEnd:
5729            {
5730                ret = new TRedshiftEnd(pdbvendor);
5731                break;
5732            }
5733            case sstExecutePreparedStmt:
5734            {
5735                ret = new TExecuteSqlStatement(pdbvendor);
5736                break;
5737            }
5738            case sstExplain:
5739            {
5740                ret = new TExplainPlan(pdbvendor);
5741                break;
5742            }
5743            case sstFetchFrom:
5744            {
5745                ret = new TFetchFromStmt(pdbvendor);
5746                break;
5747            }
5748            case sstGrant:
5749            {
5750                ret = new TGrantStmt(pdbvendor);
5751                break;
5752            }
5753            case sstredshiftLock:
5754            {
5755                ret = new TLockTableStmt(pdbvendor);
5756                break;
5757            }
5758            case sstredshiftPrepare:
5759            {
5760                ret = new TRedshiftPrepare(pdbvendor);
5761                break;
5762            }
5763            case sstredshiftReset:
5764            {
5765                ret = new TRedshiftReset(pdbvendor);
5766                break;
5767            }
5768            case sstRevoke:
5769            {
5770                ret = new TRevokeStmt(pdbvendor);
5771                break;
5772            }
5773            case sstredshiftRollback:
5774            {
5775                ret = new TRedshiftRollback(pdbvendor);
5776                break;
5777            }
5778            case sstredshiftSet:
5779            {
5780                ret = new TSetStmt(pdbvendor);
5781                break;
5782            }
5783            case sstredshiftSetSessionAuthorization:
5784            {
5785                ret = new TRedshiftSessionAuthorization(pdbvendor);
5786                break;
5787            }
5788            case sstredshiftShow:
5789            {
5790                ret = new TShowStmt(pdbvendor);
5791                break;
5792            }
5793            case sstStartTransaction:
5794            {
5795                ret = new TStartTransactionStmt(pdbvendor);
5796                break;
5797            }
5798            case sstTruncate:
5799            {
5800                ret = new TTruncateStatement(pdbvendor);
5801                break;
5802            }
5803            case sstredshiftUnload:
5804            {
5805                ret = new TUnloadStmt(pdbvendor);
5806                break;
5807            }
5808            case sstredshiftVacuum:
5809            {
5810                ret = new TRedshiftVacuum(pdbvendor);
5811                break;
5812            }
5813            case sstcreatefunction:
5814                ret = new TCreateFunctionStmt(pdbvendor);
5815                break;
5816            case sstcreateprocedure:
5817                ret = new TCreateProcedureStmt(pdbvendor);
5818                break;
5819            case sstcreatematerializedview:{
5820                ret = new TCreateMaterializedSqlStatement(pdbvendor);
5821                break;
5822            }
5823            case sstcall:
5824                ret = new TCallStatement(pdbvendor);
5825                break;
5826            case sstmerge:
5827            {
5828                ret = new TMergeSqlStatement(pdbvendor);
5829                break;
5830            }
5831            default:
5832            {
5833                ret = new TUnknownSqlStatement(pdbvendor);
5834                ret.sqlstatementtype = gnewsqlstatementtype;
5835                break;
5836            }
5837        }    // case
5838
5839        return ret;
5840    }
5841    TCustomSqlStatement isgaussdb(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
5842        TCustomSqlStatement ret = null;
5843
5844        gnewsqlstatementtype = ESqlStatementType.sstinvalid;
5845
5846        if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
5847                || (pcst.tokencode  == TBaseType.cmtslashstar)
5848                || (pcst.tokencode  == TBaseType.lexspace)
5849                || (pcst.tokencode  == TBaseType.lexnewline)
5850                || (pcst.tokentype == ETokenType.ttsemicolon) )
5851        {
5852            return null;
5853        }
5854
5855        int lcpos = pcst.posinlist;
5856        TSourceTokenList lcsourcetokenlist = pcst.container;
5857        TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
5858
5859        //subquery after semicolon or at first line
5860        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
5861        {
5862            int k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
5863            if ( k >0 )
5864            {
5865                ret = new TSelectSqlStatement(pdbvendor);
5866            }else{
5867                k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_with,1,"(");
5868                if ( k >0 )
5869                { // syntax like: (with ... )
5870                    ret = new TSelectSqlStatement(pdbvendor);
5871                }
5872            }
5873
5874            return ret;
5875        }
5876
5877        //cte
5878        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
5879        {
5880            ret = findcte(pcst,pdbvendor);
5881            if ( (ret != null) )  return ret;
5882        }
5883
5884        gnewsqlstatementtype = findgaussdbcmd(pcst);
5885
5886        TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
5887        switch (gnewsqlstatementtype) {    //
5888            case sstinvalid:
5889            {
5890                ret = null;
5891
5892                if ( pstate == EFindSqlStateType.stnormal )
5893                {
5894                    if ( pcst.tokencode == TBaseType.label_begin )
5895                    {
5896                        ret = new TCommonBlock(pdbvendor);
5897                        gnewsqlstatementtype = ret.sqlstatementtype;
5898
5899                    }
5900                    else if ( pcst.tokencode == TBaseType.rrw_declare )
5901                    {
5902                        ret = new TCommonBlock(pdbvendor);
5903                        gnewsqlstatementtype = ret.sqlstatementtype;
5904                    }
5905                    else if ( pcst.tokencode == TBaseType.rrw_begin )
5906                    {
5907                        // https://support.huaweicloud.com/distributed-devg-v3-opengauss/gaussdb-12-0498.html
5908                        // 有两种可能 1:开启匿名块,或 2:开启事务
5909                        boolean isBlock = true;
5910                        TSourceToken st = pcst.nextSolidToken();
5911                        if (st != null){
5912                            if ((st.tokencode == ';')
5913                                    ||(st.toString().equalsIgnoreCase("work"))
5914                                    ||(st.toString().equalsIgnoreCase("transaction"))
5915                            ){
5916                                isBlock = false;
5917                            }
5918                        }
5919                        if (isBlock){
5920                            ret = new TCommonBlock(pdbvendor);
5921                            gnewsqlstatementtype = ret.sqlstatementtype;
5922                        }else{
5923                            ret = new TStartTransactionStmt(pdbvendor);
5924                            gnewsqlstatementtype = ret.sqlstatementtype;
5925                            pcst.tokencode = TBaseType.GAUSSDB_BEGIN_TRANSACTION;
5926                        }
5927
5928                    }
5929                    else if ( pcst.tokencode == TBaseType.rrw_procedure )
5930                    {
5931                        ret = new TCreateProcedureStmt(pdbvendor);
5932                        // ret.sqlstatementtype = ESqlStatementType.sstplsql_createprocedure;
5933                        gnewsqlstatementtype = ret.sqlstatementtype;
5934                    }
5935                    else if ( pcst.tokencode == TBaseType.rrw_function )
5936                    {
5937                        ret = new TPlsqlCreateFunction(pdbvendor);
5938                        // ret.sqlstatementtype = ESqlStatementType.sstplsql_createfunction;
5939                        gnewsqlstatementtype = ret.sqlstatementtype;
5940                    }
5941                    else if ( pcst.tokencode == TBaseType.rrw_package )
5942                    {
5943                        ret = new TPlsqlCreatePackage(pdbvendor);
5944                        // ret.sqlstatementtype = ESqlStatementType.sstplsql_createpackage;
5945                        gnewsqlstatementtype = ret.sqlstatementtype;
5946                    }
5947                }
5948                break;
5949            }
5950            case sstpostgresqlDeclare:{
5951                // https://support.huaweicloud.com/distributed-devg-v3-opengauss/gaussdb-12-0554.html
5952                // declare cursor_name [ BINARY ] [ NO SCROLL ] CURSOR ..., 这是单个的定义游标语句
5953                // 下面这种类型的定义才是开始一个 匿名块
5954                // [DECLARE [declare_statements]]
5955                //BEGIN
5956                //execution_statements
5957                //END;
5958
5959                // 判断逻辑如下:
5960                // 1. 如果 declare 后直接跟 CURSOR, 那就是开启一个 匿名块
5961                // 2. 如果 declare 后直接跟的是一个 identifier, 那再检查之后的第2或3或4个token是否为 CURSOR,
5962                // 如果是,该语句为 单个的定义游标语句,否则为  匿名块
5963
5964                boolean isBlock = true;
5965                TSourceToken st = pcst.nextSolidToken();
5966                if (st != null){
5967                    if (st.tokencode == TBaseType.GAUSSDB_CURSOR){
5968                        isBlock = true;
5969                    }else if (st.tokencode == TBaseType.ident){
5970                        st = st.nextSolidToken();
5971                        if (st != null){
5972                            if ((st.tokencode == TBaseType.GAUSSDB_CURSOR)
5973                                    ||(st.tokencode == TBaseType.rrw_binary)
5974                                    ||(st.toString().equalsIgnoreCase("no"))
5975                            ){
5976                                isBlock = false;
5977                            }
5978                        }
5979                    }
5980                }
5981                if (isBlock){
5982                    ret = new TCommonBlock(pdbvendor);
5983                    gnewsqlstatementtype = ret.sqlstatementtype;
5984                }else{
5985                    ret = new TDeclareCursorStmt(pdbvendor);
5986                    gnewsqlstatementtype = ret.sqlstatementtype;
5987                    pcst.tokencode = TBaseType.GAUSSDB_DECLARE_SINGLE_STMT;
5988                }
5989
5990                break;
5991            }
5992            case sstmerge:
5993            {
5994                ret = new TMergeSqlStatement(pdbvendor);
5995                ret.sqlstatementtype = gnewsqlstatementtype;
5996                break;
5997            }
5998            case sstcreatesynonym:
5999                ret = new TCreateSynonymStmt(pdbvendor);
6000                break;
6001            case sstdropsynonym:
6002                ret = new TDropSynonymStmt(pdbvendor);
6003                break;
6004            case sstAlterPackage:
6005                ret = new TAlterPackageStmt(pdbvendor);
6006                break;
6007            case sstpostgresqlRefreshMaterializedView:
6008                ret = new TRefreshMaterializedViewStmt(pdbvendor);
6009                break;
6010            case sstAlterSynonym:
6011                ret = new TAlterSynonymStmt(pdbvendor);
6012                break;
6013            case sstsavepoint:
6014            {
6015                ret = new TSavepointStmt(pdbvendor);
6016                ret.sqlstatementtype = gnewsqlstatementtype;
6017                break;
6018            }
6019            case sstselect:
6020            {
6021                boolean lcisnewsql = true;
6022
6023                if ( pstate != EFindSqlStateType.stnormal )
6024                {
6025                    // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
6026                    if ( (lcprevsolidtoken != null) )
6027                    {
6028                        if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
6029                            lcisnewsql = false; //subqery
6030                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
6031                            lcisnewsql = false;
6032                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
6033                            lcisnewsql = false;
6034                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
6035                            lcisnewsql = false;
6036                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
6037                            lcisnewsql = false;
6038                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
6039                            lcisnewsql = false;
6040                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
6041                        {
6042                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
6043                                lcisnewsql = false;
6044                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
6045                                lcisnewsql = false;
6046                        }
6047
6048                        if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
6049                        {
6050                            TSourceToken lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
6051                            if ( (lcpprevsolidtoken != null) )
6052                            {
6053                                if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
6054                                    lcisnewsql = false;
6055                            }
6056                        }
6057
6058                    }
6059
6060
6061                    if ( (lccurrentsqlstatement != null) )
6062                    {
6063                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
6064                            lcisnewsql = false;
6065                    }
6066
6067                }
6068
6069                if ( lcisnewsql )
6070                    ret = new TSelectSqlStatement(pdbvendor);
6071
6072                break;
6073            }
6074            case sstinsert:
6075            {
6076                boolean lcisnewsql = true;
6077                if ( pstate != EFindSqlStateType.stnormal )
6078                {
6079                    if ( (lccurrentsqlstatement != null) )
6080                    {
6081
6082                    }
6083                }
6084
6085                if ( lcisnewsql )
6086                    ret = new TInsertSqlStatement(pdbvendor);
6087
6088                break;
6089            }
6090            case sstupdate:
6091            {
6092                boolean lcisnewsql = true;
6093                if ( pstate != EFindSqlStateType.stnormal )
6094                {
6095                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
6096                    if ( (lcprevsolidtoken != null) )
6097                    { //
6098                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
6099                            lcisnewsql = false;
6100                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
6101                            lcisnewsql = false;
6102                    }
6103
6104                    TSourceToken lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
6105                    if ( (lcnextsolidtoken != null) )
6106                    {
6107                        if ( lcnextsolidtoken.tokentype == ETokenType.ttleftparenthesis)
6108                        {
6109                            int k = lcsourcetokenlist.solidtokenafterpos(lcnextsolidtoken.posinlist,TBaseType.rrw_select,1,"(");
6110                            if ( k  == 0 ) lcisnewsql = false;
6111                        }
6112                    }
6113
6114
6115                    if ( (lccurrentsqlstatement != null) )
6116                    {
6117                    }
6118                }
6119
6120                if ( lcisnewsql )
6121                {
6122                    ret = new TUpdateSqlStatement(pdbvendor);
6123                    ret.dummytag = 1; // means set clause in update is not found yet, used to seperate set clause from set statement
6124                }
6125                break;
6126            }
6127            case sstdelete:
6128            {
6129                boolean lcisnewsql = true;
6130
6131                if ( pstate != EFindSqlStateType.stnormal )
6132                {
6133                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
6134                    if ( (lcprevsolidtoken != null) )
6135                    {
6136                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
6137                            lcisnewsql = false;
6138                    }
6139
6140                    if ( (lccurrentsqlstatement != null) )
6141                    {
6142                    }
6143                }
6144
6145                if ( lcisnewsql )
6146                    ret = new TDeleteSqlStatement(pdbvendor);
6147
6148                break;
6149            }
6150            case sstoraclecommit:
6151            {
6152                ret = new TUnknownSqlStatement(pdbvendor);
6153                ret.sqlstatementtype = gnewsqlstatementtype;
6154                break;
6155            }
6156            case sstoraclerollback:
6157            {
6158                ret = new TUnknownSqlStatement(pdbvendor);
6159                ret.sqlstatementtype = gnewsqlstatementtype;
6160                break;
6161            }
6162            case sstoraclesavepoint:
6163            {
6164                ret = new TUnknownSqlStatement(pdbvendor);
6165                ret.sqlstatementtype = gnewsqlstatementtype;
6166                break;
6167            }
6168            case sstoraclerevoke:
6169            {
6170                ret = new TUnknownSqlStatement(pdbvendor);
6171                ret.sqlstatementtype = gnewsqlstatementtype;
6172                break;
6173            }
6174            case sstoraclegrant:
6175            {
6176                ret = new TUnknownSqlStatement(pdbvendor);
6177                //ret = new TGrantStmt(pdbvendor);
6178                ret.sqlstatementtype = gnewsqlstatementtype;
6179                break;
6180            }
6181            case sstoracleanalyze:
6182            {
6183                ret = new TUnknownSqlStatement(pdbvendor);
6184                ret.sqlstatementtype = gnewsqlstatementtype;
6185                break;
6186            }
6187            case sstoracletruncate:
6188            {
6189                ret = new TUnknownSqlStatement(pdbvendor);
6190                ret.sqlstatementtype = gnewsqlstatementtype;
6191                break;
6192            }
6193            case sstcreatetable:
6194            {
6195                ret = new TCreateTableSqlStatement(pdbvendor);
6196                break;
6197            }
6198            case sstoraclecreateview:
6199            {
6200                ret = new TCreateViewSqlStatement(pdbvendor);
6201                break;
6202            }
6203            case sstcreatematerializedview:{
6204                ret = new TCreateMaterializedSqlStatement(pdbvendor);
6205                break;
6206            }
6207            case sstoraclecreateindex:
6208            {
6209                ret = new TCreateIndexSqlStatement(pdbvendor);
6210                break;
6211            }
6212            case sstoraclecreatedatabase:
6213            {
6214                ret = new TCreateDatabaseSqlStatement(pdbvendor);
6215                break;
6216            }
6217            case sstoracledroptable:
6218            {
6219                ret = new TDropTableSqlStatement(pdbvendor);
6220                break;
6221            }
6222            case sstoracledropview:
6223            {
6224                ret = new TDropViewSqlStatement(pdbvendor);
6225                break;
6226            }
6227            case sstoracledropindex:
6228            {
6229                ret = new TDropIndexSqlStatement(pdbvendor);
6230                break;
6231            }
6232            case sstaltertable:
6233            {
6234                ret = new TAlterTableStatement(pdbvendor);
6235                break;
6236            }
6237            case sstoraclealtersession:
6238            {
6239                ret = new TAlterSessionStatement(pdbvendor);
6240                break;
6241            }
6242            case sstplsql_createprocedure:
6243            {
6244                ret = new TPlsqlCreateProcedure(pdbvendor);
6245                ret.sqlstatementtype = gnewsqlstatementtype;
6246                // System.out.println(gnewsqlstatementtype);
6247                break;
6248            }
6249            case sstplsql_createfunction:
6250            {
6251                ret = new TPlsqlCreateFunction(pdbvendor);
6252                ret.sqlstatementtype = gnewsqlstatementtype;
6253                // System.out.println(gnewsqlstatementtype);
6254                break;
6255            }
6256            case sstplsql_createpackage:
6257            {
6258                ret = new TPlsqlCreatePackage(pdbvendor);
6259                ret.sqlstatementtype = gnewsqlstatementtype;
6260                // System.out.println(gnewsqlstatementtype);
6261                break;
6262            }
6263            case sstoraclecreatepackagebody:
6264            {
6265                ret = new TPlsqlCreatePackage(pdbvendor);
6266                ret.sqlstatementtype = gnewsqlstatementtype;
6267                //ret.sqlstatementtype = ESqlStatementType.sstplsql_createpackage;
6268                break;
6269            }
6270            case sstplsql_createtrigger:
6271            {
6272                ret = new TPlsqlCreateTrigger(pdbvendor);
6273                ret.sqlstatementtype = gnewsqlstatementtype;
6274                // System.out.println(gnewsqlstatementtype);
6275                break;
6276            }
6277            case sstplsql_execimmestmt:
6278            {
6279                ret = new TExecImmeStmt(pdbvendor);
6280                // ret.sqlstatementtype = gnewsqlstatementtype;
6281                // System.out.println(gnewsqlstatementtype);
6282                break;
6283            }
6284            case sstplsql_createtype_placeholder:
6285            {
6286                ret = new TPlsqlCreateType_Placeholder(pdbvendor);
6287                ret.sqlstatementtype = gnewsqlstatementtype;
6288                // System.out.println(gnewsqlstatementtype);
6289                break;
6290            }
6291            case sstplsql_createtypebody:
6292            {
6293                ret = new TPlsqlCreateTypeBody(pdbvendor);
6294                ret.sqlstatementtype = gnewsqlstatementtype;
6295                break;
6296            }
6297            case sstCommentOn:
6298            {
6299                ret = new TCommentOnSqlStmt(pdbvendor);
6300                break;
6301            }
6302            case sstoraclecreatesequence:
6303            {
6304                ret = new TCreateSequenceStmt(pdbvendor);
6305                break;
6306            }
6307            case sstoraclecreatesynonym:
6308            {
6309                ret = new TCreateSynonymStmt(pdbvendor);
6310                break;
6311            }
6312            case sstoraclecreatedirectory:
6313            {
6314                ret = new TOracleCreateDirectoryStmt(pdbvendor);
6315                break;
6316            }
6317            case sstpostgresqlCreateIndex:
6318                ret = new TCreateIndexSqlStatement(pdbvendor);
6319                break;
6320            case sstpostgresqlCreateView:
6321                ret = new TCreateViewSqlStatement(pdbvendor);
6322                break;
6323            case sstpostgresqlCreateFunction:
6324                ret = new TCreateFunctionStmt(pdbvendor);
6325                break;
6326            case sstcreatetrigger:
6327                ret = new TCreateTriggerStmt(pdbvendor);
6328                break;
6329            case sstpostgresqlMove:
6330                ret = new TMoveStmt(pdbvendor);
6331                break;
6332            case sstpostgresqlTruncate:
6333                ret = new TTruncateStatement(pdbvendor);
6334                break;
6335            case sstpostgresqlExecute:
6336                ret = new TExecuteSqlStatement(pdbvendor);
6337                break;
6338            case sstpostgresqlDropTable:
6339                ret = new TDropTableSqlStatement(pdbvendor);
6340                break;
6341            case sstPostgresqlBlock:
6342                ret = new TCommonBlock(pdbvendor);
6343                break;
6344            case sstVacuum:
6345                ret = new TVacuumStmt(pdbvendor);
6346                break;
6347            case sstReindex:
6348                ret = new TReindexStmt(pdbvendor);
6349                break;
6350            case sstcreateprocedure:
6351                ret = new TCreateProcedureStmt(pdbvendor);
6352                break;
6353            case sstpostgresqlCommit:
6354                ret = new TCommitStmt(pdbvendor);
6355                break;
6356            case sstpostgresqlCreateSchema:
6357                ret = new TCreateSchemaSqlStatement(pdbvendor);
6358                break;
6359            case sstpostgresqlDropSchema:
6360                ret = new TDropSchemaSqlStatement(pdbvendor);
6361                break;
6362            case sstpostgresqlShowSearchPath:
6363                ret = new TShowSearchPathStmt(pdbvendor);
6364                break;
6365            case sstpostgresqlCopy:
6366                ret = new TCopyStmt(pdbvendor);
6367                break;
6368            case sstcall:
6369                ret = new TCallStatement(pdbvendor);
6370                break;
6371            case sstpostgresqlAlterSchema:
6372                ret = new TAlterSchemaStmt(pdbvendor);
6373                break;
6374            case sstpostgresqlAlterfunction:
6375                ret = new TAlterFunctionStmt(pdbvendor);
6376                break;
6377            case sstStartTransaction:
6378            {
6379                ret = new TStartTransactionStmt(pdbvendor);
6380                break;
6381            }
6382            case sstpostgresqlComment:
6383                ret = new TCommentOnSqlStmt(pdbvendor);
6384                break;
6385            case sstpostgresqlShow:
6386                ret = new TShowStmt(pdbvendor);
6387                break;
6388            case sstpostgresqlSetSearchPath:
6389            case sstpostgresqlSet:
6390                ret = new TSetStmt(pdbvendor);
6391                break;
6392            case sstpostgresqlDropFunction:
6393                ret = new TDropFunctionStmt(pdbvendor);
6394                break;
6395            case sstpostgresqlDropTrigger:
6396                ret = new TDropTriggerSqlStatement(pdbvendor);
6397                break;
6398            case sstpostgresqlDropProcedure:
6399                ret = new TDropProcedureStmt(pdbvendor);
6400                break;
6401            case sstdropindex:
6402                ret = new TDropIndexSqlStatement(pdbvendor);
6403                break;
6404            case sstpostgresqlDropSequence:
6405                ret = new TDropSequenceStmt(pdbvendor);
6406                break;
6407            case sstpostgresqlDropView:
6408                ret = new TDropViewSqlStatement(pdbvendor);
6409                break;
6410            case sstpostgresqlCreateSequence:
6411                ret = new TCreateSequenceStmt(pdbvendor);
6412                break;
6413            case sstpostgresqlAlterSequence:
6414                ret = new TAlterSequenceStatement(pdbvendor);
6415                break;
6416            case sstpostgresqlCreateType:
6417                ret = new TCreateTypeStmt(pdbvendor);
6418                break;
6419            case sstcreateExtension:
6420                ret = new TCreateExtensionStmt(pdbvendor);
6421                break;
6422            case sstPostgresqlTable:
6423                ret = new TPostgresqlTableStmt(pdbvendor);
6424                break;
6425            case sstpostgresqlEnd:
6426                ret = new TEndTran(pdbvendor);
6427                break;
6428            case sstpostgresqlDo:
6429                boolean lcisnewsql = false;
6430
6431                if ( pstate == EFindSqlStateType.stnormal )
6432                {
6433                    TSourceToken lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
6434                    if ( (lcnextsolidtoken != null) )
6435                    {
6436                        if ( lcnextsolidtoken.tokencode == TBaseType.rrw_postgresql_function_delimiter )
6437                            lcisnewsql = true;
6438                        else if ( lcnextsolidtoken.tokencode == TBaseType.rrw_postgresql_language )
6439                            lcisnewsql = true;
6440                    }
6441                }
6442
6443                if ( lcisnewsql )
6444                    ret = new TDoExecuteBlockStmt(pdbvendor);
6445
6446                break;
6447            default:
6448            {
6449                ret = new TUnknownSqlStatement(pdbvendor);
6450                ret.sqlstatementtype = gnewsqlstatementtype;
6451                break;
6452            }
6453        }    // case
6454
6455        return ret;
6456    }
6457
6458    TCustomSqlStatement ispostgresql(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
6459        TCustomSqlStatement ret = null;
6460
6461        gnewsqlstatementtype = ESqlStatementType.sstinvalid;
6462
6463        if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
6464                || (pcst.tokencode  == TBaseType.cmtslashstar)
6465                || (pcst.tokencode  == TBaseType.lexspace)
6466                || (pcst.tokencode  == TBaseType.lexnewline)
6467                || (pcst.tokentype == ETokenType.ttsemicolon) )
6468        {
6469            return null;
6470        }
6471
6472        int lcpos = pcst.posinlist;
6473        TSourceTokenList lcsourcetokenlist = pcst.container;
6474        TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
6475
6476        //subquery after semicolon or at first line
6477        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
6478        {
6479            int k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
6480            if ( k >0 )
6481            {
6482                ret = new TSelectSqlStatement(pdbvendor);
6483            }
6484
6485            return ret;
6486        }
6487
6488        //cte
6489        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
6490        {
6491            ret = findcte(pcst,pdbvendor);
6492            if ( (ret != null) )  return ret;
6493        }
6494
6495        gnewsqlstatementtype = findpostgresqlcmd(pcst);
6496
6497        TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
6498        switch (gnewsqlstatementtype) {    //
6499            case sstinvalid:
6500            {
6501                ret = null;
6502
6503                if ( pstate == EFindSqlStateType.stnormal )
6504                {
6505                    if ( pcst.tokencode == TBaseType.label_begin )
6506                    {
6507                        ret = new TCommonBlock(pdbvendor);
6508                        gnewsqlstatementtype = ret.sqlstatementtype;
6509                    }
6510                    else if ( pcst.tokencode == TBaseType.rrw_declare )
6511                    {
6512                        ret = new TCommonBlock(pdbvendor);
6513                        gnewsqlstatementtype = ret.sqlstatementtype;
6514                    }
6515                    else if ( pcst.tokencode == TBaseType.rrw_begin )
6516                    {
6517                        ret = new TCommonBlock(pdbvendor);
6518                        gnewsqlstatementtype = ret.sqlstatementtype;
6519                    }
6520                    else if ( pcst.tokencode == TBaseType.rrw_procedure )
6521                    {
6522                        ret = new TCreateProcedureStmt(pdbvendor);
6523                        // ret.sqlstatementtype = ESqlStatementType.sstplsql_createprocedure;
6524                        gnewsqlstatementtype = ret.sqlstatementtype;
6525                    }
6526                    else if ( pcst.tokencode == TBaseType.rrw_function )
6527                    {
6528                        ret = new TPlsqlCreateFunction(pdbvendor);
6529                        // ret.sqlstatementtype = ESqlStatementType.sstplsql_createfunction;
6530                        gnewsqlstatementtype = ret.sqlstatementtype;
6531                    }
6532                    else if ( pcst.tokencode == TBaseType.rrw_package )
6533                    {
6534                        ret = new TPlsqlCreatePackage(pdbvendor);
6535                        // ret.sqlstatementtype = ESqlStatementType.sstplsql_createpackage;
6536                        gnewsqlstatementtype = ret.sqlstatementtype;
6537                    }
6538                }
6539                break;
6540            }
6541            case sstselect:
6542            {
6543                boolean lcisnewsql = true;
6544
6545                if ( pstate != EFindSqlStateType.stnormal )
6546                {
6547                    // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
6548                    if ( (lcprevsolidtoken != null) )
6549                    {
6550                        if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
6551                            lcisnewsql = false; //subqery
6552                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
6553                            lcisnewsql = false;
6554                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
6555                            lcisnewsql = false;
6556                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
6557                            lcisnewsql = false;
6558                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
6559                            lcisnewsql = false;
6560                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
6561                            lcisnewsql = false;
6562                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
6563                        {
6564                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
6565                                lcisnewsql = false;
6566                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
6567                                lcisnewsql = false;
6568                        }
6569
6570
6571                        if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
6572                        {
6573                            TSourceToken lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
6574                            if ( (lcpprevsolidtoken != null) )
6575                            {
6576                                if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
6577                                    lcisnewsql = false;
6578                            }
6579                        }
6580
6581                    }
6582
6583
6584                    if ( (lccurrentsqlstatement != null) )
6585                    {
6586                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
6587                            lcisnewsql = false;
6588                    }
6589
6590                }
6591
6592                if ( lcisnewsql )
6593                    ret = new TSelectSqlStatement(pdbvendor);
6594
6595                break;
6596            }
6597            case sstinsert:
6598            {
6599                boolean lcisnewsql = true;
6600                if ( pstate != EFindSqlStateType.stnormal )
6601                {
6602                    if ( (lccurrentsqlstatement != null) )
6603                    {
6604
6605                    }
6606                }
6607
6608                if ( lcisnewsql )
6609                    ret = new TInsertSqlStatement(pdbvendor);
6610
6611                break;
6612            }
6613            case sstupdate:
6614            {
6615                boolean lcisnewsql = true;
6616                if ( pstate != EFindSqlStateType.stnormal )
6617                {
6618                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
6619                    if ( (lcprevsolidtoken != null) )
6620                    { //
6621                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
6622                            lcisnewsql = false;
6623                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
6624                            lcisnewsql = false;
6625                    }
6626
6627                    TSourceToken lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
6628                    if ( (lcnextsolidtoken != null) )
6629                    {
6630                        if ( lcnextsolidtoken.tokentype == ETokenType.ttleftparenthesis)
6631                        {
6632                            int k = lcsourcetokenlist.solidtokenafterpos(lcnextsolidtoken.posinlist,TBaseType.rrw_select,1,"(");
6633                            if ( k  == 0 ) lcisnewsql = false;
6634                        }
6635                    }
6636
6637
6638                    if ( (lccurrentsqlstatement != null) )
6639                    {
6640                    }
6641                }
6642
6643                if ( lcisnewsql )
6644                {
6645                    ret = new TUpdateSqlStatement(pdbvendor);
6646                    ret.dummytag = 1; // means set clause in update is not found yet, used to seperate set clause from set statement
6647                }
6648                break;
6649            }
6650            case sstdelete:
6651            {
6652                boolean lcisnewsql = true;
6653
6654                if ( pstate != EFindSqlStateType.stnormal )
6655                {
6656                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
6657                    if ( (lcprevsolidtoken != null) )
6658                    {
6659                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
6660                            lcisnewsql = false;
6661                    }
6662
6663                    if ( (lccurrentsqlstatement != null) )
6664                    {
6665                    }
6666                }
6667
6668                if ( lcisnewsql )
6669                    ret = new TDeleteSqlStatement(pdbvendor);
6670
6671                break;
6672            }
6673            case sstmerge:
6674            {
6675                ret = new TMergeSqlStatement(pdbvendor);
6676                ret.sqlstatementtype = gnewsqlstatementtype;
6677                break;
6678            }
6679            case sstoraclecommit:
6680            {
6681                ret = new TUnknownSqlStatement(pdbvendor);
6682                ret.sqlstatementtype = gnewsqlstatementtype;
6683                break;
6684            }
6685            case sstoraclerollback:
6686            {
6687                ret = new TUnknownSqlStatement(pdbvendor);
6688                ret.sqlstatementtype = gnewsqlstatementtype;
6689                break;
6690            }
6691            case sstoraclesavepoint:
6692            {
6693                ret = new TUnknownSqlStatement(pdbvendor);
6694                ret.sqlstatementtype = gnewsqlstatementtype;
6695                break;
6696            }
6697            case sstoraclerevoke:
6698            {
6699                ret = new TUnknownSqlStatement(pdbvendor);
6700                ret.sqlstatementtype = gnewsqlstatementtype;
6701                break;
6702            }
6703            case sstoraclegrant:
6704            {
6705                ret = new TUnknownSqlStatement(pdbvendor);
6706                //ret = new TGrantStmt(pdbvendor);
6707                ret.sqlstatementtype = gnewsqlstatementtype;
6708                break;
6709            }
6710            case sstoracleanalyze:
6711            {
6712                ret = new TUnknownSqlStatement(pdbvendor);
6713                ret.sqlstatementtype = gnewsqlstatementtype;
6714                break;
6715            }
6716            case sstoracletruncate:
6717            {
6718                ret = new TUnknownSqlStatement(pdbvendor);
6719                ret.sqlstatementtype = gnewsqlstatementtype;
6720                break;
6721            }
6722            case sstcreatetable:
6723            {
6724                ret = new TCreateTableSqlStatement(pdbvendor);
6725                break;
6726            }
6727            case sstoraclecreateview:
6728            {
6729                ret = new TCreateViewSqlStatement(pdbvendor);
6730                break;
6731            }
6732            case sstcreatematerializedview:{
6733                ret = new TCreateMaterializedSqlStatement(pdbvendor);
6734                break;
6735            }
6736            case sstoraclecreateindex:
6737            {
6738                ret = new TCreateIndexSqlStatement(pdbvendor);
6739                break;
6740            }
6741            case sstoraclecreatedatabase:
6742            {
6743                ret = new TCreateDatabaseSqlStatement(pdbvendor);
6744                break;
6745            }
6746            case sstoracledroptable:
6747            {
6748                ret = new TDropTableSqlStatement(pdbvendor);
6749                break;
6750            }
6751            case sstoracledropview:
6752            {
6753                ret = new TDropViewSqlStatement(pdbvendor);
6754                break;
6755            }
6756            case sstoracledropindex:
6757            {
6758                ret = new TDropIndexSqlStatement(pdbvendor);
6759                break;
6760            }
6761            case sstaltertable:
6762            {
6763                ret = new TAlterTableStatement(pdbvendor);
6764                break;
6765            }
6766            case sstoraclealtersession:
6767            {
6768                ret = new TAlterSessionStatement(pdbvendor);
6769                break;
6770            }
6771            case sstplsql_createprocedure:
6772            {
6773                ret = new TPlsqlCreateProcedure(pdbvendor);
6774                ret.sqlstatementtype = gnewsqlstatementtype;
6775                // System.out.println(gnewsqlstatementtype);
6776                break;
6777            }
6778            case sstplsql_createfunction:
6779            {
6780                ret = new TPlsqlCreateFunction(pdbvendor);
6781                ret.sqlstatementtype = gnewsqlstatementtype;
6782                // System.out.println(gnewsqlstatementtype);
6783                break;
6784            }
6785            case sstplsql_createpackage:
6786            {
6787                ret = new TPlsqlCreatePackage(pdbvendor);
6788                ret.sqlstatementtype = gnewsqlstatementtype;
6789                // System.out.println(gnewsqlstatementtype);
6790                break;
6791            }
6792            case sstplsql_createtrigger:
6793            {
6794                ret = new TPlsqlCreateTrigger(pdbvendor);
6795                ret.sqlstatementtype = gnewsqlstatementtype;
6796                // System.out.println(gnewsqlstatementtype);
6797                break;
6798            }
6799            case sstplsql_execimmestmt:
6800            {
6801                ret = new TExecImmeStmt(pdbvendor);
6802                // ret.sqlstatementtype = gnewsqlstatementtype;
6803                // System.out.println(gnewsqlstatementtype);
6804                break;
6805            }
6806            case sstoraclecreatepackagebody:
6807            {
6808                ret = new TPlsqlCreatePackage(pdbvendor);
6809                ret.sqlstatementtype = ESqlStatementType.sstplsql_createpackage;
6810                break;
6811            }
6812            case sstplsql_createtype_placeholder:
6813            {
6814                ret = new TPlsqlCreateType_Placeholder(pdbvendor);
6815                ret.sqlstatementtype = gnewsqlstatementtype;
6816                // System.out.println(gnewsqlstatementtype);
6817                break;
6818            }
6819            case sstplsql_createtypebody:
6820            {
6821                ret = new TPlsqlCreateTypeBody(pdbvendor);
6822                ret.sqlstatementtype = gnewsqlstatementtype;
6823                break;
6824            }
6825            case sstCommentOn:
6826            {
6827                ret = new TCommentOnSqlStmt(pdbvendor);
6828                break;
6829            }
6830            case sstoraclecreatesequence:
6831            {
6832                ret = new TCreateSequenceStmt(pdbvendor);
6833                break;
6834            }
6835            case sstoraclecreatesynonym:
6836            {
6837                ret = new TCreateSynonymStmt(pdbvendor);
6838                break;
6839            }
6840            case sstoraclecreatedirectory:
6841            {
6842                ret = new TOracleCreateDirectoryStmt(pdbvendor);
6843                break;
6844            }
6845            case sstpostgresqlCreateIndex:
6846                ret = new TCreateIndexSqlStatement(pdbvendor);
6847                break;
6848            case sstpostgresqlCreateView:
6849                ret = new TCreateViewSqlStatement(pdbvendor);
6850                break;
6851            case sstpostgresqlCreateFunction:
6852                ret = new TCreateFunctionStmt(pdbvendor);
6853                break;
6854            case sstcreatetrigger:
6855                ret = new TCreateTriggerStmt(pdbvendor);
6856                break;
6857            case sstpostgresqlMove:
6858                ret = new TMoveStmt(pdbvendor);
6859                break;
6860            case sstpostgresqlTruncate:
6861                ret = new TTruncateStatement(pdbvendor);
6862                break;
6863            case sstpostgresqlExecute:
6864                ret = new TExecuteSqlStatement(pdbvendor);
6865                break;
6866            case sstpostgresqlDropTable:
6867                ret = new TDropTableSqlStatement(pdbvendor);
6868                break;
6869            case sstPostgresqlBlock:
6870                ret = new TCommonBlock(pdbvendor);
6871                break;
6872            case sstVacuum:
6873                ret = new TVacuumStmt(pdbvendor);
6874                break;
6875            case sstReindex:
6876                ret = new TReindexStmt(pdbvendor);
6877                break;
6878            case sstcreateprocedure:
6879                ret = new TCreateProcedureStmt(pdbvendor);
6880                break;
6881            case sstpostgresqlCommit:
6882                ret = new TCommitStmt(pdbvendor);
6883                break;
6884            case sstpostgresqlCreateSchema:
6885                ret = new TCreateSchemaSqlStatement(pdbvendor);
6886                break;
6887            case sstpostgresqlDropSchema:
6888                ret = new TDropSchemaSqlStatement(pdbvendor);
6889                break;
6890            case sstpostgresqlShowSearchPath:
6891                ret = new TShowSearchPathStmt(pdbvendor);
6892                break;
6893            case sstpostgresqlCopy:
6894                ret = new TCopyStmt(pdbvendor);
6895                break;
6896            case sstcall:
6897                ret = new TCallStatement(pdbvendor);
6898                break;
6899            case sstpostgresqlAlterSchema:
6900                ret = new TAlterSchemaStmt(pdbvendor);
6901                break;
6902            case sstpostgresqlAlterfunction:
6903                ret = new TAlterFunctionStmt(pdbvendor);
6904                break;
6905            case sstStartTransaction:
6906            {
6907                ret = new TStartTransactionStmt(pdbvendor);
6908                break;
6909            }
6910            case sstpostgresqlComment:
6911                ret = new TCommentOnSqlStmt(pdbvendor);
6912                break;
6913            case sstpostgresqlShow:
6914                ret = new TShowStmt(pdbvendor);
6915                break;
6916            case sstpostgresqlSetSearchPath:
6917            case sstpostgresqlSet:
6918                ret = new TSetStmt(pdbvendor);
6919                break;
6920            case sstpostgresqlDropFunction:
6921                ret = new TDropFunctionStmt(pdbvendor);
6922                break;
6923            case sstpostgresqlDropTrigger:
6924                ret = new TDropTriggerSqlStatement(pdbvendor);
6925                break;
6926            case sstpostgresqlDropProcedure:
6927                ret = new TDropProcedureStmt(pdbvendor);
6928                break;
6929            case sstdropindex:
6930                ret = new TDropIndexSqlStatement(pdbvendor);
6931                break;
6932            case sstpostgresqlDropSequence:
6933                ret = new TDropSequenceStmt(pdbvendor);
6934                break;
6935            case sstpostgresqlDropView:
6936                ret = new TDropViewSqlStatement(pdbvendor);
6937                break;
6938            case sstpostgresqlCreateSequence:
6939                ret = new TCreateSequenceStmt(pdbvendor);
6940                break;
6941            case sstpostgresqlAlterSequence:
6942                ret = new TAlterSequenceStatement(pdbvendor);
6943                break;
6944            case sstpostgresqlCreateType:
6945                ret = new TCreateTypeStmt(pdbvendor);
6946                break;
6947            case sstcreateExtension:
6948                ret = new TCreateExtensionStmt(pdbvendor);
6949                break;
6950            case sstPostgresqlTable:
6951                ret = new TPostgresqlTableStmt(pdbvendor);
6952                break;
6953            case sstpostgresqlDropMaterializedView:
6954                ret = new TDropMaterializedViewStmt(pdbvendor);
6955                break;
6956            case sstpostgresqlDo:
6957                boolean lcisnewsql = false;
6958
6959                if ( pstate == EFindSqlStateType.stnormal )
6960                {
6961                    TSourceToken lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
6962                    if ( (lcnextsolidtoken != null) )
6963                    {
6964                        if ( lcnextsolidtoken.tokencode == TBaseType.rrw_postgresql_function_delimiter )
6965                            lcisnewsql = true;
6966                        else if ( lcnextsolidtoken.tokencode == TBaseType.rrw_postgresql_language )
6967                            lcisnewsql = true;
6968                    }
6969                }
6970
6971                if ( lcisnewsql )
6972                    ret = new TDoExecuteBlockStmt(pdbvendor);
6973
6974                break;
6975            case sstpostgresqlDeclare:
6976                ret = new TCommonBlock(pdbvendor);
6977                gnewsqlstatementtype = ret.sqlstatementtype;
6978                break;
6979            case sstpostgresqlExplain:
6980                ret = new TExplainPlan(pdbvendor);
6981                gnewsqlstatementtype = ret.sqlstatementtype;
6982                break;
6983            case sstpostgresqlCreateRole:
6984                ret = new TCreateRoleStmt(pdbvendor);
6985                break;
6986            case sstpostgresqlAlterRole:
6987                ret = new TAlterRoleStmt(pdbvendor);
6988                break;
6989            case sstpostgresqlAlterIndex:
6990                ret = new TAlterIndexStmt(pdbvendor);
6991                break;
6992            default:
6993            {
6994                ret = new TUnknownSqlStatement(pdbvendor);
6995                ret.sqlstatementtype = gnewsqlstatementtype;
6996                break;
6997            }
6998        }    // case
6999
7000        return ret;
7001    }
7002
7003
7004
7005TCustomSqlStatement isbigquery(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
7006        TCustomSqlStatement ret = null;
7007
7008        gnewsqlstatementtype = ESqlStatementType.sstinvalid;
7009
7010        if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
7011                || (pcst.tokencode  == TBaseType.cmtslashstar)
7012                || (pcst.tokencode  == TBaseType.lexspace)
7013                || (pcst.tokencode  == TBaseType.lexnewline)
7014                || (pcst.tokentype == ETokenType.ttsemicolon) )
7015        {
7016            return null;
7017        }
7018
7019        int lcpos = pcst.posinlist;
7020        TSourceTokenList lcsourcetokenlist = pcst.container;
7021        TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
7022
7023        //subquery after semicolon or at first line
7024        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
7025        {
7026            int k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
7027            if ( k >0 )
7028            {
7029                ret = new TSelectSqlStatement(pdbvendor);
7030            }
7031
7032            return ret;
7033        }
7034
7035        //cte
7036        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
7037        {
7038            ret = findcte(pcst,pdbvendor);
7039            if ( (ret != null) )  return ret;
7040        }
7041
7042        gnewsqlstatementtype = findbigquerycmd(pcst);
7043
7044        TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
7045        switch (gnewsqlstatementtype) {    //
7046            case sstinvalid:
7047            {
7048                ret = null;
7049
7050                if ( pstate == EFindSqlStateType.stnormal )
7051                {
7052                    if ( pcst.tokencode == TBaseType.rrw_begin )
7053                    {
7054
7055                        ret = new TCommonBlock(pdbvendor);
7056                        gnewsqlstatementtype = ret.sqlstatementtype;
7057                    }
7058
7059                }
7060                break;
7061            }
7062            case sstselect:
7063            {
7064                boolean lcisnewsql = true;
7065
7066                if ( pstate != EFindSqlStateType.stnormal )
7067                {
7068                    // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
7069                    if ( (lcprevsolidtoken != null) )
7070                    {
7071                        if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
7072                            lcisnewsql = false; //subqery
7073                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
7074                            lcisnewsql = false;
7075                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
7076                            lcisnewsql = false;
7077                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
7078                            lcisnewsql = false;
7079                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
7080                            lcisnewsql = false;
7081                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
7082                            lcisnewsql = false;
7083                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
7084                        {
7085                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
7086                                lcisnewsql = false;
7087                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
7088                                lcisnewsql = false;
7089                        }
7090
7091                        if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
7092                        {
7093                            TSourceToken lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
7094                            if ( (lcpprevsolidtoken != null) )
7095                            {
7096                                if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
7097                                    lcisnewsql = false;
7098                            }
7099                        }
7100
7101                    }
7102
7103
7104                    if ( (lccurrentsqlstatement != null) )
7105                    {
7106                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
7107                            lcisnewsql = false;
7108                    }
7109
7110                }
7111
7112                if ( lcisnewsql )
7113                    ret = new TSelectSqlStatement(pdbvendor);
7114
7115                break;
7116            }
7117            case sstinsert:
7118            {
7119                boolean lcisnewsql = true;
7120                if ( pstate != EFindSqlStateType.stnormal )
7121                {
7122                    if ( (lccurrentsqlstatement != null) )
7123                    {
7124
7125                    }
7126                }
7127
7128                if ( lcisnewsql )
7129                    ret = new TInsertSqlStatement(pdbvendor);
7130
7131                break;
7132            }
7133            case sstupdate:
7134            {
7135                boolean lcisnewsql = true;
7136                if ( pstate != EFindSqlStateType.stnormal )
7137                {
7138                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
7139                    if ( (lcprevsolidtoken != null) )
7140                    { //
7141                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
7142                            lcisnewsql = false;
7143                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
7144                            lcisnewsql = false;
7145                    }
7146
7147                    TSourceToken lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
7148                    if ( (lcnextsolidtoken != null) )
7149                    {
7150                        if ( lcnextsolidtoken.tokentype == ETokenType.ttleftparenthesis)
7151                        {
7152                            int k = lcsourcetokenlist.solidtokenafterpos(lcnextsolidtoken.posinlist,TBaseType.rrw_select,1,"(");
7153                            if ( k  == 0 ) lcisnewsql = false;
7154                        }
7155                    }
7156
7157
7158                    if ( (lccurrentsqlstatement != null) )
7159                    {
7160                    }
7161                }
7162
7163                if ( lcisnewsql )
7164                {
7165                    ret = new TUpdateSqlStatement(pdbvendor);
7166                    ret.dummytag = 1; // means set clause in update is not found yet, used to seperate set clause from set statement
7167                }
7168                break;
7169            }
7170            case sstdelete:
7171            {
7172                boolean lcisnewsql = true;
7173
7174                if ( pstate != EFindSqlStateType.stnormal )
7175                {
7176                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
7177                    if ( (lcprevsolidtoken != null) )
7178                    {
7179                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
7180                            lcisnewsql = false;
7181                    }
7182
7183                    if ( (lccurrentsqlstatement != null) )
7184                    {
7185                    }
7186                }
7187
7188                if ( lcisnewsql )
7189                    ret = new TDeleteSqlStatement(pdbvendor);
7190
7191                break;
7192            }
7193            case sstmerge:
7194            {
7195                ret = new TMergeSqlStatement(pdbvendor);
7196                ret.sqlstatementtype = gnewsqlstatementtype;
7197                break;
7198            }
7199            case sstcreatetable:
7200            {
7201                ret = new TCreateTableSqlStatement(pdbvendor);
7202                break;
7203            }
7204            case sstcreateview:{
7205                ret = new TCreateViewSqlStatement(pdbvendor);
7206                break;
7207            }
7208            case sstaltertable:
7209            {
7210                ret = new TAlterTableStatement(pdbvendor);
7211                break;
7212            }
7213            case sstalterview:
7214            {
7215                ret = new TAlterViewStatement(pdbvendor);
7216                break;
7217            }
7218            case sstdroptable:
7219            {
7220                ret = new TDropTableSqlStatement(pdbvendor);
7221                break;
7222            }
7223            case sstdropview:
7224            {
7225                ret = new TDropViewSqlStatement(pdbvendor);
7226                break;
7227            }
7228            case sstcreatefunction:
7229            {
7230                ret = new TCreateFunctionStmt(pdbvendor);
7231                break;
7232            }
7233            case sstcreateprocedure:
7234            {
7235                ret = new TCreateProcedureStmt(pdbvendor);
7236                break;
7237            }
7238            case sstBigQueryDeclare:
7239                ret = new TMssqlDeclare(pdbvendor);
7240                break;
7241            case sstTruncate:
7242            {
7243                ret = new TTruncateStatement(pdbvendor);
7244                break;
7245            }
7246            case sstset:
7247            {
7248                boolean lcisnewsql = true;
7249                if ( pstate != EFindSqlStateType.stnormal )
7250                {
7251                    if ( TBaseType.assigned(lccurrentsqlstatement) )
7252                    {
7253                        lcisnewsql = false;
7254                    }
7255                }
7256
7257                if ( lcisnewsql )
7258                {
7259                    ret =  new TSetStmt(pdbvendor);
7260                }
7261                break;
7262            }
7263            case sstcreatematerializedview:{
7264                ret = new TCreateMaterializedSqlStatement(pdbvendor);
7265                break;
7266            }
7267            case sstdropprocedure:
7268            {
7269                ret = new TDropProcedureStmt(pdbvendor);
7270                break;
7271            }
7272            case sstdropfunction:
7273            {
7274                ret = new TDropFunctionStmt(pdbvendor);
7275                break;
7276            }
7277            case sstDropMaterializedView:
7278                ret = new TDropMaterializedViewStmt(pdbvendor);
7279                break;
7280            case sstcall:
7281                ret = new TCallStatement(pdbvendor);
7282                break;
7283            case sstBigQueryExportData:
7284                ret = new TExportDataStmt(pdbvendor);
7285                break;
7286            case sstBegin:
7287            {
7288                boolean isblock = false;
7289                int numOfSolidToken = 0;
7290                // if linebreak appears before the ;, then it a block, else it a
7291                TSourceToken st ;
7292                if (lcpos == lcsourcetokenlist.size() - 1){
7293                    // this is the last token
7294                }else{
7295                    for(int i=lcpos+1;i<lcsourcetokenlist.size();i++){
7296                        st = lcsourcetokenlist.get(i);
7297                        if (st.issolidtoken()){
7298                            numOfSolidToken++;
7299                        }
7300                        
7301
7302                        
7303                        if (st.tokencode == ';') {
7304                            if (numOfSolidToken<=3){
7305
7306                            }else{
7307                                isblock = true;
7308                            }
7309                            break;
7310                        }
7311
7312                        if (numOfSolidToken > 3){
7313                            isblock = true;
7314                            break;
7315                        }
7316                    }
7317                }
7318
7319                if (isblock){
7320                    ret = new TCommonBlock(pdbvendor);
7321                    gnewsqlstatementtype = ret.sqlstatementtype;
7322                }else{
7323                    ret = new TBeginTran(pdbvendor);
7324                    pcst.tokencode = TBaseType.rrw_bigquery_begin_transaction;
7325                }
7326
7327
7328                break;
7329            }
7330            case sstbegintran:
7331            {
7332                ret = new TBeginTran(pdbvendor);
7333                if (pcst.tokencode == TBaseType.rrw_begin){
7334                    pcst.tokencode = TBaseType.rrw_bigquery_begin_transaction;
7335                }
7336
7337                break;
7338            }
7339            case sstExecute:
7340            {
7341                ret =  new TExecImmeStmt(pdbvendor);
7342                break;
7343            }
7344            case sst_ifstmt:
7345                ret = new TIfStmt(pdbvendor);
7346                break;
7347            case sst_loopstmt:
7348                ret = new TLoopStmt(pdbvendor);
7349                break;
7350            case sstRepeat:
7351                ret = new TRepeatStmt(pdbvendor);
7352                break;
7353            case sstWhilestmt:
7354                ret = new TWhileStmt(pdbvendor);
7355                break;
7356            case sstForStmt:
7357                ret = new TForStmt(pdbvendor);
7358                break;
7359            case sst_casestmt:
7360                ret = new TCaseStmt(pdbvendor);
7361                break;
7362            case sstDropAssignment:
7363                ret = new TDropStmt(pdbvendor);
7364                break;
7365            case sstdropschema:
7366                ret = new TDropSchemaSqlStatement(pdbvendor);
7367                break;
7368            case sstDropReservation:
7369                ret = new TDropStmt(pdbvendor);
7370                break;
7371            case sstDropRowAccessPolicy:
7372                ret = new TDropStmt(pdbvendor);
7373                break;
7374            case sstDropSnapshotTable:
7375                ret = new TDropStmt(pdbvendor);
7376                break;
7377            case sstDropTableFunction:
7378                ret = new TDropStmt(pdbvendor);
7379                break;
7380            default:
7381            {
7382                ret = new TUnknownSqlStatement(pdbvendor);
7383                ret.sqlstatementtype = gnewsqlstatementtype;
7384                break;
7385            }
7386        }    // case
7387
7388        return ret;
7389    }
7390
7391TCustomSqlStatement issnowflake(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
7392    TCustomSqlStatement ret = null;
7393
7394    gnewsqlstatementtype = ESqlStatementType.sstinvalid;
7395
7396    if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
7397       || (pcst.tokencode  == TBaseType.cmtslashstar)
7398       || (pcst.tokencode  == TBaseType.lexspace)
7399       || (pcst.tokencode  == TBaseType.lexnewline)
7400        || (pcst.tokentype == ETokenType.ttsemicolon) )
7401    {
7402      return null;
7403    }
7404
7405    int lcpos = pcst.posinlist;
7406    TSourceTokenList lcsourcetokenlist = pcst.container;
7407    TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
7408
7409    //subquery after semicolon or at first line
7410    if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
7411      {
7412        int k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
7413        if ( k >0 )
7414          {
7415            ret = new TSelectSqlStatement(pdbvendor);
7416          }
7417        else{
7418            k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_with,1,"(");
7419            int k2 = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_as,3,"(");
7420            if (( k >0 ) && (k2 > 2))
7421            {
7422                ret = new TSelectSqlStatement(pdbvendor);
7423            }
7424
7425        }
7426
7427        return ret;
7428      }
7429
7430    //cte
7431    if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
7432      {
7433        ret = findcte(pcst,pdbvendor);
7434        if ( (ret != null) )  return ret;
7435      }
7436
7437    gnewsqlstatementtype = findsnowflakecmd(pcst);
7438
7439    TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
7440    switch (gnewsqlstatementtype) {    //
7441        case sstinvalid:
7442          {
7443            ret = null;
7444
7445            if ( pstate == EFindSqlStateType.stnormal )
7446              {
7447                if ( pcst.tokencode == TBaseType.label_begin )
7448                  {
7449                    ret = new TCommonBlock(pdbvendor);
7450                    gnewsqlstatementtype = ret.sqlstatementtype;
7451                  }
7452                else if ( pcst.tokencode == TBaseType.rrw_declare )
7453                  {
7454                    ret = new TCommonBlock(pdbvendor);
7455                    gnewsqlstatementtype = ret.sqlstatementtype;
7456                  }
7457                else if ( pcst.tokencode == TBaseType.rrw_begin )
7458                  {
7459                    ret = new TCommonBlock(pdbvendor);
7460                    gnewsqlstatementtype = ret.sqlstatementtype;
7461                  }
7462                else if ( pcst.tokencode == TBaseType.rrw_procedure )
7463                  {
7464                    ret = new TPlsqlCreateProcedure(pdbvendor);
7465                    // ret.sqlstatementtype = ESqlStatementType.sstplsql_createprocedure;
7466                    gnewsqlstatementtype = ret.sqlstatementtype;
7467                  }
7468                else if ( pcst.tokencode == TBaseType.rrw_function )
7469                  {
7470                    ret = new TPlsqlCreateFunction(pdbvendor);
7471                    // ret.sqlstatementtype = ESqlStatementType.sstplsql_createfunction;
7472                    gnewsqlstatementtype = ret.sqlstatementtype;
7473                  }
7474                else if ( pcst.tokencode == TBaseType.rrw_package )
7475                  {
7476                    ret = new TPlsqlCreatePackage(pdbvendor);
7477                   // ret.sqlstatementtype = ESqlStatementType.sstplsql_createpackage;
7478                    gnewsqlstatementtype = ret.sqlstatementtype;
7479                  }
7480              }
7481              break;
7482          }
7483        case sstselect:
7484          {
7485            boolean lcisnewsql = true;
7486
7487            if ( pstate != EFindSqlStateType.stnormal )
7488              {
7489                // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
7490                if ( (lcprevsolidtoken != null) )
7491                  {
7492                    if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
7493                      lcisnewsql = false; //subqery
7494                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
7495                      lcisnewsql = false;
7496                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
7497                      lcisnewsql = false;
7498                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
7499                      lcisnewsql = false;
7500                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
7501                      lcisnewsql = false;
7502                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
7503                      lcisnewsql = false;
7504                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
7505                      {
7506                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
7507                          lcisnewsql = false;
7508                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
7509                          lcisnewsql = false;
7510                      }
7511
7512                    if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
7513                      {
7514                        TSourceToken lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
7515                        if ( (lcpprevsolidtoken != null) )
7516                          {
7517                            if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
7518                              lcisnewsql = false;
7519                          }
7520                      }
7521
7522                  }
7523
7524
7525                if ( (lccurrentsqlstatement != null) )
7526                  {
7527                    if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
7528                      lcisnewsql = false;
7529                  }
7530
7531              }
7532
7533            if ( lcisnewsql )
7534              ret = new TSelectSqlStatement(pdbvendor);
7535
7536            break;
7537          }
7538        case sstinsert:
7539          {
7540            boolean lcisnewsql = true;
7541            if ( pstate != EFindSqlStateType.stnormal )
7542              {
7543                if ( (lccurrentsqlstatement != null) )
7544                  {
7545
7546                  }
7547              }
7548
7549            if ( lcisnewsql )
7550              ret = new TInsertSqlStatement(pdbvendor);
7551
7552            break;
7553          }
7554        case sstupdate:
7555          {
7556            boolean lcisnewsql = true;
7557            if ( pstate != EFindSqlStateType.stnormal )
7558              {
7559                lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
7560                if ( (lcprevsolidtoken != null) )
7561                  { //
7562                    if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
7563                      lcisnewsql = false;
7564                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
7565                      lcisnewsql = false;
7566                  }
7567
7568                TSourceToken lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
7569                if ( (lcnextsolidtoken != null) )
7570                  {
7571                    if ( lcnextsolidtoken.tokentype == ETokenType.ttleftparenthesis)
7572                      {
7573                        int k = lcsourcetokenlist.solidtokenafterpos(lcnextsolidtoken.posinlist,TBaseType.rrw_select,1,"(");
7574                        if ( k  == 0 ) lcisnewsql = false;
7575                      }
7576                  }
7577
7578
7579                if ( (lccurrentsqlstatement != null) )
7580                  {
7581                  }
7582              }
7583
7584            if ( lcisnewsql )
7585              {
7586                ret = new TUpdateSqlStatement(pdbvendor);
7587                ret.dummytag = 1; // means set clause in update is not found yet, used to seperate set clause from set statement
7588              }
7589            break;
7590          }
7591        case sstdelete:
7592          {
7593            boolean lcisnewsql = true;
7594
7595            if ( pstate != EFindSqlStateType.stnormal )
7596              {
7597                lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
7598                if ( (lcprevsolidtoken != null) )
7599                  {
7600                    if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
7601                      lcisnewsql = false;
7602                  }
7603
7604                if ( (lccurrentsqlstatement != null) )
7605                  {
7606                  }
7607              }
7608
7609            if ( lcisnewsql )
7610              ret = new TDeleteSqlStatement(pdbvendor);
7611
7612            break;
7613          }
7614        case sstmerge:
7615          {
7616            ret = new TMergeSqlStatement(pdbvendor);
7617            ret.sqlstatementtype = gnewsqlstatementtype;
7618            break;
7619          }
7620        case sstoraclecommit:
7621          {
7622            ret = new TUnknownSqlStatement(pdbvendor);
7623            ret.sqlstatementtype = gnewsqlstatementtype;
7624            break;
7625          }
7626        case sstoraclerollback:
7627          {
7628            ret = new TUnknownSqlStatement(pdbvendor);
7629            ret.sqlstatementtype = gnewsqlstatementtype;
7630            break;
7631          }
7632        case sstoraclerevoke:
7633          {
7634            ret = new TUnknownSqlStatement(pdbvendor);
7635            ret.sqlstatementtype = gnewsqlstatementtype;
7636              break;
7637          }
7638        case sstoraclegrant:
7639          {
7640            ret = new TUnknownSqlStatement(pdbvendor);
7641            ret.sqlstatementtype = gnewsqlstatementtype;
7642              break;
7643          }
7644        case sstcreatetable:
7645          {
7646            ret = new TCreateTableSqlStatement(pdbvendor);
7647              break;
7648          }
7649        case sstoraclecreateview:
7650          {
7651            ret = new TCreateViewSqlStatement(pdbvendor);
7652              break;
7653          }
7654        case sstAlterAccount:
7655        {
7656            ret = new TAlterAccountStmt(pdbvendor);
7657            break;
7658        }
7659        case sstalterdatabase:
7660        {
7661            ret = new TAlterDatabaseStmt(pdbvendor);
7662            break;
7663        }
7664        case sstAlterFileFormat:
7665        {
7666            ret = new TAlterFileFormatStmt(pdbvendor);
7667            break;
7668        }
7669        case sstalterfunction:
7670        {
7671            ret = new TAlterFunctionStmt(pdbvendor);
7672            break;
7673        }
7674        case sstAlterNetworkPolicy:
7675        {
7676            ret = new TAlterNetworkPolicyStmt(pdbvendor);
7677            break;
7678        }
7679        case sstAlterPipe:
7680        {
7681            ret = new TAlterPipeStmt(pdbvendor);
7682            break;
7683        }
7684        case sstAlterResourceMonitor:
7685        {
7686            ret = new TAlterResourceMonitorStmt(pdbvendor);
7687            break;
7688        }
7689        case sstAlterRole:
7690        {
7691            ret = new TAlterRoleStmt(pdbvendor);
7692            break;
7693        }
7694        case sstAlterSchema:
7695        {
7696            ret = new TAlterSchemaStmt(pdbvendor);
7697            break;
7698        }
7699        case sstaltersequence:
7700        {
7701            ret = new TAlterSequenceStatement(pdbvendor);
7702            break;
7703        }
7704        case sstaltersession:
7705        {
7706            ret = new TAlterSessionStatement(pdbvendor);
7707            break;
7708        }
7709        case sstAlterStage:
7710        {
7711            ret = new TAlterStageStmt(pdbvendor);
7712            break;
7713        }
7714        case sstalteruser:
7715        {
7716            ret = new TAlterUserStmt(pdbvendor);
7717            break;
7718        }
7719        case sstAlterShare:
7720        {
7721            ret = new TAlterShareStmt(pdbvendor);
7722            break;
7723        }
7724        case sstalterview:
7725        {
7726            ret = new TAlterViewStatement(pdbvendor);
7727            break;
7728        }
7729        case sstAlterWarehouse:
7730        {
7731            ret = new TAlterWarehouseStmt(pdbvendor);
7732            break;
7733        }
7734        case sstBegin:
7735        {
7736            boolean isblock = false;
7737            int numOfSolidToken = 0;
7738            // if linebreak appears before the ;, then it a block, else it a
7739            TSourceToken st ;
7740            if (lcpos == lcsourcetokenlist.size() - 1){
7741                // this is the last token
7742            }else{
7743                for(int i=lcpos+1;i<lcsourcetokenlist.size();i++){
7744                    st = lcsourcetokenlist.get(i);
7745                    if (st.issolidtoken()){
7746                        numOfSolidToken++;
7747                    }
7748                    // Check for newline before semicolon - if found, must be a block
7749                    if (st.tokencode == TBaseType.lexnewline) {
7750                        isblock = true;
7751                        // Continue to look for semicolon to complete the check
7752                    }
7753
7754                    if (st.tokencode == ';') {
7755                        if (numOfSolidToken<=3){
7756
7757                        }else{
7758                            isblock = true;
7759                        }
7760                        break;
7761                    }
7762
7763                    if (numOfSolidToken > 3){
7764                        isblock = true;
7765                        break;
7766                    }
7767                }
7768            }
7769
7770            if (isblock){
7771                ret = new TCommonBlock(pdbvendor);
7772                gnewsqlstatementtype = ret.sqlstatementtype;
7773            }else{
7774                ret = new TBeginTran(pdbvendor);
7775                pcst.tokencode = TBaseType.rrw_snowflake_begin_transaction;
7776            }
7777
7778
7779            break;
7780        }
7781        case sstbegintran:
7782        {
7783            ret = new TBeginTran(pdbvendor);
7784            if (pcst.tokencode == TBaseType.rrw_begin){
7785                pcst.tokencode = TBaseType.rrw_snowflake_begin_transaction;
7786            }
7787
7788            break;
7789        }
7790        case sstcomment:
7791        {
7792            ret = new TCommentOnSqlStmt(pdbvendor);
7793            break;
7794        }
7795        case sstcommit:
7796        {
7797            ret = new TCommitStmt(pdbvendor);
7798            break;
7799        }
7800        case sstCopyInto:
7801        {
7802            ret = new TSnowflakeCopyIntoStmt(pdbvendor);
7803            break;
7804        }
7805        case sstcreatedatabase:
7806        {
7807            ret = new TCreateDatabaseSqlStatement(pdbvendor);
7808            break;
7809        }
7810        case sstCreateFileFormat:
7811        {
7812            ret = new TCreateFileFormatStmt(pdbvendor);
7813            break;
7814        }
7815        case sstcreatefunction:
7816        {
7817            ret = new TCreateFunctionStmt(pdbvendor);
7818            break;
7819        }
7820        case sstCreateNetworkPolicy:
7821        {
7822            ret = new TCreateNetworkPolicyStmt(pdbvendor);
7823            break;
7824        }
7825        case sstCreatePipe:
7826        {
7827            ret = new TCreatePipeStmt(pdbvendor);
7828            break;
7829        }
7830        case sstCreateResourceMonitor:
7831        {
7832            ret = new TCreateResourceMonitorStmt(pdbvendor);
7833            break;
7834        }
7835        case sstcreaterole:
7836        {
7837            ret = new TCreateRoleStmt(pdbvendor);
7838            break;
7839        }
7840        case sstcreateschema:
7841        {
7842            ret = new TCreateSchemaSqlStatement(pdbvendor);
7843            break;
7844        }
7845        case sstcreatesequence:
7846        {
7847            ret = new TCreateSequenceStmt(pdbvendor);
7848            break;
7849        }
7850        case sstCreateShare:
7851        {
7852            ret = new TCreateShareStmt(pdbvendor);
7853            break;
7854        }
7855        case sstCreateStage:
7856        {
7857            ret = new TCreateStageStmt(pdbvendor);
7858            break;
7859        }
7860        case sstcreateuser:
7861        {
7862            ret = new TCreateUserStmt(pdbvendor);
7863            break;
7864        }
7865        case sstCreateWarehouse:
7866        {
7867            ret = new TCreateWarehouseStmt(pdbvendor);
7868            break;
7869        }
7870        case sstDescFileFormat:
7871        case sstDescFunction:
7872        case sstDescNetworkPolicy:
7873        case sstDescPipe:
7874        case sstDescResult:
7875        case sstDescShare:
7876        case sstDescStage:
7877        case sstDescTable:
7878        case sstDescUser:
7879        case sstDescView:
7880        case sstDescStorage:
7881        {
7882            ret = new TDescribeStmt(pdbvendor);
7883            break;
7884        }
7885        case sstdropfunction:
7886        {
7887            ret = new TDropFunctionStmt(pdbvendor);
7888            break;
7889        }
7890        case sstdropdatabase:
7891        {
7892            ret = new TDropDatabaseStmt(pdbvendor);
7893            break;
7894        }
7895        case sstDropFileFormat:
7896        {
7897            ret = new TDropStmt(pdbvendor);
7898            ret.sqlstatementtype = gnewsqlstatementtype;
7899            break;
7900        }
7901        case sstDropNetworkPolicy:
7902        {
7903            ret = new TDropStmt(pdbvendor);
7904            ret.sqlstatementtype = gnewsqlstatementtype;
7905            break;
7906        }
7907        case sstDropPipe:
7908        {
7909            ret = new TDropStmt(pdbvendor);
7910            ret.sqlstatementtype = gnewsqlstatementtype;
7911            break;
7912        }
7913        case sstDropResourceMonitor:
7914        {
7915            ret = new TDropStmt(pdbvendor);
7916            ret.sqlstatementtype = gnewsqlstatementtype;
7917            break;
7918        }
7919        case sstdroprole:
7920        {
7921            ret = new TDropRoleStmt(pdbvendor);
7922            break;
7923        }
7924        case sstdropschema:
7925        {
7926            ret = new TDropSchemaSqlStatement(pdbvendor);
7927            break;
7928        }
7929        case sstDropShare:
7930        {
7931            ret = new TDropStmt(pdbvendor);
7932            ret.sqlstatementtype = gnewsqlstatementtype;
7933            break;
7934        }
7935        case sstDropStage:
7936        {
7937            ret = new TDropStmt(pdbvendor);
7938            ret.sqlstatementtype = gnewsqlstatementtype;
7939            break;
7940        }
7941        case sstdroptable:
7942        {
7943            ret = new TDropTableSqlStatement(pdbvendor);
7944            break;
7945        }
7946        case sstdropuser:
7947        {
7948            ret = new TDropUserStmt(pdbvendor);
7949            break;
7950        }
7951        case sstdropview:
7952        {
7953            ret = new TDropViewSqlStatement(pdbvendor);
7954            break;
7955        }
7956        case sstDropWarehouse:
7957        {
7958            ret = new TDropStmt(pdbvendor);
7959            ret.sqlstatementtype = gnewsqlstatementtype;
7960            break;
7961        }
7962        case sstGet:
7963        {
7964            ret = new TGetStmt(pdbvendor);
7965            break;
7966        }
7967        case sstGrant:
7968        {
7969            ret = new TGrantStmt(pdbvendor);
7970            break;
7971        }
7972        case sstList:
7973        {
7974            ret = new TListStmt(pdbvendor);
7975            break;
7976        }
7977        case sstPut:
7978        {
7979            ret = new TPutStmt(pdbvendor);
7980            break;
7981        }
7982        case sstRemove:
7983        {
7984            ret = new TRemoveStmt(pdbvendor);
7985            break;
7986        }
7987        case sstRevoke:
7988        {
7989            ret = new TRevokeStmt(pdbvendor);
7990            break;
7991        }
7992        case sstrollback:
7993        {
7994            ret = new TRollbackStmt(pdbvendor);
7995            break;
7996        }
7997        case sstset:
7998        {
7999            ret = new TSetStmt(pdbvendor);
8000            break;
8001        }
8002        case sstShowColumns:
8003        case sstShowDatabases:
8004        case sstShowFileFormats:
8005        case sstShowFunctions:
8006        case sstShowGrants:
8007        case sstShowNetworkPolicies:
8008        case sstShowObjects:
8009        case sstShowParameters:
8010        case sstShowPipes:
8011        case sstShowResourceMonitors:
8012        case sstShowRoles:
8013        case sstShowSchemas:
8014        case sstShowSequences:
8015        case sstShowShares:
8016        case sstShowStages:
8017        case sstShowTables:
8018        case sstShowTransactions:
8019        case sstShowUserFunctions:
8020        case sstShowUsers:
8021        case sstShowVariables:
8022        case sstShowViews:
8023        case sstShowWarehouses:
8024        case sstShowProcedures:
8025        case sstShowTasks:
8026        case sstShowStreams:
8027        {
8028            ret = new TShowStmt(pdbvendor);
8029            ret.sqlstatementtype = gnewsqlstatementtype;
8030            break;
8031        }
8032        case sstTruncate:
8033        {
8034            ret = new TTruncateStatement(pdbvendor);
8035
8036            break;
8037        }
8038        case sstUndropDatabase:
8039        case sstUndropSchema:
8040        case sstUndropTable:
8041        {
8042            ret = new TUndropStmt(pdbvendor);
8043            ret.sqlstatementtype = gnewsqlstatementtype;
8044            break;
8045        }
8046        case sstunset:
8047        {
8048            ret = new TUnsetStmt(pdbvendor);
8049            break;
8050        }
8051        case sstcreatematerializedview:{
8052            ret = new TCreateMaterializedSqlStatement(pdbvendor);
8053            break;
8054        }
8055        case sstoraclecreateindex:
8056          {
8057            ret = new TCreateIndexSqlStatement(pdbvendor);
8058              break;
8059          }
8060        case sstoracledroptable:
8061          {
8062            ret = new TDropTableSqlStatement(pdbvendor);
8063              break;
8064          }
8065        case sstoracledropview:
8066          {
8067           ret = new TDropViewSqlStatement(pdbvendor);
8068              break;
8069          }
8070        case sstoracledropindex:
8071          {
8072            ret = new TDropIndexSqlStatement(pdbvendor);
8073              break;
8074          }
8075        case sstaltertable:
8076          {
8077            ret = new TAlterTableStatement(pdbvendor);
8078              break;
8079          }
8080        case sstoraclealtersession:
8081          {
8082            ret = new TAlterSessionStatement(pdbvendor);
8083              break;
8084          }
8085        case sstplsql_createfunction:
8086        {
8087          ret = new TPlsqlCreateFunction(pdbvendor);
8088          ret.sqlstatementtype = gnewsqlstatementtype;
8089          // System.out.println(gnewsqlstatementtype);
8090            break;
8091        }
8092        case sstCommentOn:
8093          {
8094            ret = new TCommentOnSqlStmt(pdbvendor);
8095              break;
8096          }
8097        case sstoraclecreatesequence:
8098          {
8099            ret = new TCreateSequenceStmt(pdbvendor);
8100              break;
8101          }
8102        case sstpostgresqlCreateIndex:
8103            ret = new TCreateIndexSqlStatement(pdbvendor);
8104            break;
8105        case sstpostgresqlCreateView:
8106            ret = new TCreateViewSqlStatement(pdbvendor);
8107            break;
8108        case sstpostgresqlCreateFunction:
8109            ret = new TCreateFunctionStmt(pdbvendor);
8110            break;
8111//        case sstcreatetrigger:
8112//            ret = new TCreateTriggerStmt(pdbvendor);
8113//            break;
8114        case sstpostgresqlTruncate:
8115            ret = new TTruncateStatement(pdbvendor);
8116            break;
8117        case sstpostgresqlDropTable:
8118            ret = new TDropTableSqlStatement(pdbvendor);
8119            break;
8120        case sstcreateview:
8121            ret = new TCreateViewSqlStatement(pdbvendor);
8122            break;
8123        case sstcall:
8124            ret = new TCallStatement(pdbvendor);
8125            break;
8126        case sstSnowflakePseudoExprStmt:
8127            ret = new TPseudoExprStmt(pdbvendor);
8128            break;
8129        case sstcreateprocedure:
8130            ret = new TCreateProcedureStmt(pdbvendor);
8131            break;
8132        case sstCreateStream:
8133            ret = new TCreateStreamStmt(pdbvendor);
8134            break;
8135        case sstUse:
8136            TSourceToken lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
8137            if (lcnextsolidtoken != null){
8138                if (lcnextsolidtoken.toString().equalsIgnoreCase("database")){
8139                    ret = new TUseDatabase(pdbvendor);
8140                }else if (lcnextsolidtoken.toString().equalsIgnoreCase("role")){
8141                    ret = new TUseRole(pdbvendor);
8142                }else if (lcnextsolidtoken.toString().equalsIgnoreCase("warehouse")){
8143                    ret = new TUseWarehouse(pdbvendor);
8144                    // non-identifier-compare: keyword token text, not a db object name
8145                }else if (lcnextsolidtoken.toString().equalsIgnoreCase("schema")){
8146                    ret = new TUseSchema(pdbvendor);
8147                }else{
8148                    // MantisBT 4677 — same rule as the modular splitter
8149                    // (TSqlCmdsSnowflake). This monolithic path is still
8150                    // reachable via SqlCmdsFactory.setUseModularProviders(false),
8151                    // so leaving it behind would keep the bug alive in that mode
8152                    // and put the two splitters at odds with each other.
8153                    // issnowflake() is Snowflake-only, so no other vendor moves.
8154                    ret = SnowflakeUseTarget.of(lcsourcetokenlist, lcpos) == SnowflakeUseTarget.SCHEMA
8155                            ? new TUseSchema(pdbvendor)
8156                            : new TUseDatabase(pdbvendor);
8157                }
8158
8159            }else{
8160                ret = new TUnknownSqlStatement(pdbvendor);
8161                ret.sqlstatementtype = gnewsqlstatementtype;
8162            }
8163            break;
8164        case sstExecute:
8165        {
8166            ret =  new TExecuteSqlStatement(pdbvendor);
8167            break;
8168        }
8169        case sstAlterTask:
8170            ret =  new TAlterTaskStmt(pdbvendor);
8171            break;
8172        case sstCreateTask:
8173            ret = new TCreateTaskStmt(pdbvendor);
8174            break;
8175        case sstAlterMaterializedView:
8176            ret = new TAlterMaterializedViewStmt(pdbvendor);
8177            break;
8178        case sstDropMaterializedView:
8179            ret = new TDropMaterializedViewStmt(pdbvendor);
8180            break;
8181        case sstdropprocedure:
8182            ret = new TDropProcedureStmt(pdbvendor);
8183            break;
8184        case sstUseSecondaryRoles:
8185            ret = new TUseSecondaryRolesStmt(pdbvendor);
8186            break;
8187        case sstDropStreamlit:
8188            ret = new TDropStmt(pdbvendor);
8189            break;
8190        case sstDropStream:
8191            ret = new TDropStreamStmt(pdbvendor);
8192            break;
8193        default:
8194          {
8195            ret = new TUnknownSqlStatement(pdbvendor);
8196            ret.sqlstatementtype = gnewsqlstatementtype;
8197            break;
8198          }
8199    }    // case
8200
8201    return ret;
8202}
8203
8204TCustomSqlStatement isgreenplum(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
8205        TCustomSqlStatement ret = null;
8206
8207        gnewsqlstatementtype = ESqlStatementType.sstinvalid;
8208
8209        if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
8210           || (pcst.tokencode  == TBaseType.cmtslashstar)
8211           || (pcst.tokencode  == TBaseType.lexspace)
8212           || (pcst.tokencode  == TBaseType.lexnewline)
8213            || (pcst.tokentype == ETokenType.ttsemicolon) )
8214        {
8215          return null;
8216        }
8217
8218        int lcpos = pcst.posinlist;
8219        TSourceTokenList lcsourcetokenlist = pcst.container;
8220        TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
8221
8222        //subquery after semicolon or at first line
8223        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
8224          {
8225            int k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
8226            if ( k >0 )
8227              {
8228                ret = new TSelectSqlStatement(pdbvendor);
8229              }
8230
8231            return ret;
8232          }
8233
8234        //cte
8235        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
8236          {
8237            ret = findcte(pcst,pdbvendor);
8238            if ( (ret != null) )  return ret;
8239          }
8240
8241        gnewsqlstatementtype = findgreenplumcmd(pcst);
8242
8243        TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
8244        switch (gnewsqlstatementtype) {    //
8245            case sstinvalid:
8246              {
8247                ret = null;
8248
8249                if ( pstate == EFindSqlStateType.stnormal )
8250                  {
8251                    if ( pcst.tokencode == TBaseType.label_begin )
8252                      {
8253                        ret = new TCommonBlock(pdbvendor);
8254                        gnewsqlstatementtype = ret.sqlstatementtype;
8255                      }
8256                    else if ( pcst.tokencode == TBaseType.rrw_declare )
8257                      {
8258                        ret = new TCommonBlock(pdbvendor);
8259                        gnewsqlstatementtype = ret.sqlstatementtype;
8260                      }
8261                    else if ( pcst.tokencode == TBaseType.rrw_begin )
8262                      {
8263                        ret = new TCommonBlock(pdbvendor);
8264                        gnewsqlstatementtype = ret.sqlstatementtype;
8265                      }
8266                    else if ( pcst.tokencode == TBaseType.rrw_procedure )
8267                      {
8268                        ret = new TPlsqlCreateProcedure(pdbvendor);
8269                        // ret.sqlstatementtype = ESqlStatementType.sstplsql_createprocedure;
8270                        gnewsqlstatementtype = ret.sqlstatementtype;
8271                      }
8272                    else if ( pcst.tokencode == TBaseType.rrw_function )
8273                      {
8274                        ret = new TPlsqlCreateFunction(pdbvendor);
8275                        // ret.sqlstatementtype = ESqlStatementType.sstplsql_createfunction;
8276                        gnewsqlstatementtype = ret.sqlstatementtype;
8277                      }
8278                    else if ( pcst.tokencode == TBaseType.rrw_package )
8279                      {
8280                        ret = new TPlsqlCreatePackage(pdbvendor);
8281                       // ret.sqlstatementtype = ESqlStatementType.sstplsql_createpackage;
8282                        gnewsqlstatementtype = ret.sqlstatementtype;
8283                      }
8284                  }
8285                  break;
8286              }
8287            case sstselect:
8288              {
8289                boolean lcisnewsql = true;
8290
8291                if ( pstate != EFindSqlStateType.stnormal )
8292                  {
8293                    // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
8294                    if ( (lcprevsolidtoken != null) )
8295                      {
8296                        if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
8297                          lcisnewsql = false; //subqery
8298                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
8299                          lcisnewsql = false;
8300                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
8301                          lcisnewsql = false;
8302                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
8303                          lcisnewsql = false;
8304                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
8305                          lcisnewsql = false;
8306                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
8307                          lcisnewsql = false;
8308                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
8309                          {
8310                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
8311                              lcisnewsql = false;
8312                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
8313                              lcisnewsql = false;
8314                          }
8315
8316                        if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
8317                          {
8318                            TSourceToken lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
8319                            if ( (lcpprevsolidtoken != null) )
8320                              {
8321                                if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
8322                                  lcisnewsql = false;
8323                              }
8324                          }
8325
8326                      }
8327
8328
8329                    if ( (lccurrentsqlstatement != null) )
8330                      {
8331                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
8332                          lcisnewsql = false;
8333                      }
8334
8335                  }
8336
8337                if ( lcisnewsql )
8338                  ret = new TSelectSqlStatement(pdbvendor);
8339
8340                break;
8341              }
8342            case sstinsert:
8343              {
8344                boolean lcisnewsql = true;
8345                if ( pstate != EFindSqlStateType.stnormal )
8346                  {
8347                    if ( (lccurrentsqlstatement != null) )
8348                      {
8349
8350                      }
8351                  }
8352
8353                if ( lcisnewsql )
8354                  ret = new TInsertSqlStatement(pdbvendor);
8355
8356                break;
8357              }
8358            case sstupdate:
8359              {
8360                boolean lcisnewsql = true;
8361                if ( pstate != EFindSqlStateType.stnormal )
8362                  {
8363                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
8364                    if ( (lcprevsolidtoken != null) )
8365                      { //
8366                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
8367                          lcisnewsql = false;
8368                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
8369                          lcisnewsql = false;
8370                      }
8371
8372                    TSourceToken lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
8373                    if ( (lcnextsolidtoken != null) )
8374                      {
8375                        if ( lcnextsolidtoken.tokentype == ETokenType.ttleftparenthesis)
8376                          {
8377                            int k = lcsourcetokenlist.solidtokenafterpos(lcnextsolidtoken.posinlist,TBaseType.rrw_select,1,"(");
8378                            if ( k  == 0 ) lcisnewsql = false;
8379                          }
8380                      }
8381
8382
8383                    if ( (lccurrentsqlstatement != null) )
8384                      {
8385                      }
8386                  }
8387
8388                if ( lcisnewsql )
8389                  {
8390                    ret = new TUpdateSqlStatement(pdbvendor);
8391                    ret.dummytag = 1; // means set clause in update is not found yet, used to seperate set clause from set statement
8392                  }
8393                break;
8394              }
8395            case sstdelete:
8396              {
8397                boolean lcisnewsql = true;
8398
8399                if ( pstate != EFindSqlStateType.stnormal )
8400                  {
8401                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
8402                    if ( (lcprevsolidtoken != null) )
8403                      {
8404                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
8405                          lcisnewsql = false;
8406                      }
8407
8408                    if ( (lccurrentsqlstatement != null) )
8409                      {
8410                      }
8411                  }
8412
8413                if ( lcisnewsql )
8414                  ret = new TDeleteSqlStatement(pdbvendor);
8415
8416                break;
8417              }
8418            case sstmerge:
8419              {
8420                ret = new TMergeSqlStatement(pdbvendor);
8421                ret.sqlstatementtype = gnewsqlstatementtype;
8422                break;
8423              }
8424            case sstoraclecommit:
8425              {
8426                ret = new TUnknownSqlStatement(pdbvendor);
8427                ret.sqlstatementtype = gnewsqlstatementtype;
8428                break;
8429              }
8430            case sstoraclerollback:
8431              {
8432                ret = new TUnknownSqlStatement(pdbvendor);
8433                ret.sqlstatementtype = gnewsqlstatementtype;
8434                break;
8435              }
8436            case sstoraclesavepoint:
8437              {
8438                ret = new TUnknownSqlStatement(pdbvendor);
8439                ret.sqlstatementtype = gnewsqlstatementtype;
8440                  break;
8441              }
8442            case sstoraclerevoke:
8443              {
8444                ret = new TUnknownSqlStatement(pdbvendor);
8445                ret.sqlstatementtype = gnewsqlstatementtype;
8446                  break;
8447              }
8448            case sstoraclegrant:
8449              {
8450                ret = new TUnknownSqlStatement(pdbvendor);
8451                ret.sqlstatementtype = gnewsqlstatementtype;
8452                  break;
8453              }
8454            case sstoracleanalyze:
8455              {
8456                ret = new TUnknownSqlStatement(pdbvendor);
8457                ret.sqlstatementtype = gnewsqlstatementtype;
8458                  break;
8459              }
8460            case sstoracletruncate:
8461              {
8462                ret = new TUnknownSqlStatement(pdbvendor);
8463                ret.sqlstatementtype = gnewsqlstatementtype;
8464                  break;
8465              }
8466            case sstcreatetable:
8467            case sstgreenplumCreateExternalTable:
8468              {
8469                ret = new TCreateTableSqlStatement(pdbvendor);
8470                  break;
8471              }
8472            case sstoraclecreateview:
8473              {
8474                ret = new TCreateViewSqlStatement(pdbvendor);
8475                  break;
8476              }
8477            case sstcreatematerializedview:{
8478                ret = new TCreateMaterializedSqlStatement(pdbvendor);
8479                break;
8480            }
8481            case sstoraclecreateindex:
8482              {
8483                ret = new TCreateIndexSqlStatement(pdbvendor);
8484                  break;
8485              }
8486            case sstoraclecreatedatabase:
8487              {
8488                ret = new TCreateDatabaseSqlStatement(pdbvendor);
8489                  break;
8490              }
8491            case sstoracledroptable:
8492              {
8493                ret = new TDropTableSqlStatement(pdbvendor);
8494                  break;
8495              }
8496            case sstoracledropview:
8497              {
8498               ret = new TDropViewSqlStatement(pdbvendor);
8499                  break;
8500              }
8501            case sstoracledropindex:
8502              {
8503                ret = new TDropIndexSqlStatement(pdbvendor);
8504                  break;
8505              }
8506            case sstaltertable:
8507              {
8508                ret = new TAlterTableStatement(pdbvendor);
8509                  break;
8510              }
8511            case sstoraclealtersession:
8512              {
8513                ret = new TAlterSessionStatement(pdbvendor);
8514                  break;
8515              }
8516            case sstplsql_createprocedure:
8517            {
8518              ret = new TPlsqlCreateProcedure(pdbvendor);
8519              ret.sqlstatementtype = gnewsqlstatementtype;
8520              // System.out.println(gnewsqlstatementtype);
8521                break;
8522            }
8523            case sstplsql_createfunction:
8524            {
8525              ret = new TPlsqlCreateFunction(pdbvendor);
8526              ret.sqlstatementtype = gnewsqlstatementtype;
8527              // System.out.println(gnewsqlstatementtype);
8528                break;
8529            }
8530            case sstplsql_createpackage:
8531            {
8532              ret = new TPlsqlCreatePackage(pdbvendor);
8533              ret.sqlstatementtype = gnewsqlstatementtype;
8534              // System.out.println(gnewsqlstatementtype);
8535                break;
8536            }
8537            case sstplsql_createtrigger:
8538            {
8539              ret = new TPlsqlCreateTrigger(pdbvendor);
8540              ret.sqlstatementtype = gnewsqlstatementtype;
8541              // System.out.println(gnewsqlstatementtype);
8542                break;
8543            }
8544            case sstplsql_execimmestmt:
8545              {
8546                ret = new TExecImmeStmt(pdbvendor);
8547               // ret.sqlstatementtype = gnewsqlstatementtype;
8548                // System.out.println(gnewsqlstatementtype);
8549                  break;
8550              }
8551            case sstoraclecreatepackagebody:
8552             {
8553                ret = new TPlsqlCreatePackage(pdbvendor);
8554                ret.sqlstatementtype = ESqlStatementType.sstplsql_createpackage;
8555                 break;
8556             }
8557            case sstplsql_createtype_placeholder:
8558            {
8559              ret = new TPlsqlCreateType_Placeholder(pdbvendor);
8560              ret.sqlstatementtype = gnewsqlstatementtype;
8561              // System.out.println(gnewsqlstatementtype);
8562                break;
8563            }
8564            case sstplsql_createtypebody:
8565              {
8566                ret = new TPlsqlCreateTypeBody(pdbvendor);
8567                ret.sqlstatementtype = gnewsqlstatementtype;
8568                  break;
8569              }
8570            case sstCommentOn:
8571              {
8572                ret = new TCommentOnSqlStmt(pdbvendor);
8573                  break;
8574              }
8575            case sstoraclecreatesequence:
8576              {
8577                ret = new TCreateSequenceStmt(pdbvendor);
8578                  break;
8579              }
8580            case sstoraclecreatesynonym:
8581              {
8582                ret = new TCreateSynonymStmt(pdbvendor);
8583                  break;
8584              }
8585            case sstoraclecreatedirectory:
8586              {
8587                ret = new TOracleCreateDirectoryStmt(pdbvendor);
8588                  break;
8589              }
8590            case sstpostgresqlCreateIndex:
8591                ret = new TCreateIndexSqlStatement(pdbvendor);
8592                break;
8593            case sstpostgresqlCreateView:
8594                ret = new TCreateViewSqlStatement(pdbvendor);
8595                break;
8596            case sstpostgresqlCreateFunction:
8597                ret = new TCreateFunctionStmt(pdbvendor);
8598                break;
8599            case sstcreatetrigger:
8600                ret = new TCreateTriggerStmt(pdbvendor);
8601                break;
8602            case sstpostgresqlMove:
8603                ret = new TMoveStmt(EDbVendor.dbvgreenplum);
8604                break;
8605            case sstpostgresqlTruncate:
8606                ret = new TTruncateStatement(EDbVendor.dbvgreenplum);
8607                break;
8608            case sstpostgresqlExecute:
8609                ret = new TExecuteSqlStatement(EDbVendor.dbvgreenplum);
8610                break;
8611            case sstValues:
8612                ret = new TSelectSqlStatement(EDbVendor.dbvgreenplum);
8613                break;
8614            case sstpostgresqlDeclare: {
8615                boolean lcisnewsql = true;
8616
8617                TSourceToken lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos, 2, false);
8618                if ((lcnextsolidtoken != null)) {
8619                    if (lcnextsolidtoken.tokencode == TBaseType.rrw_greenplum_CURSOR) {
8620                        lcisnewsql = false;
8621                    }
8622                }
8623
8624
8625                if (lcisnewsql)
8626                    ret = new TCommonBlock(pdbvendor);
8627                else {
8628                    ret = new TUnknownSqlStatement(pdbvendor);
8629                }
8630                ret.sqlstatementtype = gnewsqlstatementtype;
8631
8632                break;
8633            }
8634            case sstpostgresqlSet:
8635                ret = new TSetStmt(pdbvendor);
8636                break;
8637            case sstcreateExtension:
8638                ret = new TCreateExtensionStmt(pdbvendor);
8639                break;
8640            case sstcall:
8641                ret = new TCallStatement(pdbvendor);
8642                break;
8643            case sstpostgresqlCreateSchema:
8644                ret = new TCreateSchemaSqlStatement(pdbvendor);
8645                break;
8646            case sstpostgresqlDo: {
8647                boolean lcisnewsql = false;
8648
8649                if (pstate == EFindSqlStateType.stnormal) {
8650                    TSourceToken lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos, 1, false);
8651                    if ((lcnextsolidtoken != null)) {
8652                        if (lcnextsolidtoken.tokencode == TBaseType.rrw_greenplum_function_delimiter)
8653                            lcisnewsql = true;
8654                        else if (lcnextsolidtoken.tokencode == TBaseType.rrw_greenplum_language)
8655                            lcisnewsql = true;
8656                    }
8657                }
8658
8659                if (lcisnewsql)
8660                    ret = new TDoExecuteBlockStmt(pdbvendor);
8661
8662                break;
8663            }
8664            case sstpostgresqlComment:
8665                ret = new TCommentOnSqlStmt(pdbvendor);
8666                break;
8667            default:
8668              {
8669                ret = new TUnknownSqlStatement(pdbvendor);
8670                ret.sqlstatementtype = gnewsqlstatementtype;
8671                break;
8672              }
8673        }    // case
8674
8675        return ret;
8676    }
8677
8678TCustomSqlStatement isoraclesql(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
8679    TCustomSqlStatement ret = null;
8680
8681    gnewsqlstatementtype = ESqlStatementType.sstinvalid;
8682
8683    if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
8684       || (pcst.tokencode  == TBaseType.cmtslashstar)
8685       || (pcst.tokencode  == TBaseType.lexspace)
8686       || (pcst.tokencode  == TBaseType.lexnewline)
8687        || (pcst.tokentype == ETokenType.ttsemicolon) )
8688    {
8689      return null;
8690    }
8691
8692    int lcpos = pcst.posinlist;
8693    TSourceTokenList lcsourcetokenlist = pcst.container;
8694    TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
8695
8696    //subquery after semicolon or at first line
8697    if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
8698      {
8699        int k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
8700        if ( k >0 )
8701          {
8702            ret = new TSelectSqlStatement(pdbvendor);
8703          }
8704
8705        return ret;
8706      }
8707
8708    //cte
8709    if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
8710      {
8711        ret = findcte(pcst,pdbvendor);
8712        if ( (ret != null) )  return ret;
8713      }
8714
8715    gnewsqlstatementtype = findoraclecmd(pcst);
8716
8717    TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
8718    switch (gnewsqlstatementtype) {    //
8719        case sstinvalid:
8720          {
8721            ret = null;
8722
8723            if ( pstate == EFindSqlStateType.stnormal )
8724              {
8725                if ( pcst.tokencode == TBaseType.label_begin )
8726                  {
8727                    ret = new TCommonBlock(pdbvendor);
8728                    gnewsqlstatementtype = ret.sqlstatementtype;
8729                  }
8730                else if ( pcst.tokencode == TBaseType.rrw_declare )
8731                  {
8732                    ret = new TCommonBlock(pdbvendor);
8733                    gnewsqlstatementtype = ret.sqlstatementtype;
8734                  }
8735                else if ( pcst.tokencode == TBaseType.rrw_begin )
8736                  {
8737                    ret = new TCommonBlock(pdbvendor);
8738                    gnewsqlstatementtype = ret.sqlstatementtype;
8739                  }
8740                else if ( pcst.tokencode == TBaseType.rrw_procedure )
8741                  {
8742                    ret = new TPlsqlCreateProcedure(pdbvendor);
8743                    // ret.sqlstatementtype = ESqlStatementType.sstplsql_createprocedure;
8744                    gnewsqlstatementtype = ret.sqlstatementtype;
8745                  }
8746                else if ( pcst.tokencode == TBaseType.rrw_function )
8747                  {
8748                    ret = new TPlsqlCreateFunction(pdbvendor);
8749                    // ret.sqlstatementtype = ESqlStatementType.sstplsql_createfunction;
8750                    gnewsqlstatementtype = ret.sqlstatementtype;
8751                  }
8752                else if ( pcst.tokencode == TBaseType.rrw_package )
8753                  {
8754                    ret = new TPlsqlCreatePackage(pdbvendor);
8755                   // ret.sqlstatementtype = ESqlStatementType.sstplsql_createpackage;
8756                    gnewsqlstatementtype = ret.sqlstatementtype;
8757                  }
8758              }
8759              break;
8760          }
8761        case sstselect:
8762          {
8763            boolean lcisnewsql = true;
8764
8765            if ( pstate != EFindSqlStateType.stnormal )
8766              {
8767                // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
8768                if ( (lcprevsolidtoken != null) )
8769                  {
8770                    if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
8771                      lcisnewsql = false; //subquery
8772                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
8773                      lcisnewsql = false;
8774                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
8775                      lcisnewsql = false;
8776                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
8777                      lcisnewsql = false;
8778                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
8779                      lcisnewsql = false;
8780                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
8781                      lcisnewsql = false;
8782                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
8783                      {
8784                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
8785                          lcisnewsql = false;
8786                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
8787                          lcisnewsql = false;
8788                      }
8789
8790                    if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
8791                      {
8792                        TSourceToken lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
8793                        if ( (lcpprevsolidtoken != null) )
8794                          {
8795                            if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
8796                              lcisnewsql = false;
8797                          }
8798                      }
8799
8800                  }
8801
8802
8803                if ( (lccurrentsqlstatement != null) )
8804                  {
8805                      switch (lccurrentsqlstatement.sqlstatementtype){
8806                          case sstinsert:
8807                              lcisnewsql = false;
8808                              break;
8809                          case sstcreatetable:
8810                          case sstcreateview:
8811                              lcisnewsql = false;
8812                              break;
8813                      }
8814                  }
8815
8816              }
8817
8818            if ( lcisnewsql )
8819              ret = new TSelectSqlStatement(pdbvendor);
8820
8821            break;
8822          }
8823        case sstinsert:
8824          {
8825            boolean lcisnewsql = true;
8826            if ( pstate != EFindSqlStateType.stnormal )
8827              {
8828                if ( (lccurrentsqlstatement != null) )
8829                  {
8830
8831                  }
8832              }
8833
8834            if ( lcisnewsql )
8835              ret = new TInsertSqlStatement(pdbvendor);
8836
8837            break;
8838          }
8839        case sstupdate:
8840          {
8841            boolean lcisnewsql = true;
8842            if ( pstate != EFindSqlStateType.stnormal )
8843              {
8844                lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
8845                if ( (lcprevsolidtoken != null) )
8846                  { //
8847                    if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
8848                      lcisnewsql = false;
8849                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
8850                      lcisnewsql = false;
8851                  }
8852
8853                TSourceToken lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
8854                if ( (lcnextsolidtoken != null) )
8855                  {
8856                    if ( lcnextsolidtoken.tokentype == ETokenType.ttleftparenthesis)
8857                      {
8858                        int k = lcsourcetokenlist.solidtokenafterpos(lcnextsolidtoken.posinlist,TBaseType.rrw_select,1,"(");
8859                        if ( k  == 0 ) lcisnewsql = false;
8860                      }
8861                  }
8862
8863
8864                if ( (lccurrentsqlstatement != null) )
8865                  {
8866                  }
8867              }
8868
8869            if ( lcisnewsql )
8870              {
8871                ret = new TUpdateSqlStatement(pdbvendor);
8872                ret.dummytag = 1; // means set clause in update is not found yet, used to seperate set clause from set statement
8873              }
8874            break;
8875          }
8876        case sstdelete:
8877          {
8878            boolean lcisnewsql = true;
8879
8880            if ( pstate != EFindSqlStateType.stnormal )
8881              {
8882                lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
8883                if ( (lcprevsolidtoken != null) )
8884                  {
8885                    if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
8886                      lcisnewsql = false;
8887                  }
8888
8889                if ( (lccurrentsqlstatement != null) )
8890                  {
8891                      TSourceToken lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
8892                      if ( (lcnextsolidtoken != null) ){
8893                          if (lcnextsolidtoken.tokencode == TBaseType.rrw_oracle_rows){
8894                              lcisnewsql = false;
8895                          }
8896                      }
8897                  }
8898              }
8899
8900            if ( lcisnewsql )
8901              ret = new TDeleteSqlStatement(pdbvendor);
8902
8903            break;
8904          }
8905        case sstmerge:
8906          {
8907            ret = new TMergeSqlStatement(pdbvendor);
8908            ret.sqlstatementtype = gnewsqlstatementtype;
8909            break;
8910          }
8911        case sstoraclecommit:
8912          {
8913
8914              boolean lcisnewsql = true;
8915              if ( pstate != EFindSqlStateType.stnormal )
8916              {
8917                  lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
8918                  if ( (lcprevsolidtoken != null) )
8919                  { //
8920                      if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
8921                          lcisnewsql = false;
8922                  }
8923              }
8924
8925              if (lcisnewsql){
8926                  ret = new TCommitStmt(pdbvendor);
8927                  ret.sqlstatementtype = gnewsqlstatementtype;
8928              }
8929
8930            break;
8931          }
8932        case sstoraclerollback:
8933          {
8934            ret = new TUnknownSqlStatement(pdbvendor);
8935            ret.sqlstatementtype = gnewsqlstatementtype;
8936            break;
8937          }
8938        case sstoraclesavepoint:
8939          {
8940            ret = new TUnknownSqlStatement(pdbvendor);
8941            ret.sqlstatementtype = gnewsqlstatementtype;
8942              break;
8943          }
8944        case sstoraclerevoke:
8945          {
8946            ret = new TUnknownSqlStatement(pdbvendor);
8947            ret.sqlstatementtype = gnewsqlstatementtype;
8948              break;
8949          }
8950        case sstoraclegrant:
8951          {
8952            ret = new TUnknownSqlStatement(pdbvendor);
8953            ret.sqlstatementtype = gnewsqlstatementtype;
8954              break;
8955          }
8956        case sstoracleanalyze:
8957          {
8958            ret = new TUnknownSqlStatement(pdbvendor);
8959            ret.sqlstatementtype = gnewsqlstatementtype;
8960              break;
8961          }
8962        case sstTruncate:
8963          {
8964              ret = new TTruncateStatement(pdbvendor);
8965              ret.sqlstatementtype = gnewsqlstatementtype;
8966              break;
8967          }
8968        case sstcreatetable:
8969          {
8970            ret = new TCreateTableSqlStatement(pdbvendor);
8971              break;
8972          }
8973        case sstoraclecreateview:
8974          {
8975            ret = new TCreateViewSqlStatement(pdbvendor);
8976              break;
8977          }
8978        case sstcreatematerializedview:{
8979            ret = new TCreateMaterializedSqlStatement(pdbvendor);
8980            break;
8981        }
8982        case sstoraclecreatematerializedviewlog:{
8983            ret = new TCreateMaterializedViewLogSqlStatement(pdbvendor);
8984            break;
8985        }
8986        case sstoraclecreateindex:
8987          {
8988            ret = new TCreateIndexSqlStatement(pdbvendor);
8989              break;
8990          }
8991        case sstoraclecreatedatabase:
8992          {
8993            ret = new TCreateDatabaseSqlStatement(pdbvendor);
8994              break;
8995          }
8996        case sstoracledroptable:
8997          {
8998            ret = new TDropTableSqlStatement(pdbvendor);
8999              break;
9000          }
9001        case sstoracledropview:
9002          {
9003           ret = new TDropViewSqlStatement(pdbvendor);
9004              break;
9005          }
9006        case sstoracledropindex:
9007          {
9008            ret = new TDropIndexSqlStatement(pdbvendor);
9009              break;
9010          }
9011        case sstaltertable:
9012          {
9013            ret = new TAlterTableStatement(pdbvendor);
9014              break;
9015          }
9016        case sstoraclealtersession:
9017          {
9018            ret = new TAlterSessionStatement(pdbvendor);
9019              break;
9020          }
9021        case sstplsql_createprocedure:
9022        {
9023          ret = new TPlsqlCreateProcedure(pdbvendor);
9024          ret.sqlstatementtype = gnewsqlstatementtype;
9025          // System.out.println(gnewsqlstatementtype);
9026            break;
9027        }
9028        case sstplsql_createfunction:
9029        {
9030          ret = new TPlsqlCreateFunction(pdbvendor);
9031          ret.sqlstatementtype = gnewsqlstatementtype;
9032          // System.out.println(gnewsqlstatementtype);
9033            break;
9034        }
9035        case sstplsql_createpackage:
9036        {
9037          ret = new TPlsqlCreatePackage(pdbvendor);
9038          ret.sqlstatementtype = gnewsqlstatementtype;
9039          // System.out.println(gnewsqlstatementtype);
9040            break;
9041        }
9042        case sstplsql_createtrigger:
9043        {
9044          ret = new TPlsqlCreateTrigger(pdbvendor);
9045          ret.sqlstatementtype = gnewsqlstatementtype;
9046          // System.out.println(gnewsqlstatementtype);
9047            break;
9048        }
9049        case sstplsql_execimmestmt:
9050          {
9051            ret = new TExecImmeStmt(pdbvendor);
9052           // ret.sqlstatementtype = gnewsqlstatementtype;
9053            // System.out.println(gnewsqlstatementtype);
9054              break;
9055          }
9056        case sstoraclecreatepackagebody:
9057         {
9058            ret = new TPlsqlCreatePackage(pdbvendor);
9059            ret.sqlstatementtype = ESqlStatementType.sstplsql_createpackage;
9060             break;
9061         }
9062        case sstplsql_createtype_placeholder:
9063        {
9064          ret = new TPlsqlCreateType_Placeholder(pdbvendor);
9065          ret.sqlstatementtype = gnewsqlstatementtype;
9066          // System.out.println(gnewsqlstatementtype);
9067            break;
9068        }
9069        case sstplsql_createtypebody:
9070          {
9071            ret = new TPlsqlCreateTypeBody(pdbvendor);
9072            ret.sqlstatementtype = gnewsqlstatementtype;
9073              break;
9074          }
9075        case sstCommentOn:
9076          {
9077            ret = new TCommentOnSqlStmt(pdbvendor);
9078              break;
9079          }
9080        case sstoraclecreatesequence:
9081          {
9082            ret = new TCreateSequenceStmt(pdbvendor);
9083              break;
9084          }
9085        case sstoraclecreatesynonym:
9086          {
9087            ret = new TCreateSynonymStmt(pdbvendor);
9088              break;
9089          }
9090        case sstoraclecreatedirectory:
9091          {
9092            ret = new TOracleCreateDirectoryStmt(pdbvendor);
9093              break;
9094          }
9095        case sstoracleexecuteprocedure:
9096        {
9097            ret = new TOracleExecuteProcedure(pdbvendor);
9098            break;
9099        }
9100        case sstExplain:
9101        {
9102            ret = new TExplainPlan(pdbvendor);
9103            break;
9104        }
9105        case sstoraclecreatelibrary:
9106            ret = new TOracleCreateLibraryStmt(pdbvendor);
9107            break;
9108        case sstaltertrigger:
9109            ret  = new TAlterTriggerStmt(pdbvendor);
9110            break;
9111        case sstoracledropsequence:
9112            ret = new TDropSequenceStmt(pdbvendor);
9113            break;
9114        case sstoraclecall:
9115            ret = new TCallStatement(pdbvendor);
9116            break;
9117        case sstoraclealterview:
9118            ret = new TAlterViewStatement(pdbvendor);
9119            break;
9120        case sstoracledropsynonym:
9121            ret = new TDropSynonymStmt(pdbvendor);
9122            break;
9123        case sstoracledropdatabaselink:
9124            ret = new TDropDatabaseLinkStmt(pdbvendor);
9125            break;
9126        case sstoraclecreatedatabaselink:
9127            ret = new TCreateDatabaseLinkStmt(pdbvendor);
9128            break;
9129        case sstoracledropmaterializedview:
9130            ret = new TDropMaterializedViewStmt(pdbvendor);
9131            break;
9132        case sstoracledropmaterializedviewlog:
9133            ret = new TDropMaterializedViewLogStmt(pdbvendor);
9134            break;
9135        case sstoraclerename:
9136            ret = new TRenameStmt(pdbvendor);
9137            break;
9138        case sstoracledropprocedure:
9139            ret = new TDropProcedureStmt(pdbvendor);
9140            break;
9141        case sstAlterMaterializedView:
9142            ret = new TAlterMaterializedViewStmt(pdbvendor);
9143            break;
9144        case sstoracledroptrigger:
9145            ret = new TDropTriggerSqlStatement(pdbvendor);
9146            break;
9147        case sstoracledropfunction:
9148            ret = new TDropFunctionStmt(pdbvendor);
9149            break;
9150        case sstoraclealterindex:
9151            ret = new TAlterIndexStmt(pdbvendor);
9152            break;
9153        case sstoraclealtersequence:
9154            ret = new TAlterSequenceStatement(pdbvendor);
9155            break;
9156        case sstoraclealtertype:
9157            ret = new TAlterTypeStatement(pdbvendor);
9158            break;
9159        default:
9160          {
9161            ret = new TUnknownSqlStatement(pdbvendor);
9162            ret.sqlstatementtype = gnewsqlstatementtype;
9163            break;
9164          }
9165    }    // case
9166
9167    return ret;
9168}
9169
9170TCustomSqlStatement isinformixsql(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
9171    TCustomSqlStatement ret = null;
9172
9173    gnewsqlstatementtype = ESqlStatementType.sstinvalid;
9174
9175    if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
9176       || (pcst.tokencode  == TBaseType.cmtslashstar)
9177       || (pcst.tokencode  == TBaseType.lexspace)
9178       || (pcst.tokencode  == TBaseType.lexnewline)
9179        || (pcst.tokentype == ETokenType.ttsemicolon) )
9180    {
9181      return null;
9182    }
9183
9184    int lcpos = pcst.posinlist;
9185    TSourceTokenList lcsourcetokenlist = pcst.container;
9186    TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
9187
9188    //subquery after semicolon or at first line
9189    if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
9190      {
9191        int k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
9192        if ( k >0 )
9193          {
9194            ret = new TSelectSqlStatement(pdbvendor);
9195          }
9196
9197        return ret;
9198      }
9199
9200    //cte
9201    if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
9202      {
9203        ret = findcte(pcst,pdbvendor);
9204        if ( (ret != null) )  return ret;
9205      }
9206
9207    gnewsqlstatementtype = findinformixcmd(pcst);
9208
9209    TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
9210    switch (gnewsqlstatementtype) {    //
9211        case sstinvalid:
9212          {
9213            ret = null;
9214
9215            if ( pstate == EFindSqlStateType.stnormal )
9216              {
9217                if ( pcst.tokencode == TBaseType.label_begin )
9218                  {
9219                    ret = new TCommonBlock(pdbvendor);
9220                    gnewsqlstatementtype = ret.sqlstatementtype;
9221                  }
9222                else if ( pcst.tokencode == TBaseType.rrw_declare )
9223                  {
9224                    ret = new TCommonBlock(pdbvendor);
9225                    gnewsqlstatementtype = ret.sqlstatementtype;
9226                  }
9227                else if ( pcst.tokencode == TBaseType.rrw_begin )
9228                  {
9229                    ret = new TCommonBlock(pdbvendor);
9230                    gnewsqlstatementtype = ret.sqlstatementtype;
9231                  }
9232                else if ( pcst.tokencode == TBaseType.rrw_procedure )
9233                  {
9234                    ret = new TPlsqlCreateProcedure(pdbvendor);
9235                    // ret.sqlstatementtype = ESqlStatementType.sstplsql_createprocedure;
9236                    gnewsqlstatementtype = ret.sqlstatementtype;
9237                  }
9238                else if ( pcst.tokencode == TBaseType.rrw_function )
9239                  {
9240                    ret = new TPlsqlCreateFunction(pdbvendor);
9241                    // ret.sqlstatementtype = ESqlStatementType.sstplsql_createfunction;
9242                    gnewsqlstatementtype = ret.sqlstatementtype;
9243                  }
9244                else if ( pcst.tokencode == TBaseType.rrw_package )
9245                  {
9246                    ret = new TPlsqlCreatePackage(pdbvendor);
9247                   // ret.sqlstatementtype = ESqlStatementType.sstplsql_createpackage;
9248                    gnewsqlstatementtype = ret.sqlstatementtype;
9249                  }
9250              }
9251              break;
9252          }
9253        case sstselect:
9254          {
9255            boolean lcisnewsql = true;
9256
9257            if ( pstate != EFindSqlStateType.stnormal )
9258              {
9259                // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
9260                if ( (lcprevsolidtoken != null) )
9261                  {
9262                    if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
9263                      lcisnewsql = false; //subqery
9264                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
9265                      lcisnewsql = false;
9266                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
9267                      lcisnewsql = false;
9268                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
9269                      lcisnewsql = false;
9270                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
9271                      lcisnewsql = false;
9272                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
9273                      lcisnewsql = false;
9274                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
9275                      {
9276                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
9277                          lcisnewsql = false;
9278                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
9279                          lcisnewsql = false;
9280                      }
9281
9282                    if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
9283                      {
9284                        TSourceToken lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
9285                        if ( (lcpprevsolidtoken != null) )
9286                          {
9287                            if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
9288                              lcisnewsql = false;
9289                          }
9290                      }
9291
9292                  }
9293
9294
9295                if ( (lccurrentsqlstatement != null) )
9296                  {
9297                    if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
9298                      lcisnewsql = false;
9299                  }
9300
9301              }
9302
9303            if ( lcisnewsql )
9304              ret = new TSelectSqlStatement(pdbvendor);
9305
9306            break;
9307          }
9308        case sstinsert:
9309          {
9310            boolean lcisnewsql = true;
9311            if ( pstate != EFindSqlStateType.stnormal )
9312              {
9313                if ( (lccurrentsqlstatement != null) )
9314                  {
9315                        // merge
9316                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
9317                        {
9318                              if (lcprevsolidtoken != null)
9319                              {
9320                                  if (lcprevsolidtoken.tokencode == TBaseType.rrw_then)
9321                                  {lcisnewsql = false;}
9322                              }
9323                        }
9324
9325                  }
9326              }
9327
9328            if ( lcisnewsql )
9329              ret = new TInsertSqlStatement(pdbvendor);
9330
9331            break;
9332          }
9333        case sstupdate:
9334          {
9335            boolean lcisnewsql = true;
9336            if ( pstate != EFindSqlStateType.stnormal )
9337              {
9338                lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
9339                if ( (lcprevsolidtoken != null) )
9340                  { //
9341                    if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
9342                      lcisnewsql = false;
9343                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
9344                      lcisnewsql = false;
9345                  }
9346
9347                TSourceToken lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
9348                if ( (lcnextsolidtoken != null) )
9349                  {
9350                    if ( lcnextsolidtoken.tokentype == ETokenType.ttleftparenthesis)
9351                      {
9352                        int k = lcsourcetokenlist.solidtokenafterpos(lcnextsolidtoken.posinlist,TBaseType.rrw_select,1,"(");
9353                        if ( k  == 0 ) lcisnewsql = false;
9354                      }
9355                  }
9356
9357
9358                if ( (lccurrentsqlstatement != null) )
9359                  {
9360                        // merge
9361                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
9362                        {
9363                              if (lcprevsolidtoken != null)
9364                              {
9365                                  if (lcprevsolidtoken.tokencode == TBaseType.rrw_then)
9366                                  {lcisnewsql = false;}
9367                              }
9368                        }
9369                  }
9370              }
9371
9372            if ( lcisnewsql )
9373              {
9374                ret = new TUpdateSqlStatement(pdbvendor);
9375                ret.dummytag = 1; // means set clause in update is not found yet, used to seperate set clause from set statement
9376              }
9377            break;
9378          }
9379        case sstdelete:
9380          {
9381            boolean lcisnewsql = true;
9382
9383            if ( pstate != EFindSqlStateType.stnormal )
9384              {
9385                lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
9386                if ( (lcprevsolidtoken != null) )
9387                  {
9388                    if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
9389                      lcisnewsql = false;
9390                  }
9391
9392                if ( (lccurrentsqlstatement != null) )
9393                  {
9394                        // merge
9395                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
9396                        {
9397                              if (lcprevsolidtoken != null)
9398                              {
9399                                  if (lcprevsolidtoken.tokencode == TBaseType.rrw_then)
9400                                  {lcisnewsql = false;}
9401                              }
9402                        }
9403                  }
9404              }
9405
9406            if ( lcisnewsql )
9407              ret = new TDeleteSqlStatement(pdbvendor);
9408
9409            break;
9410          }
9411        case sstmerge:
9412          {
9413            ret = new TMergeSqlStatement(pdbvendor);
9414            ret.sqlstatementtype = gnewsqlstatementtype;
9415            break;
9416          }
9417        case sstinformixCommit:
9418          {
9419            ret = new TUnknownSqlStatement(pdbvendor);
9420            ret.sqlstatementtype = gnewsqlstatementtype;
9421            break;
9422          }
9423        case sstinformixSavepoint:
9424          {
9425            ret = new TUnknownSqlStatement(pdbvendor);
9426            ret.sqlstatementtype = gnewsqlstatementtype;
9427              break;
9428          }
9429        case sstinformixRevoke:
9430          {
9431            ret = new TUnknownSqlStatement(pdbvendor);
9432            ret.sqlstatementtype = gnewsqlstatementtype;
9433              break;
9434          }
9435        case sstinformixGrant:
9436          {
9437            ret = new TUnknownSqlStatement(pdbvendor);
9438            ret.sqlstatementtype = gnewsqlstatementtype;
9439              break;
9440          }
9441        case sstTruncate:
9442          {
9443              ret = new TTruncateStatement(pdbvendor);
9444              ret.sqlstatementtype = gnewsqlstatementtype;
9445              break;
9446          }
9447        case sstcreatetable:
9448        case sstinformixCreateTempTable:
9449          {
9450            ret = new TCreateTableSqlStatement(pdbvendor);
9451              break;
9452          }
9453        case sstinformixCreateView:
9454          {
9455            ret = new TCreateViewSqlStatement(pdbvendor);
9456              break;
9457          }
9458        case sstinformixCreateIndex:
9459          {
9460            ret = new TCreateIndexSqlStatement(pdbvendor);
9461              break;
9462          }
9463        case sstinformixCreateDatabase:
9464          {
9465            ret = new TCreateDatabaseSqlStatement(pdbvendor);
9466              break;
9467          }
9468        case sstinformixDropTable:
9469          {
9470            ret = new TDropTableSqlStatement(pdbvendor);
9471              break;
9472          }
9473        case sstinformixDropView:
9474          {
9475           ret = new TDropViewSqlStatement(pdbvendor);
9476              break;
9477          }
9478        case sstinformixDropIndex:
9479          {
9480            ret = new TDropIndexSqlStatement(pdbvendor);
9481              break;
9482          }
9483        case sstinformixDropRowType:
9484        {
9485            ret = new TInformixDropRowTypeStmt(pdbvendor);
9486            break;
9487        }
9488        case sstinformixDropSequence:
9489        {
9490            ret = new TDropSequenceStmt(pdbvendor);
9491            break;
9492        }
9493        case sstinformixDropSynonym:
9494        {
9495            ret = new TDropSynonymStmt(pdbvendor);
9496            break;
9497        }
9498        case sstinformixAlterTable:
9499          {
9500            ret = new TAlterTableStatement(pdbvendor);
9501              break;
9502          }
9503        case sstinformixCreateProcedure:
9504        {
9505          ret = new TInformixCreateProcedure(pdbvendor);
9506          ret.sqlstatementtype = gnewsqlstatementtype;
9507            break;
9508        }
9509        case sstinformixCreateFunction:
9510        {
9511          ret = new TInformixCreateFunction(pdbvendor);
9512          ret.sqlstatementtype = gnewsqlstatementtype;
9513            break;
9514        }
9515        case sstcreatetrigger:
9516        {
9517          ret = new TCreateTriggerStmt(pdbvendor);
9518            break;
9519        }
9520        case sstinformixExecuteImmediate:
9521          {
9522            ret = new TInformixExecuteImmediate(pdbvendor);
9523              break;
9524          }
9525        case sstinformixCreateSequence:
9526        case sstinformixAlterSequence:
9527          {
9528            ret = new TCreateSequenceStmt(pdbvendor);
9529              break;
9530          }
9531        case sstinformixCreateSynonym:
9532          {
9533            ret = new TCreateSynonymStmt(pdbvendor);
9534              break;
9535          }
9536        case sstinformixExecuteFunction:
9537        {
9538            ret = new TInformixExecuteFunction(pdbvendor);
9539            break;
9540        }
9541        case sstinformixExecuteProcedure:
9542        {
9543            ret = new TInformixExecuteProcedure(pdbvendor);
9544            break;
9545        }
9546        case sstinformixCreateRowType:
9547        {
9548            ret = new TInformixCreateRowTypeStmt(pdbvendor);
9549            break;
9550        }
9551        case sstinformixPut:
9552        case sstinformixInfo:
9553          {
9554            ret = null;
9555
9556            if ( pstate == EFindSqlStateType.stnormal )
9557              {
9558                  ret = new TUnknownSqlStatement(pdbvendor);
9559                  ret.sqlstatementtype = gnewsqlstatementtype;
9560              }
9561              break;
9562          }
9563        case sstinformixAlterIndex:
9564        {
9565            ret = new TAlterIndexStmt(pdbvendor);
9566            break;
9567        }
9568        case sstinformixRenameColumn:
9569        case sstinformixRenameTable:
9570        case sstinformixRenameSequence:
9571        case sstinformixRenameIndex:
9572        {
9573            ret = new TRenameStmt(pdbvendor);
9574            break;
9575        }
9576        case sstdropdatabase:
9577            ret = new TDropDatabaseStmt(pdbvendor);
9578            break;
9579        case sstinformixRollbackWork:
9580        {
9581            ret =  new TMssqlRollback(pdbvendor);
9582            break;
9583        }
9584        default:
9585          {
9586            ret = new TUnknownSqlStatement(pdbvendor);
9587            ret.sqlstatementtype = gnewsqlstatementtype;
9588            break;
9589          }
9590    }    // case
9591
9592    return ret;
9593}
9594
9595
9596    TCustomSqlStatement issybasesql(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
9597        TCustomSqlStatement ret = null;
9598        int k;
9599        boolean lcisnewsql;
9600        TSourceToken lcpprevsolidtoken,lcnextsolidtoken,lctoken;
9601
9602        gnewsqlstatementtype = ESqlStatementType.sstinvalid;
9603
9604        if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
9605                || (pcst.tokencode  == TBaseType.cmtslashstar)
9606                || (pcst.tokencode  == TBaseType.lexspace)
9607                || (pcst.tokencode  == TBaseType.lexnewline)
9608                || (pcst.tokentype == ETokenType.ttsemicolon) )
9609        {
9610            return ret;
9611        }
9612
9613        int lcpos = pcst.posinlist;
9614        TSourceTokenList lcsourcetokenlist = pcst.container;
9615        TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
9616
9617        //subquery after semicolon || at first line
9618        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
9619        {
9620            k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
9621            if ( k >0 )
9622            {
9623                ret =  new TSelectSqlStatement(pdbvendor);
9624            }
9625
9626            return ret;
9627        }
9628
9629        //cte
9630        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
9631        {
9632            ret = findcte(pcst,pdbvendor);
9633            if ( (ret != null) )  return ret;
9634        }
9635
9636        gnewsqlstatementtype = findsybasecmd(pcst);
9637
9638        TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
9639        switch(gnewsqlstatementtype ) {   //
9640            case sstinvalid:
9641            {
9642                if ( pcst.tokencode == TBaseType.mslabel )
9643                {
9644                    ret =  new TMssqlLabel(pdbvendor);
9645                }
9646                else
9647                    ret = null;
9648
9649                break;
9650            }
9651            case sstselect:
9652            {
9653                lcisnewsql = true;
9654
9655                if ( pstate != EFindSqlStateType.stnormal )
9656                {
9657                    // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
9658                    if ( (lcprevsolidtoken != null) )
9659                    {
9660                        if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
9661                            lcisnewsql = false; //subqery
9662                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
9663                            lcisnewsql = false;
9664                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
9665                            lcisnewsql = false;
9666                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
9667                            lcisnewsql = false;
9668                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
9669                            lcisnewsql = false;
9670                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
9671                            lcisnewsql = false;
9672                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
9673                        {
9674                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
9675                                lcisnewsql = false;
9676                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
9677                                lcisnewsql = false;
9678                        }
9679                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
9680                        {
9681                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlset )
9682                                lcisnewsql = false;
9683                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqldeclare )
9684                                lcisnewsql = false;
9685                        }
9686
9687                        if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
9688                        {
9689                            lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
9690                            if ( (lcpprevsolidtoken != null) )
9691                            {
9692                                if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
9693                                    lcisnewsql = false;
9694                            }
9695                        }
9696
9697                    }
9698
9699                    if ( (lccurrentsqlstatement != null) )
9700                    {
9701                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
9702                        {
9703                        }
9704                        else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlgrant )
9705                        {
9706                            if ( (lcprevsolidtoken != null) )
9707                            {
9708                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_grant )
9709                                    lcisnewsql = false;
9710                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
9711                                    lcisnewsql = false;
9712                            }
9713                        } else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlrevoke )
9714                        {
9715                            if ( (lcprevsolidtoken != null) )
9716                            {
9717                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_revoke )
9718                                    lcisnewsql = false;
9719                            }
9720                        }else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview ){
9721                            lcisnewsql = false;
9722                        }
9723                    }
9724
9725                }
9726
9727                if ( lcisnewsql )
9728                    ret =  new TSelectSqlStatement(pdbvendor);
9729
9730                break;
9731
9732            }
9733            case sstinsert:
9734            {
9735                lcisnewsql = true;
9736                if ( pstate != EFindSqlStateType.stnormal )
9737                {
9738                    if ( (lccurrentsqlstatement != null) )
9739                    {
9740                        // merge
9741                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
9742                        {
9743                              if (lcprevsolidtoken != null)
9744                              {
9745                                  if (lcprevsolidtoken.tokencode == TBaseType.rrw_then)
9746                                  {lcisnewsql = false;}
9747                              }
9748                        }
9749
9750                        // bulk insert
9751                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlbulkinsert )
9752                        {
9753                            if ( (lcprevsolidtoken != null) )
9754                            {
9755                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_bulk )
9756                                    lcisnewsql = false;
9757                            }
9758                        }
9759
9760                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlgrant )
9761                        {
9762                            if ( (lcprevsolidtoken != null) )
9763                            {
9764                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_grant )
9765                                    lcisnewsql = false;
9766                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
9767                                    lcisnewsql = false;
9768                            }
9769                        }else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlrevoke ) {
9770                            if ( (lcprevsolidtoken != null) )
9771                            {
9772                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_revoke )
9773                                    lcisnewsql = false;
9774                            }
9775                        }
9776
9777                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetrigger )
9778                        {
9779                            if ( (lcprevsolidtoken != null) )
9780                            {
9781                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
9782                                    lcisnewsql = false;
9783                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
9784                                    lcisnewsql = false;
9785                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(),"after") == 0 )
9786                                    lcisnewsql = false;
9787                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(), "of") == 0 )
9788                                    lcisnewsql = false;
9789                            }
9790                        }
9791
9792
9793                    }
9794                }
9795
9796                if ( lcisnewsql )
9797                {
9798                    ret =  new TInsertSqlStatement(pdbvendor);
9799                    ret.dummytag = 1; //  select stmt in insert is permitted
9800                    for ( k = lcpos + 1; k < lcsourcetokenlist.size();k++ )    // iterate
9801                    {
9802                        if ( lcsourcetokenlist.get(k).isnonsolidtoken() ) continue;
9803                        if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_values ) break;
9804                        if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_go ) break;
9805                        if ( lcsourcetokenlist.get(k).tokentype == ETokenType.ttsemicolon ) break;
9806                        if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_select ) break;
9807                        if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_execute ) break;
9808                        if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_exec ) break;
9809                    }    // for (
9810                    if ( k > lcsourcetokenlist.size() - 1 )
9811                        k = lcsourcetokenlist.size() - 1;
9812
9813                    for ( int i = lcpos + 1; i <=  k; i++ )    // iterate
9814                    {
9815                        lcsourcetokenlist.get(i).tokenstatus = ETokenStatus.tsignoredbygetrawstatement;
9816                    }    // for (
9817
9818                }
9819
9820                break;
9821            }
9822            case sstsybaseInsertBulk:
9823            {
9824                ret =  new TInsertBulk(pdbvendor);
9825                break;
9826            }
9827            case sstupdate:
9828            {
9829                lcisnewsql = true;
9830                if ( pstate != EFindSqlStateType.stnormal )
9831                {
9832                    // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
9833                    if ( (lcprevsolidtoken != null) )
9834                    { //
9835                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
9836                            lcisnewsql = false;
9837                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
9838                            lcisnewsql = false;
9839                    }
9840
9841                    lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
9842                    if ( TBaseType.assigned(lcnextsolidtoken) )
9843                    {
9844                        if ( lcnextsolidtoken.tokentype == ETokenType.ttleftparenthesis)
9845                        {
9846                            k = lcsourcetokenlist.solidtokenafterpos(lcnextsolidtoken.posinlist,TBaseType.rrw_select,1,"(");
9847                            if ( k  == 0 ) lcisnewsql = false;
9848                        }
9849                    }
9850
9851
9852                    if ( TBaseType.assigned(lccurrentsqlstatement) )
9853                    {
9854                        // merge
9855                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
9856                        {
9857                              if (lcprevsolidtoken != null)
9858                              {
9859                                  if (lcprevsolidtoken.tokencode == TBaseType.rrw_then)
9860                                  {lcisnewsql = false;}
9861                              }
9862                        }
9863
9864                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlgrant )
9865                        {
9866                            if ( TBaseType.assigned(lcprevsolidtoken) )
9867                            {
9868                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_grant )
9869                                    lcisnewsql = false;
9870                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
9871                                    lcisnewsql = false;
9872                            }
9873                        }else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlrevoke )
9874                        {
9875                            if ( TBaseType.assigned(lcprevsolidtoken) )
9876                            {
9877                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_revoke )
9878                                    lcisnewsql = false;
9879                            }
9880                        }
9881                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetrigger )
9882                        {
9883                            if ( TBaseType.assigned(lcprevsolidtoken) )
9884                            {
9885                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
9886                                    lcisnewsql = false;
9887                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
9888                                    lcisnewsql = false;
9889                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(),"after") == 0 )
9890                                    lcisnewsql = false;
9891                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(), "of") == 0 )
9892                                    lcisnewsql = false;
9893                            }
9894                        }
9895
9896                    }
9897                }
9898
9899                if ( lcisnewsql )
9900                {
9901                    ret =  new TUpdateSqlStatement(pdbvendor);
9902                    ret.dummytag = 1; // means set clause in update is not found yet, used to seperate set clause from set statement
9903                }
9904
9905                break;
9906            }
9907            case sstdelete:
9908            {
9909                lcisnewsql = true;
9910
9911                if ( pstate != EFindSqlStateType.stnormal )
9912                {
9913                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
9914                    if ( TBaseType.assigned(lcprevsolidtoken) )
9915                    {
9916                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
9917                            lcisnewsql = false;
9918                    }
9919
9920                    if ( TBaseType.assigned(lccurrentsqlstatement) )
9921                    {
9922                        // merge
9923                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
9924                        {
9925                              if (lcprevsolidtoken != null)
9926                              {
9927                                  if (lcprevsolidtoken.tokencode == TBaseType.rrw_then)
9928                                  {lcisnewsql = false;}
9929                              }
9930                        }
9931
9932                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlgrant )
9933                        {
9934                            if ( TBaseType.assigned(lcprevsolidtoken) )
9935                            {
9936                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_grant )
9937                                    lcisnewsql = false;
9938                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
9939                                    lcisnewsql = false;
9940                            }
9941                        }else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlrevoke )
9942                        {
9943                            if ( TBaseType.assigned(lcprevsolidtoken) )
9944                            {
9945                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_revoke )
9946                                    lcisnewsql = false;
9947                            }
9948                        }
9949
9950                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetrigger )
9951                        {
9952                            if ( TBaseType.assigned(lcprevsolidtoken) )
9953                            {
9954                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
9955                                    lcisnewsql = false;
9956                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
9957                                    lcisnewsql = false;
9958                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(),"after") == 0 )
9959                                    lcisnewsql = false;
9960                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(), "of") == 0 )
9961                                    lcisnewsql = false;
9962                            }
9963                        }
9964
9965                    }
9966                }
9967
9968                if ( lcisnewsql )
9969                    ret =  new TDeleteSqlStatement(pdbvendor);
9970
9971                break;
9972            }
9973            case sstcreatetable:
9974            {
9975                ret =  new TCreateTableSqlStatement(pdbvendor);
9976                break;
9977            }
9978            case sstcreateview:
9979            {
9980                ret =  new TCreateViewSqlStatement(pdbvendor);
9981                break;
9982            }
9983            case sstaltertable:
9984            {
9985                ret =  new TAlterTableStatement(pdbvendor);
9986                break;
9987            }
9988            case sstmssqlfetch:
9989            {
9990                ret =  new TMssqlFetch(pdbvendor);
9991                break;
9992            }
9993            case sstmssqlif :
9994            {
9995                lcisnewsql = true;
9996                if ((lccurrentsqlstatement != null) && ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqldropprocedure ))
9997                {lcisnewsql = false;}
9998                // `DROP TABLE IF EXISTS t` and friends: the IF belongs to the DROP.
9999                // Mirrors TSqlCmds<Vendor>.isDropIfExistsContext in the modular
10000                // providers, which this monolithic path is the fallback for.
10001                if (lcisnewsql && DropIfExistsSupport.isDropIfExistsContext(pcst, lcsourcetokenlist.solidtokenbefore(lcpos)))
10002                {lcisnewsql = false;}
10003                if (lcisnewsql){
10004                    ret = new TMssqlIfElse(pdbvendor);
10005                    ret.dummytag = 1;// reduce to 0 while stmt find in 'if ( condtion stmt' || 'else stmt'
10006                }
10007
10008                break;
10009            }
10010            case sstmssqlwhile:
10011            {
10012                ret = new TMssqlIfElse(pdbvendor);
10013                ret.dummytag = 1;// reduce to 0 while stmt find in 'if ( condtion stmt' || 'else stmt'
10014                break;
10015            }
10016            case sstmssqlcreateprocedure :
10017            case sstmssqlalterprocedure:
10018            {
10019                ret = new TMssqlCreateProcedure(pdbvendor);
10020                break;
10021            }
10022            case sstmssqlcreatefunction :
10023            case sstmssqlalterfunction:
10024            {
10025                ret =  new TMssqlCreateFunction(pdbvendor);
10026                break;
10027            }
10028            case sstcreatetrigger :
10029            case sstmssqlaltertrigger:
10030            {
10031                ret =  new TCreateTriggerStmt(pdbvendor);
10032                break;
10033            }
10034            case sstmssqlreturn:
10035            {
10036                ret =  new TMssqlReturn(pdbvendor);
10037                break;
10038            }
10039            case sstmssqlprint:
10040            {
10041                ret =  new TMssqlPrint(pdbvendor);
10042                break;
10043            }
10044            case sstmssqluse:
10045            {
10046                ret =  new TUseDatabase(pdbvendor);
10047                break;
10048            }
10049            case sstmssqlgo:
10050            {
10051                ret =  new TMssqlGo(pdbvendor);
10052                break;
10053            }
10054            case sstmssqlrevert:
10055            {
10056                ret =  new TMssqlRevert(pdbvendor);
10057                break;
10058            }
10059            case sstmssqlgrant:
10060            {
10061                lcisnewsql = true;
10062                // prev tokentext can't be with
10063                if ( pstate != EFindSqlStateType.stnormal )
10064                {
10065                    if ( TBaseType.assigned(lcprevsolidtoken) )
10066                    {
10067                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_with )
10068                        {
10069                            ret = null;
10070                            lcisnewsql = false;
10071                        }
10072                    }
10073                }
10074                if ( lcisnewsql )
10075                {
10076                    ret =  new TGrantStmt(pdbvendor);
10077                    //ret.sqlstatementtype = gnewsqlstatementtype;
10078                    for ( k = lcpos + 1; k< lcsourcetokenlist.size();k++ )    // iterate
10079                    {
10080                        lctoken = lcsourcetokenlist.get(k);
10081                        if (lctoken.isnonsolidtoken() ) continue;
10082                        if ( lctoken.tokencode == TBaseType.rrw_go ) break;
10083                        if ( lctoken.tokentype == ETokenType.ttsemicolon ) break;
10084                        if ( lctoken.tokencode == TBaseType.rrw_to   ) break;
10085                        lctoken.tokenstatus = ETokenStatus.tsignoredbygetrawstatement;
10086                    }
10087                }
10088                break;
10089            }
10090            case sstmssqldeclare:
10091            {
10092                ret =  new TMssqlDeclare(pdbvendor);
10093                break;
10094            }
10095            case sstmssqlcontinue:
10096            {
10097                lcisnewsql = true;
10098                if ((lccurrentsqlstatement != null) && ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstload ))
10099                {lcisnewsql = false;}
10100                if (lcisnewsql){
10101                    ret =  new TMssqlContinue(pdbvendor);
10102                }
10103
10104                break;
10105            }
10106            case sstbreak:
10107            {
10108                ret =  new TBreakStmt(pdbvendor);
10109                break;
10110            }
10111            case sstmssqlopen:
10112            {
10113                ret =  new TMssqlOpen(pdbvendor);
10114                break;
10115            }
10116            case sstmssqlclose:
10117            {
10118                ret =  new TMssqlClose(pdbvendor);
10119                break;
10120            }
10121            case sstmssqlbulkinsert:
10122            {
10123                ret =  new TMssqlBulkInsert(pdbvendor);
10124                break;
10125            }
10126            case sstmssqldeallocate:
10127            {
10128                ret =  new TMssqlDeallocate(pdbvendor);
10129                break;
10130            }
10131            case sstmssqlraiserror:
10132            {
10133                ret =  new TMssqlRaiserror(pdbvendor);
10134                break;
10135            }
10136            case sstmssqlgoto:
10137            {
10138                ret =  new TMssqlGoTo(pdbvendor);
10139                break;
10140            }
10141            case sstmssqldropview:
10142            {
10143                ret =  new TDropViewSqlStatement(pdbvendor);
10144                break;
10145            }
10146            case sstmssqldroptable:
10147            {
10148                ret =  new TDropTableSqlStatement(pdbvendor);
10149                break;
10150            }
10151            case sstmssqldropindex:
10152            {
10153                ret =  new TDropIndexSqlStatement(pdbvendor);
10154                break;
10155            }
10156            case sstmssqldroppartitionscheme :
10157                ret = new TDropPartitionSchemeStmt(pdbvendor);
10158                break;
10159
10160            case sstmssqldropaggregate :
10161            case sstmssqldropapplicationrole :
10162            case sstmssqldropassembly :
10163            case sstmssqldropasymmetrickey :
10164            case sstmssqldropcertificate :
10165            case sstmssqldropcontract :
10166            case sstmssqldropcredential :
10167            case sstmssqldropdefault :
10168            case sstmssqldropendpoint :
10169            case sstmssqldropeventnotification :
10170            case sstmssqldropfulltextcatalog :
10171            case sstmssqldropfulltextindex :
10172            case sstmssqldropfunction :
10173            case sstmssqldroplogin :
10174            case sstmssqldropmasterkey :
10175            case sstmssqldropmessagetype :
10176            case sstmssqldroppartitionfunction :
10177            case sstmssqldropprocedure :
10178            case sstmssqldropqueue :
10179            case sstmssqldropremoteservicebinding :
10180            case sstmssqldroprole :
10181            case sstmssqldroproute :
10182            case sstmssqldroprule :
10183            case sstmssqldropschema :
10184            case sstmssqldropservice :
10185            case sstmssqldropsignature:
10186            case sstmssqldropstatistics :
10187            case sstmssqldropsymmetrickey :
10188            case sstmssqldroptrigger :
10189            case sstmssqldroptype :
10190            case sstmssqldropuser :
10191            case sstmssqldropxmlschemacollection:
10192            case sstmssqldropdatabase :
10193            {
10194                ret =  new TMssqlDropDbObject(EDbVendor.dbvsybase);
10195                ret.sqlstatementtype = gnewsqlstatementtype;
10196                break;
10197            }
10198            case sstmssqldropsynonym :
10199            {
10200                ret =  new TDropSynonymStmt(pdbvendor);
10201                break;
10202            }
10203            case sstmssqltruncatetable:
10204            {
10205                ret =  new TTruncateStatement(pdbvendor);
10206                break;
10207            }
10208            case sstmssqlbegintran:
10209            {
10210                ret =  new TBeginTran(pdbvendor);
10211                break;
10212            }
10213            case sstmssqlsavetran:
10214            {
10215                ret =  new TMssqlSaveTran(pdbvendor);
10216                break;
10217            }
10218            case sstmssqlcommit:
10219            {
10220                lcisnewsql = true;
10221
10222                if ( TBaseType.assigned(lcprevsolidtoken) )
10223                {
10224                    if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
10225                    {
10226
10227                        lcisnewsql = false;
10228                    }
10229                }
10230
10231                if (lcisnewsql){
10232                    ret =  new TMssqlCommit(pdbvendor);
10233                }
10234
10235                break;
10236            }
10237            case sstmssqlrollback:
10238            {
10239                ret =  new TMssqlRollback(pdbvendor);
10240                break;
10241            }
10242            case sstmssqlreadtext :
10243            case sstmssqldbcc :
10244            case sstmssqlrestore :
10245            case sstmssqlbackup :
10246            {
10247                ret = new TMssqlDummyStmt(pdbvendor);
10248                ret.sqlstatementtype = gnewsqlstatementtype;
10249                break;
10250            }
10251            case sstcreateindex:
10252            {
10253                ret =  new TCreateIndexSqlStatement(pdbvendor);
10254                break;
10255            }
10256            case sstmssqlwaitfor:
10257            {
10258                ret =  new TMssqlWaitFor(pdbvendor);
10259                break;
10260            }
10261            case sstmerge:
10262            {
10263                lcisnewsql = true;
10264
10265                if (pstate != EFindSqlStateType.stnormal)
10266                {
10267
10268                    if (lccurrentsqlstatement != null)
10269                    {
10270                        // merge union, merge join
10271                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstselect)
10272                        {
10273                                    lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
10274                                    if (lcnextsolidtoken != null)
10275                                       {
10276                                        if ((lcnextsolidtoken.tokencode == TBaseType.rrw_union) || (lcnextsolidtoken.tokencode == TBaseType.rrw_join))
10277                                           {
10278                                              lcisnewsql = false;
10279                                           }
10280                                        }
10281                        }
10282
10283                    }
10284
10285                    TSourceToken lcnexttoken = lcsourcetokenlist.nextsolidtoken(lcpos, 1, false);
10286                    if ( (lcnexttoken != null) )
10287                    {
10288                        if ( lcnexttoken.tokencode == TBaseType.rrw_sybase_partition )
10289                            lcisnewsql = false;
10290                    }
10291
10292                }
10293
10294                if (lcisnewsql)
10295                {
10296                    ret = new TMergeSqlStatement(pdbvendor);
10297                    ret.sqlstatementtype = gnewsqlstatementtype;
10298                }
10299
10300                break;
10301            }
10302            case sstmssqlbegintry :
10303            case sstmssqlbegincatch:
10304            {
10305                ret =  new TMssqlBlock(pdbvendor);
10306                ret.sqlstatementtype = gnewsqlstatementtype;
10307                break;
10308            }
10309            case sstmssqlexec:
10310            {
10311                lcisnewsql = true;
10312                // prev tokentext can't be with
10313                if ( pstate != EFindSqlStateType.stnormal )
10314                {
10315                    if ( TBaseType.assigned(lccurrentsqlstatement) )
10316                    {
10317                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
10318                        {
10319                            if ( lccurrentsqlstatement.dummytag == 1 )
10320                            {
10321                                lcisnewsql = false;
10322                                lccurrentsqlstatement.dummytag = 0; // no select is permited after it
10323                            }
10324                        }
10325
10326                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlgrant )
10327                        {
10328                            if ( TBaseType.assigned(lcprevsolidtoken) )
10329                            {
10330                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_grant )
10331                                    lcisnewsql = false;
10332                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
10333                                    lcisnewsql = false;
10334                            }
10335                        }else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlrevoke ){
10336                            if ( TBaseType.assigned(lcprevsolidtoken) )
10337                            {
10338                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_revoke )
10339                                    lcisnewsql = false;
10340                            }
10341                        }
10342
10343
10344
10345                        if (
10346                                (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlcreateprocedure)
10347                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetrigger)
10348                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlcreatefunction)
10349                                        ||(lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlalterprocedure)
10350                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlaltertrigger)
10351                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlalterfunction)
10352                                )
10353                        {
10354                            if ( TBaseType.assigned(lcprevsolidtoken) )
10355                            {
10356                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_with )
10357                                    lcisnewsql = false;
10358                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
10359                                    lcisnewsql = false;
10360                            }
10361                        }
10362                    }
10363                }
10364                if ( lcisnewsql )
10365                {
10366                    ret =  new TMssqlExecute(pdbvendor);
10367                }
10368                break;
10369            }
10370            case sstmssqlexecuteas:
10371            {
10372                lcisnewsql = true;
10373                // prev tokentext can't be with
10374                if ( pstate != EFindSqlStateType.stnormal )
10375                {
10376                    if ( TBaseType.assigned(lccurrentsqlstatement) )
10377                    {
10378                        if (
10379                                (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlcreateprocedure)
10380                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetrigger)
10381                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlcreatefunction)
10382                                        ||(lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlalterprocedure)
10383                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlaltertrigger)
10384                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlalterfunction)
10385                                )
10386                        {
10387                            if ( TBaseType.assigned(lcprevsolidtoken) )
10388                            {
10389                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_with )
10390                                    lcisnewsql = false;
10391                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
10392                                    lcisnewsql = false;
10393                            }
10394                        }
10395                    }
10396                }
10397                if ( lcisnewsql )
10398                {
10399                    ret =  new TMssqlExecuteAs(pdbvendor);
10400                    ret.sqlstatementtype = gnewsqlstatementtype;
10401                }
10402                break;
10403            }
10404            case sstmssqlset:
10405            {
10406                lcisnewsql = true;
10407                if ( pstate != EFindSqlStateType.stnormal )
10408                {
10409                    if ( TBaseType.assigned(lccurrentsqlstatement) )
10410                    {
10411
10412                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlif)
10413                        {
10414                             TSourceToken lcPPToken = lcsourcetokenlist.searchToken(TBaseType.rrw_update,"",pcst,-10);
10415                             if (TBaseType.assigned(lcPPToken))
10416                            {
10417                                  lcisnewsql = false;
10418                            }
10419                        }
10420
10421                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
10422                        {
10423                              if (lcprevsolidtoken != null)
10424                              {
10425                                  if (lcprevsolidtoken.tokencode == TBaseType.rrw_update){
10426                                    lcisnewsql = false;}
10427                              }
10428                        }
10429
10430                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstupdate )
10431                        {
10432                            if ( lccurrentsqlstatement.dummytag == 1 )
10433                            {
10434                                //update statement still find set clause yet, so this is setclause in update statement
10435                                lccurrentsqlstatement.dummytag = 0;
10436                                lcisnewsql = false;
10437                            }
10438                        }
10439                    }
10440
10441                    lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
10442                    if ( TBaseType.assigned(lcnextsolidtoken) )
10443                    { //set null, set default
10444                        if ( (TBaseType.mycomparetext(lcnextsolidtoken.getAstext(),"null")==0)
10445                                || (TBaseType.mycomparetext(lcnextsolidtoken.getAstext(), "default")==0) )
10446                        {
10447                            lcisnewsql = false;
10448                        }
10449                    }
10450
10451                }
10452
10453                if ( lcisnewsql )
10454                {
10455                    ret =  new TMssqlSet(pdbvendor);
10456                }
10457
10458                break;
10459            }
10460            case sstmssqlupdatetext:
10461            {
10462                ret =  new TMssqlUpdateText(pdbvendor);
10463                break;
10464            }
10465            case sstmssqlendconversation:
10466            {
10467                ret =  new TMssqlEndConversation(pdbvendor);
10468                break;
10469            }
10470            case sstmssqlbegindialog:
10471            {
10472                ret =  new TMssqlBeginDialog(pdbvendor);
10473                break;
10474            }
10475            case sstmssqlsendonconversation:
10476            {
10477                ret =  new TMssqlSendOnConversation(pdbvendor);
10478                break;
10479            }
10480            case sstmssqldisabletrigger :
10481            case sstmssqlenabletrigger:
10482            {
10483                lcisnewsql = true;
10484                if ( TBaseType.assigned(lccurrentsqlstatement) )
10485                {
10486                    if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstaltertable )
10487                        lcisnewsql = false;
10488                }
10489
10490                if ( lcisnewsql )
10491                {
10492                    ret =  new TDisableEnableTriggerStmt(pdbvendor);
10493                    ret.sqlstatementtype = gnewsqlstatementtype;
10494                }
10495                break;
10496            }
10497            case sstsybaseWritetext:
10498            {
10499                ret =  new TSybaseWritetext(pdbvendor);
10500                break;
10501            }
10502            case sstsybaseDeleteStatistics:
10503            {
10504                ret = new TSybaseDeleteStatistics(pdbvendor);
10505                break;
10506            }
10507            case sstcall:
10508            {
10509                ret = new TCallStatement(pdbvendor);
10510                break;
10511            }
10512            default:
10513            {
10514                ret =  new TUnknownSqlStatement(pdbvendor);
10515                ret.sqlstatementtype = gnewsqlstatementtype;
10516                break;
10517            }
10518        }    // case
10519
10520        return ret;
10521    }
10522
10523    TCustomSqlStatement ismssqlsql(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
10524        TCustomSqlStatement ret = null;
10525        int k;
10526        boolean lcisnewsql;
10527        TSourceToken lcpprevsolidtoken,lcnextsolidtoken,lctoken;
10528
10529        gnewsqlstatementtype = ESqlStatementType.sstinvalid;
10530
10531        if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
10532                || (pcst.tokencode  == TBaseType.cmtslashstar)
10533                || (pcst.tokencode  == TBaseType.lexspace)
10534                || (pcst.tokencode  == TBaseType.lexnewline)
10535                || (pcst.tokentype == ETokenType.ttsemicolon) )
10536        {
10537            return ret;
10538        }
10539
10540        int lcpos = pcst.posinlist;
10541        TSourceTokenList lcsourcetokenlist = pcst.container;
10542        TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
10543
10544        //subquery after semicolon or at first line
10545        if ( pcst.tokentype == ETokenType.ttleftparenthesis)  // (
10546        {
10547            k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
10548            if ( k >0 )
10549            {
10550                if (pstate == EFindSqlStateType.stnormal){
10551                    ret =  new TSelectSqlStatement(pdbvendor);
10552                    return ret;
10553                }
10554//                if (((lccurrentsqlstatement != null) )&&(lccurrentsqlstatement.sqlstatementtype != ESqlStatementType.sstselect)&&(lcsourcetokenlist.returnbeforecurtoken(true))){
10555//                    ret =  new TSelectSqlStatement(pdbvendor);
10556//                    return ret;
10557//                }
10558            }
10559        }
10560
10561        //cte
10562        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
10563        {
10564            ret = findcte(pcst,pdbvendor);
10565            if ( (ret != null) )  return ret;
10566        }
10567
10568        if ( (lccurrentsqlstatement != null) && (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable)
10569                && (pcst.tokencode == TBaseType.rrw_with) )
10570        {
10571            TSourceToken lcPrevToken = pcst.prevSolidToken();
10572            if ((lcPrevToken != null) && (lcPrevToken.tokencode == TBaseType.rrw_as))
10573            { // mantisbt/view.php?id=3900, create table with as select, ignore tokens from with to select (including the select token)
10574                ret = findcte(pcst,pdbvendor);
10575                if ( (ret != null) )  {
10576                    ret = null;
10577                }
10578            }
10579        }
10580
10581        //odbc
10582        if ( (pstate == EFindSqlStateType.stnormal) && ((pcst.tokencode == '{')||(pcst.tokencode == TBaseType.odbc_esc_prefix)) && (pcst.getLinkToken() != null)  )
10583        {
10584            ret = new TCallStatement(pdbvendor);
10585            return ret;
10586        }
10587
10588        gnewsqlstatementtype = findmssqlcmd(pcst);
10589
10590        TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
10591        switch(gnewsqlstatementtype ) {   //
10592            case sstinvalid:
10593            {
10594                if ( pcst.tokencode == TBaseType.mslabel )
10595                {
10596                    ret =  new TMssqlLabel(pdbvendor);
10597                }
10598                else
10599                    ret = null;
10600
10601                break;
10602            }
10603            case sstselect:
10604            {
10605                lcisnewsql = true;
10606
10607                if ( pstate != EFindSqlStateType.stnormal )
10608                {
10609                    // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
10610                    if ( (lcprevsolidtoken != null) )
10611                    {
10612                        if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
10613                            lcisnewsql = false; //subqery
10614                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
10615                            lcisnewsql = false;
10616                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
10617                            lcisnewsql = false;
10618                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
10619                            lcisnewsql = false;
10620                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
10621                            lcisnewsql = false;
10622                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
10623                            lcisnewsql = false;
10624                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
10625                        {
10626                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
10627                                lcisnewsql = false;
10628                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
10629                                lcisnewsql = false;
10630                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstalterview )
10631                                lcisnewsql = false;
10632                        }
10633                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
10634                        {
10635                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlset )
10636                                lcisnewsql = false;
10637                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqldeclare )
10638                                lcisnewsql = false;
10639                        }
10640
10641                        if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
10642                        {
10643                            lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
10644                            if ( (lcpprevsolidtoken != null) )
10645                            {
10646                                if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
10647                                    lcisnewsql = false;
10648                            }
10649                        }
10650
10651                    }
10652
10653                    if ( (lccurrentsqlstatement != null) )
10654                    {
10655                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
10656                        {
10657                        }
10658                        else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlgrant )
10659                        {
10660                            if ( (lcprevsolidtoken != null) )
10661                            {
10662                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_grant )
10663                                    lcisnewsql = false;
10664                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
10665                                    lcisnewsql = false;
10666                            }
10667                        }else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview ){
10668                            lcisnewsql = false;
10669                        }else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatematerializedview ){
10670                            lcisnewsql = false;
10671                        }
10672                    }
10673
10674                }
10675
10676                if ( lcisnewsql )
10677                    ret =  new TSelectSqlStatement(pdbvendor);
10678
10679                break;
10680
10681            }
10682            case sstinsert:
10683            {
10684                lcisnewsql = true;
10685                if ( pstate != EFindSqlStateType.stnormal )
10686                {
10687                    if ( (lccurrentsqlstatement != null) )
10688                    {
10689                        // merge
10690                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
10691                        {
10692                              if (lcprevsolidtoken != null)
10693                              {
10694                                  if (lcprevsolidtoken.tokencode == TBaseType.rrw_then)
10695                                  {lcisnewsql = false;}
10696                              }
10697                        }
10698
10699                        // bulk insert
10700                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlbulkinsert )
10701                        {
10702                            if ( (lcprevsolidtoken != null) )
10703                            {
10704                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_bulk )
10705                                    lcisnewsql = false;
10706                            }
10707                        }
10708
10709                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlgrant )
10710                        {
10711                            if ( (lcprevsolidtoken != null) )
10712                            {
10713                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_grant )
10714                                    lcisnewsql = false;
10715                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
10716                                    lcisnewsql = false;
10717                            }
10718                        }
10719
10720                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetrigger )
10721                        {
10722                            if ( (lcprevsolidtoken != null) )
10723                            {
10724                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
10725                                    lcisnewsql = false;
10726                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
10727                                    lcisnewsql = false;
10728                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(),"after") == 0 )
10729                                    lcisnewsql = false;
10730                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(), "of") == 0 )
10731                                    lcisnewsql = false;
10732                            }
10733                        }
10734
10735
10736                    }
10737                }
10738
10739                if ( lcisnewsql )
10740                {
10741                    ret =  new TInsertSqlStatement(pdbvendor);
10742                    ret.dummytag = 1; //  select stmt in insert is permitted
10743                    for ( k = lcpos + 1; k < lcsourcetokenlist.size();k++ )    // iterate
10744                    {
10745                        if ( lcsourcetokenlist.get(k).isnonsolidtoken() ) continue;
10746                        if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_values ) break;
10747                        if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_go ) break;
10748                        if ( lcsourcetokenlist.get(k).tokentype == ETokenType.ttsemicolon ) break;
10749                        if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_select ){
10750                            ret.dummytag = 0;
10751                            break;
10752                        }
10753                        if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_execute ) break;
10754                        if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_exec ) break;
10755                    }    // for (
10756                    if ( k > lcsourcetokenlist.size() - 1 )
10757                        k = lcsourcetokenlist.size() - 1;
10758
10759                    for ( int i = lcpos + 1; i <=  k; i++ )    // iterate
10760                    {
10761                        lcsourcetokenlist.get(i).tokenstatus = ETokenStatus.tsignoredbygetrawstatement;
10762                    }    // for (
10763
10764                }
10765
10766                break;
10767            }
10768            case sstupdate:
10769            {
10770                lcisnewsql = true;
10771                if ( pstate != EFindSqlStateType.stnormal )
10772                {
10773                    // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
10774                    if ( (lcprevsolidtoken != null) )
10775                    { //
10776                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
10777                            lcisnewsql = false;
10778                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
10779                            lcisnewsql = false;
10780                    }
10781
10782                    lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
10783                    if ( TBaseType.assigned(lcnextsolidtoken) )
10784                    {
10785                        if ( lcnextsolidtoken.tokentype == ETokenType.ttleftparenthesis)
10786                        {
10787                            k = lcsourcetokenlist.solidtokenafterpos(lcnextsolidtoken.posinlist,TBaseType.rrw_select,1,"(");
10788                            if ( k  == 0 ) lcisnewsql = false;
10789                        }
10790                    }
10791
10792
10793                    if ( TBaseType.assigned(lccurrentsqlstatement) )
10794                    {
10795                        // merge
10796                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
10797                        {
10798                              if (lcprevsolidtoken != null)
10799                              {
10800                                  if (lcprevsolidtoken.tokencode == TBaseType.rrw_then)
10801                                  {lcisnewsql = false;}
10802                              }
10803                        }
10804
10805                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlgrant )
10806                        {
10807                            if ( TBaseType.assigned(lcprevsolidtoken) )
10808                            {
10809                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_grant )
10810                                    lcisnewsql = false;
10811                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
10812                                    lcisnewsql = false;
10813                            }
10814                        }
10815                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetrigger )
10816                        {
10817                            if ( TBaseType.assigned(lcprevsolidtoken) )
10818                            {
10819                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
10820                                    lcisnewsql = false;
10821                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
10822                                    lcisnewsql = false;
10823                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(),"after") == 0 )
10824                                    lcisnewsql = false;
10825                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(), "of") == 0 )
10826                                    lcisnewsql = false;
10827                            }
10828                        }
10829
10830                    }
10831                }
10832
10833                if ( lcisnewsql )
10834                {
10835                    ret =  new TUpdateSqlStatement(pdbvendor);
10836                    ret.dummytag = 1; // means set clause in update is not found yet, used to separate set clause from set statement
10837                }
10838
10839                break;
10840            }
10841            case sstdelete:
10842            {
10843                lcisnewsql = true;
10844
10845                if ( pstate != EFindSqlStateType.stnormal )
10846                {
10847                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
10848                    if ( TBaseType.assigned(lcprevsolidtoken) )
10849                    {
10850                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
10851                            lcisnewsql = false;
10852                    }
10853
10854                    if ( TBaseType.assigned(lccurrentsqlstatement) )
10855                    {
10856                        // merge
10857                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
10858                        {
10859                              if (lcprevsolidtoken != null)
10860                              {
10861                                  if (lcprevsolidtoken.tokencode == TBaseType.rrw_then)
10862                                  {lcisnewsql = false;}
10863                              }
10864                        }
10865
10866                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlgrant )
10867                        {
10868                            if ( TBaseType.assigned(lcprevsolidtoken) )
10869                            {
10870                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_grant )
10871                                    lcisnewsql = false;
10872                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
10873                                    lcisnewsql = false;
10874                            }
10875                        }
10876
10877                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetrigger )
10878                        {
10879                            if ( TBaseType.assigned(lcprevsolidtoken) )
10880                            {
10881                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
10882                                    lcisnewsql = false;
10883                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
10884                                    lcisnewsql = false;
10885                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(),"after") == 0 )
10886                                    lcisnewsql = false;
10887                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(), "of") == 0 )
10888                                    lcisnewsql = false;
10889                            }
10890                        }
10891
10892                    }
10893                }
10894
10895                if ( lcisnewsql )
10896                    ret =  new TDeleteSqlStatement(pdbvendor);
10897
10898                break;
10899            }
10900            case sstcreatetable:
10901            {
10902                lcisnewsql = true;
10903                if ( pstate != EFindSqlStateType.stnormal ) {
10904
10905                    if (TBaseType.assigned(lccurrentsqlstatement)) {
10906                        if ((lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateschema)
10907                                )
10908                        {
10909                            lcisnewsql = false;
10910                        }
10911                    }
10912                }
10913
10914                if (lcisnewsql) {
10915                    ret = new TCreateTableSqlStatement(pdbvendor);
10916
10917                }
10918                break;
10919            }
10920            case sstcreateview:
10921            {
10922
10923                lcisnewsql = true;
10924                if ( pstate != EFindSqlStateType.stnormal ) {
10925
10926                    if (TBaseType.assigned(lccurrentsqlstatement)) {
10927                        if ((lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateschema)
10928                                )
10929                        {
10930                            lcisnewsql = false;
10931                        }
10932                    }
10933                }
10934                if (lcisnewsql) {
10935                    ret =  new TCreateViewSqlStatement(pdbvendor);
10936                }
10937                break;
10938            }
10939            case sstcreatesequence:
10940              {
10941                ret = new TCreateSequenceStmt(pdbvendor);
10942                  break;
10943              }
10944            case sstaltertable:
10945            {
10946                ret =  new TAlterTableStatement(pdbvendor);
10947                break;
10948            }
10949            case sstmssqlfetch:
10950            {
10951                ret =  new TMssqlFetch(pdbvendor);
10952                break;
10953            }
10954            case sstmssqlif :
10955            {
10956                lcisnewsql = true;
10957                if ( pstate != EFindSqlStateType.stnormal ) {
10958
10959                    if (TBaseType.assigned(lccurrentsqlstatement)) {
10960                        // merge
10961                        if (
10962                            (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstdropprocedure)
10963                                ||(lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstdropdatabase)
10964                                    ||(lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstdropfunction)
10965                                    ||(lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlDropSecurityPolicy)
10966                                )
10967                        {
10968                            lcisnewsql = false;
10969                        }else if ( (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstdroptable)
10970                                ||(lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstdropindex)
10971                                ||(lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable)
10972                                ||(lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstdropsynonym)
10973                                ||(lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstdropview)
10974                                ||(lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstdropsequence)
10975                        ){
10976                            // DROP TABLE IF EXISTS T1;
10977                            TSourceToken st = lcsourcetokenlist.solidtokenbefore(lcpos);
10978                            if ((st.tokencode == TBaseType.rrw_table)||(st.tokencode == TBaseType.rrw_index)
10979                                ||(st.tokencode == TBaseType.rrw_sqlserver_synonym)||(st.tokencode == TBaseType.rrw_view)
10980                                ||(st.tokencode == TBaseType.rrw_sqlserver_sequence)
10981                                ){
10982                                lcisnewsql = false;
10983                            }
10984                        }else if ((lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstaltertable)){
10985                            lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
10986                            if (lcnextsolidtoken != null){
10987                                if (lcnextsolidtoken.tokencode == TBaseType.rrw_sqlserver_exists){
10988                                    lcisnewsql = false;
10989                                }
10990                            }
10991                        }
10992                    }
10993                }
10994
10995
10996                if (lcisnewsql) {
10997                    ret = new TMssqlIfElse(pdbvendor);
10998                    ret.dummytag = 1;// reduce to 0 while stmt find in 'if ( condtion stmt' || 'else stmt'
10999                }
11000                break;
11001            }
11002            case sstmssqlwhile:
11003            {
11004                ret = new TMssqlIfElse(pdbvendor);
11005                ret.dummytag = 1;// reduce to 0 while stmt find in 'if ( condtion stmt' || 'else stmt'
11006                break;
11007            }
11008            case sstmssqlcreateprocedure :
11009            case sstmssqlalterprocedure:
11010            {
11011                ret = new TMssqlCreateProcedure(pdbvendor);
11012                break;
11013            }
11014            case sstmssqlcreatefunction :
11015            case sstmssqlalterfunction:
11016            {
11017                ret =  new TMssqlCreateFunction(pdbvendor);
11018                break;
11019            }
11020            case sstcreatetrigger :
11021            case sstmssqlaltertrigger:
11022            {
11023                ret =  new TCreateTriggerStmt(pdbvendor); //TMssqlCreateTrigger(pdbvendor);
11024                break;
11025            }
11026            case sstmssqlreturn:
11027            {
11028                ret =  new TMssqlReturn(pdbvendor);
11029                break;
11030            }
11031            case sstmssqlprint:
11032            {
11033                if (pdbvendor == EDbVendor.dbvodbc){
11034
11035                }else if (pdbvendor == EDbVendor.dbvmssql){
11036                    ret =  new TMssqlPrint(pdbvendor);
11037                }
11038
11039                break;
11040            }
11041            case sstmssqluse:
11042            {
11043                ret =  new TUseDatabase(pdbvendor);
11044                break;
11045            }
11046            case sstmssqlgo:
11047            {
11048                ret =  new TMssqlGo(pdbvendor);
11049                break;
11050            }
11051            case sstmssqlrevert:
11052            {
11053                lcisnewsql = true;
11054                // prev tokentext can't be with
11055                if ( pstate != EFindSqlStateType.stnormal ) {
11056                    if (TBaseType.assigned(lcprevsolidtoken)) {
11057                        if (lcprevsolidtoken.toString().equalsIgnoreCase("no")) {
11058                            ret = null;
11059                            lcisnewsql = false;
11060                        }
11061                    }
11062                }
11063                if (lcisnewsql){
11064                    ret =  new TMssqlRevert(pdbvendor);
11065                }
11066
11067                break;
11068            }
11069            case sstmssqlgrant:
11070            {
11071                lcisnewsql = true;
11072                // prev tokentext can't be with
11073                if ( pstate != EFindSqlStateType.stnormal )
11074                {
11075                    if ( TBaseType.assigned(lcprevsolidtoken) )
11076                    {
11077                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_with )
11078                        {
11079                            ret = null;
11080                            lcisnewsql = false;
11081                        }
11082                    }
11083
11084                    if((lcisnewsql)&&(TBaseType.assigned(lccurrentsqlstatement))) {
11085                        if ((lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateschema)
11086                                )
11087                        {
11088                            lcisnewsql = false;
11089                        }
11090                    }
11091                }
11092                if ( lcisnewsql )
11093                {
11094                    ret =  new TGrantStmt(pdbvendor);
11095                    //ret.sqlstatementtype = gnewsqlstatementtype;
11096                    for ( k = lcpos + 1; k< lcsourcetokenlist.size();k++ )    // iterate
11097                    {
11098                        lctoken = lcsourcetokenlist.get(k);
11099                        if (lctoken.isnonsolidtoken() ) continue;
11100                        if ( lctoken.tokencode == TBaseType.rrw_go ) break;
11101                        if ( lctoken.tokentype == ETokenType.ttsemicolon ) break;
11102                        if ( lctoken.tokencode == TBaseType.rrw_to   ) break;
11103                        lctoken.tokenstatus = ETokenStatus.tsignoredbygetrawstatement;
11104                    }
11105                }
11106                break;
11107            }
11108            case sstmssqlrevoke:{
11109                lcisnewsql = true;
11110                if ( pstate != EFindSqlStateType.stnormal )
11111                {
11112                    if((lcisnewsql)&&(TBaseType.assigned(lccurrentsqlstatement))) {
11113                        if ((lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateschema)
11114                                )
11115                        {
11116                            lcisnewsql = false;
11117                        }
11118                    }
11119                }
11120                if ( lcisnewsql )
11121                {
11122                    ret =  new TRevokeStmt(pdbvendor);
11123                    for ( k = lcpos + 1; k< lcsourcetokenlist.size();k++ )    // iterate
11124                    {
11125                        lctoken = lcsourcetokenlist.get(k);
11126                        if (lctoken.isnonsolidtoken() ) continue;
11127                        if ( lctoken.tokencode == TBaseType.rrw_go ) break;
11128                        if ( lctoken.tokentype == ETokenType.ttsemicolon ) break;
11129                        if ( lctoken.tokencode == TBaseType.rrw_to   ) break;
11130                        lctoken.tokenstatus = ETokenStatus.tsignoredbygetrawstatement;
11131                    }
11132                }
11133                break;
11134
11135            }
11136            case sstmssqldeny:
11137            {
11138                lcisnewsql = true;
11139                if ( pstate != EFindSqlStateType.stnormal )
11140                {
11141                    if((lcisnewsql)&&(TBaseType.assigned(lccurrentsqlstatement))) {
11142                        if ((lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateschema)
11143                                )
11144                        {
11145                            lcisnewsql = false;
11146                        }
11147                    }
11148                }
11149                if ( lcisnewsql )
11150                {
11151                    ret =  new TDenyStmt(pdbvendor);
11152                    for ( k = lcpos + 1; k< lcsourcetokenlist.size();k++ )    // iterate
11153                    {
11154                        lctoken = lcsourcetokenlist.get(k);
11155                        if (lctoken.isnonsolidtoken() ) continue;
11156                        if ( lctoken.tokencode == TBaseType.rrw_go ) break;
11157                        if ( lctoken.tokentype == ETokenType.ttsemicolon ) break;
11158                        if ( lctoken.tokencode == TBaseType.rrw_to   ) break;
11159                        lctoken.tokenstatus = ETokenStatus.tsignoredbygetrawstatement;
11160                    }
11161                }
11162                break;
11163            }
11164            case sstmssqldeclare:
11165            {
11166                ret =  new TMssqlDeclare(pdbvendor);
11167                break;
11168            }
11169            case sstmssqlcontinue:
11170            {
11171                ret =  new TMssqlContinue(pdbvendor);
11172                break;
11173            }
11174            case sstbreak:
11175            {
11176                ret =  new TBreakStmt(pdbvendor);
11177                break;
11178            }
11179            case sstmssqlopen:
11180            {
11181                ret =  new TMssqlOpen(pdbvendor);
11182                break;
11183            }
11184            case sstmssqlclose:
11185            {
11186                ret =  new TMssqlClose(pdbvendor);
11187                break;
11188            }
11189            case sstmssqlbulkinsert:
11190            {
11191                ret =  new TMssqlBulkInsert(pdbvendor);
11192                break;
11193            }
11194            case sstmssqldeallocate:
11195            {
11196                ret =  new TMssqlDeallocate(pdbvendor);
11197                break;
11198            }
11199            case sstmssqlraiserror:
11200            {
11201                ret =  new TMssqlRaiserror(pdbvendor);
11202                break;
11203            }
11204            case sstmssqlgoto:
11205            {
11206                ret =  new TMssqlGoTo(pdbvendor);
11207                break;
11208            }
11209            case sstmssqldropview:
11210            {
11211                ret =  new TDropViewSqlStatement(pdbvendor);
11212                break;
11213            }
11214            case sstmssqldroptable:
11215            {
11216                ret =  new TDropTableSqlStatement(pdbvendor);
11217                break;
11218            }
11219            case sstmssqldropindex:
11220            {
11221                ret =  new TDropIndexSqlStatement(pdbvendor);
11222                break;
11223            }
11224            case sstmssqldroppartitionscheme :
11225                ret = new TDropPartitionSchemeStmt(pdbvendor);
11226                break;
11227            case sstmssqldropaggregate :
11228            case sstmssqldropapplicationrole :
11229            case sstmssqldropassembly :
11230            case sstmssqldropasymmetrickey :
11231            case sstmssqldropcertificate :
11232            case sstmssqldropcontract :
11233            case sstmssqldropcredential :
11234            case sstmssqldropdefault :
11235            case sstmssqldropendpoint :
11236            case sstmssqldropeventnotification :
11237            case sstmssqldropfulltextcatalog :
11238            case sstmssqldropfulltextindex :
11239            case sstmssqldroplogin :
11240            case sstmssqldropmasterkey :
11241            case sstmssqldropmessagetype :
11242            case sstmssqldroppartitionfunction :
11243            case sstmssqldropqueue :
11244            case sstmssqldropremoteservicebinding :
11245            case sstmssqldroprole :
11246            case sstmssqldroproute :
11247            case sstmssqldroprule :
11248            case sstmssqldropservice :
11249            case sstmssqldropsignature:
11250            case sstmssqldropstatistics :
11251            case sstmssqldropsymmetrickey :
11252            case sstmssqldroptrigger :
11253            case sstmssqldroptype :
11254            case sstmssqldropuser :
11255            case sstmssqldropxmlschemacollection:
11256            case sstmssqldropeventsession:
11257            {
11258                ret =  new TMssqlDropDbObject(EDbVendor.dbvmssql);
11259                ret.sqlstatementtype = gnewsqlstatementtype;
11260                break;
11261            }
11262            case sstmssqldropsynonym :
11263            {
11264                ret =  new TDropSynonymStmt(pdbvendor);
11265                break;
11266            }
11267            case sstmssqldropprocedure :
11268            {
11269                ret =  new TDropProcedureStmt(EDbVendor.dbvmssql);
11270                break;
11271            }
11272            case sstmssqldropdatabase :
11273            {
11274                ret =  new TDropDatabaseStmt(EDbVendor.dbvmssql);
11275                break;
11276            }
11277            case sstmssqldropschema :
11278            {
11279                ret =  new TDropSchemaSqlStatement(EDbVendor.dbvmssql);
11280                break;
11281            }
11282            case sstmssqltruncatetable:
11283            {
11284                ret =  new TTruncateStatement(pdbvendor);
11285                break;
11286            }
11287            case sstmssqlbegintran:
11288            {
11289                ret =  new TBeginTran(pdbvendor);
11290                break;
11291            }
11292            case sstmssqlsavetran:
11293            {
11294                if (pdbvendor == EDbVendor.dbvodbc){
11295
11296                }else if (pdbvendor == EDbVendor.dbvmssql) {
11297                    ret = new TMssqlSaveTran(pdbvendor);
11298                }
11299                break;
11300            }
11301            case sstmssqlcommit:
11302            {
11303                ret =  new TMssqlCommit(pdbvendor);
11304                break;
11305            }
11306            case sstmssqlrollback:
11307            {
11308                ret =  new TMssqlRollback(pdbvendor);
11309                break;
11310            }
11311            case sstmssqlreadtext :
11312            {
11313                // typed statement only for the real mssql dialect; shared dialects
11314                // (access/odbc/soql) still stub READTEXT in their grammars
11315                if (pdbvendor == EDbVendor.dbvmssql) {
11316                    ret = new TMssqlReadText(pdbvendor);
11317                } else {
11318                    ret = new TMssqlDummyStmt(pdbvendor);
11319                    ret.sqlstatementtype = gnewsqlstatementtype;
11320                }
11321                break;
11322            }
11323            case sstmssqlwritetext :
11324            {
11325                if (pdbvendor == EDbVendor.dbvmssql) {
11326                    ret = new TMssqlWriteText(pdbvendor);
11327                } else {
11328                    // legacy unknown-statement handling this type previously fell
11329                    // through to
11330                    ret = new TUnknownSqlStatement(pdbvendor);
11331                    ret.sqlstatementtype = gnewsqlstatementtype;
11332                }
11333                break;
11334            }
11335            case sstmssqldbcc :
11336            case sstmssqlrestore :
11337            case sstmssqlbackup :
11338            {
11339                ret = new TMssqlDummyStmt(pdbvendor);
11340                ret.sqlstatementtype = gnewsqlstatementtype;
11341                break;
11342            }
11343
11344            case sstmssqlreceive:
11345            {
11346                lcisnewsql = true;
11347                if ( pstate != EFindSqlStateType.stnormal )
11348                {
11349                    if((lcisnewsql)&&(TBaseType.assigned(lccurrentsqlstatement))) {
11350                        if ((lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstselect)
11351                        )
11352                        {
11353                            lcisnewsql = false;
11354                        }
11355                    }
11356                }
11357                if ( lcisnewsql )
11358                {
11359                    ret = new TMssqlDummyStmt(pdbvendor);
11360                    ret.sqlstatementtype = gnewsqlstatementtype;
11361                }
11362                break;
11363            }
11364            case sstcreateindex:
11365            {
11366                ret =  new TCreateIndexSqlStatement(pdbvendor);
11367                break;
11368            }
11369            case sstmssqlwaitfor:
11370            {
11371                ret =  new TMssqlWaitFor(pdbvendor);
11372                break;
11373            }
11374            case sstmerge:
11375            {
11376                lcisnewsql = true;
11377
11378                if (pstate != EFindSqlStateType.stnormal)
11379                {
11380
11381                    if (lccurrentsqlstatement != null)
11382                    {
11383                        // merge union, merge join
11384                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstselect)
11385                        {
11386                                    lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
11387                                    if (lcnextsolidtoken != null)
11388                                       {
11389                                        if ((lcnextsolidtoken.tokencode == TBaseType.rrw_union) || (lcnextsolidtoken.tokencode == TBaseType.rrw_join)) 
11390                                           {
11391                                              lcisnewsql = false;
11392                                           }
11393                                        }
11394                        }
11395
11396//                        if ( TBaseType.assigned(lcprevsolidtoken) )
11397//                        {
11398//                            if ( lcprevsolidtoken.tokencode == '(' )
11399//                                lcisnewsql = false;
11400//                        }
11401
11402                    }
11403                    if (lcisnewsql){
11404                        TSourceToken nextSt = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
11405                        if (nextSt != null){
11406                            if (nextSt.tokencode == TBaseType.rrw_join){
11407                                lcisnewsql = false;
11408                            }
11409                        }
11410                    }
11411                }
11412
11413                if (lcisnewsql)
11414                {
11415                    ret = new TMergeSqlStatement(pdbvendor);
11416                    ret.sqlstatementtype = gnewsqlstatementtype;
11417                }
11418
11419                break;
11420            }
11421            case sstmssqlbegintry :
11422            case sstmssqlbegincatch:
11423            {
11424                ret =  new TMssqlBlock(pdbvendor);
11425                ret.sqlstatementtype = gnewsqlstatementtype;
11426                break;
11427            }
11428            case sstmssqlexec:
11429            {
11430                lcisnewsql = true;
11431                // prev tokentext can't be with
11432                if ( pstate != EFindSqlStateType.stnormal )
11433                {
11434                    if ( TBaseType.assigned(lccurrentsqlstatement) )
11435                    {
11436                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
11437                        {
11438                            if ( lccurrentsqlstatement.dummytag == 1 )
11439                            {
11440                                lcisnewsql = false;
11441                                lccurrentsqlstatement.dummytag = 0; // no select is permitted after it
11442                            }
11443
11444                            TSourceToken valuesToken = pcst.searchToken(TBaseType.rrw_values,-pcst.posinlist);
11445                            if (valuesToken != null){
11446                                // https://www.sqlparser.com/bugs/mantisbt/view.php?id=3153
11447                                // INSERT INTO @tempTbl VALUES ('Test5')
11448                                //
11449                                //EXEC sp_execute @handle, 1
11450                                // 如果 EXEC 在 insert 语句的 values 后面,则这个 EXEC 为独立的 sql 语句,
11451                                // 而不是属于insert 语句
11452                                TSourceToken insertToken = lccurrentsqlstatement.sourcetokenlist.get(0);
11453                                if (valuesToken.posinlist > insertToken.posinlist){
11454                                    lcisnewsql = true;
11455                                }
11456                            }
11457                        }
11458
11459                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlgrant )
11460                        {
11461                            if ( TBaseType.assigned(lcprevsolidtoken) )
11462                            {
11463                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_grant )
11464                                    lcisnewsql = false;
11465                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
11466                                    lcisnewsql = false;
11467                            }
11468                        }
11469
11470                        if (
11471                                (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlcreateprocedure)
11472                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetrigger)
11473                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlcreatefunction)
11474                                        ||(lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlalterprocedure)
11475                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlaltertrigger)
11476                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlalterfunction)
11477                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlcreatequeue)
11478                                )
11479                        {
11480                            if ( TBaseType.assigned(lcprevsolidtoken) )
11481                            {
11482                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_with )
11483                                    lcisnewsql = false;
11484                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
11485                                    lcisnewsql = false;
11486                            }
11487                        }
11488                    }
11489                }
11490                if ( lcisnewsql )
11491                {
11492                    ret =  new TMssqlExecute(pdbvendor);
11493                }
11494                break;
11495            }
11496            case sstmssqlexecuteas:
11497            {
11498                lcisnewsql = true;
11499                // prev tokentext can't be with
11500                if ( pstate != EFindSqlStateType.stnormal )
11501                {
11502                    if ( TBaseType.assigned(lccurrentsqlstatement) )
11503                    {
11504                        if (
11505                                (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlcreateprocedure)
11506                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetrigger)
11507                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlcreatefunction)
11508                                        ||(lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlalterprocedure)
11509                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlaltertrigger)
11510                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlalterfunction)
11511                                )
11512                        {
11513                            if ( TBaseType.assigned(lcprevsolidtoken) )
11514                            {
11515                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_with )
11516                                    lcisnewsql = false;
11517                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
11518                                    lcisnewsql = false;
11519                            }
11520                        }
11521                    }
11522                }
11523                if ( lcisnewsql )
11524                {
11525                    ret =  new TMssqlExecuteAs(pdbvendor);
11526                    ret.sqlstatementtype = gnewsqlstatementtype;
11527                }
11528                break;
11529            }
11530            case sstmssqlset:
11531            {
11532                lcisnewsql = true;
11533                if ( pstate != EFindSqlStateType.stnormal )
11534                {
11535                    if ( TBaseType.assigned(lccurrentsqlstatement) )
11536                    {
11537
11538                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlif)
11539                        {
11540                             TSourceToken lcPPToken = lcsourcetokenlist.searchToken(TBaseType.rrw_update,"",pcst,-10);
11541                             if (TBaseType.assigned(lcPPToken))
11542                            {
11543                                  lcisnewsql = false;
11544                            }
11545                        }
11546
11547                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstalterdatabase)
11548                        {
11549                             TSourceToken lcPPToken = lcsourcetokenlist.searchToken(TBaseType.rrw_alter,"",pcst,-10);
11550                             if (TBaseType.assigned(lcPPToken))
11551                            {
11552                                  lcisnewsql = false;
11553                            }
11554                        }
11555
11556                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
11557                        {
11558                              if (lcprevsolidtoken != null)
11559                              {
11560                                  if (lcprevsolidtoken.tokencode == TBaseType.rrw_update){
11561                                    lcisnewsql = false;}
11562                              }
11563                        }
11564
11565                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstupdate )
11566                        {
11567                            if ( lccurrentsqlstatement.dummytag == 1 )
11568                            {
11569                                //update statement still find set clause yet, so this is set clause in update statement
11570                                lccurrentsqlstatement.dummytag = 0;
11571                                lcisnewsql = false;
11572                            }
11573                        }
11574
11575                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlcreateeventsession )
11576                        {
11577                            lcisnewsql = false;
11578                        }
11579                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstaltertable )
11580                        {
11581                            lcisnewsql = false;
11582                        }
11583                    }
11584
11585                    lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
11586                    if ( TBaseType.assigned(lcnextsolidtoken) )
11587                    { //set null, set default
11588                        if ( (TBaseType.mycomparetext(lcnextsolidtoken.getAstext(),"null")==0)
11589                                || (TBaseType.mycomparetext(lcnextsolidtoken.getAstext(), "default")==0) )
11590                        {
11591                            lcisnewsql = false;
11592                        }
11593                    }
11594
11595                }
11596
11597                if ( lcisnewsql )
11598                {
11599                    ret =  new TMssqlSet(pdbvendor);
11600                }
11601
11602                break;
11603            }
11604            case sstmssqlsetrowcount:
11605            {
11606                ret =  new TMssqlSetRowCount(pdbvendor);
11607                break;
11608            }
11609            case sstmssqlupdatetext:
11610            {
11611                ret =  new TMssqlUpdateText(pdbvendor);
11612                break;
11613            }
11614            case sstmssqlendconversation:
11615            {
11616                ret =  new TMssqlEndConversation(pdbvendor);
11617                break;
11618            }
11619            case sstmssqlbegindialog:
11620            {
11621                ret =  new TMssqlBeginDialog(pdbvendor);
11622                break;
11623            }
11624            case sstmssqlsendonconversation:
11625            {
11626                ret =  new TMssqlSendOnConversation(pdbvendor);
11627                break;
11628            }
11629            case sstdropsequence:
11630                ret = new TDropSequenceStmt(pdbvendor);
11631                break;
11632            case sstmssqldisabletrigger :
11633            case sstmssqlenabletrigger:
11634            {
11635                lcisnewsql = true;
11636                if ( TBaseType.assigned(lccurrentsqlstatement) )
11637                {
11638                    if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstaltertable )
11639                        lcisnewsql = false;
11640                }
11641
11642                if ( lcisnewsql )
11643                {
11644                    ret =  new TUnknownSqlStatement(pdbvendor);
11645                    ret.sqlstatementtype = gnewsqlstatementtype;
11646                }
11647                break;
11648            }
11649            case sstmssqlthrow:
11650                ret = new TMssqlThrow(pdbvendor);
11651                break;
11652            case sstmssqlalterdatabase:
11653                ret = new TAlterDatabaseStmt(pdbvendor);
11654                break;
11655            case sstmssqlreconfigure:
11656                ret = new TReconfigure(pdbvendor);
11657                break;
11658            case sstcreatedatabase:
11659            {
11660                ret = new TCreateDatabaseSqlStatement(pdbvendor);
11661                break;
11662            }
11663            case sstmssqlcreateschema:
11664            {
11665                ret = new TCreateSchemaSqlStatement(pdbvendor);
11666                for ( k = lcpos + 1; k< lcsourcetokenlist.size();k++ )    // iterate
11667                {
11668                    lctoken = lcsourcetokenlist.get(k);
11669                    if (lctoken.isnonsolidtoken() ) continue;
11670                    if ( lctoken.tokencode == TBaseType.rrw_go ) break;
11671                    if ( lctoken.tokentype == ETokenType.ttsemicolon ) break;
11672                    lctoken.tokenstatus = ETokenStatus.tsignoredbygetrawstatement;
11673                }
11674                break;
11675            }
11676            case sstmssqlcreatesynonym:
11677            {
11678                ret = new TCreateSynonymStmt(pdbvendor);
11679                break;
11680            }
11681            case sstmssqlcreatetype:
11682                ret = new TMssqlCreateType(pdbvendor);
11683                break;
11684            case sstmssqlcreatexmlschemacollection:
11685                ret = new TMssqlCreateXmlSchemaCollectionStmt(pdbvendor);
11686                break;
11687            case sstmssqlalterindex:
11688                ret = new TAlterIndexStmt(pdbvendor);
11689                break;
11690            case sstmssqlcreateevexternalDataSource:
11691                ret = new TCreateExternalDataSourceStmt(pdbvendor);
11692                break;
11693            case sstmssqlcreateeventsession:
11694                ret = new TCreateEventSession(pdbvendor);
11695                break;
11696            case sstmssqldropfunction :
11697                ret = new TDropFunctionStmt(pdbvendor);
11698                break;
11699            case sstmssqlcreateevexternalLanguage:
11700                ret = new TCreateExternalLanguage(pdbvendor);
11701                break;
11702            case sstmssqlalterview:
11703            {
11704                lcisnewsql = true;
11705                if ( TBaseType.assigned(lccurrentsqlstatement) )
11706                {
11707                    if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
11708                        lcisnewsql = false;
11709                }
11710
11711                if ( lcisnewsql )
11712                {
11713                    ret =  new TAlterViewStatement(pdbvendor);
11714                    //ret.sqlstatementtype = gnewsqlstatementtype;
11715                }
11716                break;
11717            }
11718            case sstCreateFileFormat:
11719            {
11720                ret = new TCreateFileFormatStmt(pdbvendor);
11721                break;
11722            }
11723            case sstmssqlcreatemasterkey:
11724                ret = new TCreateMasterKeyStmt(pdbvendor);
11725                break;
11726            case sstmssqlcreatedatabaseencryptionkey:
11727            {
11728                TMssqlStmtStub stub = new TMssqlStmtStub(pdbvendor);
11729                stub.sqlstatementtype = ESqlStatementType.sstmssqlcreatedatabaseencryptionkey;
11730                ret = stub;
11731                break;
11732            }
11733            case sstmssqlcreateselectivexmlindex:
11734            {
11735                TMssqlStmtStub stub = new TMssqlStmtStub(pdbvendor);
11736                stub.sqlstatementtype = ESqlStatementType.sstmssqlcreateselectivexmlindex;
11737                ret = stub;
11738                break;
11739            }
11740            case sstmssqlcreatejsonindex:
11741            {
11742                TMssqlStmtStub stub = new TMssqlStmtStub(pdbvendor);
11743                stub.sqlstatementtype = ESqlStatementType.sstmssqlcreatejsonindex;
11744                ret = stub;
11745                break;
11746            }
11747            case sstmssqlcreatevectorindex:
11748            {
11749                TMssqlStmtStub stub = new TMssqlStmtStub(pdbvendor);
11750                stub.sqlstatementtype = ESqlStatementType.sstmssqlcreatevectorindex;
11751                ret = stub;
11752                break;
11753            }
11754            case sstcreatecredential:
11755                ret =  new TCreateCredentialStmt(pdbvendor);
11756                break;
11757            case sstCopyInto:
11758            {
11759                ret = new TMssqlCopyIntoStmt(pdbvendor);
11760                break;
11761            }
11762            case sstcreatematerializedview:{
11763                ret = new TCreateMaterializedSqlStatement(pdbvendor);
11764                break;
11765            }
11766            case sstmssqlCreateSecurityPolicy:
11767                ret = new TMssqlCreateSecurityPolicy(pdbvendor);
11768                break;
11769            case sstmssqlAlterSecurityPolicy:
11770                ret = new TMssqlAlterSecurityPolicy(pdbvendor);
11771                break;
11772            case sstmssqlDropSecurityPolicy:
11773                ret = new TMssqlDropSecurityPolicy(pdbvendor);
11774                break;
11775            case sstmssqlalterpartitionfunction:
11776                ret = new TAlterPartitionFunctionStmt(pdbvendor);
11777                break;
11778            case sstmssqlcreatepartitionfunction:
11779                ret = new TCreatePartitionFunctionStmt(pdbvendor);
11780                break;
11781            case sstmssqlalterpartitionscheme:
11782                ret = new TAlterPartitionSchemeSqlStatement(pdbvendor);
11783                break;
11784            case sstmssqlcreatepartitionscheme:
11785                ret = new TCreatePartitionSchemeSqlStatement(pdbvendor);
11786                break;
11787            default:
11788            {
11789                ret =  new TUnknownSqlStatement(pdbvendor);
11790                ret.sqlstatementtype = gnewsqlstatementtype;
11791                break;
11792            }
11793        }    // case
11794
11795        return ret;
11796    }
11797
11798    TCustomSqlStatement isteradatasql(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
11799        TCustomSqlStatement ret = null;
11800        int k;
11801        boolean lcisnewsql;
11802        TSourceToken lcpprevsolidtoken,lcnextsolidtoken,lctoken;
11803
11804        gnewsqlstatementtype = ESqlStatementType.sstinvalid;
11805
11806        if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
11807                || (pcst.tokencode  == TBaseType.cmtslashstar)
11808                || (pcst.tokencode  == TBaseType.lexspace)
11809                || (pcst.tokencode  == TBaseType.lexnewline)
11810                || (pcst.tokentype == ETokenType.ttsemicolon) )
11811        {
11812            return ret;
11813        }
11814
11815        int lcpos = pcst.posinlist;
11816        TSourceTokenList lcsourcetokenlist = pcst.container;
11817        TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
11818
11819        //subquery after semicolon || at first line
11820        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokentype == ETokenType.ttleftparenthesis) )
11821        {
11822            k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
11823            if ( k >0 )
11824            {
11825                ret =  new TSelectSqlStatement(pdbvendor);
11826            }else{
11827                k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_teradata_sel,1,"(");
11828                if ( k >0 )
11829                {
11830                    ret =  new TSelectSqlStatement(pdbvendor);
11831                }
11832            }
11833
11834            return ret;
11835        }
11836
11837        //cte
11838        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
11839        {
11840            ret = findcte(pcst,pdbvendor);
11841            if ( (ret != null) )  return ret;
11842        }
11843
11844        // using
11845        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_teradata_using) ){
11846           //return mapTeradataUsing(pcst);
11847            return new TTeradataUsing(pdbvendor);
11848        }
11849        
11850        if ( (pstate == EFindSqlStateType.stnormal) &&
11851                ((pcst.tokencode == TBaseType.rrw_lock)||(pcst.tokencode == TBaseType.rrw_teradata_locking)) ){
11852            return new TTeradataLock(pdbvendor);
11853        }
11854
11855        gnewsqlstatementtype = findteradatacmd(pcst);
11856
11857        TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
11858        switch(gnewsqlstatementtype ) {   //
11859            case sstinvalid:
11860            {
11861                ret = null;
11862                break;
11863            }
11864            case sstselect:
11865            {
11866                lcisnewsql = true;
11867
11868                if ( pstate != EFindSqlStateType.stnormal )
11869                {
11870                    // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
11871                    if ( (lcprevsolidtoken != null) )
11872                    {
11873                        if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
11874                            lcisnewsql = false; //subqery
11875                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
11876                            lcisnewsql = false;
11877                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
11878                            lcisnewsql = false;
11879                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
11880                            lcisnewsql = false;
11881                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
11882                            lcisnewsql = false;
11883                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
11884                            lcisnewsql = false;
11885                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
11886                        {
11887                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
11888                                lcisnewsql = false;
11889                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
11890                                lcisnewsql = false;
11891                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstteradatareplaceview )
11892                                lcisnewsql = false;
11893                        }
11894
11895                        if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
11896                        {
11897                            lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
11898                            if ( (lcpprevsolidtoken != null) )
11899                            {
11900                                if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
11901                                    lcisnewsql = false;
11902                            }
11903                        }
11904
11905                    }
11906
11907                    if ( (lccurrentsqlstatement != null) )
11908                    {
11909                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
11910                        {
11911                        }
11912                        else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview ){
11913                            lcisnewsql = false;
11914                        }
11915                    }
11916
11917                }
11918
11919                if ( lcisnewsql )
11920                    ret =  new TSelectSqlStatement(pdbvendor);
11921
11922                break;
11923
11924            }
11925            case sstinsert:
11926            {
11927                lcisnewsql = true;
11928                if ( pstate != EFindSqlStateType.stnormal )
11929                {
11930                    if ( (lccurrentsqlstatement != null) )
11931                    {
11932                        // merge
11933                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
11934                        {
11935                              if (lcprevsolidtoken != null)
11936                              {
11937                                  if (lcprevsolidtoken.tokencode == TBaseType.rrw_then)
11938                                  {lcisnewsql = false;}
11939                              }
11940                        }
11941
11942
11943
11944                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstteradatacreatetrigger )
11945                        {
11946                            if ( (lcprevsolidtoken != null) )
11947                            {
11948                                if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
11949                                    lcisnewsql = false;
11950                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(),"after") == 0 )
11951                                    lcisnewsql = false;
11952                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(),"before") == 0 )
11953                                    lcisnewsql = false;
11954                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(), "of") == 0 )
11955                                    lcisnewsql = false;
11956                            }
11957                        }
11958
11959
11960                    }
11961                }
11962
11963                if ( lcisnewsql )
11964                {
11965                    ret =  new TInsertSqlStatement(pdbvendor);
11966                    ret.dummytag = 1; //  select stmt in insert is permitted
11967                    for ( k = lcpos + 1; k < lcsourcetokenlist.size();k++ )    // iterate
11968                    {
11969                        if ( lcsourcetokenlist.get(k).isnonsolidtoken() ) continue;
11970                        if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_values ) break;
11971                        // if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_go ) break;
11972                        if ( lcsourcetokenlist.get(k).tokentype == ETokenType.ttsemicolon ) break;
11973                        if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_select ) break;
11974                        if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_execute ) break;
11975                        if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_exec ) break;
11976                    }    // for (
11977                    if ( k > lcsourcetokenlist.size() - 1 )
11978                        k = lcsourcetokenlist.size() - 1;
11979
11980                    for ( int i = lcpos + 1; i <=  k; i++ )    // iterate
11981                    {
11982                        lcsourcetokenlist.get(i).tokenstatus = ETokenStatus.tsignoredbygetrawstatement;
11983                    }    // for (
11984
11985                }
11986
11987                break;
11988            }
11989            case sstupdate:
11990            {
11991                lcisnewsql = true;
11992                if ( pstate != EFindSqlStateType.stnormal )
11993                {
11994                    // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
11995                    if ( (lcprevsolidtoken != null) )
11996                    { //
11997                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
11998                            lcisnewsql = false;
11999                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
12000                            lcisnewsql = false;
12001                    }
12002
12003                    lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
12004                    if ( TBaseType.assigned(lcnextsolidtoken) )
12005                    {
12006                        if ( lcnextsolidtoken.tokentype == ETokenType.ttleftparenthesis)
12007                        {
12008                            k = lcsourcetokenlist.solidtokenafterpos(lcnextsolidtoken.posinlist,TBaseType.rrw_select,1,"(");
12009                            if ( k  == 0 ) lcisnewsql = false;
12010                        }
12011                    }
12012
12013
12014                    if ( TBaseType.assigned(lccurrentsqlstatement) )
12015                    {
12016                        // merge
12017                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
12018                        {
12019                              if (lcprevsolidtoken != null)
12020                              {
12021                                  if (lcprevsolidtoken.tokencode == TBaseType.rrw_then)
12022                                  {lcisnewsql = false;}
12023                              }
12024                        }
12025
12026
12027                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstteradatacreatetrigger )
12028                        {
12029                            if ( TBaseType.assigned(lcprevsolidtoken) )
12030                            {
12031                                if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
12032                                    lcisnewsql = false;
12033                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(),"after") == 0 )
12034                                    lcisnewsql = false;
12035                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(),"before") == 0 )
12036                                    lcisnewsql = false;
12037                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(), "of") == 0 )
12038                                    lcisnewsql = false;
12039                            }
12040                        }
12041
12042                    }
12043                }
12044
12045                if ( lcisnewsql )
12046                {
12047                    ret =  new TUpdateSqlStatement(pdbvendor);
12048                    ret.dummytag = 1; // means set clause in update is not found yet, used to seperate set clause from set statement
12049                }
12050
12051                break;
12052            }
12053            case sstdelete:
12054            {
12055                lcisnewsql = true;
12056
12057                if ( pstate != EFindSqlStateType.stnormal )
12058                {
12059                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
12060                    if ( TBaseType.assigned(lcprevsolidtoken) )
12061                    {
12062                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
12063                            lcisnewsql = false;
12064                    }
12065
12066                    if ( TBaseType.assigned(lccurrentsqlstatement) )
12067                    {
12068                        // merge
12069                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
12070                        {
12071                              if (lcprevsolidtoken != null)
12072                              {
12073                                  if (lcprevsolidtoken.tokencode == TBaseType.rrw_then)
12074                                  {lcisnewsql = false;}
12075                              }
12076                        }
12077
12078
12079                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstteradatacreatetrigger )
12080                        {
12081                            if ( TBaseType.assigned(lcprevsolidtoken) )
12082                            {
12083                                if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
12084                                    lcisnewsql = false;
12085                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(),"after") == 0 )
12086                                    lcisnewsql = false;
12087                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(),"before") == 0 )
12088                                    lcisnewsql = false;
12089                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(), "of") == 0 )
12090                                    lcisnewsql = false;
12091                            }
12092                        }
12093
12094                    }
12095                }
12096
12097                if ( lcisnewsql )
12098                    ret =  new TDeleteSqlStatement(pdbvendor);
12099
12100                break;
12101            }
12102            case sstcreatetable:
12103            {
12104                ret =  new TCreateTableSqlStatement(pdbvendor);
12105                break;
12106            }
12107            case sstaltertable:
12108            case sstteradataaltertable:
12109            {
12110                ret =  new TAlterTableStatement(pdbvendor);
12111                break;
12112            }
12113            case sstteradatafetch:
12114            {
12115                ret =  new TMssqlFetch(pdbvendor);
12116                break;
12117            }
12118            case sstcreateprocedure :
12119            case sstteradatareplaceprocedure:
12120            {
12121                ret = new TCreateProcedureStmt(pdbvendor);
12122                break;
12123            }
12124            case sstteradataalterprocedure:
12125                ret = new TAlterProcedureStmt(pdbvendor);
12126                break;
12127            case sstteradatacreatefunction :
12128            case sstteradatareplacefunction:
12129            {
12130                ret =  new TTeradataCreateFunction(pdbvendor);
12131                break;
12132            }
12133            case sstteradataalterfunction:
12134                ret =  new TAlterFunctionStmt(pdbvendor);
12135                break;
12136            case sstteradatacreatetrigger :
12137            case sstteradataaltertrigger:
12138            case sstteradatareplacetrigger:
12139            {                              
12140                ret =  new TCreateTriggerStmt(pdbvendor);
12141                break;
12142            }
12143            case sstteradatagrant:
12144            {
12145                lcisnewsql = true;
12146                // prev tokentext can't be with
12147                if ( pstate != EFindSqlStateType.stnormal )
12148                {
12149                    if ( TBaseType.assigned(lcprevsolidtoken) )
12150                    {
12151                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_with )
12152                        {
12153                            ret = null;
12154                            lcisnewsql = false;
12155                        }
12156                    }
12157                }
12158                if ( lcisnewsql )
12159                {
12160                    ret =  new TTeradataGrant(pdbvendor);
12161                    ret.sqlstatementtype = gnewsqlstatementtype;
12162                    for ( k = lcpos + 1; k< lcsourcetokenlist.size();k++ )    // iterate
12163                    {
12164                        lctoken = lcsourcetokenlist.get(k);
12165                        if (lctoken.isnonsolidtoken() ) continue;
12166                        if ( lctoken.tokencode == TBaseType.rrw_go ) break;
12167                        if ( lctoken.tokentype == ETokenType.ttsemicolon ) break;
12168                        if ( lctoken.tokencode == TBaseType.rrw_to   ) break;
12169                        lctoken.tokenstatus = ETokenStatus.tsignoredbygetrawstatement;
12170                    }
12171                }
12172                break;
12173            }
12174            case sstdropindex:
12175            {
12176                ret =  new TDropIndexSqlStatement(pdbvendor);
12177                break;
12178            }
12179            case sstdroptable:
12180            {
12181                ret =  new TDropTableSqlStatement(pdbvendor);
12182                break;
12183            }
12184            case sstdropview:
12185            {
12186                ret =  new TDropViewSqlStatement(pdbvendor);
12187                break;
12188            }
12189            case sstteradatadropprocedure:
12190                ret =  new TDropProcedureStmt(pdbvendor);
12191                break;
12192            case sstteradatadropauthorization:
12193            case sstteradatadropcast:
12194            case sstteradatadropdatabase:
12195            case sstteradatadropfunction:
12196            case sstteradatadroptrigger:
12197            case sstteradatadropordering:
12198            case sstteradatadropprofile:
12199            case sstteradatadropreplicationgroup:
12200            case sstteradatadroprole:
12201            case sstteradatadroptransform:
12202            case sstteradatadroptype:
12203            case sstteradatadropuser:
12204            case sstteradatadropzone:
12205            {
12206                ret =  new TTeradataDropDbObject(EDbVendor.dbvteradata);
12207                ret.sqlstatementtype = gnewsqlstatementtype;
12208                break;
12209            }
12210            case sstteradatadropmacro:
12211                ret = new TDropMacro(EDbVendor.dbvteradata);
12212                break;
12213            case sstteradatadropconstraint:
12214                ret = new TDropConstraintStmt(EDbVendor.dbvteradata);
12215                break;
12216            case sstteradatabegintransaction:
12217            {
12218                ret =  new TBeginTran(pdbvendor);
12219                break;
12220            }
12221            case sstteradataendtransaction:
12222            {
12223                ret =  new TEndTran(pdbvendor);
12224                break;
12225            }
12226            case sstteradatabeginrequest:
12227            {
12228                ret =  new TBeginTran(pdbvendor);
12229                ret.sqlstatementtype = ESqlStatementType.sstteradatabeginrequest;
12230                break;
12231            }
12232            case sstteradataendrequest:
12233            {
12234                ret =  new TEndTran(pdbvendor);
12235                ret.sqlstatementtype = ESqlStatementType.sstteradataendrequest;
12236                break;
12237            }
12238            case sstteradatacommit:
12239            {
12240                ret =  new TTeradataCommit(pdbvendor);
12241                break;
12242            }
12243            case sstteradatarollback:
12244            {
12245                ret =  new TTeradataRollback(pdbvendor);
12246                break;
12247            }
12248            case sstcreateindex:
12249            {
12250                ret =  new TCreateIndexSqlStatement(pdbvendor);
12251                break;
12252            }
12253            case sstmerge:
12254            {
12255                lcisnewsql = true;
12256
12257                if (pstate != EFindSqlStateType.stnormal)
12258                {
12259
12260                    if (lccurrentsqlstatement != null)
12261                    {
12262                        // merge union, merge join
12263                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstselect)
12264                        {
12265                                    lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
12266                                    if (lcnextsolidtoken != null)
12267                                       {
12268                                        if ((lcnextsolidtoken.tokencode == TBaseType.rrw_union) || (lcnextsolidtoken.tokencode == TBaseType.rrw_join))
12269                                           {
12270                                              lcisnewsql = false;
12271                                           }
12272                                        }
12273                        }
12274
12275                    }
12276                }
12277
12278                if (lcisnewsql)
12279                {
12280                    ret = new TMergeSqlStatement(pdbvendor);
12281                    ret.sqlstatementtype = gnewsqlstatementtype;
12282                }
12283
12284                break;
12285            }
12286            case sstteradataexecute:
12287            {
12288                lcisnewsql = true;
12289                // prev tokentext can't be with
12290                if ( pstate != EFindSqlStateType.stnormal )
12291                {
12292                    if ( TBaseType.assigned(lccurrentsqlstatement) )
12293                    {
12294                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
12295                        {
12296                            if ( lccurrentsqlstatement.dummytag == 1 )
12297                            {
12298                                lcisnewsql = false;
12299                                lccurrentsqlstatement.dummytag = 0; // no select is permited after it
12300                            }
12301                        }
12302
12303                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstteradatagrant )
12304                        {
12305                            if ( TBaseType.assigned(lcprevsolidtoken) )
12306                            {
12307                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_grant )
12308                                    lcisnewsql = false;
12309                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
12310                                    lcisnewsql = false;
12311                            }
12312                        }
12313
12314                        if (
12315                                (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateprocedure)
12316                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstteradatacreatetrigger)
12317                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstteradatacreatefunction)
12318                                        ||(lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstteradataalterprocedure)
12319                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstteradataaltertrigger)
12320                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstteradataalterfunction)
12321                                )
12322                        {
12323                            if ( TBaseType.assigned(lcprevsolidtoken) )
12324                            {
12325                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_with )
12326                                    lcisnewsql = false;
12327                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
12328                                    lcisnewsql = false;
12329                            }
12330                        }
12331                    }
12332                }
12333                if ( lcisnewsql )
12334                {
12335                    ret =  new TTeradataExecute(pdbvendor);
12336                }
12337                break;
12338            }
12339            case sstteradatasetsession:
12340            {
12341                ret =  new TTeradataSetSession(pdbvendor);
12342                break;
12343            }
12344            case sstteradatadatabase:
12345                if (pcst.isFirstTokenOfLine()){
12346                    ret =  new TTeradataSetSession(pdbvendor);
12347                }
12348
12349                break;
12350            case sstteradatasettimezone:
12351            {
12352                ret =  new TTeradataSetTimezone(pdbvendor);
12353                break;
12354            }
12355            case sstteradatasetrole:
12356            {
12357                ret =  new TTeradataSetRole(pdbvendor);
12358                break;
12359            }
12360            case sstteradataendlogging:
12361            {
12362                ret =  new TTeradataEndLogging(pdbvendor);
12363                break;
12364            }
12365            case sstteradatabeginlogging:
12366            {
12367                ret =  new TTeradataBeginLogging(pdbvendor);
12368                break;
12369            }
12370            case sstteradataabort:
12371            {
12372                ret = new TTeradataAbort(pdbvendor);
12373                break;
12374            }
12375            case sstteradatareplaceview:
12376            case sstcreateview:
12377            {
12378                ret = new TCreateViewSqlStatement(pdbvendor);
12379                ret.sqlstatementtype = ESqlStatementType.sstcreateview;
12380                break;
12381            }
12382            case sstteradatacollectstatistics:
12383            {
12384                ret = new TTeradataCollectStatistics(pdbvendor);
12385                break;
12386            }
12387            case sstteradatagive:
12388            {
12389                ret = new TTeradataGive(pdbvendor);
12390                break;
12391            }
12392            case sstteradatacall:
12393                ret = new TCallStatement(pdbvendor);
12394                break;
12395            case sstteradatacreatemacro:
12396            case sstteradatareplacemacro:
12397                ret = new TCreateMacro(pdbvendor);
12398                break;
12399            case sstteradatarenametable:
12400                ret = new TRenameStmt(pdbvendor);
12401                break;
12402            case sstteradatacomment:
12403                ret = new TCommentOnSqlStmt(pdbvendor);
12404                break;
12405            case sstteradatacheckworkload:
12406                ret = new TCheckWorkload(pdbvendor);
12407                break;
12408            case sstgetdiagnostics:
12409                ret = new TGetDiagStmt(pdbvendor);
12410                break;
12411            case sstteradatacreaterole:
12412                ret = new TCreateRoleStmt(pdbvendor);
12413                break;
12414            case sstteradatarevoke:
12415                ret = new TRevokeStmt(pdbvendor);
12416                break;
12417            case sstteradataalterzone:
12418                ret = new TAlterZoneStmt(pdbvendor);
12419                break;
12420            case sstcreatezone:
12421                ret = new TCreateZoneStmt(pdbvendor);
12422                break;
12423            case sstteradataalterconstraint:
12424                ret = new TAlterConstraintStmt(pdbvendor);
12425                break;
12426            case sstExplain:
12427                ret = new TExplainPlan(pdbvendor);
12428                break;
12429            case sstteradatareleaseLock:
12430                ret = new TTeradataReleaseLockStmt(pdbvendor);
12431                break;
12432            default:
12433            {
12434                ret =  new TTeradataNotImplement(pdbvendor);
12435                ret.sqlstatementtype = gnewsqlstatementtype;
12436                break;
12437            }
12438        }    // case
12439
12440        return ret;
12441    }
12442
12443
12444    TCustomSqlStatement ishana(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
12445        TCustomSqlStatement ret = null;
12446        int k;
12447        boolean lcisnewsql;
12448        TSourceToken lcpprevsolidtoken,lcnextsolidtoken,lctoken;
12449
12450        gnewsqlstatementtype = ESqlStatementType.sstinvalid;
12451
12452        if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
12453                || (pcst.tokencode  == TBaseType.cmtslashstar)
12454                || (pcst.tokencode  == TBaseType.lexspace)
12455                || (pcst.tokencode  == TBaseType.lexnewline)
12456                || (pcst.tokentype == ETokenType.ttsemicolon) )
12457        {
12458            return ret;
12459        }
12460
12461        int lcpos = pcst.posinlist;
12462        TSourceTokenList lcsourcetokenlist = pcst.container;
12463        TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
12464
12465        //subquery after semicolon || at first line
12466        if ( pcst.tokentype == ETokenType.ttleftparenthesis)  // (
12467        {
12468            k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
12469            if ( k >0 )
12470            {
12471                if (pstate == EFindSqlStateType.stnormal){
12472                    ret =  new TSelectSqlStatement(pdbvendor);
12473                    return ret;
12474                }
12475            }
12476        }
12477
12478        //cte
12479        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
12480        {
12481            ret = findcte(pcst,pdbvendor);
12482            if ( (ret != null) )  return ret;
12483        }
12484
12485        gnewsqlstatementtype = findhanacmd(pcst);
12486
12487        TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
12488        switch(gnewsqlstatementtype ) {   //
12489            case sstinvalid:
12490            {
12491                if ( pcst.tokencode == TBaseType.mslabel )
12492                {
12493                    ret =  new TMssqlLabel(pdbvendor);
12494                }
12495                else
12496                    ret = null;
12497
12498                break;
12499            }
12500            case sstselect:
12501            {
12502                lcisnewsql = true;
12503
12504                if ( pstate != EFindSqlStateType.stnormal )
12505                {
12506                    // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
12507                    if ( (lcprevsolidtoken != null) )
12508                    {
12509                        if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
12510                            lcisnewsql = false; //subqery
12511                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
12512                            lcisnewsql = false;
12513                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
12514                            lcisnewsql = false;
12515                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
12516                            lcisnewsql = false;
12517                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
12518                            lcisnewsql = false;
12519                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
12520                            lcisnewsql = false;
12521                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
12522                        {
12523                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
12524                                lcisnewsql = false;
12525                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
12526                                lcisnewsql = false;
12527                        }
12528                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
12529                        {
12530                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlset )
12531                                lcisnewsql = false;
12532                        }
12533                        else if (lcprevsolidtoken.tokentype == ETokenType.ttrightparenthesis){
12534                            if ((lccurrentsqlstatement != null) && (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable)){
12535                                lcisnewsql = false;
12536                            }
12537                        }
12538
12539                        if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
12540                        {
12541                            lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
12542                            if ( (lcpprevsolidtoken != null) )
12543                            {
12544                                if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
12545                                    lcisnewsql = false;
12546                            }
12547                        }
12548
12549                    }
12550
12551                    if ( (lccurrentsqlstatement != null) )
12552                    {
12553                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
12554                        {
12555                            lcisnewsql = false;
12556                        }
12557                        else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstGrant )
12558                        {
12559                            if ( (lcprevsolidtoken != null) )
12560                            {
12561                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_grant )
12562                                    lcisnewsql = false;
12563                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
12564                                    lcisnewsql = false;
12565                            }
12566                        }else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview ){
12567                            lcisnewsql = false;
12568                        }else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstaltersequence ){
12569                            lcisnewsql = false;
12570                        }else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstExplain ){
12571                            lcisnewsql = false;
12572                        }else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstRevoke ){
12573                            lcisnewsql = false;
12574                        }else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstupsert ){
12575                            lcisnewsql = false;
12576                        }else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstalterview ){
12577                            lcisnewsql = false;
12578                        }
12579                    }
12580
12581                }
12582
12583                if ( lcisnewsql )
12584                    ret =  new TSelectSqlStatement(pdbvendor);
12585
12586                break;
12587
12588            }
12589            case sstinsert:
12590            {
12591                lcisnewsql = true;
12592                if ( pstate != EFindSqlStateType.stnormal )
12593                {
12594                    if ( (lccurrentsqlstatement != null) )
12595                    {
12596                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateauditpolicy)
12597                        {
12598                            lcisnewsql = false;
12599                        }
12600                        // merge
12601                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
12602                        {
12603                            if (lcprevsolidtoken != null)
12604                            {
12605                                if (lcprevsolidtoken.tokencode == TBaseType.rrw_then)
12606                                {lcisnewsql = false;}
12607                            }
12608                        }
12609
12610
12611                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstGrant )
12612                        {
12613                            if ( (lcprevsolidtoken != null) )
12614                            {
12615                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_grant )
12616                                    lcisnewsql = false;
12617                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
12618                                    lcisnewsql = false;
12619                            }
12620                        }else if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
12621                        {
12622                            lcisnewsql = false;
12623                        }
12624
12625                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetrigger )
12626                        {
12627                            if ( (lcprevsolidtoken != null) )
12628                            {
12629                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
12630                                    lcisnewsql = false;
12631                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
12632                                    lcisnewsql = false;
12633                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(),"after") == 0 )
12634                                    lcisnewsql = false;
12635                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(), "of") == 0 )
12636                                    lcisnewsql = false;
12637                            }
12638                        }
12639
12640
12641                    }
12642                }
12643
12644                if ( lcisnewsql )
12645                {
12646                    ret =  new TInsertSqlStatement(pdbvendor);
12647                    ret.dummytag = 1; //  select stmt in insert is permitted
12648                    for ( k = lcpos + 1; k < lcsourcetokenlist.size();k++ )    // iterate
12649                    {
12650                        if ( lcsourcetokenlist.get(k).isnonsolidtoken() ) continue;
12651                        if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_values ) break;
12652                        if ( lcsourcetokenlist.get(k).tokentype == ETokenType.ttsemicolon ) break;
12653                        if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_select ){
12654                            ret.dummytag = 0;
12655                            break;
12656                        }
12657                    }    // for (
12658                    if ( k > lcsourcetokenlist.size() - 1 )
12659                        k = lcsourcetokenlist.size() - 1;
12660
12661                    for ( int i = lcpos + 1; i <=  k; i++ )    // iterate
12662                    {
12663                        lcsourcetokenlist.get(i).tokenstatus = ETokenStatus.tsignoredbygetrawstatement;
12664                    }    // for (
12665
12666                }
12667
12668                break;
12669            }
12670            case sstupdate:
12671            {
12672                lcisnewsql = true;
12673                if ( pstate != EFindSqlStateType.stnormal )
12674                {
12675                    // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
12676                    if ( (lcprevsolidtoken != null) )
12677                    { //
12678                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
12679                            lcisnewsql = false;
12680                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
12681                            lcisnewsql = false;
12682                    }
12683
12684                    lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
12685                    if ( TBaseType.assigned(lcnextsolidtoken) )
12686                    {
12687                        if ( lcnextsolidtoken.tokentype == ETokenType.ttleftparenthesis)
12688                        {
12689                            k = lcsourcetokenlist.solidtokenafterpos(lcnextsolidtoken.posinlist,TBaseType.rrw_select,1,"(");
12690                            if ( k  == 0 ) lcisnewsql = false;
12691                        }
12692                    }
12693
12694
12695                    if ( TBaseType.assigned(lccurrentsqlstatement) )
12696                    {
12697                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateauditpolicy)
12698                        {
12699                                lcisnewsql = false;
12700                        }else if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
12701                        {
12702                            lcisnewsql = false;
12703                        }
12704                        // merge
12705                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
12706                        {
12707                            if (lcprevsolidtoken != null)
12708                            {
12709                                if (lcprevsolidtoken.tokencode == TBaseType.rrw_then)
12710                                {lcisnewsql = false;}
12711                            }
12712                        }
12713
12714                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstGrant )
12715                        {
12716                            if ( TBaseType.assigned(lcprevsolidtoken) )
12717                            {
12718                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_grant )
12719                                    lcisnewsql = false;
12720                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
12721                                    lcisnewsql = false;
12722                            }
12723                        }
12724                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetrigger )
12725                        {
12726                            if ( TBaseType.assigned(lcprevsolidtoken) )
12727                            {
12728                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
12729                                    lcisnewsql = false;
12730                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
12731                                    lcisnewsql = false;
12732                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(),"after") == 0 )
12733                                    lcisnewsql = false;
12734                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(), "of") == 0 )
12735                                    lcisnewsql = false;
12736                            }
12737                        }
12738
12739                    }
12740                }
12741
12742                if ( lcisnewsql )
12743                {
12744                    ret =  new TUpdateSqlStatement(pdbvendor);
12745                    ret.dummytag = 1; // means set clause in update is not found yet, used to separate set clause from set statement
12746                }
12747
12748                break;
12749            }
12750            case sstdelete:
12751            {
12752                lcisnewsql = true;
12753
12754                if ( pstate != EFindSqlStateType.stnormal )
12755                {
12756                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
12757                    if ( TBaseType.assigned(lcprevsolidtoken) )
12758                    {
12759                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
12760                            lcisnewsql = false;
12761                    }
12762
12763                    if ( TBaseType.assigned(lccurrentsqlstatement) )
12764                    {
12765                        // merge
12766                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
12767                        {
12768                            if (lcprevsolidtoken != null)
12769                            {
12770                                if (lcprevsolidtoken.tokencode == TBaseType.rrw_then)
12771                                {lcisnewsql = false;}
12772                            }
12773                        }
12774
12775                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstGrant )
12776                        {
12777                            if ( TBaseType.assigned(lcprevsolidtoken) )
12778                            {
12779                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_grant )
12780                                    lcisnewsql = false;
12781                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
12782                                    lcisnewsql = false;
12783                            }
12784                        }
12785
12786                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetrigger )
12787                        {
12788                            if ( TBaseType.assigned(lcprevsolidtoken) )
12789                            {
12790                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
12791                                    lcisnewsql = false;
12792                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
12793                                    lcisnewsql = false;
12794                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(),"after") == 0 )
12795                                    lcisnewsql = false;
12796                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(), "of") == 0 )
12797                                    lcisnewsql = false;
12798                            }
12799                        }
12800
12801                        if ((lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstbackupcatalogdelete)
12802                        ||(lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable)
12803                                )
12804                        {
12805                            lcisnewsql = false;
12806                        }
12807
12808                    }
12809                }
12810
12811                if ( lcisnewsql )
12812                    ret =  new TDeleteSqlStatement(pdbvendor);
12813
12814                break;
12815            }
12816            case sstcreatetable:
12817            {
12818                ret =  new TCreateTableSqlStatement(pdbvendor);
12819                break;
12820            }
12821            case sstcreateview:
12822            {
12823                ret =  new TCreateViewSqlStatement(pdbvendor);
12824                break;
12825            }
12826            case sstcreatesequence:
12827            {
12828                ret = new TCreateSequenceStmt(pdbvendor);
12829                break;
12830            }
12831            case sstaltertable:
12832            {
12833                lcisnewsql = true;
12834                if ( pstate != EFindSqlStateType.stnormal )
12835                {
12836                            lcisnewsql = false;
12837                }
12838                if ( lcisnewsql ) {
12839                    ret = new TAlterTableStatement(pdbvendor);
12840                }
12841                break;
12842            }
12843            case sstcreateprocedure :
12844            {
12845                ret = new TCreateProcedureStmt(pdbvendor);
12846                break;
12847            }
12848            case sstalterprocedure:
12849            {
12850                boolean isAlter = false;
12851                // hana  alter and create procedure 语法混在一起,无法区分
12852                // c:\prg\gsp_java\gsp_java_core\gsp_sqlfiles\TestCases\public\allversions\hana\create_procedure.sql
12853                if (pcst.tokencode == TBaseType.rrw_alter){
12854
12855                    TSourceToken st = pcst.nextSolidToken(3);
12856                    if (st != null){
12857                        switch (st.toString().toUpperCase()) {
12858                            case "RECOMPILE":   
12859                                isAlter = true;
12860                                break;
12861                            case "ENCRYPTION":
12862                                isAlter = true;
12863                                break;
12864                            case "ADD":
12865                                isAlter = true;
12866                                break;
12867                            default:
12868                                break;
12869                        }
12870                    }
12871
12872                    // TSourceToken st = pcst.searchToken("recompile",4);
12873                    // if (st != null){
12874                    //     isAlter = true;
12875                    // }else{
12876                    //     st = pcst.searchToken("encryption",4);
12877                    //     if (st != null){
12878                    //         isAlter = true;
12879                    //     }
12880                    // }
12881                }
12882                if (isAlter){
12883                    ret = new TAlterProcedureStmt (pdbvendor);
12884                }else{
12885                    ret  = new TCreateProcedureStmt (pdbvendor);
12886                }
12887
12888                break;
12889            }
12890            case sstcreatefunction :
12891            {
12892                ret =  new TCreateFunctionStmt(pdbvendor);
12893                break;
12894            }
12895            case sstalterfunction:
12896            {
12897                boolean isAlter = false;
12898                // hana  alter and create function 语法混在一起,无法区分
12899
12900                if (pcst.tokencode == TBaseType.rrw_alter){
12901                    TSourceToken stAdd = pcst.searchToken("add",4);
12902                    TSourceToken stAlter = pcst.searchToken("alter",4);
12903                    TSourceToken stDrop = pcst.searchToken("drop",4);
12904                    if ((stAdd != null)||(stAlter != null)||(stDrop != null)){
12905                        isAlter = true;
12906                    }else{
12907                        TSourceToken st = pcst.searchToken("encryption",4);
12908                        if (st != null){
12909                            isAlter = true;
12910                        }
12911                    }
12912                }
12913
12914                if (isAlter){
12915                    ret = new TAlterFunctionStmt (pdbvendor);
12916                }else{
12917                    ret  = new TCreateFunctionStmt (pdbvendor);
12918                }
12919
12920
12921                break;
12922            }
12923            case sstcreatetrigger :
12924            case sstaltertrigger:
12925            {
12926                ret =  new TCreateTriggerStmt(pdbvendor);
12927                break;
12928            }
12929            case sstGrant:
12930            {
12931                lcisnewsql = true;
12932
12933                if ( pstate != EFindSqlStateType.stnormal )
12934                {
12935                    lcisnewsql = false;
12936
12937                }
12938                if ( lcisnewsql )
12939                {
12940                    ret =  new TGrantStmt(pdbvendor);
12941                    //ret.sqlstatementtype = gnewsqlstatementtype;
12942                    for ( k = lcpos + 1; k< lcsourcetokenlist.size();k++ )    // iterate
12943                    {
12944                        lctoken = lcsourcetokenlist.get(k);
12945                        if (lctoken.isnonsolidtoken() ) continue;
12946                        if ( lctoken.tokencode == TBaseType.rrw_go ) break;
12947                        if ( lctoken.tokentype == ETokenType.ttsemicolon ) break;
12948                        if ( lctoken.tokencode == TBaseType.rrw_to   ) break;
12949                        lctoken.tokenstatus = ETokenStatus.tsignoredbygetrawstatement;
12950                    }
12951                }
12952                break;
12953            }
12954            case sstdropview:
12955            {
12956                ret =  new TDropViewSqlStatement(pdbvendor);
12957                break;
12958            }
12959            case sstdroptable:
12960            {
12961                ret =  new TDropTableSqlStatement(pdbvendor);
12962                break;
12963            }
12964            case sstdropindex:
12965            {
12966                ret =  new TDropIndexSqlStatement(pdbvendor);
12967                break;
12968            }
12969            case ssttruncatetable:
12970            {
12971                ret =  new TTruncateStatement(pdbvendor);
12972                break;
12973            }
12974            case sstcommit:
12975            {
12976                lcisnewsql = true;
12977                TSourceToken lcPrev = pcst.prevSolidToken();
12978                if ((lcPrev != null) && (lcPrev.tokencode == TBaseType.rrw_hana_of)){
12979                    lcisnewsql = false;
12980                }
12981                if ( pstate != EFindSqlStateType.stnormal )
12982                {
12983                    lcisnewsql = false;
12984
12985                }
12986                if (lcisnewsql){
12987                    ret =  new TCommitStmt(pdbvendor);
12988                }
12989
12990                break;
12991            }
12992            case sstrollback:
12993            {
12994                ret =  new TRollbackStmt(pdbvendor);
12995                break;
12996            }
12997            case sstRevoke:
12998            {
12999                lcisnewsql = true;
13000
13001                if ( pstate != EFindSqlStateType.stnormal )
13002                {
13003                    lcisnewsql = false;
13004
13005                }
13006                if (lcisnewsql){
13007                    ret = new TRevokeStmt(pdbvendor);
13008                }
13009                break;
13010            }
13011            case sstcreateindex:
13012            {
13013                ret =  new TCreateIndexSqlStatement(pdbvendor);
13014                break;
13015            }
13016            case sstset:
13017            {
13018                lcisnewsql = true;
13019                if ( pstate != EFindSqlStateType.stnormal )
13020                {
13021                    if ( TBaseType.assigned(lccurrentsqlstatement) )
13022                    {
13023                        lcisnewsql = false;
13024                    }
13025                }
13026
13027                if ( lcisnewsql )
13028                {
13029                    ret =  new TMssqlSet(pdbvendor);
13030                }
13031
13032                break;
13033            }
13034            case sstdropsequence:
13035                ret = new TDropSequenceStmt(pdbvendor);
13036                break;
13037            case sstalterdatabase:
13038                ret = new TAlterDatabaseStmt(pdbvendor);
13039                break;
13040            case sstcreatedatabase:
13041            {
13042                ret = new TCreateDatabaseSqlStatement(pdbvendor);
13043                break;
13044            }
13045            case sstcreateschema:
13046            {
13047                ret = new TCreateSchemaSqlStatement(pdbvendor);
13048                break;
13049            }
13050            case sstcreatesynonym:
13051            {
13052                ret = new TCreateSynonymStmt(pdbvendor);
13053                break;
13054            }
13055            case sstcreatetype:
13056                ret = new TMssqlCreateType(pdbvendor);
13057                break;
13058            case sstreplace:
13059                lcisnewsql = true;
13060                TSourceToken lcNext = pcst.nextSolidToken();
13061                if ((lcNext != null) && (lcNext.tokencode == '(')){
13062                    lcisnewsql = false;
13063                }
13064                if ( pstate != EFindSqlStateType.stnormal )
13065                {
13066                    lcisnewsql = false;
13067                }
13068                if (lcisnewsql) {
13069                     ret = new TUpsertStmt(pdbvendor);
13070                    //ret.sqlstatementtype = gnewsqlstatementtype;
13071                }
13072                break;
13073            case sstalterauditpolicy:
13074                ret = new TAlterAuditPolicyStmt(pdbvendor);
13075                break;
13076            case sstaltercredential:
13077                ret = new TAlterCredentialStmt(pdbvendor);
13078                break;
13079            case sstalterfulltextindex:
13080                ret = new TAlterFulltextIndexStmt(pdbvendor);
13081                break;
13082            case sstalterindex:
13083                ret = new TAlterIndexStmt(pdbvendor);
13084                break;
13085            case sstalterldapprovider:
13086                ret = new TAlterLDAPProviderStmt(pdbvendor);
13087                break;
13088            case sstalterjwtprovider:
13089                ret = new TAlterJWTProviderStmt(pdbvendor);
13090                break;
13091            case sstalterpse:
13092                ret = new TAlterPSEStmt(pdbvendor);
13093                break;
13094            case sstalterremotesource:
13095                ret = new TAlterRemoteSourceStmt(pdbvendor);
13096                break;
13097            case sstAlterRole:
13098                ret = new TAlterRoleStmt(pdbvendor);
13099                break;
13100            case sstaltersamlprovider:
13101                ret = new TAlterSAMLProviderStmt(pdbvendor);
13102                break;
13103            case sstaltersequence:
13104                ret = new TAlterSequenceStatement(pdbvendor);
13105                break;
13106            case sstalterstatistics:
13107                ret = new TAlterStatisticsStmt(pdbvendor);
13108                break;
13109            case sstaltersystem:
13110                ret = new TAlterSystemStmt(pdbvendor);
13111                break;
13112            case sstunload:
13113                lcisnewsql = true;
13114                if ( pstate != EFindSqlStateType.stnormal )
13115                {
13116                    lcisnewsql = false;
13117                }
13118                if ( lcisnewsql ) {
13119                    ret = new TUnloadStmt(pdbvendor);
13120                    ret.sqlstatementtype = gnewsqlstatementtype;
13121                }
13122                break;
13123            case sstunset:
13124            case sstunsetpse:
13125            case sstunsetsystemlicense:
13126                lcisnewsql = true;
13127                if ( pstate != EFindSqlStateType.stnormal )
13128                {
13129                    lcisnewsql = false;
13130                }
13131                if ( lcisnewsql ) {
13132                    ret = new TUnsetStmt(pdbvendor);
13133                    ret.sqlstatementtype = gnewsqlstatementtype;
13134                }
13135                break;
13136            case sstalteruser:
13137                ret  = new TAlterUserStmt(pdbvendor);
13138                break;
13139            case sstconnect:
13140                lcisnewsql = true;
13141                if ( pstate != EFindSqlStateType.stnormal )
13142                {
13143                    lcisnewsql = false;
13144                }
13145                if ( lcisnewsql ) {
13146                    ret = new TConnectStmt(pdbvendor);
13147                    ret.sqlstatementtype = gnewsqlstatementtype;
13148                }
13149                break;
13150            case sstalterusergroup:
13151                ret = new TAlterUserGroupStmt(pdbvendor);
13152                        break;
13153            case sstalterview:
13154            case sstalterviewcache:
13155                ret = new TAlterViewStatement(pdbvendor);
13156                break;
13157            case sstaltervirtualtable:
13158                ret = new TAlterVirtualTableStmt(pdbvendor);
13159                break;
13160            case sstalterworkloadclass:
13161                ret = new TAlterWorkloadClassStmt(pdbvendor);
13162                break;
13163            case sstalterworkloadmapping:
13164                ret = new TAlterWorkloadMappingStmt(pdbvendor);
13165                break;
13166            case sstbackupcancel:
13167                ret = new TBackupCancelStmt(pdbvendor);
13168                break;
13169            case sstbackupcatalogdelete:
13170                ret = new TBackupCatalogDeleteStmt(pdbvendor);
13171                break;
13172            case sstbackupcheck:
13173            case sstbackupcheckaccess:
13174                ret = new TBackupCheckStmt(pdbvendor);
13175                break;
13176            case sstbackupdata:
13177                ret = new TBackupDataStmt(pdbvendor);
13178                break;
13179            case sstbackuplistdata:
13180                ret = new TBackupListDataStmt(pdbvendor);
13181                break;
13182            case sstcall:
13183                ret = new TCallStatement(pdbvendor);
13184                break;
13185            case sstcomment:
13186                ret = new TCommentOnSqlStmt(pdbvendor);
13187                break;
13188            case sstcreateauditpolicy:
13189                ret =  new TCreateAuditPolicyStmt(pdbvendor);
13190                break;
13191            case sstcreatecertificate:
13192                ret =  new TCreateCertificateStmt(pdbvendor);
13193                break;
13194            case sstcreatecollection:
13195                ret =  new TCreateCollectionStmt(pdbvendor);
13196                break;
13197            case sstcreatecredential:
13198                ret =  new TCreateCredentialStmt(pdbvendor);
13199                break;
13200            case sstcreatefulltextindex:
13201                ret =  new TCreateFulltextIndexStmt(pdbvendor);
13202                break;
13203            case sstcreategraphworkspace:
13204                ret =  new TCreateGraphWorkspaceStmt(pdbvendor);
13205                break;
13206            case sstcreateJWTProvider:
13207                ret =  new TCreateJWTProviderStmt(pdbvendor);
13208                break;
13209            case sstcreateLDAPProvider:
13210                ret =  new TCreateLDAPProviderStmt(pdbvendor);
13211                break;
13212            case sstcreatepse:
13213                ret =  new TCreatePSEStmt(pdbvendor);
13214                break;
13215            case sstcreateremotesource:
13216                ret =  new TCreateRemoteSourceStmt(pdbvendor);
13217                break;
13218            case sstcreaterole:
13219                ret =  new TCreateRoleStmt(pdbvendor);
13220                break;
13221            case sstcreatesamlprovider:
13222                ret =  new TCreateSAMLProviderStmt(pdbvendor);
13223                break;
13224            case sstcreatestatistics:
13225                ret =  new TCreateStatistics(pdbvendor);
13226                break;
13227            case sstcreatestructuredprivilege:
13228                ret =  new TCreateStructuredPrivilegeStmt(pdbvendor);
13229                break;
13230            case sstcreateuser:
13231                ret =  new TCreateUserStmt(pdbvendor);
13232                break;
13233            case sstcreateusergroup:
13234                ret =  new TCreateUserGroupStmt(pdbvendor);
13235                break;
13236            case sstcreatevirtualfunction:
13237                ret =  new TCreateVirtualFunctionStmt(pdbvendor);
13238                break;
13239            case sstcreatevirtualtable:
13240                ret =  new TCreateVirtualTableStmt(pdbvendor);
13241                break;
13242            case sstcreateworkloadclass:
13243                ret =  new TCreateWorkloadClassStmt(pdbvendor);
13244                break;
13245            case sstcreateworkloadmapping:
13246                ret =  new TCreateWorkloadMappingStmt(pdbvendor);
13247                break;
13248            case sstdropauditpolicy:
13249            case sstdropcertificate:
13250            case sstdropcollection:
13251            case sstdropcredential:
13252            case sstdropfulltextindex:
13253            case sstdropJWTProvider:
13254            case sstdropLDAPProvider:
13255            case sstdroppse:
13256            case sstdropremotesource:
13257            case sstdropsamlprovider:
13258            case sstdropstatistics:
13259            case sstdropgraphworkspace:
13260            case sstdropstructuredprivilege:
13261            case sstdroptype:
13262            case sstdropusergroup:
13263            case sstdropworkloadclass:
13264            case sstdropworkloadmapping:
13265                lcisnewsql = true;
13266                if ( pstate != EFindSqlStateType.stnormal )
13267                {
13268                    lcisnewsql = false;
13269                }
13270                if ( lcisnewsql ) {
13271                    ret =  new TDropStmt(pdbvendor);
13272                }
13273
13274                break;
13275            case sstdropdatabase:
13276                ret =  new TDropDatabaseStmt(pdbvendor);
13277                break;
13278            case sstdropfunction:
13279                ret =  new TDropFunctionStmt(pdbvendor);
13280                break;
13281            case sstdropprocedure:
13282                ret =  new TDropProcedureStmt(pdbvendor);
13283                break;
13284            case sstdroprole:
13285                ret =  new TDropRoleStmt(pdbvendor);
13286                break;
13287            case sstdropschema:
13288                ret =  new TDropSchemaSqlStatement(pdbvendor);
13289                break;
13290            case sstdropsynonym:
13291                ret =  new TDropSynonymStmt(pdbvendor);
13292                break;
13293            case sstdroptrigger:
13294                ret =  new TDropTriggerSqlStatement(pdbvendor);
13295                break;
13296            case sstdropuser:
13297                ret =  new TDropUserStmt(pdbvendor);
13298                break;
13299            case sstExplain:
13300                ret =  new TExplainPlan(pdbvendor);
13301                break;
13302            case sstexport:
13303                ret =  new TExportStmt(pdbvendor);
13304                break;
13305            case sstimport:
13306//            case sstimportfrom:
13307//            case sstimportscan:
13308                ret =  new TImportStmt(pdbvendor);
13309                break;
13310            case sstload:
13311                lcisnewsql = true;
13312                if ( pstate != EFindSqlStateType.stnormal )
13313                {
13314                    lcisnewsql = false;
13315                }
13316                if ( lcisnewsql ) {
13317                    ret =  new TLoadStmt(pdbvendor);
13318                }
13319
13320                break;
13321            case sstlocktable:
13322                ret =  new TLockTableStmt(pdbvendor);
13323                break;
13324            case sstmergedelta:
13325                ret =  new TMergeDeltaStmt(pdbvendor);
13326                break;
13327            case sstmerge:
13328                ret =  new TMergeSqlStatement(pdbvendor);
13329                break;
13330            case sstrecoverdata:
13331                ret =  new TRecoverDataStmt(pdbvendor);
13332                break;
13333            case sstrecoverdatabase:
13334                ret =  new TRecoverDatabaseStmt(pdbvendor);
13335                break;
13336            case sstrefreshstatistics:
13337                ret =  new TRefreshStatisticsStmt(pdbvendor);
13338                break;
13339            case sstrenamecollection:
13340            case sstrenamecolumn:
13341            case sstrenamedatabase:
13342            case sstrenameindex:
13343            case sstrenametable:
13344                ret =  new TRenameStmt(pdbvendor);
13345                break;
13346            case sssethistorysession:
13347            case sstsetpse:
13348            case sstsetschema:
13349            case sstsetsystemlicense:
13350            case sstsettransaction:
13351            case sstsettransactionautocommit:
13352                ret =  new TSetDatabaseObjectStmt(pdbvendor);
13353                break;
13354            case ssttruncatecollection:
13355                ret =  new TTruncateCollectionStmt(pdbvendor);
13356                break;
13357            case sstvalidateLDAPProvider:
13358                ret =  new TValidateLDAPProviderStmt(pdbvendor);
13359                break;
13360            case sstvalidateUser:
13361                ret =  new TValidateUserStmt(pdbvendor);
13362                break;
13363            case sstupsert:
13364                ret =  new TUpsertStmt(pdbvendor);
13365                break;
13366            case sstsavepoint:
13367                {
13368                    lcisnewsql = true;
13369
13370                    if ( pstate != EFindSqlStateType.stnormal )
13371                    {
13372                        lcisnewsql = false;
13373    
13374                    }
13375                    if (lcisnewsql){
13376                    ret = new TSavepointStmt(pdbvendor);
13377                    ret.sqlstatementtype = gnewsqlstatementtype;
13378                    }
13379                    break;
13380                }                
13381            default:
13382            {
13383                ret =  new TUnknownSqlStatement(pdbvendor);
13384                ret.sqlstatementtype = gnewsqlstatementtype;
13385                break;
13386            }
13387        }    // case
13388
13389        return ret;
13390    }
13391
13392    TCustomSqlStatement mapTeradataUsing(TSourceToken ptoken){
13393        TCustomSqlStatement ret = null;
13394        TSourceToken lctoken = null;
13395        int lcnested = 0,k,j;
13396
13397        //using ... insert/select/delete/update/begin transaction
13398        int lcpos = ptoken.posinlist;
13399        TSourceTokenList lcsourcetokenlist = ptoken.container;
13400
13401        for (int i = lcpos + 1; i <  lcsourcetokenlist.size();i++)    // iterate
13402          {
13403            lctoken = lcsourcetokenlist.get(i);
13404              if ( (lctoken.tokencode == TBaseType.rrw_delete) )
13405                {
13406                  ret = new TDeleteSqlStatement(EDbVendor.dbvteradata);
13407                  gnewsqlstatementtype = ESqlStatementType.sstdelete;
13408                  break;
13409                }
13410              else if ( (lctoken.tokencode == TBaseType.rrw_insert) )
13411                {
13412                  ret = new TInsertSqlStatement(EDbVendor.dbvteradata);
13413                  gnewsqlstatementtype = ESqlStatementType.sstinsert;
13414                  break;
13415                }
13416              else if ( (lctoken.tokencode == TBaseType.rrw_select) )
13417                {
13418                  ret = new TSelectSqlStatement(EDbVendor.dbvteradata);
13419                  gnewsqlstatementtype = ESqlStatementType.sstselect;
13420                  break;
13421                }
13422              else if ( (lctoken.tokencode == TBaseType.rrw_update) )
13423                {
13424                  ret = new TUpdateSqlStatement(EDbVendor.dbvteradata);
13425                  gnewsqlstatementtype = ESqlStatementType.sstupdate;
13426                  break;
13427                }
13428              else if ( (lctoken.tokencode == TBaseType.rrw_begin) || (lctoken.tokencode == TBaseType.rrw_bt) )
13429                {
13430                  ret = new TTeradataBeginTransaction(EDbVendor.dbvteradata);
13431                  gnewsqlstatementtype = ESqlStatementType.sstteradatabegintransaction;
13432                  break;
13433                }
13434          }
13435        return ret;
13436    }
13437
13438/**
13439 * Analyzes a SQL token to determine if it starts a Common Table Expression (CTE) 
13440 * and returns the appropriate SQL statement object.
13441 *
13442 * This function handles CTEs that begin with "WITH" and can contain:
13443 * - SELECT statements
13444 * - INSERT statements  
13445 * - UPDATE statements
13446 * - DELETE statements
13447 * - MERGE statements
13448 * - VALUES clauses (PostgreSQL)
13449 *
13450 * Side Effects:
13451 * When a CTE is found, this function marks tokens as "ignored" to prevent them from being 
13452 * processed again during raw statement parsing:
13453 * 1. All tokens from after WITH up to and including the main statement keyword (SELECT/INSERT/etc.) 
13454 *    are marked with ETokenStatus.tsignoredbygetrawstatement
13455 * 2. For INSERT statements, additional tokens after INSERT up to VALUES/SELECT/EXECUTE/semicolon 
13456 *    are also marked as ignored
13457 * 
13458 * Example of ignored tokens:
13459 * WITH cte AS (SELECT * FROM t1)  -- these tokens marked as ignored
13460 * SELECT * FROM cte;             -- SELECT is also marked as ignored
13461 *                               -- parsing continues after SELECT
13462 *
13463 * @param ptoken The source token to analyze, expected to be a "WITH" keyword
13464 * @param pdbvendor The database vendor type (e.g. Oracle, SQL Server, etc.)
13465 * @return A TCustomSqlStatement object representing the CTE statement type found,
13466 *         or null if no valid CTE statement is detected
13467 */    
13468TCustomSqlStatement findcte(TSourceToken ptoken, EDbVendor pdbvendor){
13469    TCustomSqlStatement ret = null;
13470    TSourceToken lctoken = null;
13471    int lcnested = 0,k,j;
13472    boolean inXmlNamespaces = false;
13473    boolean isXmlNamespaces = false;
13474
13475    int lcpos = ptoken.posinlist;
13476    TSourceTokenList lcsourcetokenlist = ptoken.container;
13477
13478    for (int i = lcpos + 1; i <  lcsourcetokenlist.size();i++)    // iterate
13479      {
13480        lctoken = lcsourcetokenlist.get(i);
13481//        if (lctoken.tokencode == TBaseType.rrw_postgresql_recursive){
13482//            continue;
13483//        }
13484          if (lctoken.tokencode == TBaseType.rrw_xmlnamespaces){
13485              inXmlNamespaces = true;
13486              lcnested = 0;
13487              continue;
13488          }
13489          if (inXmlNamespaces) {
13490              if ( lctoken.tokentype == ETokenType.ttleftparenthesis)  lcnested++;
13491              if ( lctoken.tokentype == ETokenType.ttrightparenthesis) {
13492                  lcnested--;
13493                  if (lcnested == 0) {
13494                    inXmlNamespaces = false;
13495                    isXmlNamespaces = true;
13496                  }
13497              }
13498              continue;
13499          }
13500        if (( lctoken.tokencode == TBaseType.rrw_as ) || isXmlNamespaces)
13501          {
13502            lcnested = 0;
13503            int startPos = i+1;
13504            if (isXmlNamespaces) startPos = i;
13505            for ( j = startPos; j < lcsourcetokenlist.size();j++)
13506            {
13507              lctoken = lcsourcetokenlist.get(j);
13508              if (lctoken.isnonsolidtoken() ) continue;
13509              if ( lctoken.tokentype == ETokenType.ttleftparenthesis)  lcnested++;
13510              if ( lctoken.tokentype == ETokenType.ttrightparenthesis) lcnested--;
13511
13512
13513              if ( (lcnested == 0) && (lctoken.tokencode == TBaseType.rrw_delete) )
13514                {
13515                  ret = new TDeleteSqlStatement(pdbvendor);
13516                  ret.isctequery = true;
13517                  gnewsqlstatementtype = ESqlStatementType.sstdelete;
13518                  break;
13519                }
13520
13521                if ( (lcnested == 0) && (lctoken.tokencode == TBaseType.rrw_merge) )
13522                  {
13523                    ret = new TMergeSqlStatement(pdbvendor);
13524                    ret.isctequery = true;
13525                    gnewsqlstatementtype = ESqlStatementType.sstmerge;
13526                    break;
13527                  }
13528
13529              if ( (lcnested == 0) && (lctoken.tokencode == TBaseType.rrw_insert) )
13530                {
13531                  ret = new TInsertSqlStatement(pdbvendor);
13532                  ret.isctequery = true;
13533                  gnewsqlstatementtype = ESqlStatementType.sstinsert;
13534                  ret.dummytag = 1; //  select stmt in insert is permitted
13535
13536                  for ( k = lctoken.posinlist + 1; k < lcsourcetokenlist.size();k++)    // iterate
13537                  {
13538                    if ( lcsourcetokenlist.get(k).isnonsolidtoken()  ) continue;
13539                    if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_values ) break;
13540                    if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_go ) break;
13541                    if ( lcsourcetokenlist.get(k).tokentype == ETokenType.ttsemicolon ) break;
13542                    if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_select ) break;
13543                    if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_execute ) break;
13544                    if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_exec ) break;
13545                  }    // for
13546                  if ( k > lcsourcetokenlist.size() - 1 )
13547                    k = lcsourcetokenlist.size() - 1;
13548
13549                  for (int m = lctoken.posinlist + 1; m <=  k; m++)    // iterate
13550                  {
13551                    lcsourcetokenlist.get(m).tokenstatus = ETokenStatus.tsignoredbygetrawstatement;
13552                  }    // for
13553
13554                  break;
13555                }
13556
13557                if ( (lcnested == 0) && (lctoken.tokencode == TBaseType.rrw_values) &&(pdbvendor == EDbVendor.dbvpostgresql) )
13558                {
13559                        ret = new TSelectSqlStatement(pdbvendor);
13560                        ret.isctequery = true;
13561                        gnewsqlstatementtype = ESqlStatementType.sstselect;
13562                        break;
13563                }
13564
13565              if ( (lcnested == 0) && (lctoken.tokencode == TBaseType.rrw_select) )
13566                {
13567                  ret = new TSelectSqlStatement(pdbvendor);
13568                  ret.isctequery = true;
13569                  gnewsqlstatementtype = ESqlStatementType.sstselect;
13570                  break;
13571                }
13572
13573              if ( (lcnested == 0) && (lctoken.tokencode == TBaseType.rrw_update) )
13574                {
13575                  ret = new TUpdateSqlStatement(pdbvendor);
13576                  ret.isctequery = true;
13577                  ret.dummytag = 1; // means set clause in update is not found yet, used to seperate set clause from set statement
13578                  gnewsqlstatementtype = ESqlStatementType.sstupdate;
13579                  break;
13580                }
13581
13582                if ( (pdbvendor == EDbVendor.dbvhive) && (lcnested == 0) && (lctoken.tokencode == TBaseType.rrw_from) )
13583                {
13584                    TSourceToken cmdToken = lctoken.searchToken(TBaseType.rrw_insert,3);
13585                    if (cmdToken != null){
13586                        ret = new TInsertSqlStatement(pdbvendor);
13587                        ret.isctequery = true;
13588                        gnewsqlstatementtype = ESqlStatementType.sstinsert;
13589
13590                    }else{
13591                        ret = new TSelectSqlStatement(pdbvendor);
13592                        ret.isctequery = true;
13593                        gnewsqlstatementtype = ESqlStatementType.ssthiveFromQuery;
13594                    }
13595                    break;
13596                }
13597
13598
13599            }    // for
13600
13601            if ( (ret != null) )
13602              {
13603                for (k = lcpos + 1; k <= j;k++)    // iterate
13604                {
13605                  lcsourcetokenlist.get(k).tokenstatus = ETokenStatus.tsignoredbygetrawstatement;
13606                }    // for
13607                break;
13608              }
13609
13610          }
13611      }
13612
13613    return ret;
13614}
13615
13616  TCustomSqlStatement findMdxStmtBeginWithClause(TSourceToken ptoken, EDbVendor pdbvendor){
13617      TCustomSqlStatement ret = null;
13618      ret = new TMdxSelect(pdbvendor);
13619      ret.isctequery = true;
13620      gnewsqlstatementtype = ESqlStatementType.sstmdxselect;
13621      return ret;
13622 }
13623
13624 TCustomSqlStatement isdb2sql(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
13625    TCustomSqlStatement ret = null;
13626    int k;
13627    boolean lcisnewsql;
13628    TSourceToken lcpprevsolidtoken,lcnextsolidtoken;
13629
13630    gnewsqlstatementtype = ESqlStatementType.sstinvalid;
13631
13632    if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
13633       || (pcst.tokencode  == TBaseType.cmtslashstar)
13634       || (pcst.tokencode  == TBaseType.lexspace)
13635       || (pcst.tokencode  == TBaseType.lexnewline)
13636        || (pcst.tokentype == ETokenType.ttsemicolon) )
13637    {
13638      return ret;
13639    }
13640
13641    int lcpos = pcst.posinlist;
13642    TSourceTokenList lcsourcetokenlist = pcst.container;
13643    TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
13644
13645    //subquery after semicolon || at first line
13646    if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
13647      {
13648        k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
13649        if ( k >0 )
13650          {
13651            ret =  new TSelectSqlStatement(pdbvendor);
13652          }
13653
13654        return ret;
13655      }
13656
13657    //cte
13658    if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
13659      {
13660        ret = findcte(pcst,pdbvendor);
13661        if ( TBaseType.assigned(ret) )  return ret;
13662      }
13663
13664    //values
13665    if ( (pstate == EFindSqlStateType.stnormal) &&  (pcst.tokencode == TBaseType.rrw_values) )
13666      {
13667        ret =  new TSelectSqlStatement(pdbvendor);
13668        return ret;
13669      }
13670
13671    // db2 scriptoptions
13672    if ( pcst.tokencode == TBaseType.scriptoptions )
13673      {
13674        ret = new TDb2ScriptOptionStmt(pdbvendor);
13675        return ret;
13676      }
13677
13678    gnewsqlstatementtype = finddb2cmd(pcst);
13679
13680    TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
13681    switch(gnewsqlstatementtype) {   //
13682        case sstinvalid:
13683          {
13684            ret = null;
13685           if ( pcst.tokencode == TBaseType.rrw_begin )
13686          {
13687              ret = new TCommonBlock(pdbvendor);
13688              gnewsqlstatementtype = ret.sqlstatementtype;
13689          }
13690              break;
13691          }
13692        case sstselect:
13693          {
13694            lcisnewsql = true;
13695
13696            if ( pstate != EFindSqlStateType.stnormal )
13697              {
13698                // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
13699                if ( TBaseType.assigned(lcprevsolidtoken) )
13700                  {
13701                    if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
13702                      lcisnewsql = false; //subqery
13703                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
13704                      lcisnewsql = false;
13705                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
13706                      lcisnewsql = false;
13707                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
13708                      lcisnewsql = false;
13709                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
13710                      lcisnewsql = false;
13711                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
13712                      lcisnewsql = false;
13713                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
13714                      {
13715                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
13716                          lcisnewsql = false;
13717                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
13718                          lcisnewsql = false;
13719                      }
13720
13721                    if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
13722                      {
13723                        lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
13724                        if ( TBaseType.assigned(lcpprevsolidtoken) )
13725                          {
13726                            if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
13727                              lcisnewsql = false;
13728                          }
13729                      }
13730
13731                  }
13732
13733
13734                if ( TBaseType.assigned(lccurrentsqlstatement) )
13735                  {
13736                    if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
13737                    {
13738                      lcisnewsql = false;
13739                    }
13740                    else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstselect )
13741                      {
13742                        if ( lccurrentsqlstatement.isctequery )
13743                          lcisnewsql = false;
13744                      }
13745                  }
13746
13747              }
13748
13749            if ( lcisnewsql )
13750              ret =  new TSelectSqlStatement(pdbvendor);
13751              break;
13752          }
13753        case sstinsert:
13754          {
13755            lcisnewsql = true;
13756            if ( pstate != EFindSqlStateType.stnormal )
13757              {
13758                if ( TBaseType.assigned(lccurrentsqlstatement) )
13759                  {
13760
13761                  }
13762              }
13763
13764            if ( lcisnewsql )
13765              ret =  new TInsertSqlStatement(pdbvendor);
13766              break;
13767          }
13768        case sstupdate:
13769          {
13770            lcisnewsql = true;
13771            if ( pstate != EFindSqlStateType.stnormal )
13772              {
13773                lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
13774                if ( TBaseType.assigned(lcprevsolidtoken) )
13775                  { //
13776                    if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
13777                      lcisnewsql = false;
13778                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
13779                      lcisnewsql = false;
13780                  }
13781
13782                lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
13783                if ( TBaseType.assigned(lcnextsolidtoken) )
13784                  {
13785                    if ( lcnextsolidtoken.tokentype == ETokenType.ttleftparenthesis)
13786                      {
13787                        k = lcsourcetokenlist.solidtokenafterpos(lcnextsolidtoken.posinlist,TBaseType.rrw_select,1,"(");
13788                        if ( k  == 0 ) lcisnewsql = false;
13789                      }
13790                  }
13791
13792
13793                if ( TBaseType.assigned(lccurrentsqlstatement) )
13794                  {
13795                  }
13796              }
13797
13798            if ( lcisnewsql )
13799              {
13800                ret =  new TUpdateSqlStatement(pdbvendor);
13801                ret.dummytag = 1; // means set clause in update is not found yet, used to seperate set clause from set statement
13802              }
13803              break;
13804          }
13805        case sstdelete:
13806          {
13807            lcisnewsql = true;
13808
13809            if ( pstate != EFindSqlStateType.stnormal )
13810              {
13811                lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
13812                if ( TBaseType.assigned(lcprevsolidtoken) )
13813                  {
13814                    if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
13815                      lcisnewsql = false;
13816                  }
13817
13818                if ( TBaseType.assigned(lccurrentsqlstatement) )
13819                  {
13820                  }
13821              }
13822
13823            if ( lcisnewsql )
13824              ret =  new TDeleteSqlStatement(pdbvendor);
13825              break;
13826          }
13827        case sstmerge:
13828          {
13829            ret =  new TMergeSqlStatement(pdbvendor);
13830            ret.sqlstatementtype = gnewsqlstatementtype;
13831              break;
13832          }
13833        case sstcommit:
13834          {
13835            ret =  new TUnknownSqlStatement(pdbvendor);
13836            ret.sqlstatementtype = gnewsqlstatementtype;
13837              break;
13838          }
13839        case sstrollback:
13840          {
13841            ret =  new TUnknownSqlStatement(pdbvendor);
13842            ret.sqlstatementtype = gnewsqlstatementtype;
13843              break;
13844          }
13845        case sstsavepoint:
13846          {
13847            ret =  new TUnknownSqlStatement(pdbvendor);
13848            ret.sqlstatementtype = gnewsqlstatementtype;
13849              break;
13850          }
13851        case sstRevoke:
13852          {
13853            ret =  new TUnknownSqlStatement(pdbvendor);
13854            ret.sqlstatementtype = gnewsqlstatementtype;
13855              break;
13856          }
13857        case sstcreatetable:
13858          {
13859            ret =  new TCreateTableSqlStatement(pdbvendor);
13860              break;
13861          }
13862        case sstcreateview:
13863          {
13864            ret =  new TCreateViewSqlStatement(pdbvendor);
13865              break;
13866          }
13867        case sstcreateindex:
13868          {
13869            ret =  new TCreateIndexSqlStatement(pdbvendor);
13870              break;
13871          }
13872        case sstcreatedatabase:
13873          {
13874            ret =  new TCreateDatabaseSqlStatement(pdbvendor);
13875              break;
13876          }
13877        case sstdroptable:
13878          {
13879            ret =  new TDropTableSqlStatement(pdbvendor);
13880              break;
13881          }
13882        case sstdropview:
13883          {
13884            ret =  new TDropViewSqlStatement(pdbvendor);
13885              break;
13886          }
13887        case sstdropindex:
13888          {
13889            ret =  new TDropIndexSqlStatement(pdbvendor);
13890              break;
13891          }
13892        case sstaltertable:
13893          {
13894            ret =  new TAlterTableStatement(pdbvendor);
13895              break;
13896          }
13897        case sstaltersession:
13898          {
13899            ret =  new TAlterSessionStatement(pdbvendor);
13900              break;
13901          }
13902        case sstdb2set:
13903          {
13904            ret = new TDb2SetVariableStmt(pdbvendor);
13905              break;
13906          }
13907        case sstdb2setschema:
13908        {
13909            ret = new TSetDatabaseObjectStmt(pdbvendor);
13910            break;
13911        }
13912        case sstdb2call:
13913          {
13914            ret = new TDb2CallStmt(pdbvendor);
13915              break;
13916          }
13917        case sstdb2declarecursor:
13918          {
13919            ret = new TDb2DeclareCursorStatement(pdbvendor);
13920              break;
13921          }
13922        case sstcreateprocedure:
13923          {
13924            ret = new TCreateProcedureStmt(pdbvendor);
13925              break;
13926          }
13927        case sstcreatefunction:
13928          {
13929            ret = new TCreateFunctionStmt(pdbvendor);
13930              break;
13931          }
13932        case sstdb2createtrigger:
13933          {
13934            ret = new TCreateTriggerStmt(pdbvendor);
13935              break;
13936          }
13937        case sstdb2return:
13938          {
13939            ret = new TDb2ReturnStmt(pdbvendor);
13940              break;
13941          }
13942      case sstdb2refreshtable:
13943      case sstdb2connect:
13944      case sstdb2terminate:
13945      case sstdb2execute:
13946          {
13947            ret = new TDb2DummyStmt(pdbvendor);
13948              break;
13949          }
13950        case sstdb2createalias:
13951        {
13952            ret = new TCreateAliasStmt(pdbvendor);
13953            break;
13954        }
13955        case sstcreateauditpolicy:
13956            ret =  new TCreateAuditPolicyStmt(pdbvendor);
13957            break;
13958        case sstdb2comment:
13959            ret =  new TCommentOnSqlStmt(pdbvendor);
13960            break;
13961        case sstdb2createvariable:
13962            ret =  new TCreateVariableStmt(pdbvendor);
13963            break;
13964        case sstcreaterole:
13965            ret =  new TCreateRoleStmt(pdbvendor);
13966            break;
13967        case sstcreateTablespace:
13968            ret =  new TCreateTablespaceStmt(pdbvendor);
13969            break;
13970        case sstRunStats:
13971            ret =  new TRunStats(pdbvendor);
13972            break;
13973        case ssttruncatetable:
13974        {
13975            ret =  new TTruncateStatement(pdbvendor);
13976            break;
13977        }
13978        case sstcreatesynonym:
13979            ret = new TCreateSynonymStmt(pdbvendor);
13980            break;        
13981        default:
13982          {
13983            // ret = tdb2dummystmt.create(pdbvendor);
13984            ret =  new TUnknownSqlStatement(pdbvendor);
13985            ret.sqlstatementtype = gnewsqlstatementtype;
13986              break;
13987          }
13988    }    // case
13989
13990    return ret;
13991}
13992
13993    public TCustomSqlStatement issql(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
13994        TCustomSqlStatement ret = null;
13995        if (pcst == null) return null;
13996
13997        switch (pdbvendor){
13998            case dbvoracle: {
13999                ret = isoraclesql(pcst,pdbvendor,pstate,psqlstatement);
14000                break;
14001            }
14002            case dbvdameng: {
14003                ret = isoraclesql(pcst,pdbvendor,pstate,psqlstatement);
14004                break;
14005            }
14006            case dbvmssql: {
14007                ret = ismssqlsql(pcst, pdbvendor, pstate, psqlstatement);
14008                break;
14009            }
14010            case dbvdb2: {
14011                ret = isdb2sql(pcst, pdbvendor, pstate, psqlstatement);
14012                break;
14013            }
14014            case dbvmysql: {
14015                ret = ismysqlsql(pcst, pdbvendor, pstate, psqlstatement);
14016                break;
14017            }
14018            case dbvaccess: {
14019                ret = ismssqlsql(pcst, pdbvendor, pstate, psqlstatement);
14020                break;
14021            }
14022            case dbvteradata: {
14023                ret = isteradatasql(pcst, pdbvendor, pstate, psqlstatement);
14024                break;
14025            }
14026            case dbvpostgresql: {
14027                ret = ispostgresql(pcst, pdbvendor, pstate, psqlstatement);
14028                break;
14029            }
14030            case dbvredshift: {
14031                ret = isredshift(pcst, pdbvendor, pstate, psqlstatement);
14032                break;
14033            }
14034            case dbvgreenplum: {
14035                ret = isgreenplum(pcst,pdbvendor,pstate,psqlstatement);
14036                break;
14037            }
14038            case dbvmdx:{
14039                ret = ismdxsql(pcst, pdbvendor, pstate, psqlstatement);
14040                break;
14041            }
14042            case dbvnetezza:{
14043                ret = isnetezza(pcst, pdbvendor, pstate, psqlstatement);
14044                break;
14045            }
14046            case dbvsybase:{
14047                ret = issybasesql(pcst, pdbvendor, pstate, psqlstatement);
14048                break;
14049            }
14050            case dbvsybasease:{
14051                ret = issybaseasesql(pcst, pdbvendor, pstate, psqlstatement);
14052                break;
14053            }
14054            case dbvsqlanywhere:{
14055                ret = issqlanywheresql(pcst, pdbvendor, pstate, psqlstatement);
14056                break;
14057            }
14058            case dbvsybaseiq:{
14059                ret = issybaseiqsql(pcst, pdbvendor, pstate, psqlstatement);
14060                break;
14061            }
14062            case dbvinformix:{
14063                ret = isinformixsql(pcst, pdbvendor, pstate, psqlstatement);
14064                break;
14065            }
14066            case dbvhive:{
14067                ret = ishive(pcst, pdbvendor, pstate, psqlstatement);
14068                break;
14069            }
14070            case dbvimpala:{
14071                ret = ishive(pcst, pdbvendor, pstate, psqlstatement);
14072                break;
14073            }
14074            case dbvhana:{
14075                ret = ishana(pcst, pdbvendor, pstate, psqlstatement);
14076                break;
14077            }
14078            case dbvvertica:{
14079                ret = isvertica(pcst, pdbvendor, pstate, psqlstatement);
14080                break;
14081            }
14082            case dbvcouchbase:{
14083                ret = iscouchbase(pcst, pdbvendor, pstate, psqlstatement);
14084                break;
14085            }
14086            case dbvsnowflake:{
14087                ret = issnowflake(pcst, pdbvendor, pstate, psqlstatement);
14088                break;
14089            }
14090            case dbvbigquery:{
14091                ret = isbigquery(pcst, pdbvendor, pstate, psqlstatement);
14092                break;
14093            }
14094            case dbvsoql:{
14095                ret = ismssqlsql(pcst,pdbvendor,pstate,psqlstatement);
14096                break;
14097            }
14098            case dbvsparksql:{
14099                ret = issparksql(pcst,pdbvendor,pstate,psqlstatement);
14100                break;
14101            }
14102            case dbvpresto:{
14103                ret = ispresto(pcst,pdbvendor,pstate,psqlstatement);
14104                break;
14105            }
14106            case dbvathena:{
14107                ret = isathena(pcst,pdbvendor,pstate,psqlstatement);
14108                break;
14109            }
14110            case dbvdatabricks:{
14111                ret = isdatabricks(pcst,pdbvendor,pstate,psqlstatement);
14112                break;
14113            }
14114            case dbvgaussdb:{
14115                ret = isgaussdb(pcst,pdbvendor,pstate,psqlstatement);
14116                break;
14117            }
14118            default:
14119            {
14120                ret = ismssqlsql(pcst,pdbvendor,pstate,psqlstatement);
14121            }
14122        }    // case
14123        return ret;
14124    }
14125    TCustomSqlStatement isdatabricks(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
14126
14127        TCustomSqlStatement ret = null;
14128        int k;
14129        boolean lcisnewsql;
14130        TSourceToken lcpprevsolidtoken,lcnextsolidtoken;
14131
14132        gnewsqlstatementtype = ESqlStatementType.sstinvalid;
14133
14134        if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
14135                || (pcst.tokencode  == TBaseType.cmtslashstar)
14136                || (pcst.tokencode  == TBaseType.lexspace)
14137                || (pcst.tokencode  == TBaseType.lexnewline)
14138                || (pcst.tokentype == ETokenType.ttsemicolon) )
14139        {
14140            return ret;
14141        }
14142
14143        int lcpos = pcst.posinlist;
14144        TSourceTokenList lcsourcetokenlist = pcst.container;
14145        TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
14146
14147        //subquery after semicolon || at first line
14148        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
14149        {
14150            k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
14151            if ( k >0 )
14152            {
14153                ret =  new TSelectSqlStatement(pdbvendor);
14154            }
14155
14156            return ret;
14157        }
14158
14159        //cte
14160        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
14161        {
14162            ret = findcte(pcst,pdbvendor);
14163            if ( (ret != null) )  return ret;
14164        }
14165
14166
14167        gnewsqlstatementtype = finddatabrickscmd(pcst);
14168
14169        TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
14170
14171        if ((gnewsqlstatementtype == ESqlStatementType.sstinvalid)&&(pcst.tokencode == TBaseType.rrw_create)){
14172            //if (pcst.container.nextsolidtoken(pcst.posinlist,15,))
14173            TSourceToken viewToken = pcst.container.searchToken(TBaseType.rrw_view,"",pcst,15);
14174            if (viewToken != null){
14175                gnewsqlstatementtype = ESqlStatementType.sstcreateview;
14176            }
14177        }
14178        switch (gnewsqlstatementtype){
14179            case sstinvalid:
14180            {
14181                ret = null;
14182                break;
14183            }
14184            case sstselect:
14185            {
14186                lcisnewsql = true;
14187
14188                if ( pstate != EFindSqlStateType.stnormal )
14189                {
14190                    // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
14191                    if ( TBaseType.assigned(lcprevsolidtoken) )
14192                    {
14193                        if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
14194                            lcisnewsql = false; //subqery
14195                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
14196                            lcisnewsql = false;
14197                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
14198                            lcisnewsql = false;
14199                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
14200                            lcisnewsql = false;
14201                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
14202                            lcisnewsql = false;
14203                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
14204                            lcisnewsql = false;
14205                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
14206                        {
14207                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
14208                                lcisnewsql = false;
14209                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
14210                                lcisnewsql = false;
14211                        }
14212
14213                        if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
14214                        {
14215                            lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
14216                            if ( TBaseType.assigned(lcpprevsolidtoken) )
14217                            {
14218                                if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
14219                                    lcisnewsql = false;
14220                            }
14221                        }
14222
14223                    }
14224
14225
14226                    if ( TBaseType.assigned(lccurrentsqlstatement) )
14227                    {
14228                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
14229                            lcisnewsql = false;
14230                    }
14231
14232                }
14233
14234                if ( lcisnewsql )
14235                    ret =  new TSelectSqlStatement(pdbvendor);
14236                break;
14237            }
14238            case sstinsert:
14239            {
14240                lcisnewsql = true;
14241                if ( pstate != EFindSqlStateType.stnormal )
14242                {
14243                    if ( TBaseType.assigned(lccurrentsqlstatement) )
14244                    {
14245
14246                    }
14247                }
14248
14249                if ( lcisnewsql )
14250                    ret =  new TInsertSqlStatement(pdbvendor);
14251                ret.sqlstatementtype = gnewsqlstatementtype;
14252                break;
14253            }
14254            case sstdelete:
14255            {
14256                lcisnewsql = true;
14257
14258                if ( pstate != EFindSqlStateType.stnormal )
14259                {
14260                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
14261                    if ( TBaseType.assigned(lcprevsolidtoken) )
14262                    {
14263                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
14264                            lcisnewsql = false;
14265                    }
14266
14267                    if ( TBaseType.assigned(lccurrentsqlstatement) )
14268                    {
14269                    }
14270                }
14271
14272                if ( lcisnewsql )
14273                    ret =  new TDeleteSqlStatement(pdbvendor);
14274                break;
14275            }
14276            case sstaltertable:
14277            {
14278                ret =  new TAlterTableStatement(pdbvendor);
14279                break;
14280            }
14281            case sstalterfunction:
14282            {
14283                ret =  new TAlterFunctionStmt(pdbvendor);
14284                break;
14285            }
14286            case sstAlterSchema:
14287            {
14288                ret =  new TAlterSchemaStmt(pdbvendor);
14289                break;
14290            }
14291            case sstanalyzeTable:
14292            {
14293                ret = new TAnalyzeStmt(pdbvendor);
14294                break;
14295            }
14296            case sstcall:
14297            {
14298                ret =  new TCallStatement(pdbvendor);
14299                break;
14300            }
14301            case sstcommit:
14302            {
14303                ret =  new TCommitStmt(pdbvendor);
14304                break;
14305            }
14306            case sstcreatefunction:
14307            {
14308                ret =  new TCreateFunctionStmt(pdbvendor);
14309                break;
14310            }
14311            case sstcreaterole:
14312            {
14313                ret =  new TCreateRoleStmt(pdbvendor);
14314                break;
14315            }
14316            case sstcreateschema:
14317            {
14318                ret =  new TCreateSchemaSqlStatement(pdbvendor);
14319                break;
14320            }
14321            case sstcreatetable:
14322            {
14323                ret =  new TCreateTableSqlStatement(pdbvendor);
14324                break;
14325            }
14326            case sstcreateview:
14327            {
14328                ret =  new TCreateViewSqlStatement(pdbvendor);
14329                break;
14330            }
14331            case sstpostgresqlDeallocate:
14332            {
14333                ret =  new TUnknownSqlStatement(pdbvendor);
14334                ret.sqlstatementtype = gnewsqlstatementtype;
14335                break;
14336            }
14337            case sstdropfunction:
14338            {
14339                ret =  new TDropFunctionStmt(pdbvendor);
14340                break;
14341            }
14342            case sstdroprole:
14343            {
14344                ret =  new TDropRoleStmt(pdbvendor);
14345                break;
14346            }
14347            case sstdropschema:
14348            {
14349                ret =  new TDropSchemaSqlStatement(pdbvendor);
14350                break;
14351            }
14352            case sstdroptable:
14353            {
14354                ret =  new TDropTableSqlStatement(pdbvendor);
14355                break;
14356            }
14357            case sstdropview:
14358            {
14359                ret =  new TDropViewSqlStatement(pdbvendor);
14360                break;
14361            }
14362            case sstExecute:
14363            {
14364                ret =  new TExecuteSqlStatement(pdbvendor);
14365                break;
14366            }
14367            case sstExplain:
14368            {
14369                ret =  new TExplainPlan(pdbvendor);
14370                break;
14371            }
14372            case sstGrant:
14373            {
14374                ret =  new TGrantStmt(pdbvendor);
14375                break;
14376            }
14377            case sstprepare:
14378            {
14379                ret =  new TPrepareStmt(pdbvendor);
14380                break;
14381            }
14382            case sstset:
14383            case sstReset:
14384            {
14385                lcisnewsql = true;
14386                if ( pstate != EFindSqlStateType.stnormal )
14387                {
14388                    if ( TBaseType.assigned(lccurrentsqlstatement) )
14389                    {
14390                        lcisnewsql = false;
14391                    }
14392                }
14393
14394                if ( lcisnewsql )
14395                {
14396                    ret =  new TSetStmt(pdbvendor);
14397                }
14398                break;
14399            }
14400            case sstShow:
14401            {
14402                ret = new TShowStmt(pdbvendor);
14403                ret.sqlstatementtype = gnewsqlstatementtype;
14404                break;
14405            }
14406            case sstStartTransaction:
14407            {
14408                ret = new TStartTransactionStmt(pdbvendor);
14409                break;
14410            }
14411            case sstValues:
14412            {
14413                ret =  new TSelectSqlStatement(pdbvendor);
14414                break;
14415            }
14416            case sstResetSession:
14417            {
14418                ret =  new TResetSessionStmt(pdbvendor);
14419                break;
14420            }
14421            case sstCreateExternallocation:
14422                ret = new TCreateExternalLocationStmt(pdbvendor);
14423                break;
14424            case sstList:
14425            {
14426                ret = new TListStmt(pdbvendor);
14427                break;
14428            }
14429            case sstRevoke:
14430                ret = new TRevokeStmt(pdbvendor);
14431                break;
14432            case sstaltercredental:
14433                ret = new TAlterCredentialStmt(pdbvendor);
14434                break;
14435            case sstdescribeCatalog:
14436            case  sstdescribeFunction:
14437            case   sstdescribeProvider:
14438            case   sstdescribeQuery:
14439            case   sstdescribeRecipient:
14440            case   sstdescribeSchema:
14441            case    sstdescribeShare:
14442            case    sstdescribeTable:
14443            case    sstdescribeDatabase:
14444            case    sstdescribeLocation:
14445            case    sstdescribeCredential:
14446            case    sstdescribe:
14447                ret = new TDescribeStmt(pdbvendor);
14448                break;
14449            case sstUseCatalog:
14450            case sstUseSchema:
14451            case sstUseDatabase:
14452            case sstUse:
14453                ret = new TUseDatabase(pdbvendor);
14454                break;
14455            case sstAnalyzeTable:
14456                ret = new TAnalyzeStmt(pdbvendor);
14457                break;
14458            case sstCreategroup:
14459                ret = new TCreateGroup(pdbvendor);
14460                break;
14461            case sstAlterGroup:
14462                ret = new TAlterGroup(pdbvendor);
14463                break;
14464            case sstDeny:
14465                ret = new TDenyStmt(pdbvendor);
14466                break;
14467            case sstDropGroup:
14468                ret = new TDropGroup(pdbvendor);
14469                break;
14470            case sstmsckrepairtable:
14471                 ret = new TMSCKStmt(pdbvendor);
14472                break;
14473            case sstcreatecatalog:
14474                ret = new TCreateCatalogStmt(pdbvendor);
14475                break;
14476            case sstConvertToDelta:
14477                ret = new TConvertToDeltaStmt(pdbvendor);
14478                break;
14479            case sstOptimize:
14480                ret = new TOptimizeStmt(pdbvendor);
14481                break;
14482            case sstRestoreTable:
14483                ret = new TRestoreTableStmt(pdbvendor);
14484                break;
14485            case sstReorgTable:
14486                ret = new TReorgTableStmt(pdbvendor);
14487                    break;
14488            case sstVacuum:
14489                ret = new TVacuumStmt(pdbvendor);
14490                break;
14491            case sstmerge:
14492                ret = new TMergeSqlStatement(pdbvendor);
14493                break;
14494            default:
14495            {
14496                ret =  new TUnknownSqlStatement(pdbvendor);
14497                ret.sqlstatementtype = gnewsqlstatementtype;
14498                break;
14499            }
14500        }    // case
14501
14502        return ret;
14503
14504    }
14505    TCustomSqlStatement ispresto(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
14506
14507        TCustomSqlStatement ret = null;
14508        int k;
14509        boolean lcisnewsql;
14510        TSourceToken lcpprevsolidtoken,lcnextsolidtoken;
14511
14512        gnewsqlstatementtype = ESqlStatementType.sstinvalid;
14513
14514        if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
14515                || (pcst.tokencode  == TBaseType.cmtslashstar)
14516                || (pcst.tokencode  == TBaseType.lexspace)
14517                || (pcst.tokencode  == TBaseType.lexnewline)
14518                || (pcst.tokentype == ETokenType.ttsemicolon) )
14519        {
14520            return ret;
14521        }
14522
14523        int lcpos = pcst.posinlist;
14524        TSourceTokenList lcsourcetokenlist = pcst.container;
14525        TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
14526
14527        //subquery after semicolon || at first line
14528        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
14529        {
14530            k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
14531            if ( k >0 )
14532            {
14533                ret =  new TSelectSqlStatement(pdbvendor);
14534            }
14535
14536            return ret;
14537        }
14538
14539        //cte
14540        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
14541        {
14542            ret = findcte(pcst,pdbvendor);
14543            if ( (ret != null) )  return ret;
14544        }
14545
14546
14547        gnewsqlstatementtype = findprestocmd(pcst);
14548
14549        TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
14550
14551        if ((gnewsqlstatementtype == ESqlStatementType.sstinvalid)&&(pcst.tokencode == TBaseType.rrw_create)){
14552            //if (pcst.container.nextsolidtoken(pcst.posinlist,15,))
14553            TSourceToken viewToken = pcst.container.searchToken(TBaseType.rrw_view,"",pcst,15);
14554            if (viewToken != null){
14555                gnewsqlstatementtype = ESqlStatementType.sstcreateview;
14556            }
14557        }
14558        switch (gnewsqlstatementtype){
14559            case sstinvalid:
14560            {
14561                ret = null;
14562                break;
14563            }
14564            case sstselect:
14565            {
14566                lcisnewsql = true;
14567
14568                if ( pstate != EFindSqlStateType.stnormal )
14569                {
14570                    // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
14571                    if ( TBaseType.assigned(lcprevsolidtoken) )
14572                    {
14573                        if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
14574                            lcisnewsql = false; //subqery
14575                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
14576                            lcisnewsql = false;
14577                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
14578                            lcisnewsql = false;
14579                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
14580                            lcisnewsql = false;
14581                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
14582                            lcisnewsql = false;
14583                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
14584                            lcisnewsql = false;
14585                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
14586                        {
14587                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
14588                                lcisnewsql = false;
14589                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
14590                                lcisnewsql = false;
14591                        }
14592
14593                        if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
14594                        {
14595                            lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
14596                            if ( TBaseType.assigned(lcpprevsolidtoken) )
14597                            {
14598                                if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
14599                                    lcisnewsql = false;
14600                            }
14601                        }
14602
14603                    }
14604
14605
14606                    if ( TBaseType.assigned(lccurrentsqlstatement) )
14607                    {
14608                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
14609                            lcisnewsql = false;
14610                    }
14611
14612                }
14613
14614                if ( lcisnewsql )
14615                    ret =  new TSelectSqlStatement(pdbvendor);
14616                break;
14617            }
14618            case sstinsert:
14619            {
14620                lcisnewsql = true;
14621                if ( pstate != EFindSqlStateType.stnormal )
14622                {
14623                    if ( TBaseType.assigned(lccurrentsqlstatement) )
14624                    {
14625
14626                    }
14627                }
14628
14629                if ( lcisnewsql )
14630                    ret =  new TInsertSqlStatement(pdbvendor);
14631                ret.sqlstatementtype = gnewsqlstatementtype;
14632                break;
14633            }
14634            case sstdelete:
14635            {
14636                lcisnewsql = true;
14637
14638                if ( pstate != EFindSqlStateType.stnormal )
14639                {
14640                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
14641                    if ( TBaseType.assigned(lcprevsolidtoken) )
14642                    {
14643                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
14644                            lcisnewsql = false;
14645                    }
14646
14647                    if ( TBaseType.assigned(lccurrentsqlstatement) )
14648                    {
14649                    }
14650                }
14651
14652                if ( lcisnewsql )
14653                    ret =  new TDeleteSqlStatement(pdbvendor);
14654                break;
14655            }
14656            case sstaltertable:
14657            {
14658                ret =  new TAlterTableStatement(pdbvendor);
14659                break;
14660            }
14661            case sstalterfunction:
14662            {
14663                ret =  new TAlterFunctionStmt(pdbvendor);
14664                break;
14665            }
14666            case sstAlterSchema:
14667            {
14668                ret =  new TAlterSchemaStmt(pdbvendor);
14669                break;
14670            }
14671            case sstanalyzeTable:
14672            {
14673                ret = new TAnalyzeStmt(pdbvendor);
14674                break;
14675            }
14676            case sstcall:
14677            {
14678                ret =  new TCallStatement(pdbvendor);
14679                break;
14680            }
14681            case sstcommit:
14682            {
14683                ret =  new TCommitStmt(pdbvendor);
14684                break;
14685            }
14686            case sstcreatefunction:
14687            {
14688                ret =  new TCreateFunctionStmt(pdbvendor);
14689                break;
14690            }
14691            case sstcreaterole:
14692            {
14693                ret =  new TCreateRoleStmt(pdbvendor);
14694                break;
14695            }
14696            case sstcreateschema:
14697            {
14698                ret =  new TCreateSchemaSqlStatement(pdbvendor);
14699                break;
14700            }
14701            case sstcreatetable:
14702            {
14703                ret =  new TCreateTableSqlStatement(pdbvendor);
14704                break;
14705            }
14706            case sstcreateview:
14707            {
14708                ret =  new TCreateViewSqlStatement(pdbvendor);
14709                break;
14710            }
14711            case sstpostgresqlDeallocate:
14712            {
14713                ret =  new TUnknownSqlStatement(pdbvendor);
14714                ret.sqlstatementtype = gnewsqlstatementtype;
14715                break;
14716            }
14717            case sstdescribe:
14718            {
14719                ret =  new TDescribeStmt(pdbvendor);
14720                break;
14721            }
14722            case sstdropfunction:
14723            {
14724                ret =  new TDropFunctionStmt(pdbvendor);
14725                break;
14726            }
14727            case sstdroprole:
14728            {
14729                ret =  new TDropRoleStmt(pdbvendor);
14730                break;
14731            }
14732            case sstdropschema:
14733            {
14734                ret =  new TDropSchemaSqlStatement(pdbvendor);
14735                break;
14736            }
14737            case sstdroptable:
14738            {
14739                ret =  new TDropTableSqlStatement(pdbvendor);
14740                break;
14741            }
14742            case sstdropview:
14743            {
14744                ret =  new TDropViewSqlStatement(pdbvendor);
14745                break;
14746            }
14747            case sstExecute:
14748            {
14749                ret =  new TExecuteSqlStatement(pdbvendor);
14750                break;
14751            }
14752            case sstExplain:
14753            {
14754                ret =  new TExplainPlan(pdbvendor);
14755                break;
14756            }
14757            case sstGrant:
14758            {
14759                ret =  new TGrantStmt(pdbvendor);
14760                break;
14761            }
14762            case sstprepare:
14763            {
14764                ret =  new TPrepareStmt(pdbvendor);
14765                break;
14766            }
14767            case sstset:
14768            case sstReset:
14769            {
14770                lcisnewsql = true;
14771                if ( pstate != EFindSqlStateType.stnormal )
14772                {
14773                    if ( TBaseType.assigned(lccurrentsqlstatement) )
14774                    {
14775                        lcisnewsql = false;
14776                    }
14777                }
14778
14779                if ( lcisnewsql )
14780                {
14781                    ret =  new TSetStmt(pdbvendor);
14782                }
14783                break;
14784            }
14785            case sstShow:
14786            {
14787                ret = new TShowStmt(pdbvendor);
14788                ret.sqlstatementtype = gnewsqlstatementtype;
14789                break;
14790            }
14791            case sstStartTransaction:
14792            {
14793                ret = new TStartTransactionStmt(pdbvendor);
14794                break;
14795            }
14796            case sstUse:
14797            {
14798                ret =  new TUseDatabase(pdbvendor);
14799                break;
14800            }
14801            case sstValues:
14802            {
14803                ret =  new TSelectSqlStatement(pdbvendor);
14804                break;
14805            }
14806            case sstResetSession:
14807            {
14808                ret =  new TResetSessionStmt(pdbvendor);
14809                break;
14810            }
14811            default:
14812            {
14813                ret =  new TUnknownSqlStatement(pdbvendor);
14814                ret.sqlstatementtype = gnewsqlstatementtype;
14815                break;
14816            }
14817        }    // case
14818
14819        return ret;
14820
14821    }
14822    TCustomSqlStatement isathena(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
14823
14824        TCustomSqlStatement ret = null;
14825        int k;
14826        boolean lcisnewsql;
14827        TSourceToken lcpprevsolidtoken,lcnextsolidtoken;
14828
14829        gnewsqlstatementtype = ESqlStatementType.sstinvalid;
14830
14831        if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
14832                || (pcst.tokencode  == TBaseType.cmtslashstar)
14833                || (pcst.tokencode  == TBaseType.lexspace)
14834                || (pcst.tokencode  == TBaseType.lexnewline)
14835                || (pcst.tokentype == ETokenType.ttsemicolon) )
14836        {
14837            return ret;
14838        }
14839
14840        int lcpos = pcst.posinlist;
14841        TSourceTokenList lcsourcetokenlist = pcst.container;
14842        TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
14843
14844        //subquery after semicolon || at first line
14845        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
14846        {
14847            k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
14848            if ( k >0 )
14849            {
14850                ret =  new TSelectSqlStatement(pdbvendor);
14851            }
14852
14853            return ret;
14854        }
14855
14856        //cte
14857        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
14858        {
14859            ret = findcte(pcst,pdbvendor);
14860            if ( (ret != null) )  return ret;
14861        }
14862
14863
14864        gnewsqlstatementtype = findathenacmd(pcst);
14865
14866        TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
14867
14868        if ((gnewsqlstatementtype == ESqlStatementType.sstinvalid)&&(pcst.tokencode == TBaseType.rrw_create)){
14869            //if (pcst.container.nextsolidtoken(pcst.posinlist,15,))
14870            TSourceToken viewToken = pcst.container.searchToken(TBaseType.rrw_view,"",pcst,15);
14871            if (viewToken != null){
14872                gnewsqlstatementtype = ESqlStatementType.sstcreateview;
14873            }
14874        }
14875        switch (gnewsqlstatementtype){
14876            case sstinvalid:
14877            {
14878                ret = null;
14879                break;
14880            }
14881            case sstselect:
14882            {
14883                lcisnewsql = true;
14884
14885                if ( pstate != EFindSqlStateType.stnormal )
14886                {
14887                    // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
14888                    if ( TBaseType.assigned(lcprevsolidtoken) )
14889                    {
14890                        if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
14891                            lcisnewsql = false; //subqery
14892                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
14893                            lcisnewsql = false;
14894                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
14895                            lcisnewsql = false;
14896                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
14897                            lcisnewsql = false;
14898                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
14899                            lcisnewsql = false;
14900                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
14901                            lcisnewsql = false;
14902                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
14903                        {
14904                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
14905                                lcisnewsql = false;
14906                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
14907                                lcisnewsql = false;
14908                        }
14909
14910                        if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
14911                        {
14912                            lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
14913                            if ( TBaseType.assigned(lcpprevsolidtoken) )
14914                            {
14915                                if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
14916                                    lcisnewsql = false;
14917                            }
14918                        }
14919
14920                    }
14921
14922
14923                    if ( TBaseType.assigned(lccurrentsqlstatement) )
14924                    {
14925                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
14926                            lcisnewsql = false;
14927                    }
14928
14929                }
14930
14931                if ( lcisnewsql )
14932                    ret =  new TSelectSqlStatement(pdbvendor);
14933                break;
14934            }
14935            case sstinsert:
14936            {
14937                lcisnewsql = true;
14938                if ( pstate != EFindSqlStateType.stnormal )
14939                {
14940                    if ( TBaseType.assigned(lccurrentsqlstatement) )
14941                    {
14942
14943                    }
14944                }
14945
14946                if ( lcisnewsql )
14947                    ret =  new TInsertSqlStatement(pdbvendor);
14948                ret.sqlstatementtype = gnewsqlstatementtype;
14949                break;
14950            }
14951            case sstdelete:
14952            {
14953                lcisnewsql = true;
14954
14955                if ( pstate != EFindSqlStateType.stnormal )
14956                {
14957                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
14958                    if ( TBaseType.assigned(lcprevsolidtoken) )
14959                    {
14960                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
14961                            lcisnewsql = false;
14962                    }
14963
14964                    if ( TBaseType.assigned(lccurrentsqlstatement) )
14965                    {
14966                    }
14967                }
14968
14969                if ( lcisnewsql )
14970                    ret =  new TDeleteSqlStatement(pdbvendor);
14971                break;
14972            }
14973            case sstaltertable:
14974            {
14975                ret =  new TAlterTableStatement(pdbvendor);
14976                break;
14977            }
14978            case sstalterfunction:
14979            {
14980                ret =  new TAlterFunctionStmt(pdbvendor);
14981                break;
14982            }
14983            case sstAlterSchema:
14984            {
14985                ret =  new TAlterSchemaStmt(pdbvendor);
14986                break;
14987            }
14988            case sstanalyzeTable:
14989            {
14990                ret = new TAnalyzeStmt(pdbvendor);
14991                break;
14992            }
14993            case sstcall:
14994            {
14995                ret =  new TCallStatement(pdbvendor);
14996                break;
14997            }
14998            case sstcommit:
14999            {
15000                ret =  new TCommitStmt(pdbvendor);
15001                break;
15002            }
15003            case sstcreatefunction:
15004            {
15005                ret =  new TCreateFunctionStmt(pdbvendor);
15006                break;
15007            }
15008            case sstcreaterole:
15009            {
15010                ret =  new TCreateRoleStmt(pdbvendor);
15011                break;
15012            }
15013            case sstcreateschema:
15014            {
15015                ret =  new TCreateSchemaSqlStatement(pdbvendor);
15016                break;
15017            }
15018            case sstcreatetable:
15019            {
15020                ret =  new TCreateTableSqlStatement(pdbvendor);
15021                break;
15022            }
15023            case sstcreateview:
15024            {
15025                ret =  new TCreateViewSqlStatement(pdbvendor);
15026                break;
15027            }
15028            case sstpostgresqlDeallocate:
15029            {
15030                ret =  new TUnknownSqlStatement(pdbvendor);
15031                ret.sqlstatementtype = gnewsqlstatementtype;
15032                break;
15033            }
15034            case sstdescribe:
15035            {
15036                ret =  new TDescribeStmt(pdbvendor);
15037                break;
15038            }
15039            case sstdropfunction:
15040            {
15041                ret =  new TDropFunctionStmt(pdbvendor);
15042                break;
15043            }
15044            case sstdroprole:
15045            {
15046                ret =  new TDropRoleStmt(pdbvendor);
15047                break;
15048            }
15049            case sstdropschema:
15050            {
15051                ret =  new TDropSchemaSqlStatement(pdbvendor);
15052                break;
15053            }
15054            case sstdroptable:
15055            {
15056                ret =  new TDropTableSqlStatement(pdbvendor);
15057                break;
15058            }
15059            case sstdropview:
15060            {
15061                ret =  new TDropViewSqlStatement(pdbvendor);
15062                break;
15063            }
15064            case sstExecute:
15065            {
15066                ret =  new TExecuteSqlStatement(pdbvendor);
15067                break;
15068            }
15069            case sstExplain:
15070            {
15071                ret =  new TExplainPlan(pdbvendor);
15072                break;
15073            }
15074            case sstGrant:
15075            {
15076                ret =  new TGrantStmt(pdbvendor);
15077                break;
15078            }
15079            case sstprepare:
15080            {
15081                ret =  new TPrepareStmt(pdbvendor);
15082                break;
15083            }
15084            case sstset:
15085            case sstReset:
15086            {
15087                lcisnewsql = true;
15088                if ( pstate != EFindSqlStateType.stnormal )
15089                {
15090                    if ( TBaseType.assigned(lccurrentsqlstatement) )
15091                    {
15092                        lcisnewsql = false;
15093                    }
15094                }
15095
15096                if ( lcisnewsql )
15097                {
15098                    ret =  new TSetStmt(pdbvendor);
15099                }
15100                break;
15101            }
15102            case sstShow:
15103            {
15104                ret = new TShowStmt(pdbvendor);
15105                ret.sqlstatementtype = gnewsqlstatementtype;
15106                break;
15107            }
15108            case sstStartTransaction:
15109            {
15110                ret = new TStartTransactionStmt(pdbvendor);
15111                break;
15112            }
15113            case sstUse:
15114            {
15115                ret =  new TUseDatabase(pdbvendor);
15116                break;
15117            }
15118            case sstValues:
15119            {
15120                ret =  new TSelectSqlStatement(pdbvendor);
15121                break;
15122            }
15123            case sstResetSession:
15124            {
15125                ret =  new TResetSessionStmt(pdbvendor);
15126                break;
15127            }
15128            case sstunload:
15129                lcisnewsql = true;
15130                if ( pstate != EFindSqlStateType.stnormal )
15131                {
15132                    lcisnewsql = false;
15133                }
15134                if ( lcisnewsql ) {
15135                    ret = new TUnloadStmt(pdbvendor);
15136                    ret.sqlstatementtype = gnewsqlstatementtype;
15137                }
15138                break;
15139            case sstmsck:
15140            {
15141                ret = new TMSCKStmt(pdbvendor);
15142                break;
15143            }
15144            case sstcreatedatabase:
15145            {
15146                ret = new TCreateDatabaseSqlStatement(pdbvendor);
15147                break;
15148            }
15149            case sstalterdatabase:
15150            {
15151                ret = new TAlterDatabaseStmt(pdbvendor);
15152                break;
15153            }
15154            case sstdropdatabase:
15155                ret = new TDropDatabaseStmt(pdbvendor);
15156                break;
15157            default:
15158            {
15159                ret =  new TUnknownSqlStatement(pdbvendor);
15160                ret.sqlstatementtype = gnewsqlstatementtype;
15161                break;
15162            }
15163        }    // case
15164
15165        return ret;
15166
15167    }
15168
15169    TCustomSqlStatement issparksql(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
15170
15171            TCustomSqlStatement ret = null;
15172            int k;
15173            boolean lcisnewsql;
15174            TSourceToken lcpprevsolidtoken,lcnextsolidtoken;
15175
15176            gnewsqlstatementtype = ESqlStatementType.sstinvalid;
15177
15178            if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
15179                    || (pcst.tokencode  == TBaseType.cmtslashstar)
15180                    || (pcst.tokencode  == TBaseType.lexspace)
15181                    || (pcst.tokencode  == TBaseType.lexnewline)
15182                    || (pcst.tokentype == ETokenType.ttsemicolon) )
15183            {
15184                return ret;
15185            }
15186
15187            int lcpos = pcst.posinlist;
15188            TSourceTokenList lcsourcetokenlist = pcst.container;
15189            TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
15190
15191            //subquery after semicolon || at first line
15192            if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
15193            {
15194                k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
15195                if ( k >0 )
15196                {
15197                    ret =  new TSelectSqlStatement(pdbvendor);
15198                }
15199
15200                return ret;
15201            }
15202
15203            //cte
15204            if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
15205            {
15206                ret = findcte(pcst,pdbvendor);
15207                if ( (ret != null) )  return ret;
15208            }
15209
15210
15211            gnewsqlstatementtype = findsparksqlcmd(pcst);
15212
15213            TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
15214
15215            if ((gnewsqlstatementtype == ESqlStatementType.sstinvalid)&&(pcst.tokencode == TBaseType.rrw_create)){
15216                //if (pcst.container.nextsolidtoken(pcst.posinlist,15,))
15217                TSourceToken viewToken = pcst.container.searchToken(TBaseType.rrw_view,"",pcst,15);
15218                if (viewToken != null){
15219                    gnewsqlstatementtype = ESqlStatementType.sstcreateview;
15220                }
15221            }
15222            switch (gnewsqlstatementtype){
15223                case sstinvalid:
15224                {
15225                    ret = null;
15226                    break;
15227                }
15228                case sstselect:
15229                {
15230                    lcisnewsql = true;
15231
15232                    if ( pstate != EFindSqlStateType.stnormal )
15233                    {
15234                        // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
15235                        if ( TBaseType.assigned(lcprevsolidtoken) )
15236                        {
15237                            if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
15238                                lcisnewsql = false; //subqery
15239                            else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
15240                                lcisnewsql = false;
15241                            else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
15242                                lcisnewsql = false;
15243                            else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
15244                                lcisnewsql = false;
15245                            else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
15246                                lcisnewsql = false;
15247                            else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
15248                                lcisnewsql = false;
15249                            else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
15250                            {
15251                                if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
15252                                    lcisnewsql = false;
15253                                if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
15254                                    lcisnewsql = false;
15255                            }
15256
15257                            if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
15258                            {
15259                                lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
15260                                if ( TBaseType.assigned(lcpprevsolidtoken) )
15261                                {
15262                                    if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
15263                                        lcisnewsql = false;
15264                                }
15265                            }
15266
15267                        }
15268
15269
15270                        if ( TBaseType.assigned(lccurrentsqlstatement) )
15271                        {
15272                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
15273                                lcisnewsql = false;
15274                        }
15275
15276                    }
15277
15278                    if ( lcisnewsql )
15279                        ret =  new TSelectSqlStatement(pdbvendor);
15280                    break;
15281                }
15282                case sstinsert:
15283                {
15284                    lcisnewsql = true;
15285                    if ( pstate != EFindSqlStateType.stnormal )
15286                    {
15287                        if ( TBaseType.assigned(lccurrentsqlstatement) )
15288                        {
15289
15290                        }
15291                    }
15292
15293                    if ( lcisnewsql )
15294                        ret =  new TInsertSqlStatement(pdbvendor);
15295                    ret.sqlstatementtype = gnewsqlstatementtype;
15296                    break;
15297                }
15298                case sstupdate:
15299                {
15300                    lcisnewsql = true;
15301                    if ( pstate != EFindSqlStateType.stnormal )
15302                    {
15303                        lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
15304                        if ( TBaseType.assigned(lcprevsolidtoken) )
15305                        { //
15306                            if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
15307                                lcisnewsql = false;
15308                            else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
15309                                lcisnewsql = false;
15310                        }
15311
15312                        lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
15313                        if ( TBaseType.assigned(lcnextsolidtoken) )
15314                        {
15315                            if ( lcnextsolidtoken.tokentype == ETokenType.ttleftparenthesis)
15316                            {
15317                                k = lcsourcetokenlist.solidtokenafterpos(lcnextsolidtoken.posinlist,TBaseType.rrw_select,1,"(");
15318                                if ( k  == 0 ) lcisnewsql = false;
15319                            }
15320                        }
15321
15322
15323                        if ( TBaseType.assigned(lccurrentsqlstatement) )
15324                        {
15325                        }
15326                    }
15327
15328                    if ( lcisnewsql )
15329                    {
15330                        ret =  new TUpdateSqlStatement(pdbvendor);
15331                        ret.dummytag = 1; // means set clause in update is not found yet, used to seperate set clause from set statement
15332                    }
15333                    break;
15334                }
15335                case sstdelete:
15336                {
15337                    lcisnewsql = true;
15338
15339                    if ( pstate != EFindSqlStateType.stnormal )
15340                    {
15341                        lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
15342                        if ( TBaseType.assigned(lcprevsolidtoken) )
15343                        {
15344                            if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
15345                                lcisnewsql = false;
15346                        }
15347
15348                        if ( TBaseType.assigned(lccurrentsqlstatement) )
15349                        {
15350                        }
15351                    }
15352
15353                    if ( lcisnewsql )
15354                        ret =  new TDeleteSqlStatement(pdbvendor);
15355                    break;
15356                }
15357                case sstcreatetable:
15358                {
15359                    ret =  new TCreateTableSqlStatement(pdbvendor);
15360                    break;
15361                }
15362                case sstcreateview:
15363                {
15364                    ret =  new TCreateViewSqlStatement(pdbvendor);
15365                    break;
15366                }
15367                case sstcreatedatabase:
15368                {
15369                    ret =  new TCreateDatabaseSqlStatement(pdbvendor);
15370                    break;
15371                }
15372                case sstdroptable:
15373                {
15374                    ret =  new TDropTableSqlStatement(pdbvendor);
15375                    break;
15376                }
15377                case sstdropview:
15378                {
15379                    ret =  new TDropViewSqlStatement(pdbvendor);
15380                    break;
15381                }
15382                case sstaltertable:
15383                {
15384                    ret =  new TAlterTableStatement(pdbvendor);
15385                    break;
15386                }
15387                case sstset:
15388                case sstReset:
15389                case sstSetTimeZone:
15390                {
15391                    lcisnewsql = true;
15392                    if ( pstate != EFindSqlStateType.stnormal )
15393                    {
15394                        if ( TBaseType.assigned(lccurrentsqlstatement) )
15395                        {
15396                            lcisnewsql = false;
15397                        }
15398                    }
15399
15400                    if ( lcisnewsql )
15401                    {
15402                        ret =  new TSetStmt(pdbvendor);
15403                    }
15404                    break;
15405                }
15406                case sstcreatefunction:
15407                {
15408                    ret =  new TCreateFunctionStmt(pdbvendor);
15409                    break;
15410                }
15411                case sstTruncate:
15412                {
15413                    ret =  new TTruncateStatement(pdbvendor);
15414                    break;
15415                }
15416                case sstdescribe:
15417                {
15418                    ret =  new TDescribeStmt(pdbvendor);
15419                    break;
15420                }
15421                case sstExplain:
15422                {
15423                    ret =  new TExplainPlan(pdbvendor);
15424                    break;
15425                }
15426                case sstUse:
15427                {
15428                    ret =  new TUseDatabase(pdbvendor);
15429                    break;
15430                }
15431                case sstLoadData:
15432                {
15433                    ret =  new TLoadDataStmt(pdbvendor);
15434                    break;
15435                }
15436                case sstShowColumns:
15437                case sstShowCreateTable:
15438                case sstShowDatabases:
15439                case sstShowFunctions:
15440                case sstShowPartitions:
15441                case sstShowTableExtended:
15442                case sstShowTables:
15443                case sstShowTblProperties:
15444                case sstShowViews:
15445                case sstShowUser:
15446                    ret = new TShowStmt(pdbvendor);
15447                    ret.sqlstatementtype = gnewsqlstatementtype;
15448                    break;
15449                case sstalterdatabase:
15450                    ret =  new TAlterDatabaseStmt(pdbvendor);
15451                    break;
15452                case sstdescribeDatabase:
15453                case sstdescribeTable:
15454                case sstdescribeFunction:
15455                    ret =  new TDescribeStmt(pdbvendor);
15456                    break;
15457                case sstalterview:
15458                    ret =  new TAlterViewStatement(pdbvendor);
15459                    break;
15460                case sstAddFile:
15461                case sstAddJar:
15462                case sstListFile:
15463                case sstListJar:
15464                    ret =  new TResourceManagement(pdbvendor);
15465                    ret.sqlstatementtype = gnewsqlstatementtype;
15466                    break;
15467                case sstdropdatabase:
15468                    ret =  new TDropDatabaseStmt(pdbvendor);
15469                    break;
15470                case sstdropfunction:
15471                    ret =  new TDropFunctionStmt(pdbvendor);
15472                    break;
15473                case ssttruncatetable:
15474                    ret =  new TTruncateStatement(pdbvendor);
15475                     break;
15476                case sstmsck:
15477                {
15478                    ret = new TMSCKStmt(pdbvendor);
15479                    break;
15480                }
15481                case sstanalyzeTable:
15482                {
15483                    ret = new TAnalyzeStmt(pdbvendor);
15484                    break;
15485                }
15486                case sstCacheTable:
15487                case sstUnCacheTable:
15488                case sstClearCache:
15489                    ret = new TCacheTable(pdbvendor);
15490                    break;
15491                case sstRefreshTable:
15492                case sstRefreshFunction:
15493                case sstRefresh:
15494                    ret = new TRefresh(pdbvendor);
15495                    break;
15496                default:
15497                {
15498                    ret =  new TUnknownSqlStatement(pdbvendor);
15499                    ret.sqlstatementtype = gnewsqlstatementtype;
15500                    break;
15501                }
15502            }    // case
15503
15504            return ret;
15505
15506    }
15507
15508    TCustomSqlStatement ismysqlsql(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
15509    TCustomSqlStatement ret = null;
15510    int k;
15511    boolean lcisnewsql;
15512    TSourceToken lcpprevsolidtoken,lcnextsolidtoken;
15513
15514    gnewsqlstatementtype = ESqlStatementType.sstinvalid;
15515
15516    if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
15517       || (pcst.tokencode  == TBaseType.cmtslashstar)
15518       || (pcst.tokencode  == TBaseType.lexspace)
15519       || (pcst.tokencode  == TBaseType.lexnewline)
15520        || (pcst.tokentype == ETokenType.ttsemicolon) )
15521    {
15522      return ret;
15523    }
15524
15525    int lcpos = pcst.posinlist;
15526    TSourceTokenList lcsourcetokenlist = pcst.container;
15527    TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
15528
15529    //subquery after semicolon || at first line
15530    if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
15531      {
15532        k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
15533        if ( k >0 )
15534          {
15535            ret =  new TSelectSqlStatement(pdbvendor);
15536          }
15537
15538        return ret;
15539      }
15540
15541        //cte
15542        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
15543        {
15544            ret = findcte(pcst,pdbvendor);
15545            if ( (ret != null) )  return ret;
15546        }
15547
15548
15549    //cte
15550//  if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == rrw_with) )
15551//    {
15552//      ret = tselectsqlstatement.create(pdbvendor);
15553//      tselectsqlstatement(ret).isctequery = true;
15554//      exit;
15555//    }
15556//
15557
15558    gnewsqlstatementtype = findmysqlcmd(pcst);
15559
15560    TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
15561
15562    if ((gnewsqlstatementtype == ESqlStatementType.sstinvalid)&&(pcst.tokencode == TBaseType.rrw_create)){
15563      //if (pcst.container.nextsolidtoken(pcst.posinlist,15,))
15564        TSourceToken viewToken = pcst.container.searchToken(TBaseType.rrw_view,"",pcst,15);
15565        if (viewToken != null){
15566            gnewsqlstatementtype = ESqlStatementType.sstcreateview;
15567        }
15568    }
15569    switch (gnewsqlstatementtype){
15570        case sstinvalid:
15571          {
15572            ret = null;
15573            break;
15574          }
15575        case sstselect:
15576          {
15577            lcisnewsql = true;
15578
15579            if ( pstate != EFindSqlStateType.stnormal )
15580              {
15581                // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
15582                if ( TBaseType.assigned(lcprevsolidtoken) )
15583                  {
15584                    if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
15585                      lcisnewsql = false; //subqery
15586                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
15587                      lcisnewsql = false;
15588                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
15589                      lcisnewsql = false;
15590                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
15591                      lcisnewsql = false;
15592                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
15593                      lcisnewsql = false;
15594                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
15595                      lcisnewsql = false;
15596                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
15597                      {
15598                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
15599                          lcisnewsql = false;
15600                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
15601                          lcisnewsql = false;
15602                      }
15603
15604                    if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
15605                      {
15606                        lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
15607                        if ( TBaseType.assigned(lcpprevsolidtoken) )
15608                          {
15609                            if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
15610                              lcisnewsql = false;
15611                          }
15612                      }
15613
15614                  }
15615
15616
15617                if ( TBaseType.assigned(lccurrentsqlstatement) )
15618                  {
15619                    if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
15620                      lcisnewsql = false;
15621                  }
15622
15623              }
15624
15625            if ( lcisnewsql )
15626              ret =  new TSelectSqlStatement(pdbvendor);
15627              break;
15628          }
15629        case sstinsert:
15630        case sstmysqlreplace:
15631          {
15632            lcisnewsql = true;
15633            if ( pstate != EFindSqlStateType.stnormal )
15634              {
15635                if ( TBaseType.assigned(lccurrentsqlstatement) )
15636                  {
15637
15638                  }
15639              }
15640
15641            if ( lcisnewsql )
15642              ret =  new TInsertSqlStatement(pdbvendor);
15643              ret.sqlstatementtype = gnewsqlstatementtype;
15644              break;
15645          }
15646        case sstupdate:
15647          {
15648            lcisnewsql = true;
15649            if ( pstate != EFindSqlStateType.stnormal )
15650              {
15651                lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
15652                if ( TBaseType.assigned(lcprevsolidtoken) )
15653                  { //
15654                    if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
15655                      lcisnewsql = false;
15656                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
15657                      lcisnewsql = false;
15658                  }
15659
15660                lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
15661                if ( TBaseType.assigned(lcnextsolidtoken) )
15662                  {
15663                    if ( lcnextsolidtoken.tokentype == ETokenType.ttleftparenthesis)
15664                      {
15665                        k = lcsourcetokenlist.solidtokenafterpos(lcnextsolidtoken.posinlist,TBaseType.rrw_select,1,"(");
15666                        if ( k  == 0 ) lcisnewsql = false;
15667                      }
15668                  }
15669
15670
15671                if ( TBaseType.assigned(lccurrentsqlstatement) )
15672                  {
15673                  }
15674              }
15675
15676            if ( lcisnewsql )
15677              {
15678                ret =  new TUpdateSqlStatement(pdbvendor);
15679                ret.dummytag = 1; // means set clause in update is not found yet, used to seperate set clause from set statement
15680              }
15681              break;
15682          }
15683        case sstdelete:
15684          {
15685            lcisnewsql = true;
15686
15687            if ( pstate != EFindSqlStateType.stnormal )
15688              {
15689                lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
15690                if ( TBaseType.assigned(lcprevsolidtoken) )
15691                  {
15692                    if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
15693                      lcisnewsql = false;
15694                  }
15695
15696                if ( TBaseType.assigned(lccurrentsqlstatement) )
15697                  {
15698                  }
15699              }
15700
15701            if ( lcisnewsql )
15702              ret =  new TDeleteSqlStatement(pdbvendor);
15703              break;
15704          }
15705        case sstmerge:
15706          {
15707            ret =  new TMergeSqlStatement(pdbvendor);
15708            ret.sqlstatementtype = gnewsqlstatementtype;
15709              break;
15710          }
15711        case sstcommit:
15712          {
15713            ret =  new TUnknownSqlStatement(pdbvendor);
15714            ret.sqlstatementtype = gnewsqlstatementtype;
15715              break;
15716          }
15717        case sstrollback:
15718          {
15719            ret =  new TUnknownSqlStatement(pdbvendor);
15720            ret.sqlstatementtype = gnewsqlstatementtype;
15721              break;
15722          }
15723        case sstsavepoint:
15724          {
15725            ret =  new TUnknownSqlStatement(pdbvendor);
15726            ret.sqlstatementtype = gnewsqlstatementtype;
15727              break;
15728          }
15729        case sstRevoke:
15730          {
15731            ret =  new TUnknownSqlStatement(pdbvendor);
15732            ret.sqlstatementtype = gnewsqlstatementtype;
15733              break;
15734          }
15735        case sstcreatetable:
15736          {
15737            ret =  new TCreateTableSqlStatement(pdbvendor);
15738              break;
15739          }
15740        case sstcreateview:
15741          {
15742            ret =  new TCreateViewSqlStatement(pdbvendor);
15743              break;
15744          }
15745        case sstmysqlcreateindex:
15746          {
15747            ret =  new TCreateIndexSqlStatement(pdbvendor);
15748              break;
15749          }
15750        case sstcreatedatabase:
15751          {
15752            ret =  new TCreateDatabaseSqlStatement(pdbvendor);
15753              break;
15754          }
15755        case sstmysqldroptable:
15756        case sstdroptable:
15757          {
15758            ret =  new TDropTableSqlStatement(pdbvendor);
15759              break;
15760          }
15761        case sstdropview:
15762          {
15763            ret =  new TDropViewSqlStatement(pdbvendor);
15764              break;
15765          }
15766        case sstdropindex:
15767          {
15768            ret =  new TDropIndexSqlStatement(pdbvendor);
15769              break;
15770          }
15771        case sstaltertable:
15772          {
15773            ret =  new TAlterTableStatement(pdbvendor);
15774              break;
15775          }
15776        case sstaltersession:
15777          {
15778            ret =  new TAlterSessionStatement(pdbvendor);
15779              break;
15780          }
15781        case sstmysqlset:
15782          {
15783            ret =  new TSetStmt(pdbvendor);
15784              break;
15785          }
15786        case sstmysqlcreateprocedure:
15787          {
15788            ret =  new TCreateProcedureStmt(pdbvendor);
15789              break;
15790          }
15791        case sstmysqlcreatefunction:
15792          {
15793            ret =  new TCreateFunctionStmt(pdbvendor);
15794              break;
15795          }
15796        case sstcreatetrigger:
15797          {
15798            ret =  new TCreateTriggerStmt(pdbvendor);
15799              break;
15800          }
15801        case sstmysqlcall:
15802        {
15803            ret =  new TCallStatement(pdbvendor);
15804            break;
15805        }
15806        case sstmysqltruncate:
15807        {
15808            ret =  new TTruncateStatement(pdbvendor);
15809            break;
15810        }
15811        case sstmysqlprepare:
15812        {
15813            ret =  new TPrepareStmt(pdbvendor);
15814            break;
15815        }
15816        case sstdescribe:
15817        {
15818            ret =  new TDescribeStmt(pdbvendor);
15819            break;
15820        }
15821        case sstExplain:
15822        {
15823            ret =  new TExplainPlan(pdbvendor);
15824            break;
15825        }
15826        case sstmysqldropindex:
15827        {
15828            ret =  new TDropIndexSqlStatement(pdbvendor);
15829            break;
15830        }
15831        case sstmysqldropprocedure:
15832        {
15833            ret =  new TDropProcedureStmt(pdbvendor);
15834            break;
15835        }
15836        case sstmysqlsignal:
15837        {
15838            ret =  new TMySQLSignal(pdbvendor);
15839            break;
15840        }
15841        case sstmysqlstarttransaction:
15842        {
15843            if ( pstate == EFindSqlStateType.stnormal )
15844            {
15845                ret =  new TUnknownSqlStatement(pdbvendor);
15846                ret.sqlstatementtype = gnewsqlstatementtype;
15847            }
15848            break;
15849        }
15850        case sstmysqluse:
15851        {
15852            ret =  new TUseDatabase(pdbvendor);
15853          break;
15854        }
15855        case sstmysqlexecute:
15856        {
15857            ret =  new TExecuteSqlStatement(pdbvendor);
15858            ret.sqlstatementtype = gnewsqlstatementtype;
15859            break;
15860        }
15861        case sstmysqlcreatedatabase:
15862        {
15863            ret =  new TCreateDatabaseSqlStatement(pdbvendor);
15864            break;
15865        }
15866        case sstmysqlrenametable:
15867        {
15868            ret =  new TRenameStmt(pdbvendor);
15869            break;
15870        }
15871        case sstmysqlshowindex:
15872            ret =  new TShowIndexStmt(pdbvendor);
15873            break;
15874        case sstmysqlloaddatainfile:
15875            ret = new TLoadDataStmt(pdbvendor);
15876            break;
15877        case sstmysqlshowlogs:
15878        case sstmysqlshowbinlogevents:
15879        case sstmysqlshowcharacterset:
15880        case sstmysqlshowcollation:
15881        case sstmysqlshowcolumns:
15882        case sstmysqlshowwarnings:
15883        case sstmysqlshowcreatedatabase:
15884        case sstmysqlshowcreatefunction:
15885        case sstmysqlshowcreateprocedure:
15886        case sstmysqlshowcreatetable:
15887        case sstmysqlshowcreateview:
15888        case sstmysqlshowdatabases:
15889        case sstmysqlshowerrors:
15890        case sstmysqlshowfields:
15891        case sstmysqlshowprocesslist:
15892        case sstmysqlshowtables:
15893        case sstmysqlshowfunctionstatus:
15894        case sstmysqlshowstatus:
15895        case sstmysqlshowvariables:
15896        case sstmysqlshowgrants:
15897        case sstmysqlshowinnodbstatus:
15898        case sstmysqlshowmasterlogs:
15899        case sstmysqlshowplugins:
15900        case sstmysqlshowprivileges:
15901        case sstmysqlshowprofile:
15902        case sstmysqlshowprofiles:
15903        case sstmysqlshowslavehosts:
15904        case sstmysqlshowslavestatus:
15905        case sstmysqlshowtablestatus:
15906        case sstmysqlshowtriggers:
15907        case sstmysqlshowcreateschema:
15908        case sstmysqlshowengines:
15909            ret = new TMySQLShowStmt(pdbvendor);
15910            ret.sqlstatementtype = gnewsqlstatementtype;
15911            break;
15912        case sstmysqlshowengine:
15913            ret = new TShowEngineStmt(pdbvendor);
15914            break;
15915        case sstmysqlshowreplicaStatus:
15916            ret = new TShowStmt(pdbvendor);
15917            ret.sqlstatementtype = gnewsqlstatementtype;
15918            break;
15919        case sstmysqlalterfunction:
15920            ret = new TAlterFunctionStmt(pdbvendor);
15921            break;
15922        case sstmysqlalterprocedure:
15923            ret = new TAlterProcedureStmt(pdbvendor);
15924            break;
15925        case sstmysqldropfunction:
15926            ret = new TDropFunctionStmt(pdbvendor);
15927            break;
15928        case sstmysqldroptrigger:
15929            ret = new TDropTriggerSqlStatement(pdbvendor);
15930            break;
15931        case sstmysqloptimizetable:
15932            ret = new TMySQLOptimizeTableStmt(pdbvendor);
15933            break;
15934        case sstmysqlalterview:
15935            ret  = new TAlterViewStatement(pdbvendor);
15936            break;
15937        default:
15938          {
15939            ret =  new TUnknownSqlStatement(pdbvendor);
15940            ret.sqlstatementtype = gnewsqlstatementtype;
15941              break;
15942          }
15943    }    // case
15944
15945    return ret;
15946}
15947
15948TCustomSqlStatement ismdxsql(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
15949    TCustomSqlStatement ret = null;
15950
15951    gnewsqlstatementtype = ESqlStatementType.sstinvalid;
15952
15953    if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
15954       || (pcst.tokencode  == TBaseType.cmtslashstar)
15955       || (pcst.tokencode  == TBaseType.lexspace)
15956       || (pcst.tokencode  == TBaseType.lexnewline)
15957        || (pcst.tokentype == ETokenType.ttsemicolon) )
15958    {
15959      return null;
15960    }
15961
15962    int lcpos = pcst.posinlist;
15963    TSourceTokenList lcsourcetokenlist = pcst.container;
15964    TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
15965
15966
15967    //with clause before statement
15968    if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
15969      {
15970        ret = findMdxStmtBeginWithClause(pcst,pdbvendor);
15971        if ( (ret != null) )  return ret;
15972      }
15973
15974    gnewsqlstatementtype = findmdxcmd(pcst);
15975
15976    TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
15977    switch (gnewsqlstatementtype) {    //
15978        case sstinvalid:
15979          {
15980            ret = null;
15981            if ( pstate == EFindSqlStateType.stnormal )
15982              {
15983                  //treat all unregonized statement as an expression
15984                  ret = new TMdxExpression(EDbVendor.dbvmdx);
15985              }
15986              break;
15987          }
15988        case sstmdxselect:
15989          {
15990            boolean lcisnewsql = true;
15991
15992            if ( pstate != EFindSqlStateType.stnormal )
15993              {
15994                if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstselect )
15995                  {
15996                    if ( lccurrentsqlstatement.isctequery )
15997                      lcisnewsql = false;
15998                  }
15999              }
16000
16001            if ( lcisnewsql )
16002              ret = new TMdxSelect(pdbvendor);
16003
16004            break;
16005          }
16006        case sstmdxupdate:
16007          {
16008            boolean lcisnewsql = true;
16009            if ( pstate != EFindSqlStateType.stnormal )
16010              {
16011                lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
16012                if ( (lcprevsolidtoken != null) )
16013                  { //
16014                  }
16015
16016                TSourceToken lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
16017                if ( (lcnextsolidtoken != null) )
16018                  {
16019                  }
16020
16021                if ( (lccurrentsqlstatement != null) )
16022                  {
16023                  }
16024              }
16025
16026            if ( lcisnewsql )
16027              {
16028                ret = new TMdxUpdate(pdbvendor);
16029              }
16030            break;
16031          }
16032        case sstmdxaltercube:
16033          {
16034            ret = new TMdxAlterCube(pdbvendor);
16035              break;
16036          }
16037        case sstmdxcalculate:
16038          {
16039            ret = new TMdxCalculate(pdbvendor);
16040              break;
16041          }
16042        case sstmdxcall:
16043          {
16044            ret = new TMdxCall(pdbvendor);
16045              break;
16046          }
16047        case sstmdxcase:
16048          {
16049            ret = new TMdxCase(pdbvendor);
16050              break;
16051          }
16052        case sstmdxclearcalculations:
16053          {
16054            ret = new TMdxClearCalculations(pdbvendor);
16055              break;
16056          }
16057        case sstmdxcreateaction:
16058          {
16059            ret = new TMdxCreateAction(pdbvendor);
16060              break;
16061          }
16062        case sstmdxcreatemember:
16063          {
16064            ret = new TMdxCreateMember(pdbvendor);
16065              break;
16066          }
16067        case sstmdxcreatecellcalculation:
16068          {
16069            ret = new TMdxCreateCellCalculation(pdbvendor);
16070              break;
16071          }
16072        case sstmdxcreateglobalcube:
16073          {
16074            ret = new TMdxCreateGlobalCube(pdbvendor);
16075              break;
16076          }
16077        case sstmdxcreateset:
16078          {
16079            ret = new TMdxCreateSet(pdbvendor);
16080              break;
16081          }
16082        case sstmdxcreatesessioncube:
16083          {
16084            ret = new TMdxCreateSessionCube(pdbvendor);
16085              break;
16086          }
16087        case sstmdxcreatesubcube:
16088          {
16089            ret = new TMdxCreateSubCube(pdbvendor);
16090              break;
16091          }
16092        case sstmdxdrillthrough:
16093          {
16094            ret = new TMdxDrillthrough(pdbvendor);
16095              break;
16096          }
16097        case sstmdxdropaction:
16098          {
16099            ret = new TMdxDropAction(pdbvendor);
16100              break;
16101          }
16102        case sstmdxdropmember:
16103          {
16104            ret = new TMdxDropMember(pdbvendor);//ret = new TMdxCreateSessionCube(pdbvendor);
16105              break;
16106          }
16107        case sstmdxdropcellcalculation:
16108          {
16109            ret = new TMdxDropCellCalculation(pdbvendor);
16110              break;
16111          }
16112        case sstmdxdropset:
16113          {
16114            ret = new TMdxDropSet(pdbvendor);
16115              break;
16116          }
16117        case sstmdxdropsubcube:
16118          {
16119            ret = new TMdxDropSubcube(pdbvendor);
16120              break;
16121          }
16122        case sstmdxfreeze:
16123          {
16124            ret = new TMdxFreeze(pdbvendor);
16125            break;
16126          }
16127        case sstmdxif:
16128          {
16129            ret = new TMdxIf(pdbvendor);
16130              break;
16131          }
16132        case sstmdxrefreshcube:
16133          {
16134            ret = new TMdxRefreshCube(pdbvendor);
16135              break;
16136          }
16137        case sstmdxscope:
16138          {
16139            ret = new TMdxScope(pdbvendor);
16140              break;
16141          }
16142        case sstmdxcreatemeasure:
16143        {
16144            ret = new TMdxCreateMeasure(pdbvendor);
16145            break;
16146        }
16147        case sstmdxexisting:
16148        default:
16149          {
16150            ret = new TUnknownSqlStatement(pdbvendor);
16151            ret.sqlstatementtype = gnewsqlstatementtype;
16152            break;
16153          }
16154    }    // case
16155
16156    return ret;
16157}
16158
16159
16160public ESqlStatementType findsybasecmdusedbyyacc(TSourceToken pcst){
16161  ESqlStatementType ret = ESqlStatementType.sstinvalid;
16162
16163    int lcpos = pcst.posinlist;
16164    TSourceTokenList lcsourcetokenlist = pcst.container;
16165
16166    //subquery after semicolon or at first line
16167    if (  (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
16168      {
16169        int k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
16170        if ( k >0 )
16171          {
16172            ret = ESqlStatementType.sstselect;
16173          }
16174
16175        return ret;
16176      }
16177
16178
16179    ret = findsybasecmd(pcst);
16180    // execute can't be used to delimite other sql
16181    if ( ret == ESqlStatementType.sstmssqlexec )
16182      ret = ESqlStatementType.sstinvalid;
16183
16184  return ret;
16185}
16186
16187public ESqlStatementType findmssqlcmdusedbyyacc(TSourceToken pcst){
16188  ESqlStatementType ret = ESqlStatementType.sstinvalid;
16189
16190    int lcpos = pcst.posinlist;
16191    TSourceTokenList lcsourcetokenlist = pcst.container;
16192
16193    //subquery after semicolon or at first line
16194    if (  (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
16195      {
16196        int k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
16197        if ( k >0 )
16198          {
16199            ret = ESqlStatementType.sstselect;
16200          }
16201
16202        return ret;
16203      }
16204
16205
16206    ret = findmssqlcmd(pcst);
16207    // execute can't be used to delimite other sql
16208    if ( ret == ESqlStatementType.sstmssqlexec )
16209      ret = ESqlStatementType.sstinvalid;
16210
16211  return ret;
16212}
16213
16214
16215TCustomSqlStatement ishive(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
16216    TCustomSqlStatement ret = null;
16217
16218    gnewsqlstatementtype = ESqlStatementType.sstinvalid;
16219
16220    if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
16221       || (pcst.tokencode  == TBaseType.cmtslashstar)
16222       || (pcst.tokencode  == TBaseType.lexspace)
16223       || (pcst.tokencode  == TBaseType.lexnewline)
16224        || (pcst.tokentype == ETokenType.ttsemicolon) )
16225    {
16226      return null;
16227    }
16228
16229    int lcpos = pcst.posinlist;
16230    TSourceTokenList lcsourcetokenlist = pcst.container;
16231    TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
16232
16233
16234    //from query
16235    if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_from) )
16236      {
16237          if (pcst.container == null){
16238              return new TSelectSqlStatement(pdbvendor);
16239          }
16240
16241          // search select or insert who comes first,
16242          int lcpos1 = pcst.posinlist;
16243          TSourceTokenList lcsourcetokenlist1 = pcst.container;
16244          TSourceToken tmpSt;
16245          int parenthesisCnt = 0;
16246          for(int k=lcpos1+1;k<lcsourcetokenlist1.size();k++){
16247              tmpSt = lcsourcetokenlist1.get(k);
16248              if (tmpSt.tokencode == ';') break;
16249              if (tmpSt.tokencode == '(') parenthesisCnt++;
16250              if (tmpSt.tokencode == ')') parenthesisCnt--;
16251              if (parenthesisCnt == 0){
16252                  if (tmpSt.tokencode == TBaseType.rrw_select){
16253                      ret = new TSelectSqlStatement(pdbvendor);
16254                      break;
16255                  }else if (tmpSt.tokencode == TBaseType.rrw_insert){
16256                      ret = new TInsertSqlStatement(pdbvendor);
16257                      break;
16258                  }
16259              }
16260          }
16261
16262          if (ret == null){
16263              ret = new TSelectSqlStatement(pdbvendor);
16264//              FROM (
16265//                      FROM pv_users
16266//                      MAP pv_users.userid, pv_users.date
16267//                      USING 'map_script'
16268//              AS dt, uid
16269//              CLUSTER BY dt) map_output;
16270          }
16271
16272          return ret;
16273      }
16274
16275    //cte
16276    if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
16277    {
16278        ret = findcte(pcst,pdbvendor);
16279        if ( (ret != null) )  return ret;
16280    }
16281
16282    gnewsqlstatementtype = findhivecmd(pcst);
16283
16284    TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
16285    switch (gnewsqlstatementtype) {    //
16286        case sstinvalid:
16287          {
16288            ret = null;
16289            break;
16290          }
16291        case sstselect:
16292          {
16293            boolean lcisnewsql = true;
16294
16295            if ( pstate != EFindSqlStateType.stnormal )
16296              {
16297
16298                if ( (lccurrentsqlstatement != null) )
16299                  {
16300                    if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.ssthiveFromQuery )
16301                      //if (((TSelectSqlStatement)lccurrentsqlstatement).getSelectToken().tokencode == TBaseType.rrw_from)
16302                        lcisnewsql = false;
16303                  }
16304
16305              }
16306
16307            if ( lcisnewsql )
16308              ret = new TSelectSqlStatement(pdbvendor);
16309
16310            break;
16311          }
16312        case sstinsert:
16313          {
16314            boolean lcisnewsql = true;
16315            if ( pstate != EFindSqlStateType.stnormal )
16316              {
16317                if ( (lccurrentsqlstatement != null) )
16318                  {
16319                      if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.ssthiveFromQuery )
16320                         // if (((TSelectSqlStatement)lccurrentsqlstatement).getSelectToken().tokencode == TBaseType.rrw_from)
16321                             lcisnewsql = false;
16322                  }
16323              }
16324
16325            if ( lcisnewsql )
16326              ret = new TInsertSqlStatement(pdbvendor);
16327
16328            break;
16329          }
16330        case sstTruncate:
16331          {
16332              ret = new TTruncateStatement(pdbvendor);
16333              break;
16334          }
16335        case sstalterdatabase:
16336        {
16337            ret = new TAlterDatabaseStmt(pdbvendor);
16338            break;
16339        }
16340        case sstalterindex:
16341          {
16342            ret = new TAlterIndexStmt(pdbvendor);
16343              break;
16344          }
16345        case sstaltertable:
16346          {
16347            ret = new TAlterTableStatement(pdbvendor);
16348              break;
16349          }
16350        case sstalterview:
16351          {
16352            ret = new TAlterViewStatement(pdbvendor);
16353              break;
16354          }
16355        case sstanalyzeTable:
16356        {
16357            ret = new TAnalyzeStmt(pdbvendor);
16358            break;
16359        }
16360        case sstcreatedatabase:
16361          {
16362            ret = new TCreateDatabaseSqlStatement(pdbvendor);
16363              break;
16364          }
16365        case sstcreatetable:
16366          {
16367            ret = new TCreateTableSqlStatement(pdbvendor);
16368              break;
16369          }
16370        case sstcreateindex:
16371          {
16372            ret = new TCreateIndexSqlStatement(pdbvendor);
16373              break;
16374          }
16375        case sstcreateview:
16376          {
16377            ret = new TCreateViewSqlStatement(pdbvendor);
16378              break;
16379          }
16380        case ssthiveCreateRole:
16381        {
16382            ret = new THiveCreateRole(pdbvendor);
16383            break;
16384        }
16385        case ssthiveCreateFunction:
16386        {
16387            ret = new THiveCreateFunction(pdbvendor);
16388            break;
16389        }
16390        case ssthiveDesc:
16391        {
16392            ret = new THiveDescribe(pdbvendor);
16393            break;
16394        }
16395        case ssthiveDropDatabase:
16396        {
16397            ret = new THiveDropDatabase(pdbvendor);
16398            break;
16399        }
16400        case sstdropindex:
16401          {
16402            ret = new TDropIndexSqlStatement(pdbvendor);
16403              break;
16404          }
16405        case ssthiveDropRole:
16406        {
16407            ret = new THiveDropRole(pdbvendor);
16408              break;
16409        }
16410        case sstdroptable:
16411          {
16412            ret = new TDropTableSqlStatement(pdbvendor);
16413              break;
16414          }
16415        case ssthiveDropFunciton:
16416        {
16417            ret = new THiveDropFunction(pdbvendor);
16418              break;
16419        }
16420        case sstdropview:
16421          {
16422           ret = new TDropViewSqlStatement(pdbvendor);
16423              break;
16424          }
16425        case ssthiveExplain:
16426        {
16427            ret = new THiveExplain(pdbvendor);
16428            break;
16429        }
16430        case ssthiveExportTable:
16431        {
16432            ret = new THiveExportTable(pdbvendor);
16433               break;
16434        }
16435        case ssthiveGrant:
16436        {
16437            ret = new THiveGrant(pdbvendor);
16438               break;
16439        }
16440        case ssthiveGrantRole:
16441        {
16442            ret = new THiveGrantRole(pdbvendor);
16443               break;
16444        }
16445        case ssthiveImportTable:
16446        {
16447            ret = new THiveImportTable(pdbvendor);
16448               break;
16449        }
16450        case ssthiveLoad:
16451        {
16452            ret = new THiveLoad(pdbvendor);
16453               break;
16454        }
16455        case ssthiveLockTable:
16456        {
16457            ret = new TLockTableStmt(pdbvendor);
16458               break;
16459        }
16460        case sstmsck:
16461        {
16462            ret = new TMSCKStmt(pdbvendor);
16463               break;
16464        }
16465        case ssthiveRevoke:
16466        {
16467            ret = new THiveRevoke(pdbvendor);
16468               break;
16469        }
16470        case ssthiveRevokeRole:
16471        {
16472            ret = new THiveRevokeRole(pdbvendor);
16473               break;
16474        }
16475        case ssthiveSet:
16476        {
16477            ret = new THiveSet(pdbvendor);
16478               break;
16479        }
16480        case ssthiveShow:
16481        {
16482            ret = new THiveShow(pdbvendor);
16483               break;
16484        }
16485        case ssthiveShowGrants:
16486        {
16487            ret = new THiveShowGrant(pdbvendor);
16488               break;
16489        }
16490        case ssthiveShowRoleGrants:
16491        {
16492            ret = new THiveShowRoleGrant(pdbvendor);
16493               break;
16494        }
16495        case ssthiveUnlockTable:
16496        {
16497            ret = new THiveUnlockTable(pdbvendor);
16498               break;
16499        }
16500        case ssthiveSwitchDatabase:
16501        {
16502            ret = new TUseDatabase(pdbvendor);
16503               break;
16504        }
16505        case sstmerge:
16506        {
16507            ret = new TMergeSqlStatement(pdbvendor);
16508            break;
16509        }
16510        case sstupdate:
16511        {
16512            ret = new TUpdateSqlStatement(pdbvendor);
16513            break;
16514        }
16515        case sstdelete:
16516        {
16517            ret = new TDeleteSqlStatement(pdbvendor);
16518            break;
16519        }
16520        case sstCreateMacro:
16521            ret = new TCreateMacro(pdbvendor);
16522            break;
16523        case sstDropMacro:
16524            ret = new TDropMacro(pdbvendor);
16525            break;
16526        case sstcreatematerializedview:
16527            ret = new TCreateMaterializedSqlStatement(pdbvendor);
16528            break;
16529        case sstupsert:
16530            ret = new TUpsertStmt(pdbvendor);
16531            break;
16532        default:
16533          {
16534            ret = new TUnknownSqlStatement(pdbvendor);
16535            ret.sqlstatementtype = gnewsqlstatementtype;
16536            break;
16537          }
16538    }    // case
16539
16540    return ret;
16541}
16542
16543    TCustomSqlStatement isvertica(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
16544        TCustomSqlStatement ret = null;
16545
16546        gnewsqlstatementtype = ESqlStatementType.sstinvalid;
16547
16548        if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
16549                || (pcst.tokencode  == TBaseType.cmtslashstar)
16550                || (pcst.tokencode  == TBaseType.lexspace)
16551                || (pcst.tokencode  == TBaseType.lexnewline)
16552                || (pcst.tokentype == ETokenType.ttsemicolon) )
16553        {
16554            return null;
16555        }
16556
16557        int lcpos = pcst.posinlist;
16558        TSourceTokenList lcsourcetokenlist = pcst.container;
16559        TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
16560
16561        //subquery after semicolon or at first line
16562        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
16563        {
16564            int k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
16565            if ( k >0 )
16566            {
16567                ret = new TSelectSqlStatement(pdbvendor);
16568            }
16569
16570            return ret;
16571        }
16572
16573        //cte
16574        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
16575        {
16576            ret = findcte(pcst,pdbvendor);
16577            if ( (ret != null) )  return ret;
16578        }
16579
16580        gnewsqlstatementtype = findverticacmd(pcst);
16581
16582        TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
16583        switch (gnewsqlstatementtype) {    //
16584            case sstinvalid:
16585            {
16586                ret = null;
16587
16588                if ( pstate == EFindSqlStateType.stnormal )
16589                {
16590                    if ( pcst.tokencode == TBaseType.label_begin )
16591                    {
16592                        ret = new TCommonBlock(pdbvendor);
16593                        gnewsqlstatementtype = ret.sqlstatementtype;
16594                    }
16595                    else if ( pcst.tokencode == TBaseType.rrw_declare )
16596                    {
16597                        ret = new TCommonBlock(pdbvendor);
16598                        gnewsqlstatementtype = ret.sqlstatementtype;
16599                    }
16600                    else if ( pcst.tokencode == TBaseType.rrw_begin )
16601                    {
16602                        ret = new TCommonBlock(pdbvendor);
16603                        gnewsqlstatementtype = ret.sqlstatementtype;
16604                    }
16605                    else if ( pcst.tokencode == TBaseType.rrw_procedure )
16606                    {
16607                        ret = new TPlsqlCreateProcedure(pdbvendor);
16608                        // ret.sqlstatementtype = ESqlStatementType.sstplsql_createprocedure;
16609                        gnewsqlstatementtype = ret.sqlstatementtype;
16610                    }
16611                    else if ( pcst.tokencode == TBaseType.rrw_function )
16612                    {
16613                        ret = new TPlsqlCreateFunction(pdbvendor);
16614                        // ret.sqlstatementtype = ESqlStatementType.sstplsql_createfunction;
16615                        gnewsqlstatementtype = ret.sqlstatementtype;
16616                    }
16617                    else if ( pcst.tokencode == TBaseType.rrw_package )
16618                    {
16619                        ret = new TPlsqlCreatePackage(pdbvendor);
16620                        // ret.sqlstatementtype = ESqlStatementType.sstplsql_createpackage;
16621                        gnewsqlstatementtype = ret.sqlstatementtype;
16622                    }
16623                }
16624                break;
16625            }
16626            case sstselect:
16627            {
16628                boolean lcisnewsql = true;
16629
16630                if ( pstate != EFindSqlStateType.stnormal )
16631                {
16632                    // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
16633                    if ( (lcprevsolidtoken != null) )
16634                    {
16635                        if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
16636                            lcisnewsql = false; //subqery
16637                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
16638                            lcisnewsql = false;
16639                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
16640                            lcisnewsql = false;
16641                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
16642                            lcisnewsql = false;
16643                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
16644                            lcisnewsql = false;
16645                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
16646                            lcisnewsql = false;
16647                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
16648                        {
16649                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
16650                                lcisnewsql = false;
16651                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
16652                                lcisnewsql = false;
16653                        }
16654
16655                        if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
16656                        {
16657                            TSourceToken lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
16658                            if ( (lcpprevsolidtoken != null) )
16659                            {
16660                                if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
16661                                    lcisnewsql = false;
16662                            }
16663                        }
16664
16665                    }
16666
16667
16668                    if ( (lccurrentsqlstatement != null) )
16669                    {
16670                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
16671                            lcisnewsql = false;
16672                    }
16673
16674                }
16675
16676                if ( lcisnewsql )
16677                    ret = new TSelectSqlStatement(pdbvendor);
16678
16679                break;
16680            }
16681            case sstinsert:
16682            {
16683                boolean lcisnewsql = true;
16684                if ( pstate != EFindSqlStateType.stnormal )
16685                {
16686                    if ( (lccurrentsqlstatement != null) )
16687                    {
16688
16689                    }
16690                }
16691
16692                if ( lcisnewsql )
16693                    ret = new TInsertSqlStatement(pdbvendor);
16694
16695                break;
16696            }
16697            case sstupdate:
16698            {
16699                boolean lcisnewsql = true;
16700                if ( pstate != EFindSqlStateType.stnormal )
16701                {
16702                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
16703                    if ( (lcprevsolidtoken != null) )
16704                    { //
16705                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
16706                            lcisnewsql = false;
16707                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
16708                            lcisnewsql = false;
16709                    }
16710
16711                    TSourceToken lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
16712                    if ( (lcnextsolidtoken != null) )
16713                    {
16714                        if ( lcnextsolidtoken.tokentype == ETokenType.ttleftparenthesis)
16715                        {
16716                            int k = lcsourcetokenlist.solidtokenafterpos(lcnextsolidtoken.posinlist,TBaseType.rrw_select,1,"(");
16717                            if ( k  == 0 ) lcisnewsql = false;
16718                        }
16719                    }
16720
16721
16722                    if ( (lccurrentsqlstatement != null) )
16723                    {
16724                    }
16725                }
16726
16727                if ( lcisnewsql )
16728                {
16729                    ret = new TUpdateSqlStatement(pdbvendor);
16730                    ret.dummytag = 1; // means set clause in update is not found yet, used to seperate set clause from set statement
16731                }
16732                break;
16733            }
16734            case sstdelete:
16735            {
16736                boolean lcisnewsql = true;
16737
16738                if ( pstate != EFindSqlStateType.stnormal )
16739                {
16740                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
16741                    if ( (lcprevsolidtoken != null) )
16742                    {
16743                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
16744                            lcisnewsql = false;
16745                    }
16746
16747                    if ( (lccurrentsqlstatement != null) )
16748                    {
16749                    }
16750                }
16751
16752                if ( lcisnewsql )
16753                    ret = new TDeleteSqlStatement(pdbvendor);
16754
16755                break;
16756            }
16757            case sstmerge:
16758            {
16759                ret = new TMergeSqlStatement(pdbvendor);
16760                ret.sqlstatementtype = gnewsqlstatementtype;
16761                break;
16762            }
16763            case sstcommit:
16764            case sstEnd:
16765            {
16766                ret = new TCommitStmt(pdbvendor);
16767                ret.sqlstatementtype = gnewsqlstatementtype;
16768                break;
16769            }
16770            case sstrollback:
16771            {
16772                ret = new TRollbackStmt(pdbvendor);
16773                ret.sqlstatementtype = gnewsqlstatementtype;
16774                break;
16775            }
16776            case sstsavepoint:
16777            {
16778                ret = new TSavepointStmt(pdbvendor);
16779                ret.sqlstatementtype = gnewsqlstatementtype;
16780                break;
16781            }
16782            case sstRevoke:
16783            {
16784                ret = new TRevokeStmt(pdbvendor);
16785                ret.sqlstatementtype = gnewsqlstatementtype;
16786                break;
16787            }
16788            case sstGrant:
16789            {
16790                ret = new TGrantStmt(pdbvendor);
16791                ret.sqlstatementtype = gnewsqlstatementtype;
16792                break;
16793            }
16794            case sstTruncate:
16795            {
16796                ret = new TTruncateStatement(pdbvendor);
16797                ret.sqlstatementtype = gnewsqlstatementtype;
16798                break;
16799            }
16800            case sstcreatetable:
16801            {
16802                ret = new TCreateTableSqlStatement(pdbvendor);
16803                break;
16804            }
16805            case sstcreateview:
16806            {
16807                ret = new TCreateViewSqlStatement(pdbvendor);
16808                break;
16809            }
16810            case sstcreateindex:
16811            {
16812                ret = new TCreateIndexSqlStatement(pdbvendor);
16813                break;
16814            }
16815            case sstcreatedatabase:
16816            {
16817                ret = new TCreateDatabaseSqlStatement(pdbvendor);
16818                break;
16819            }
16820            case sstdroptable:
16821            {
16822                ret = new TDropTableSqlStatement(pdbvendor);
16823                break;
16824            }
16825            case sstdropview:
16826            {
16827                ret = new TDropViewSqlStatement(pdbvendor);
16828                break;
16829            }
16830            case sstdropindex:
16831            {
16832                ret = new TDropIndexSqlStatement(pdbvendor);
16833                break;
16834            }
16835            case sstaltertable:
16836            {
16837                ret = new TAlterTableStatement(pdbvendor);
16838                break;
16839            }
16840            case sstaltersession:
16841            {
16842                ret = new TAlterSessionStatement(pdbvendor);
16843                break;
16844            }
16845            case sstcreateprocedure:
16846            {
16847                ret = new TCreateProcedureStmt(pdbvendor);
16848                break;
16849            }
16850            case sstCommentOn:
16851            {
16852                ret = new TCommentOnSqlStmt(pdbvendor);
16853                break;
16854            }
16855            case sstcreatesequence:
16856            {
16857                ret = new TCreateSequenceStmt(pdbvendor);
16858                break;
16859            }
16860            case sstcreatefunction:
16861                ret = new TVerticaCreateFunction(pdbvendor);
16862                break;
16863            case sstaltersequence:
16864                ret = new TAlterSequenceStatement(pdbvendor);
16865                break;
16866            case sstAlterAccessPolicy:
16867                ret = new TAlterAccessPolicy(pdbvendor);
16868                break;
16869            case sstAlterAuthentication:
16870                ret = new TAlterAuthentication(pdbvendor);
16871                break;
16872            case sstalterdatabase:
16873                ret = new TAlterDatabaseStmt(pdbvendor);
16874                break;
16875            case sstAlterFaultGroup:
16876                ret = new TAlterFaultGroup(pdbvendor);
16877                break;
16878            case sstalterfunction:
16879                ret = new TAlterFunctionStmt(pdbvendor);
16880                break;
16881            case sstAlterLibrary:
16882                ret = new TAlterLibraryStmt(pdbvendor);
16883                break;
16884            case sstAlterNode:
16885                 ret = new TAlterNode(pdbvendor);
16886                break;
16887            case sstAlterNetworkInterface:
16888                ret = new TAlterNetworkInterface(pdbvendor);
16889                break;
16890            case sstAlterProjection:
16891                ret = new TAlterProjectionRename(pdbvendor);
16892                break;
16893            case sstAlterProfile:
16894                ret = new TAlterProfile(pdbvendor);
16895                break;
16896            case sstAlterResourcePool:
16897                ret = new TAlterResourcePool(pdbvendor);
16898                break;
16899            case sstAlterRole:
16900                ret = new TAlterRoleStmt(pdbvendor);
16901                break;
16902            case sstAlterSchema:
16903                ret = new TAlterSchemaStmt(pdbvendor);
16904                break;
16905            case sstAlterSubnet:
16906                ret = new TAlterSubnet(pdbvendor);
16907                break;
16908            case sstBegin:
16909            case sstStartTransaction:
16910                ret = new TBeginTran(pdbvendor);
16911                break;
16912            case sstReleaseSavepoint:
16913                ret = new TReleaseSavepointStmt(pdbvendor);
16914                break;
16915            case sstconnect:
16916                ret = new TConnectStmt(pdbvendor);
16917                break;
16918            case sstCreateAccessPolicy:
16919                ret = new TCreateAccessPolicy(pdbvendor);
16920                break;
16921            case sstCreateAuthentication:
16922                ret = new TCreateAuthentication(pdbvendor);
16923                break;
16924            case sstCreateFaultGroup:
16925                ret = new TCreateFaultGroup(pdbvendor);
16926                break;
16927            case sstCreateHCatalogSchema:
16928                ret = new TCreateHCatalogSchema(pdbvendor);
16929                break;
16930            case sstCreateSubnet:
16931                ret = new TCreateSubnet(pdbvendor);
16932                break;
16933            case sstcreateuser:
16934                ret = new TCreateUserStmt(pdbvendor);
16935                break;
16936            case sstDisconnect:
16937                ret = new TDisconnectStmt(pdbvendor);
16938                break;
16939            case sstDropAccessPolicy:
16940                ret = new TDropAccessPolicy(pdbvendor);
16941                break;
16942            case sstDropAggregateFunction:
16943                ret = new TDropAggregateFunction(pdbvendor);
16944                break;
16945            case sstDropAuthentication:
16946                ret = new TDropAuthentication(pdbvendor);
16947                break;
16948            case sstDropFaultGroup:
16949                ret = new TDropFaultGroup(pdbvendor);
16950                break;
16951            case sstdropfunction:
16952                ret = new TDropFunctionStmt(pdbvendor);
16953                break;
16954            case sstDropLibrary:
16955                ret = new TDropLibraryStmt(pdbvendor);
16956                break;
16957            case sstDropNetworkInterface:
16958                ret = new TDropNetworkInterface(pdbvendor);
16959                break;
16960            case sstdropprocedure:
16961                ret = new TDropProcedureStmt(pdbvendor);
16962                break;
16963            case sstDropProjection:
16964                ret = new TDropProjectionStmt(pdbvendor);
16965                break;
16966            case sstDropResourcePool:
16967                ret = new TDropResourcePool(pdbvendor);
16968                break;
16969            case sstdroprole:
16970                ret  = new TDropRoleStmt(pdbvendor);
16971                break;
16972            case sstdropschema:
16973                ret = new TDropSchemaSqlStatement(pdbvendor);
16974                break;
16975            case sstdropsequence:
16976                ret = new TDropSequenceStmt(pdbvendor);
16977                break;
16978            case sstDropSubnet:
16979                ret = new TDropSubnet(pdbvendor);
16980                break;
16981            case sstDropTextIndex:
16982                ret = new TDropTextIndex(pdbvendor);
16983                break;
16984            case sstDropTransformFunction:
16985                ret = new TDropTransformFunction(pdbvendor);
16986                break;
16987            case sstdropuser:
16988                ret = new TDropUserStmt(pdbvendor);
16989                break;
16990            case sstExplain:
16991            {
16992                ret = new TExplainPlan(pdbvendor);
16993                break;
16994            }
16995            case sstExportToVertica:
16996                ret = new TExportToVertica(pdbvendor);
16997                break;
16998            case sstProfile:
16999                ret = new TProfileStmt(pdbvendor);
17000                break;
17001            case sstset:
17002                ret = new TVerticaSetStmt(pdbvendor);
17003                break;
17004            case sstShow:
17005                ret = new TVerticaShow(pdbvendor);
17006                break;
17007            case sstcall:
17008                ret = new TCallStatement(pdbvendor);
17009                break;
17010            default:
17011            {
17012                ret = new TUnknownSqlStatement(pdbvendor);
17013                ret.sqlstatementtype = gnewsqlstatementtype;
17014                break;
17015            }
17016        }    // case
17017
17018        return ret;
17019    }
17020
17021
17022    TCustomSqlStatement iscouchbase(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
17023        TCustomSqlStatement ret = null;
17024
17025        gnewsqlstatementtype = ESqlStatementType.sstinvalid;
17026
17027        if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
17028                || (pcst.tokencode  == TBaseType.cmtslashstar)
17029                || (pcst.tokencode  == TBaseType.lexspace)
17030                || (pcst.tokencode  == TBaseType.lexnewline)
17031                || (pcst.tokentype == ETokenType.ttsemicolon) )
17032        {
17033            return null;
17034        }
17035
17036        int lcpos = pcst.posinlist;
17037        TSourceTokenList lcsourcetokenlist = pcst.container;
17038        TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
17039
17040        //subquery after semicolon or at first line
17041        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
17042        {
17043            int k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
17044            if ( k >0 )
17045            {
17046                ret = new TSelectSqlStatement(pdbvendor);
17047            }
17048
17049            return ret;
17050        }
17051
17052        //cte
17053        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
17054        {
17055            ret = findcte(pcst,pdbvendor);
17056            if ( (ret != null) )  return ret;
17057        }
17058
17059        gnewsqlstatementtype = findcouchbasecmd(pcst);
17060
17061        TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
17062        switch (gnewsqlstatementtype) {    //
17063            case sstinvalid:
17064            {
17065                ret = null;
17066
17067                if ( pstate == EFindSqlStateType.stnormal )
17068                {
17069                    if ( pcst.tokencode == TBaseType.label_begin )
17070                    {
17071                        ret = new TCommonBlock(pdbvendor);
17072                        gnewsqlstatementtype = ret.sqlstatementtype;
17073                    }
17074                    else if ( pcst.tokencode == TBaseType.rrw_declare )
17075                    {
17076                        ret = new TCommonBlock(pdbvendor);
17077                        gnewsqlstatementtype = ret.sqlstatementtype;
17078                    }
17079                    else if ( pcst.tokencode == TBaseType.rrw_begin )
17080                    {
17081                        ret = new TCommonBlock(pdbvendor);
17082                        gnewsqlstatementtype = ret.sqlstatementtype;
17083                    }
17084                    else if ( pcst.tokencode == TBaseType.rrw_procedure )
17085                    {
17086                        ret = new TPlsqlCreateProcedure(pdbvendor);
17087                        // ret.sqlstatementtype = ESqlStatementType.sstplsql_createprocedure;
17088                        gnewsqlstatementtype = ret.sqlstatementtype;
17089                    }
17090                    else if ( pcst.tokencode == TBaseType.rrw_function )
17091                    {
17092                        ret = new TPlsqlCreateFunction(pdbvendor);
17093                        // ret.sqlstatementtype = ESqlStatementType.sstplsql_createfunction;
17094                        gnewsqlstatementtype = ret.sqlstatementtype;
17095                    }
17096                    else if ( pcst.tokencode == TBaseType.rrw_package )
17097                    {
17098                        ret = new TPlsqlCreatePackage(pdbvendor);
17099                        // ret.sqlstatementtype = ESqlStatementType.sstplsql_createpackage;
17100                        gnewsqlstatementtype = ret.sqlstatementtype;
17101                    }
17102                }
17103                break;
17104            }
17105            case sstselect:
17106            {
17107                boolean lcisnewsql = true;
17108
17109                if ( pstate != EFindSqlStateType.stnormal )
17110                {
17111                    // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
17112                    if ( (lcprevsolidtoken != null) )
17113                    {
17114                        if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
17115                            lcisnewsql = false; //subqery
17116                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
17117                            lcisnewsql = false;
17118                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
17119                            lcisnewsql = false;
17120                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
17121                            lcisnewsql = false;
17122                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
17123                            lcisnewsql = false;
17124                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
17125                            lcisnewsql = false;
17126                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
17127                        {
17128                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
17129                                lcisnewsql = false;
17130                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
17131                                lcisnewsql = false;
17132                        }
17133
17134                        if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
17135                        {
17136                            TSourceToken lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
17137                            if ( (lcpprevsolidtoken != null) )
17138                            {
17139                                if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
17140                                    lcisnewsql = false;
17141                            }
17142                        }
17143
17144                    }
17145
17146
17147                    if ( (lccurrentsqlstatement != null) )
17148                    {
17149                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
17150                            lcisnewsql = false;
17151                    }
17152
17153                }
17154
17155                if ( lcisnewsql )
17156                    ret = new TSelectSqlStatement(pdbvendor);
17157
17158                break;
17159            }
17160            case sstinsert:
17161            {
17162                boolean lcisnewsql = true;
17163                if ( pstate != EFindSqlStateType.stnormal )
17164                {
17165                    if ( (lccurrentsqlstatement != null) )
17166                    {
17167
17168                    }
17169                }
17170
17171                if ( lcisnewsql )
17172                    ret = new TInsertSqlStatement(pdbvendor);
17173
17174                break;
17175            }
17176            case sstupdate:
17177            {
17178                boolean lcisnewsql = true;
17179                if ( pstate != EFindSqlStateType.stnormal )
17180                {
17181                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
17182                    if ( (lcprevsolidtoken != null) )
17183                    { //
17184                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
17185                            lcisnewsql = false;
17186                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
17187                            lcisnewsql = false;
17188                    }
17189
17190                    TSourceToken lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
17191                    if ( (lcnextsolidtoken != null) )
17192                    {
17193                        if ( lcnextsolidtoken.tokentype == ETokenType.ttleftparenthesis)
17194                        {
17195                            int k = lcsourcetokenlist.solidtokenafterpos(lcnextsolidtoken.posinlist,TBaseType.rrw_select,1,"(");
17196                            if ( k  == 0 ) lcisnewsql = false;
17197                        }
17198                    }
17199
17200
17201                    if ( (lccurrentsqlstatement != null) )
17202                    {
17203                    }
17204                }
17205
17206                if ( lcisnewsql )
17207                {
17208                    ret = new TUpdateSqlStatement(pdbvendor);
17209                    ret.dummytag = 1; // means set clause in update is not found yet, used to seperate set clause from set statement
17210                }
17211                break;
17212            }
17213            case sstdelete:
17214            {
17215                boolean lcisnewsql = true;
17216
17217                if ( pstate != EFindSqlStateType.stnormal )
17218                {
17219                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
17220                    if ( (lcprevsolidtoken != null) )
17221                    {
17222                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
17223                            lcisnewsql = false;
17224                    }
17225
17226                    if ( (lccurrentsqlstatement != null) )
17227                    {
17228                    }
17229                }
17230
17231                if ( lcisnewsql )
17232                    ret = new TDeleteSqlStatement(pdbvendor);
17233
17234                break;
17235            }
17236            case sstmerge:
17237            {
17238                ret = new TMergeSqlStatement(pdbvendor);
17239                ret.sqlstatementtype = gnewsqlstatementtype;
17240                break;
17241            }
17242            case sstcreateindex:
17243            {
17244                ret = new TCreateIndexSqlStatement(pdbvendor);
17245                break;
17246            }
17247            case sstdropindex:
17248            {
17249                ret = new TDropIndexSqlStatement(pdbvendor);
17250                break;
17251            }
17252            case sstBuildIndex:
17253                ret = new TTBuildIndexesStmt(pdbvendor);
17254                break;
17255            case sstinfer:
17256                ret = new TInferKeyspaceStmt(pdbvendor);
17257                break;
17258            case sstupsert:
17259                ret = new TUpsertStmt(pdbvendor);
17260                break;
17261            case sstExplain:
17262            {
17263                ret = new TExplainPlan(pdbvendor);
17264                break;
17265            }
17266            case sstprepare:
17267            {
17268                ret = new TExplainPlan(pdbvendor);
17269                ret.sqlstatementtype = ESqlStatementType.sstprepare;
17270                break;
17271            }
17272            case sstExecutePreparedStmt:
17273                ret = new TExecuteSqlStatement(pdbvendor);
17274                break;
17275            default:
17276            {
17277                ret = new TUnknownSqlStatement(pdbvendor);
17278                ret.sqlstatementtype = gnewsqlstatementtype;
17279                break;
17280            }
17281        }    // case
17282
17283        return ret;
17284    }
17285
17286    /**
17287     * Generic method for yacc parsers to find SQL command type.
17288     * Delegates to vendor-specific implementations where available.
17289     * Added temporarily for revert testing - uses token's dbvendor field.
17290     */
17291    public ESqlStatementType findCmdUsedByYacc(TSourceToken token) {
17292        EDbVendor vendor = token.getDbvendor();
17293        if (vendor == null) {
17294            return ESqlStatementType.sstinvalid;
17295        }
17296
17297        // Delegate to vendor-specific methods where they exist
17298        switch (vendor) {
17299            case dbvmssql:
17300                return findmssqlcmdusedbyyacc(token);
17301            case dbvsybase:
17302                return findsybasecmdusedbyyacc(token);
17303            case dbvsybasease:
17304                return findsybaseasecmdusedbyyacc(token);
17305            case dbvsqlanywhere:
17306                return findsqlanywherecmdusedbyyacc(token);
17307            case dbvsybaseiq:
17308                return findsybaseiqcmdusedbyyacc(token);
17309            // For other vendors, use generic command finding
17310            default:
17311                TSqlCmdList cmdList = getSqlCmdList(vendor);
17312                if (cmdList == null || cmdList.size() == 0) {
17313                    return ESqlStatementType.sstunknown;
17314                }
17315                // Use generic finddbcmd for vendors without specific yacc methods
17316                return finddbcmd(token, cmdList);
17317        }
17318    }
17319
17320
17321    // ---- Sybase ASE fork (dbvsybasease): full-family recognition; rejection of
17322    // ---- foreign statements is the parser policy layer, not this table.
17323void initsybaseasecmds(){
17324// cmd must be sort alphabetically
17325    addsybaseasecmds(ESqlStatementType.sstmssqladdsignature, TBaseType.rrw_add,"counter","signature"," "," "," "," ");
17326    addsybaseasecmds(ESqlStatementType.sstmssqladdsignature, TBaseType.rrw_add,"signature"," "," "," "," "," ");
17327//alter
17328    addsybaseasecmds(ESqlStatementType.sstmssqlalterapplicationrole, TBaseType.rrw_alter,"application","role"," "," "," "," ");
17329    addsybaseasecmds(ESqlStatementType.sstmssqlalterassembly, TBaseType.rrw_alter,"assembly"," "," "," "," "," ");
17330    addsybaseasecmds(ESqlStatementType.sstmssqlalterasymmetrickey, TBaseType.rrw_alter,"asymmetric","key"," "," "," "," ");
17331    addsybaseasecmds(ESqlStatementType.sstmssqlalterauthorization, TBaseType.rrw_alter,"authorization"," "," "," "," "," ");
17332    addsybaseasecmds(ESqlStatementType.sstmssqlaltercertificate, TBaseType.rrw_alter,"certificate"," "," "," "," "," ");
17333    addsybaseasecmds(ESqlStatementType.sstmssqlaltercredential, TBaseType.rrw_alter,"credential"," "," "," "," "," ");
17334    addsybaseasecmds(ESqlStatementType.sstmssqlalterdatabase, TBaseType.rrw_alter,"database"," "," "," "," "," ");
17335    addsybaseasecmds(ESqlStatementType.sstsybasealterdbspace, TBaseType.rrw_alter,"dbspace"," "," "," "," "," ");
17336    addsybaseasecmds(ESqlStatementType.sstsybasealterdomain, TBaseType.rrw_alter,"domain"," "," "," "," "," ");
17337    addsybaseasecmds(ESqlStatementType.sstmssqlalterendpoint, TBaseType.rrw_alter,"endpoint"," "," "," "," "," ");
17338    addsybaseasecmds(ESqlStatementType.sstmssqlalterfulltextcatalog, TBaseType.rrw_alter,"fulltext","catalog"," "," "," "," ");
17339    addsybaseasecmds(ESqlStatementType.sstmssqlalterfulltextindex, TBaseType.rrw_alter,"fulltext","index"," "," "," "," ");
17340    addsybaseasecmds(ESqlStatementType.sstmssqlalterfunction, TBaseType.rrw_alter,"function"," "," "," "," "," ");
17341    addsybaseasecmds(ESqlStatementType.sstmssqlalterindex, TBaseType.rrw_alter,"index"," "," "," "," "," ");
17342    addsybaseasecmds(ESqlStatementType.sstmssqlalterlogin, TBaseType.rrw_alter,"login"," "," "," "," "," ");
17343    addsybaseasecmds(ESqlStatementType.sstmssqlaltermasterkey, TBaseType.rrw_alter,"master","key"," "," "," "," ");
17344    addsybaseasecmds(ESqlStatementType.sstmssqlaltermessagetype, TBaseType.rrw_alter,"message","type"," "," "," "," ");
17345    addsybaseasecmds(ESqlStatementType.sstmssqlalterpartitionfunction, TBaseType.rrw_alter,"partition","function"," "," "," "," ");
17346    addsybaseasecmds(ESqlStatementType.sstmssqlalterpartitionscheme, TBaseType.rrw_alter,"partition","scheme"," "," "," "," ");
17347    addsybaseasecmds(ESqlStatementType.sstmssqlalterprocedure, TBaseType.rrw_alter,"proc"," "," "," "," "," ");
17348    addsybaseasecmds(ESqlStatementType.sstmssqlalterprocedure, TBaseType.rrw_alter,"procedure"," "," "," "," "," ");
17349    addsybaseasecmds(ESqlStatementType.sstmssqlalterqueue, TBaseType.rrw_alter,"queue"," "," "," "," "," ");
17350    addsybaseasecmds(ESqlStatementType.sstmssqlalterremoteservicebinding, TBaseType.rrw_alter,"remote","service","binding"," "," "," ");
17351    addsybaseasecmds(ESqlStatementType.sstmssqlalterrole, TBaseType.rrw_alter,"role"," "," "," "," "," ");
17352    addsybaseasecmds(ESqlStatementType.sstmssqlalterroute, TBaseType.rrw_alter,"route"," "," "," "," "," ");
17353    addsybaseasecmds(ESqlStatementType.sstmssqlalterschema, TBaseType.rrw_alter,"schema"," "," "," "," "," ");
17354    addsybaseasecmds(ESqlStatementType.sstsybasealterserver, TBaseType.rrw_alter,"server"," "," "," "," "," ");
17355    addsybaseasecmds(ESqlStatementType.sstmssqlalterservice, TBaseType.rrw_alter,"service"," "," "," "," "," ");
17356    addsybaseasecmds(ESqlStatementType.sstmssqlalterservicemasterkey, TBaseType.rrw_alter,"service","master","key"," "," "," ");
17357    addsybaseasecmds(ESqlStatementType.sstmssqlaltersymmetrickey, TBaseType.rrw_alter,"symmetric","key"," "," "," "," ");
17358    addsybaseasecmds(ESqlStatementType.sstaltertable, TBaseType.rrw_alter,"table"," "," "," "," "," ");
17359    addsybaseasecmds(ESqlStatementType.sstmssqlaltertrigger, TBaseType.rrw_alter,"trigger"," "," "," "," "," ");
17360    addsybaseasecmds(ESqlStatementType.sstmssqlalteruser, TBaseType.rrw_alter,"user"," "," "," "," "," ");
17361    addsybaseasecmds(ESqlStatementType.sstmssqlalterview, TBaseType.rrw_alter,"view"," "," "," "," "," ");
17362    addsybaseasecmds(ESqlStatementType.sstmssqlalterxmlschemacollection, TBaseType.rrw_alter,"xml","schema","collection"," "," "," ");
17363//backup
17364    addsybaseasecmds(ESqlStatementType.sstmssqlbackupdatabase, TBaseType.rrw_backup,"database"," "," "," "," "," ");
17365    addsybaseasecmds(ESqlStatementType.sstmssqlbackupcertificate, TBaseType.rrw_backup,"certificate"," "," "," "," "," ");
17366    addsybaseasecmds(ESqlStatementType.sstmssqlbackuplog, TBaseType.rrw_backup,"log"," "," "," "," "," ");
17367    addsybaseasecmds(ESqlStatementType.sstmssqlbackupmasterkey, TBaseType.rrw_backup,"master","key"," "," "," "," ");
17368    addsybaseasecmds(ESqlStatementType.sstmssqlbackupservicemasterkey, TBaseType.rrw_backup,"service","master","key"," "," "," ");
17369//begin
17370    addsybaseasecmds(ESqlStatementType.sstmssqlbegincatch, TBaseType.rrw_begin,"catch"," "," "," "," "," ");
17371    addsybaseasecmds(ESqlStatementType.sstmssqlbeginconversationtimer, TBaseType.rrw_begin,"conversation","timer"," "," "," "," ");
17372    addsybaseasecmds(ESqlStatementType.sstmssqlbegindialog, TBaseType.rrw_begin,"dialog"," "," "," "," "," ");
17373    addsybaseasecmds(ESqlStatementType.sstmssqlbegindistributed, TBaseType.rrw_begin,"distributed"," "," "," "," "," ");
17374    addsybaseasecmds(ESqlStatementType.sstmssqlbegintran, TBaseType.rrw_begin,"tran"," "," "," "," "," ");
17375    addsybaseasecmds(ESqlStatementType.sstmssqlbegintran, TBaseType.rrw_begin,"transaction"," "," "," "," "," ");
17376    addsybaseasecmds(ESqlStatementType.sstmssqlbegintry, TBaseType.rrw_begin,"try"," "," "," "," "," ");
17377//break
17378    addsybaseasecmds(ESqlStatementType.sstbreak, TBaseType.rrw_break," "," "," "," "," "," ");
17379//bulk insert
17380    addsybaseasecmds(ESqlStatementType.sstmssqlbulkinsert, TBaseType.rrw_bulk,"insert"," "," "," "," "," ");
17381
17382    addsybaseasecmds(ESqlStatementType.sstcall, TBaseType.rrw_call," "," "," "," "," "," ");
17383
17384//checkpoint
17385    addsybaseasecmds(ESqlStatementType.sstmssqlcheckpoint, TBaseType.rrw_checkpoint," "," "," "," "," "," ");
17386//close
17387    addsybaseasecmds(ESqlStatementType.sstmssqlclose, TBaseType.rrw_close," "," "," "," "," "," ");
17388    addsybaseasecmds(ESqlStatementType.sstmssqlclosesymmetrickey, TBaseType.rrw_close,"all", "symmetric", "keys"," "," "," ");
17389    addsybaseasecmds(ESqlStatementType.sstmssqlclosemasterkey, TBaseType.rrw_close,"master", "key"," "," "," "," ");
17390    addsybaseasecmds(ESqlStatementType.sstmssqlclosesymmetrickey, TBaseType.rrw_close,"symmetric", "key"," "," "," "," ");
17391//commit
17392    addsybaseasecmds(ESqlStatementType.sstmssqlcommit, TBaseType.rrw_commit," "," "," "," "," "," ");
17393    addsybaseasecmds(ESqlStatementType.sstmssqlcommit, TBaseType.rrw_commit,"work"," "," "," "," "," ");
17394    addsybaseasecmds(ESqlStatementType.sstmssqlcommit, TBaseType.rrw_commit,"tran"," "," "," "," "," ");
17395    addsybaseasecmds(ESqlStatementType.sstmssqlcommit, TBaseType.rrw_commit,"transaction"," "," "," "," "," ");
17396//continue
17397    addsybaseasecmds(ESqlStatementType.sstmssqlcontinue, TBaseType.rrw_continue," "," "," "," "," "," ");
17398//create
17399    addsybaseasecmds(ESqlStatementType.sstmssqlcreateaggregate, TBaseType.rrw_create,"aggregate"," "," "," "," "," ");
17400    addsybaseasecmds(ESqlStatementType.sstmssqlcreateapplicationrole, TBaseType.rrw_create,"application", "role"," "," "," "," ");
17401    addsybaseasecmds(ESqlStatementType.sstmssqlcreateassembly, TBaseType.rrw_create,"assembly"," "," "," "," "," ");
17402    addsybaseasecmds(ESqlStatementType.sstmssqlcreateasymmetrickey, TBaseType.rrw_create,"asymmetric", "key"," "," "," "," ");
17403    addsybaseasecmds(ESqlStatementType.sstmssqlcreatecertificate, TBaseType.rrw_create,"certificate"," "," "," "," "," ");
17404    addsybaseasecmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"clustered","index"," "," "," "," ");
17405    addsybaseasecmds(ESqlStatementType.sstmssqlcreatecontract, TBaseType.rrw_create,"contract"," "," "," "," "," ");
17406    addsybaseasecmds(ESqlStatementType.sstmssqlcreatecredential, TBaseType.rrw_create,"credential"," "," "," "," "," ");
17407    addsybaseasecmds(ESqlStatementType.sstcreatedatabase, TBaseType.rrw_create,"database"," "," "," "," "," ");
17408    addsybaseasecmds(ESqlStatementType.sstsybasecreatedbspace, TBaseType.rrw_create,"dbspace"," "," "," "," "," ");
17409    addsybaseasecmds(ESqlStatementType.sstsybasecreatedomain, TBaseType.rrw_create,"domain"," "," "," "," "," ");
17410    addsybaseasecmds(ESqlStatementType.sstmssqlcreatedefault, TBaseType.rrw_create,"default"," "," "," "," "," ");
17411    addsybaseasecmds(ESqlStatementType.sstmssqlcreateendpoint, TBaseType.rrw_create,"endpoint"," "," "," "," "," ");
17412    addsybaseasecmds(ESqlStatementType.sstmssqlcreateeventnotification, TBaseType.rrw_create,"event", "notification"," "," "," "," ");
17413    addsybaseasecmds(ESqlStatementType.sstsybasecreateexistingtable, TBaseType.rrw_create,"existing","table"," "," "," "," ");
17414    addsybaseasecmds(ESqlStatementType.sstsybasecreateexternlogin, TBaseType.rrw_create,"externlogin"," "," "," "," "," ");
17415    addsybaseasecmds(ESqlStatementType.sstmssqlcreatefulltextcatalog, TBaseType.rrw_create,"fulltext", "catalog"," "," "," "," ");
17416    addsybaseasecmds(ESqlStatementType.sstmssqlcreatefulltextindex, TBaseType.rrw_create,"fulltext", "index"," "," "," "," ");
17417    addsybaseasecmds(ESqlStatementType.sstmssqlcreatefunction, TBaseType.rrw_create,"function"," "," "," "," "," ");
17418    addsybaseasecmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"index"," "," "," "," "," ");
17419    addsybaseasecmds(ESqlStatementType.sstsybasecreatejoinindex, TBaseType.rrw_create,"join","index"," "," "," "," ");
17420    addsybaseasecmds(ESqlStatementType.sstmssqlcreatelogin, TBaseType.rrw_create,"login"," "," "," "," "," ");
17421    addsybaseasecmds(ESqlStatementType.sstmssqlcreatemasterkey, TBaseType.rrw_create,"master","key"," "," "," "," ");
17422    addsybaseasecmds(ESqlStatementType.sstmssqlcreatemessagetype, TBaseType.rrw_create,"message","type"," "," "," "," ");
17423    addsybaseasecmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"nonclustered","index"," "," "," "," ");
17424    addsybaseasecmds(ESqlStatementType.sstmssqlcreatefunction, TBaseType.rrw_create,"or","replace","function"," "," "," ");
17425    addsybaseasecmds(ESqlStatementType.sstmssqlcreateprocedure, TBaseType.rrw_create,"or","replace","proc"," "," "," ");
17426    addsybaseasecmds(ESqlStatementType.sstmssqlcreateprocedure, TBaseType.rrw_create,"or","replace","procedure"," "," "," ");
17427    addsybaseasecmds(ESqlStatementType.sstmssqlcreatepartitionfunction, TBaseType.rrw_create,"partition","function"," "," "," "," ");
17428    addsybaseasecmds(ESqlStatementType.sstmssqlcreatepartitionscheme, TBaseType.rrw_create,"partition","scheme"," "," "," "," ");
17429    addsybaseasecmds(ESqlStatementType.sstmssqlcreateprocedure, TBaseType.rrw_create,"proc"," "," "," "," "," ");
17430    addsybaseasecmds(ESqlStatementType.sstmssqlcreateprocedure, TBaseType.rrw_create,"procedure"," "," "," "," "," ");
17431    addsybaseasecmds(ESqlStatementType.sstmssqlcreatequeue, TBaseType.rrw_create,"queue"," "," "," "," "," ");
17432    addsybaseasecmds(ESqlStatementType.sstmssqlcreateremoteservicebinding, TBaseType.rrw_create,"remote", "service", "binding"," "," "," ");
17433    addsybaseasecmds(ESqlStatementType.sstmssqlcreaterole, TBaseType.rrw_create,"role"," "," "," "," "," ");
17434    addsybaseasecmds(ESqlStatementType.sstmssqlcreateroute, TBaseType.rrw_create,"route"," "," "," "," "," ");
17435    addsybaseasecmds(ESqlStatementType.sstmssqlcreaterule, TBaseType.rrw_create,"rule"," "," "," "," "," ");
17436    addsybaseasecmds(ESqlStatementType.sstmssqlcreateschema, TBaseType.rrw_create,"schema"," "," "," "," "," ");
17437    addsybaseasecmds(ESqlStatementType.sstsybasecreateserver, TBaseType.rrw_create,"server"," "," "," "," "," ");
17438    addsybaseasecmds(ESqlStatementType.sstmssqlcreateservice, TBaseType.rrw_create,"service"," "," "," "," "," ");
17439    addsybaseasecmds(ESqlStatementType.sstmssqlcreatestatistics, TBaseType.rrw_create,"statistics"," "," "," "," "," ");
17440    addsybaseasecmds(ESqlStatementType.sstmssqlcreatesymmetrickey, TBaseType.rrw_create,"symmetric", "key"," "," "," "," ");
17441    addsybaseasecmds(ESqlStatementType.sstmssqlcreatesynonym, TBaseType.rrw_create,"synonym"," "," "," "," "," ");
17442    addsybaseasecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"table"," "," "," "," "," ");
17443    addsybaseasecmds(ESqlStatementType.sstcreatetrigger, TBaseType.rrw_create,"trigger"," "," "," "," "," ");
17444    addsybaseasecmds(ESqlStatementType.sstmssqlcreatetype, TBaseType.rrw_create,"type"," "," "," "," "," ");
17445    addsybaseasecmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"cmp","index"," "," "," "," ");
17446    addsybaseasecmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"date","index"," "," "," "," ");
17447    addsybaseasecmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"dttm","index"," "," "," "," ");
17448    addsybaseasecmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"hg","index"," "," "," "," ");
17449    addsybaseasecmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"hng","index"," "," "," "," ");
17450    addsybaseasecmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"lf","index"," "," "," "," ");
17451    addsybaseasecmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"time","index"," "," "," "," ");
17452    addsybaseasecmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"wd","index"," "," "," "," ");
17453    addsybaseasecmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"unique","clustered","index"," "," "," ");
17454    addsybaseasecmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"unique","index"," "," "," "," ");
17455    addsybaseasecmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"unique","nonclustered","index"," "," "," ");
17456    addsybaseasecmds(ESqlStatementType.sstmssqlcreateuser, TBaseType.rrw_create,"user"," "," "," "," "," ");
17457    addsybaseasecmds(ESqlStatementType.sstsybasecreatevariable, TBaseType.rrw_create,"variable"," "," "," "," "," ");
17458    addsybaseasecmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,"view"," "," "," "," "," ");
17459    addsybaseasecmds(ESqlStatementType.sstmssqlcreatexmlschemacollection, TBaseType.rrw_create,"xml", "schema", "collection"," "," "," ");
17460// DBCC
17461    addsybaseasecmds(ESqlStatementType.sstmssqldbcc, TBaseType.rrw_dbcc," "," "," "," "," "," ");
17462//DEALLOCATE
17463    addsybaseasecmds(ESqlStatementType.sstmssqldeallocate, TBaseType.rrw_deallocate," "," "," "," "," "," ");
17464//DECLARE
17465    addsybaseasecmds(ESqlStatementType.sstsybasedeallocatedescriptor, TBaseType.rrw_deallocate,"descriptor"," "," "," "," "," ");
17466    addsybaseasecmds(ESqlStatementType.sstmssqldeclare, TBaseType.rrw_declare," "," "," "," "," "," ");
17467//DELETE
17468    addsybaseasecmds(ESqlStatementType.sstsybasedeclarelocaltemptable, TBaseType.rrw_declare,"local","temporary","table"," "," "," ");
17469    addsybaseasecmds(ESqlStatementType.sstdelete, TBaseType.rrw_delete," "," "," "," "," "," ");
17470
17471//DELETE statistics
17472    addsybaseasecmds(ESqlStatementType.sstsybaseDeleteStatistics, TBaseType.rrw_delete,"shared","statistics"," "," "," "," ");
17473    addsybaseasecmds(ESqlStatementType.sstsybaseDeleteStatistics, TBaseType.rrw_delete,"statistics"," "," "," "," "," ");
17474
17475//DENY
17476    addsybaseasecmds(ESqlStatementType.sstmssqldeny, TBaseType.rrw_deny," "," "," "," "," "," ");
17477//DISABLE TRIGGER
17478    addsybaseasecmds(ESqlStatementType.sstmssqldisabletrigger, TBaseType.rrw_disable,"trigger"," "," "," "," "," ");
17479//drop
17480    addsybaseasecmds(ESqlStatementType.sstmssqldropaggregate, TBaseType.rrw_drop,"aggregate"," "," "," "," "," ");
17481    addsybaseasecmds(ESqlStatementType.sstmssqldropapplicationrole, TBaseType.rrw_drop,"application", "role"," "," "," "," ");
17482    addsybaseasecmds(ESqlStatementType.sstmssqldropassembly, TBaseType.rrw_drop,"assembly"," "," "," "," "," ");
17483    addsybaseasecmds(ESqlStatementType.sstmssqldropasymmetrickey, TBaseType.rrw_drop,"asymmetric", "key"," "," "," "," ");
17484    addsybaseasecmds(ESqlStatementType.sstmssqldropcertificate, TBaseType.rrw_drop,"certificate"," "," "," "," "," ");
17485    addsybaseasecmds(ESqlStatementType.sstsybasedropconnection, TBaseType.rrw_drop,"connection"," "," "," "," "," ");
17486    addsybaseasecmds(ESqlStatementType.sstmssqldropcontract, TBaseType.rrw_drop,"contract"," "," "," "," "," ");
17487    addsybaseasecmds(ESqlStatementType.sstmssqldropsignature, TBaseType.rrw_drop,"counter", "signature"," "," "," "," ");
17488    addsybaseasecmds(ESqlStatementType.sstmssqldropcredential, TBaseType.rrw_drop,"credential"," "," "," "," "," ");
17489    addsybaseasecmds(ESqlStatementType.sstmssqldropdatabase, TBaseType.rrw_drop,"database"," "," "," "," "," ");
17490    addsybaseasecmds(ESqlStatementType.sstmssqldropdefault, TBaseType.rrw_drop,"default"," "," "," "," "," ");
17491    addsybaseasecmds(ESqlStatementType.sstmssqldropendpoint, TBaseType.rrw_drop,"endpoint"," "," "," "," "," ");
17492    addsybaseasecmds(ESqlStatementType.sstmssqldropeventnotification, TBaseType.rrw_drop,"event", "notification"," "," "," "," ");
17493    addsybaseasecmds(ESqlStatementType.sstsybasedropexternlogin, TBaseType.rrw_drop,"externlogin"," "," "," "," "," ");
17494    addsybaseasecmds(ESqlStatementType.sstmssqldropfulltextcatalog, TBaseType.rrw_drop,"fulltext", "catalog"," "," "," "," ");
17495    addsybaseasecmds(ESqlStatementType.sstmssqldropfulltextindex, TBaseType.rrw_drop,"fulltext", "index"," "," "," "," ");
17496    addsybaseasecmds(ESqlStatementType.sstmssqldropfunction, TBaseType.rrw_drop,"function"," "," "," "," "," ");
17497    addsybaseasecmds(ESqlStatementType.sstmssqldropindex, TBaseType.rrw_drop,"index"," "," "," "," "," ");
17498    addsybaseasecmds(ESqlStatementType.sstmssqldroplogin, TBaseType.rrw_drop,"login"," "," "," "," "," ");
17499    addsybaseasecmds(ESqlStatementType.sstmssqldropmasterkey, TBaseType.rrw_drop,"master", "key"," "," "," "," ");
17500    addsybaseasecmds(ESqlStatementType.sstmssqldropmessagetype, TBaseType.rrw_drop,"message", "type"," "," "," "," ");
17501    addsybaseasecmds(ESqlStatementType.sstmssqldroppartitionfunction, TBaseType.rrw_drop,"partition", "function"," "," "," "," ");
17502    addsybaseasecmds(ESqlStatementType.sstmssqldroppartitionscheme, TBaseType.rrw_drop,"partition", "scheme"," "," "," "," ");
17503    addsybaseasecmds(ESqlStatementType.sstmssqldropprocedure, TBaseType.rrw_drop,"proc"," "," "," "," "," ");
17504    addsybaseasecmds(ESqlStatementType.sstmssqldropprocedure, TBaseType.rrw_drop,"procedure"," "," "," "," "," ");
17505    addsybaseasecmds(ESqlStatementType.sstmssqldropqueue, TBaseType.rrw_drop,"queue"," "," "," "," "," ");
17506    addsybaseasecmds(ESqlStatementType.sstmssqldropremoteservicebinding, TBaseType.rrw_drop,"remote", "service", "binding"," "," "," ");
17507    addsybaseasecmds(ESqlStatementType.sstmssqldroprole, TBaseType.rrw_drop,"role"," "," "," "," "," ");
17508    addsybaseasecmds(ESqlStatementType.sstmssqldroproute, TBaseType.rrw_drop,"route"," "," "," "," "," ");
17509    addsybaseasecmds(ESqlStatementType.sstmssqldroprule, TBaseType.rrw_drop,"rule"," "," "," "," "," ");
17510    addsybaseasecmds(ESqlStatementType.sstmssqldropschema, TBaseType.rrw_drop,"schema"," "," "," "," "," ");
17511    addsybaseasecmds(ESqlStatementType.sstsybasedropserver, TBaseType.rrw_drop,"server"," "," "," "," "," ");
17512    addsybaseasecmds(ESqlStatementType.sstmssqldropservice, TBaseType.rrw_drop,"service"," "," "," "," "," ");
17513    addsybaseasecmds(ESqlStatementType.sstmssqldropsignature, TBaseType.rrw_drop,"signature"," "," "," "," "," ");
17514    addsybaseasecmds(ESqlStatementType.sstsybasedropstatement, TBaseType.rrw_drop,"statement"," "," "," "," "," ");
17515    addsybaseasecmds(ESqlStatementType.sstmssqldropstatistics, TBaseType.rrw_drop,"statistics"," "," "," "," "," ");
17516    addsybaseasecmds(ESqlStatementType.sstmssqldropsymmetrickey, TBaseType.rrw_drop,"symmetric", "key"," "," "," "," ");
17517    addsybaseasecmds(ESqlStatementType.sstmssqldropsynonym, TBaseType.rrw_drop,"synonym"," "," "," "," "," ");
17518    addsybaseasecmds(ESqlStatementType.sstmssqldroptable, TBaseType.rrw_drop,"table"," "," "," "," "," ");
17519    addsybaseasecmds(ESqlStatementType.sstmssqldroptrigger, TBaseType.rrw_drop,"trigger"," "," "," "," "," ");
17520    addsybaseasecmds(ESqlStatementType.sstmssqldroptype, TBaseType.rrw_drop,"type"," "," "," "," "," ");
17521    addsybaseasecmds(ESqlStatementType.sstmssqldropuser, TBaseType.rrw_drop,"user"," "," "," "," "," ");
17522    addsybaseasecmds(ESqlStatementType.sstsybasedropvariable, TBaseType.rrw_drop,"variable"," "," "," "," "," ");
17523    addsybaseasecmds(ESqlStatementType.sstmssqldropview, TBaseType.rrw_drop,"view"," "," "," "," "," ");
17524    addsybaseasecmds(ESqlStatementType.sstmssqldropxmlschemacollection, TBaseType.rrw_drop,"xml", "schema", "collection"," "," "," ");
17525
17526    addsybaseasecmds(ESqlStatementType.sstsybasedumpTran, TBaseType.rrw_sybase_dump,"tran"," "," "," "," "," ");
17527    addsybaseasecmds(ESqlStatementType.sstsybasedumpTran, TBaseType.rrw_sybase_dump,"transaction"," "," "," "," "," ");
17528    addsybaseasecmds(ESqlStatementType.sstsybaseallocatedescriptor, TBaseType.rrw_allocate,"descriptor"," "," "," "," "," ");
17529    addsybaseasecmds(ESqlStatementType.sstcomment, TBaseType.rrw_comment," "," "," "," "," "," ");
17530    addsybaseasecmds(ESqlStatementType.sstconnect, TBaseType.rrw_connect," "," "," "," "," "," ");
17531    addsybaseasecmds(ESqlStatementType.sstdescribe, TBaseType.rrw_describe," "," "," "," "," "," ");
17532    addsybaseasecmds(ESqlStatementType.sstprepare, TBaseType.rrw_prepare," "," "," "," "," "," ");
17533    addsybaseasecmds(ESqlStatementType.sstsybasegetdescriptor, TBaseType.rrw_get,"descriptor"," "," "," "," "," ");
17534    addsybaseasecmds(ESqlStatementType.sstsybasestartdatabase, TBaseType.rrw_start,"database"," "," "," "," "," ");
17535    addsybaseasecmds(ESqlStatementType.sstsybasestartengine, TBaseType.rrw_start,"engine"," "," "," "," "," ");
17536    addsybaseasecmds(ESqlStatementType.sstsybasestopdatabase, TBaseType.rrw_stop,"database"," "," "," "," "," ");
17537    addsybaseasecmds(ESqlStatementType.sstsybasestopengine, TBaseType.rrw_stop,"engine"," "," "," "," "," ");
17538    addsybaseasecmds(ESqlStatementType.sstsybaseforwardto, TBaseType.rrw_sybase_forward,"to"," "," "," "," "," ");
17539    addsybaseasecmds(ESqlStatementType.sstsybaseinstalljava, TBaseType.rrw_sybase_install,"java"," "," "," "," "," ");
17540    addsybaseasecmds(ESqlStatementType.sstsybaseiqutilities, TBaseType.rrw_sybase_iq,"utilities"," "," "," "," "," ");
17541    addsybaseasecmds(ESqlStatementType.sstsybasemessage, TBaseType.rrw_sybase_message," "," "," "," "," "," ");
17542    addsybaseasecmds(ESqlStatementType.sstsybaseoutput, TBaseType.rrw_sybase_output,"to"," "," "," "," "," ");
17543    addsybaseasecmds(ESqlStatementType.sstsybaseput, TBaseType.rrw_sybase_put," "," "," "," "," "," ");
17544    addsybaseasecmds(ESqlStatementType.sstsybaseread, TBaseType.rrw_sybase_read," "," "," "," "," "," ");
17545    addsybaseasecmds(ESqlStatementType.sstsybaseremovejava, TBaseType.rrw_sybase_remove,"java"," "," "," "," "," ");
17546    addsybaseasecmds(ESqlStatementType.sstsybasesynchronizejoinindex, TBaseType.rrw_sybase_synchronize,"join","index"," "," "," "," ");
17547    addsybaseasecmds(ESqlStatementType.sstsybasetriggerevent, TBaseType.rrw_sybase_trigger,"event"," "," "," "," "," ");
17548//if
17549    addsybaseasecmds(ESqlStatementType.sstmssqlif, TBaseType.rrw_if," "," "," "," "," "," ");
17550//enable trigger
17551    addsybaseasecmds(ESqlStatementType.sstmssqlenabletrigger, TBaseType.rrw_enable,"trigger"," "," "," "," "," ");
17552//END CONVERSATION
17553// addsybaseasecmds(ESqlStatementType.sstMssqlEndCatch,TBaseType.rrw_end,'catch');
17554    addsybaseasecmds(ESqlStatementType.sstmssqlendconversation, TBaseType.rrw_end,"conversation"," "," "," "," "," ");
17555// addsybaseasecmds(ESqlStatementType.sstMssqlEndTry,TBaseType.rrw_end,'try');
17556//exec
17557//exec as
17558    addsybaseasecmds(ESqlStatementType.sstmssqlexec, TBaseType.rrw_exec," "," "," "," "," "," ");
17559    addsybaseasecmds(ESqlStatementType.sstmssqlexecuteas, TBaseType.rrw_exec,"as","caller"," "," "," "," ");
17560    addsybaseasecmds(ESqlStatementType.sstmssqlexecuteas, TBaseType.rrw_exec,"as","login"," "," "," "," ");
17561    addsybaseasecmds(ESqlStatementType.sstmssqlexecuteas, TBaseType.rrw_exec,"as","user"," "," "," "," ");
17562    addsybaseasecmds(ESqlStatementType.sstmssqlexec, TBaseType.rrw_execute, " "," "," "," "," "," ");
17563    addsybaseasecmds(ESqlStatementType.sstmssqlexecuteas, TBaseType.rrw_execute,"as","caller"," "," "," "," ");
17564    addsybaseasecmds(ESqlStatementType.sstmssqlexecuteas, TBaseType.rrw_execute,"as","login"," "," "," "," ");
17565    addsybaseasecmds(ESqlStatementType.sstmssqlexecuteas, TBaseType.rrw_execute,"as","user"," "," "," "," ");
17566//fetch
17567    addsybaseasecmds(ESqlStatementType.sstmssqlfetch, TBaseType.rrw_fetch," "," "," "," "," "," ");
17568//go
17569    addsybaseasecmds(ESqlStatementType.sstmssqlgo, TBaseType.rrw_go," "," "," "," "," "," ");
17570//goto
17571    addsybaseasecmds(ESqlStatementType.sstmssqlgoto, TBaseType.rrw_goto," "," "," "," "," "," ");
17572//GRANT
17573    addsybaseasecmds(ESqlStatementType.sstmssqlgrant, TBaseType.rrw_grant," "," "," "," "," "," ");
17574//GRANT
17575    addsybaseasecmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert," "," "," "," "," "," ");
17576
17577    addsybaseasecmds(ESqlStatementType.sstsybaseInsertBulk, TBaseType.rrw_insert,"bulk"," "," "," "," "," ");
17578//KILL
17579    addsybaseasecmds(ESqlStatementType.sstmssqlkill, TBaseType.rrw_kill," "," "," "," "," "," ");
17580//KILL
17581    addsybaseasecmds(ESqlStatementType.sstmssqlkill, TBaseType.rrw_kill," "," "," "," "," "," ");
17582    addsybaseasecmds(ESqlStatementType.sstmssqlkillquerynotificationsubscription, TBaseType.rrw_kill,"kill", "query", "notification", "subscription"," "," ");
17583    addsybaseasecmds(ESqlStatementType.sstmssqlkillstats, TBaseType.rrw_kill,"stats"," "," "," "," "," ");
17584
17585    addsybaseasecmds(ESqlStatementType.sstload,TBaseType.rrw_load,"table"," "," "," "," "," ");
17586//
17587 addsybaseasecmds(ESqlStatementType.sstsybaselocktable,TBaseType.rw_locktable,"table"," "," "," "," "," ");
17588//MOVE CONVERSATION
17589    addsybaseasecmds(ESqlStatementType.sstmssqlmoveconversation, TBaseType.rrw_move,"conversation"," "," "," "," "," ");
17590//merge
17591    addsybaseasecmds(ESqlStatementType.sstmerge, TBaseType.rrw_merge," "," "," "," "," "," ");
17592//open
17593    addsybaseasecmds(ESqlStatementType.sstmssqlopen, TBaseType.rrw_open," "," "," "," "," "," ");
17594    addsybaseasecmds(ESqlStatementType.sstmssqlopenmasterkey, TBaseType.rrw_open,"master", "key"," "," "," "," ");
17595    addsybaseasecmds(ESqlStatementType.sstmssqlopensymmetrickey, TBaseType.rrw_open,"symmetric", "key"," "," "," "," ");
17596//PRINT
17597    addsybaseasecmds(ESqlStatementType.sstmssqlprint, TBaseType.rrw_print," "," "," "," "," "," ");
17598//RAISERROR
17599    addsybaseasecmds(ESqlStatementType.sstmssqlraiserror, TBaseType.rrw_raiserror," "," "," "," "," "," ");
17600//READTEXT
17601    addsybaseasecmds(ESqlStatementType.sstmssqlreadtext, TBaseType.rrw_readtext," "," "," "," "," "," ");
17602//RECEIVE
17603    addsybaseasecmds(ESqlStatementType.sstmssqlreceive, TBaseType.rrw_receive," "," "," "," "," "," ");
17604//RECONFIGURE
17605    addsybaseasecmds(ESqlStatementType.sstmssqlreconfigure, TBaseType.rrw_reconfigure," "," "," "," "," "," ");
17606//RESTORE
17607    addsybaseasecmds(ESqlStatementType.sstmssqlrestoredatabase, TBaseType.rrw_restore,"database"," "," "," "," "," ");
17608    addsybaseasecmds(ESqlStatementType.sstmssqlrestorefilelistonly, TBaseType.rrw_restore,"filelistonly"," "," "," "," "," ");
17609    addsybaseasecmds(ESqlStatementType.sstmssqlrestoreheaderonly, TBaseType.rrw_restore,"headeronly"," "," "," "," "," ");
17610    addsybaseasecmds(ESqlStatementType.sstmssqlrestorelabelonly, TBaseType.rrw_restore,"labelonly"," "," "," "," "," ");
17611    addsybaseasecmds(ESqlStatementType.sstmssqlrestorelog, TBaseType.rrw_restore,"log"," "," "," "," "," ");
17612    addsybaseasecmds(ESqlStatementType.sstmssqlrestoremasterkey, TBaseType.rrw_restore,"master","key"," "," "," "," ");
17613    addsybaseasecmds(ESqlStatementType.sstmssqlrestorerewindonly, TBaseType.rrw_restore,"rewindonly"," "," "," "," "," ");
17614    addsybaseasecmds(ESqlStatementType.sstmssqlrestoreservicemasterkey, TBaseType.rrw_restore,"service","master","key"," "," "," ");
17615    addsybaseasecmds(ESqlStatementType.sstmssqlrestoreverifyonly, TBaseType.rrw_restore,"verifyonly"," "," "," "," "," ");
17616//RETURN
17617    addsybaseasecmds(ESqlStatementType.sstmssqlreturn, TBaseType.rrw_return," "," "," "," "," "," ");
17618//REVERT
17619    addsybaseasecmds(ESqlStatementType.sstmssqlrevert, TBaseType.rrw_revert," "," "," "," "," "," ");
17620//REVOKE
17621    addsybaseasecmds(ESqlStatementType.sstmssqlrevoke, TBaseType.rrw_revoke," "," "," "," "," "," ");
17622//ROLLBACK
17623    addsybaseasecmds(ESqlStatementType.sstmssqlrollback, TBaseType.rrw_rollback," "," "," "," "," "," ");
17624    addsybaseasecmds(ESqlStatementType.sstmssqlrollback, TBaseType.rrw_rollback,"tran"," "," "," "," "," ");
17625    addsybaseasecmds(ESqlStatementType.sstmssqlrollback, TBaseType.rrw_rollback,"transaction"," "," "," "," "," ");
17626    addsybaseasecmds(ESqlStatementType.sstmssqlrollback, TBaseType.rrw_rollback,"work"," "," "," "," "," ");
17627//SAVE
17628    addsybaseasecmds(ESqlStatementType.sstmssqlsavetran, TBaseType.rrw_save," "," "," "," "," "," ");
17629    addsybaseasecmds(ESqlStatementType.sstmssqlsavetran, TBaseType.rrw_save,"tran"," "," "," "," "," ");
17630    addsybaseasecmds(ESqlStatementType.sstmssqlsavetran, TBaseType.rrw_save,"transaction"," "," "," "," "," ");
17631//SELECT
17632    addsybaseasecmds(ESqlStatementType.sstselect, TBaseType.rrw_select," "," "," "," "," "," ");
17633//SEND ON CONVERSATION
17634    addsybaseasecmds(ESqlStatementType.sstmssqlsendonconversation, TBaseType.rrw_send,"on","conversation"," "," "," "," ");
17635//SET
17636    addsybaseasecmds(ESqlStatementType.sstmssqlset, TBaseType.rrw_set," "," "," "," "," "," ");
17637//SET
17638    addsybaseasecmds(ESqlStatementType.sstmssqlsetuser,TBaseType.rrw_setuser," "," "," "," "," "," ");
17639//SHUTDOWN
17640    addsybaseasecmds(ESqlStatementType.sstmssqlshutdown, TBaseType.rrw_shutdown," "," "," "," "," "," ");
17641//SIGN
17642//    addsybaseasecmds(ESqlStatementType.sstmssqlsign, rrw_sign," "," "," "," "," "," ");
17643//TRUNCATE TABLE
17644    addsybaseasecmds(ESqlStatementType.sstmssqltruncatetable, TBaseType.rrw_truncate,"table"," "," "," "," "," ");
17645//UPDATE
17646    addsybaseasecmds(ESqlStatementType.sstupdate, TBaseType.rrw_update," "," "," "," "," "," ");
17647//UPDATE all STATISTICS
17648    addsybaseasecmds(ESqlStatementType.sstmssqlupdatestatistics, TBaseType.rrw_update,"all","statistics"," "," "," "," ");
17649//UPDATE index STATISTICS
17650    addsybaseasecmds(ESqlStatementType.sstsybaseupdateindexstatistics, TBaseType.rrw_update,"index","statistics"," "," "," "," ");
17651//UPDATE STATISTICS
17652    addsybaseasecmds(ESqlStatementType.sstmssqlupdatestatistics, TBaseType.rrw_update,"statistics"," "," "," "," "," ");
17653//UPDATETEXT
17654    addsybaseasecmds(ESqlStatementType.sstmssqlupdatetext, TBaseType.rrw_updatetext," "," "," "," "," "," ");
17655//USE
17656    addsybaseasecmds(ESqlStatementType.sstmssqluse, TBaseType.rrw_use," "," "," "," "," "," ");
17657//WAITFOR
17658    addsybaseasecmds(ESqlStatementType.sstmssqlwaitfor, TBaseType.rrw_waitfor," "," "," "," "," "," ");
17659//WHILE
17660    addsybaseasecmds(ESqlStatementType.sstmssqlwhile, TBaseType.rrw_while," "," "," "," "," "," ");
17661//WITH, don't recongize here, let isMssqlSql do it
17662// addsybaseasecmds(ESqlStatementType.sstMssqlCTE,rrw_WITH,' ');
17663//WITH XMLNAMESPACES
17664    addsybaseasecmds(ESqlStatementType.sstmssqlwithxmlnamespaces, TBaseType.rrw_with,"xmlnamespaces"," "," "," "," "," ");
17665//WRITETEXT
17666    addsybaseasecmds(ESqlStatementType.sstsybaseWritetext, TBaseType.rrw_writetext," "," "," "," "," "," ");
17667
17668}
17669
17670    // ---- Sybase ASE fork (dbvsybasease): full-family recognition; rejection of
17671    // ---- foreign statements is the parser policy layer, not this table.
17672    TCustomSqlStatement issybaseasesql(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
17673        TCustomSqlStatement ret = null;
17674        int k;
17675        boolean lcisnewsql;
17676        TSourceToken lcpprevsolidtoken,lcnextsolidtoken,lctoken;
17677
17678        gnewsqlstatementtype = ESqlStatementType.sstinvalid;
17679
17680        if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
17681                || (pcst.tokencode  == TBaseType.cmtslashstar)
17682                || (pcst.tokencode  == TBaseType.lexspace)
17683                || (pcst.tokencode  == TBaseType.lexnewline)
17684                || (pcst.tokentype == ETokenType.ttsemicolon) )
17685        {
17686            return ret;
17687        }
17688
17689        int lcpos = pcst.posinlist;
17690        TSourceTokenList lcsourcetokenlist = pcst.container;
17691        TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
17692
17693        //subquery after semicolon || at first line
17694        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
17695        {
17696            k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
17697            if ( k >0 )
17698            {
17699                ret =  new TSelectSqlStatement(pdbvendor);
17700            }
17701
17702            return ret;
17703        }
17704
17705        //cte
17706        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
17707        {
17708            ret = findcte(pcst,pdbvendor);
17709            if ( (ret != null) )  return ret;
17710        }
17711
17712        gnewsqlstatementtype = findsybaseasecmd(pcst);
17713
17714        TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
17715        switch(gnewsqlstatementtype ) {   //
17716            case sstinvalid:
17717            {
17718                if ( pcst.tokencode == TBaseType.mslabel )
17719                {
17720                    ret =  new TMssqlLabel(pdbvendor);
17721                }
17722                else
17723                    ret = null;
17724
17725                break;
17726            }
17727            case sstselect:
17728            {
17729                lcisnewsql = true;
17730
17731                if ( pstate != EFindSqlStateType.stnormal )
17732                {
17733                    // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
17734                    if ( (lcprevsolidtoken != null) )
17735                    {
17736                        if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
17737                            lcisnewsql = false; //subqery
17738                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
17739                            lcisnewsql = false;
17740                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
17741                            lcisnewsql = false;
17742                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
17743                            lcisnewsql = false;
17744                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
17745                            lcisnewsql = false;
17746                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
17747                            lcisnewsql = false;
17748                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
17749                        {
17750                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
17751                                lcisnewsql = false;
17752                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
17753                                lcisnewsql = false;
17754                        }
17755                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
17756                        {
17757                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlset )
17758                                lcisnewsql = false;
17759                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqldeclare )
17760                                lcisnewsql = false;
17761                        }
17762
17763                        if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
17764                        {
17765                            lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
17766                            if ( (lcpprevsolidtoken != null) )
17767                            {
17768                                if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
17769                                    lcisnewsql = false;
17770                            }
17771                        }
17772
17773                    }
17774
17775                    if ( (lccurrentsqlstatement != null) )
17776                    {
17777                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
17778                        {
17779                        }
17780                        else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlgrant )
17781                        {
17782                            if ( (lcprevsolidtoken != null) )
17783                            {
17784                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_grant )
17785                                    lcisnewsql = false;
17786                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
17787                                    lcisnewsql = false;
17788                            }
17789                        } else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlrevoke )
17790                        {
17791                            if ( (lcprevsolidtoken != null) )
17792                            {
17793                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_revoke )
17794                                    lcisnewsql = false;
17795                            }
17796                        }else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview ){
17797                            lcisnewsql = false;
17798                        }
17799                    }
17800
17801                }
17802
17803                if ( lcisnewsql )
17804                    ret =  new TSelectSqlStatement(pdbvendor);
17805
17806                break;
17807
17808            }
17809            case sstinsert:
17810            {
17811                lcisnewsql = true;
17812                if ( pstate != EFindSqlStateType.stnormal )
17813                {
17814                    if ( (lccurrentsqlstatement != null) )
17815                    {
17816                        // merge
17817                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
17818                        {
17819                              if (lcprevsolidtoken != null)
17820                              {
17821                                  if (lcprevsolidtoken.tokencode == TBaseType.rrw_then)
17822                                  {lcisnewsql = false;}
17823                              }
17824                        }
17825
17826                        // bulk insert
17827                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlbulkinsert )
17828                        {
17829                            if ( (lcprevsolidtoken != null) )
17830                            {
17831                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_bulk )
17832                                    lcisnewsql = false;
17833                            }
17834                        }
17835
17836                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlgrant )
17837                        {
17838                            if ( (lcprevsolidtoken != null) )
17839                            {
17840                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_grant )
17841                                    lcisnewsql = false;
17842                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
17843                                    lcisnewsql = false;
17844                            }
17845                        }else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlrevoke ) {
17846                            if ( (lcprevsolidtoken != null) )
17847                            {
17848                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_revoke )
17849                                    lcisnewsql = false;
17850                            }
17851                        }
17852
17853                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetrigger )
17854                        {
17855                            if ( (lcprevsolidtoken != null) )
17856                            {
17857                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
17858                                    lcisnewsql = false;
17859                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
17860                                    lcisnewsql = false;
17861                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(),"after") == 0 )
17862                                    lcisnewsql = false;
17863                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(), "of") == 0 )
17864                                    lcisnewsql = false;
17865                            }
17866                        }
17867
17868
17869                    }
17870                }
17871
17872                if ( lcisnewsql )
17873                {
17874                    ret =  new TInsertSqlStatement(pdbvendor);
17875                    ret.dummytag = 1; //  select stmt in insert is permitted
17876                    for ( k = lcpos + 1; k < lcsourcetokenlist.size();k++ )    // iterate
17877                    {
17878                        if ( lcsourcetokenlist.get(k).isnonsolidtoken() ) continue;
17879                        if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_values ) break;
17880                        if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_go ) break;
17881                        if ( lcsourcetokenlist.get(k).tokentype == ETokenType.ttsemicolon ) break;
17882                        if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_select ) break;
17883                        if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_execute ) break;
17884                        if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_exec ) break;
17885                    }    // for (
17886                    if ( k > lcsourcetokenlist.size() - 1 )
17887                        k = lcsourcetokenlist.size() - 1;
17888
17889                    for ( int i = lcpos + 1; i <=  k; i++ )    // iterate
17890                    {
17891                        lcsourcetokenlist.get(i).tokenstatus = ETokenStatus.tsignoredbygetrawstatement;
17892                    }    // for (
17893
17894                }
17895
17896                break;
17897            }
17898            case sstsybaseInsertBulk:
17899            {
17900                ret =  new TInsertBulk(pdbvendor);
17901                break;
17902            }
17903            case sstupdate:
17904            {
17905                lcisnewsql = true;
17906                if ( pstate != EFindSqlStateType.stnormal )
17907                {
17908                    // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
17909                    if ( (lcprevsolidtoken != null) )
17910                    { //
17911                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
17912                            lcisnewsql = false;
17913                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
17914                            lcisnewsql = false;
17915                    }
17916
17917                    lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
17918                    if ( TBaseType.assigned(lcnextsolidtoken) )
17919                    {
17920                        if ( lcnextsolidtoken.tokentype == ETokenType.ttleftparenthesis)
17921                        {
17922                            k = lcsourcetokenlist.solidtokenafterpos(lcnextsolidtoken.posinlist,TBaseType.rrw_select,1,"(");
17923                            if ( k  == 0 ) lcisnewsql = false;
17924                        }
17925                    }
17926
17927
17928                    if ( TBaseType.assigned(lccurrentsqlstatement) )
17929                    {
17930                        // merge
17931                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
17932                        {
17933                              if (lcprevsolidtoken != null)
17934                              {
17935                                  if (lcprevsolidtoken.tokencode == TBaseType.rrw_then)
17936                                  {lcisnewsql = false;}
17937                              }
17938                        }
17939
17940                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlgrant )
17941                        {
17942                            if ( TBaseType.assigned(lcprevsolidtoken) )
17943                            {
17944                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_grant )
17945                                    lcisnewsql = false;
17946                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
17947                                    lcisnewsql = false;
17948                            }
17949                        }else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlrevoke )
17950                        {
17951                            if ( TBaseType.assigned(lcprevsolidtoken) )
17952                            {
17953                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_revoke )
17954                                    lcisnewsql = false;
17955                            }
17956                        }
17957                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetrigger )
17958                        {
17959                            if ( TBaseType.assigned(lcprevsolidtoken) )
17960                            {
17961                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
17962                                    lcisnewsql = false;
17963                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
17964                                    lcisnewsql = false;
17965                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(),"after") == 0 )
17966                                    lcisnewsql = false;
17967                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(), "of") == 0 )
17968                                    lcisnewsql = false;
17969                            }
17970                        }
17971
17972                    }
17973                }
17974
17975                if ( lcisnewsql )
17976                {
17977                    ret =  new TUpdateSqlStatement(pdbvendor);
17978                    ret.dummytag = 1; // means set clause in update is not found yet, used to seperate set clause from set statement
17979                }
17980
17981                break;
17982            }
17983            case sstdelete:
17984            {
17985                lcisnewsql = true;
17986
17987                if ( pstate != EFindSqlStateType.stnormal )
17988                {
17989                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
17990                    if ( TBaseType.assigned(lcprevsolidtoken) )
17991                    {
17992                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
17993                            lcisnewsql = false;
17994                    }
17995
17996                    if ( TBaseType.assigned(lccurrentsqlstatement) )
17997                    {
17998                        // merge
17999                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
18000                        {
18001                              if (lcprevsolidtoken != null)
18002                              {
18003                                  if (lcprevsolidtoken.tokencode == TBaseType.rrw_then)
18004                                  {lcisnewsql = false;}
18005                              }
18006                        }
18007
18008                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlgrant )
18009                        {
18010                            if ( TBaseType.assigned(lcprevsolidtoken) )
18011                            {
18012                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_grant )
18013                                    lcisnewsql = false;
18014                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
18015                                    lcisnewsql = false;
18016                            }
18017                        }else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlrevoke )
18018                        {
18019                            if ( TBaseType.assigned(lcprevsolidtoken) )
18020                            {
18021                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_revoke )
18022                                    lcisnewsql = false;
18023                            }
18024                        }
18025
18026                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetrigger )
18027                        {
18028                            if ( TBaseType.assigned(lcprevsolidtoken) )
18029                            {
18030                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
18031                                    lcisnewsql = false;
18032                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
18033                                    lcisnewsql = false;
18034                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(),"after") == 0 )
18035                                    lcisnewsql = false;
18036                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(), "of") == 0 )
18037                                    lcisnewsql = false;
18038                            }
18039                        }
18040
18041                    }
18042                }
18043
18044                if ( lcisnewsql )
18045                    ret =  new TDeleteSqlStatement(pdbvendor);
18046
18047                break;
18048            }
18049            case sstcreatetable:
18050            {
18051                ret =  new TCreateTableSqlStatement(pdbvendor);
18052                break;
18053            }
18054            case sstcreateview:
18055            {
18056                ret =  new TCreateViewSqlStatement(pdbvendor);
18057                break;
18058            }
18059            case sstaltertable:
18060            {
18061                ret =  new TAlterTableStatement(pdbvendor);
18062                break;
18063            }
18064            case sstmssqlfetch:
18065            {
18066                ret =  new TMssqlFetch(pdbvendor);
18067                break;
18068            }
18069            case sstmssqlif :
18070            {
18071                lcisnewsql = true;
18072                if ((lccurrentsqlstatement != null) && ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqldropprocedure ))
18073                {lcisnewsql = false;}
18074                // See TSqlCmdsSybaseAse: ASE rejects the clause in the GRAMMAR;
18075                // suppressing the boundary here only makes that rejection a clean
18076                // single-statement error at EXISTS instead of a mis-split.
18077                if (lcisnewsql && DropIfExistsSupport.isDropIfExistsContext(pcst, lcsourcetokenlist.solidtokenbefore(lcpos)))
18078                {lcisnewsql = false;}
18079                if (lcisnewsql){
18080                    ret = new TMssqlIfElse(pdbvendor);
18081                    ret.dummytag = 1;// reduce to 0 while stmt find in 'if ( condtion stmt' || 'else stmt'
18082                }
18083
18084                break;
18085            }
18086            case sstmssqlwhile:
18087            {
18088                ret = new TMssqlIfElse(pdbvendor);
18089                ret.dummytag = 1;// reduce to 0 while stmt find in 'if ( condtion stmt' || 'else stmt'
18090                break;
18091            }
18092            case sstmssqlcreateprocedure :
18093            case sstmssqlalterprocedure:
18094            {
18095                ret = new TMssqlCreateProcedure(pdbvendor);
18096                break;
18097            }
18098            case sstmssqlcreatefunction :
18099            case sstmssqlalterfunction:
18100            {
18101                ret =  new TMssqlCreateFunction(pdbvendor);
18102                break;
18103            }
18104            case sstcreatetrigger :
18105            case sstmssqlaltertrigger:
18106            {
18107                ret =  new TCreateTriggerStmt(pdbvendor);
18108                break;
18109            }
18110            case sstmssqlreturn:
18111            {
18112                ret =  new TMssqlReturn(pdbvendor);
18113                break;
18114            }
18115            case sstmssqlprint:
18116            {
18117                ret =  new TMssqlPrint(pdbvendor);
18118                break;
18119            }
18120            case sstmssqluse:
18121            {
18122                ret =  new TUseDatabase(pdbvendor);
18123                break;
18124            }
18125            case sstmssqlgo:
18126            {
18127                ret =  new TMssqlGo(pdbvendor);
18128                break;
18129            }
18130            case sstmssqlrevert:
18131            {
18132                ret =  new TMssqlRevert(pdbvendor);
18133                break;
18134            }
18135            case sstmssqlgrant:
18136            {
18137                lcisnewsql = true;
18138                // prev tokentext can't be with
18139                if ( pstate != EFindSqlStateType.stnormal )
18140                {
18141                    if ( TBaseType.assigned(lcprevsolidtoken) )
18142                    {
18143                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_with )
18144                        {
18145                            ret = null;
18146                            lcisnewsql = false;
18147                        }
18148                    }
18149                }
18150                if ( lcisnewsql )
18151                {
18152                    ret =  new TGrantStmt(pdbvendor);
18153                    //ret.sqlstatementtype = gnewsqlstatementtype;
18154                    for ( k = lcpos + 1; k< lcsourcetokenlist.size();k++ )    // iterate
18155                    {
18156                        lctoken = lcsourcetokenlist.get(k);
18157                        if (lctoken.isnonsolidtoken() ) continue;
18158                        if ( lctoken.tokencode == TBaseType.rrw_go ) break;
18159                        if ( lctoken.tokentype == ETokenType.ttsemicolon ) break;
18160                        if ( lctoken.tokencode == TBaseType.rrw_to   ) break;
18161                        lctoken.tokenstatus = ETokenStatus.tsignoredbygetrawstatement;
18162                    }
18163                }
18164                break;
18165            }
18166            case sstmssqldeclare:
18167            {
18168                ret =  new TMssqlDeclare(pdbvendor);
18169                break;
18170            }
18171            case sstmssqlcontinue:
18172            {
18173                lcisnewsql = true;
18174                if ((lccurrentsqlstatement != null) && ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstload ))
18175                {lcisnewsql = false;}
18176                if (lcisnewsql){
18177                    ret =  new TMssqlContinue(pdbvendor);
18178                }
18179
18180                break;
18181            }
18182            case sstbreak:
18183            {
18184                ret =  new TBreakStmt(pdbvendor);
18185                break;
18186            }
18187            case sstmssqlopen:
18188            {
18189                ret =  new TMssqlOpen(pdbvendor);
18190                break;
18191            }
18192            case sstmssqlclose:
18193            {
18194                ret =  new TMssqlClose(pdbvendor);
18195                break;
18196            }
18197            case sstmssqlbulkinsert:
18198            {
18199                ret =  new TMssqlBulkInsert(pdbvendor);
18200                break;
18201            }
18202            case sstmssqldeallocate:
18203            {
18204                ret =  new TMssqlDeallocate(pdbvendor);
18205                break;
18206            }
18207            case sstmssqlraiserror:
18208            {
18209                ret =  new TMssqlRaiserror(pdbvendor);
18210                break;
18211            }
18212            case sstmssqlgoto:
18213            {
18214                ret =  new TMssqlGoTo(pdbvendor);
18215                break;
18216            }
18217            case sstmssqldropview:
18218            {
18219                ret =  new TDropViewSqlStatement(pdbvendor);
18220                break;
18221            }
18222            case sstmssqldroptable:
18223            {
18224                ret =  new TDropTableSqlStatement(pdbvendor);
18225                break;
18226            }
18227            case sstmssqldropindex:
18228            {
18229                ret =  new TDropIndexSqlStatement(pdbvendor);
18230                break;
18231            }
18232            case sstmssqldroppartitionscheme :
18233                ret = new TDropPartitionSchemeStmt(pdbvendor);
18234                break;
18235
18236            case sstmssqldropaggregate :
18237            case sstmssqldropapplicationrole :
18238            case sstmssqldropassembly :
18239            case sstmssqldropasymmetrickey :
18240            case sstmssqldropcertificate :
18241            case sstmssqldropcontract :
18242            case sstmssqldropcredential :
18243            case sstmssqldropdefault :
18244            case sstmssqldropendpoint :
18245            case sstmssqldropeventnotification :
18246            case sstmssqldropfulltextcatalog :
18247            case sstmssqldropfulltextindex :
18248            case sstmssqldropfunction :
18249            case sstmssqldroplogin :
18250            case sstmssqldropmasterkey :
18251            case sstmssqldropmessagetype :
18252            case sstmssqldroppartitionfunction :
18253            case sstmssqldropprocedure :
18254            case sstmssqldropqueue :
18255            case sstmssqldropremoteservicebinding :
18256            case sstmssqldroprole :
18257            case sstmssqldroproute :
18258            case sstmssqldroprule :
18259            case sstmssqldropschema :
18260            case sstmssqldropservice :
18261            case sstmssqldropsignature:
18262            case sstmssqldropstatistics :
18263            case sstmssqldropsymmetrickey :
18264            case sstmssqldroptrigger :
18265            case sstmssqldroptype :
18266            case sstmssqldropuser :
18267            case sstmssqldropxmlschemacollection:
18268            case sstmssqldropdatabase :
18269            {
18270                ret =  new TMssqlDropDbObject(EDbVendor.dbvsybasease);
18271                ret.sqlstatementtype = gnewsqlstatementtype;
18272                break;
18273            }
18274            case sstmssqldropsynonym :
18275            {
18276                ret =  new TDropSynonymStmt(pdbvendor);
18277                break;
18278            }
18279            case sstmssqltruncatetable:
18280            {
18281                ret =  new TTruncateStatement(pdbvendor);
18282                break;
18283            }
18284            case sstmssqlbegintran:
18285            {
18286                ret =  new TBeginTran(pdbvendor);
18287                break;
18288            }
18289            case sstmssqlsavetran:
18290            {
18291                ret =  new TMssqlSaveTran(pdbvendor);
18292                break;
18293            }
18294            case sstmssqlcommit:
18295            {
18296                lcisnewsql = true;
18297
18298                if ( TBaseType.assigned(lcprevsolidtoken) )
18299                {
18300                    if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
18301                    {
18302
18303                        lcisnewsql = false;
18304                    }
18305                }
18306
18307                if (lcisnewsql){
18308                    ret =  new TMssqlCommit(pdbvendor);
18309                }
18310
18311                break;
18312            }
18313            case sstmssqlrollback:
18314            {
18315                ret =  new TMssqlRollback(pdbvendor);
18316                break;
18317            }
18318            case sstmssqlreadtext :
18319            case sstmssqldbcc :
18320            case sstmssqlrestore :
18321            case sstmssqlbackup :
18322            {
18323                ret = new TMssqlDummyStmt(pdbvendor);
18324                ret.sqlstatementtype = gnewsqlstatementtype;
18325                break;
18326            }
18327            case sstcreateindex:
18328            {
18329                ret =  new TCreateIndexSqlStatement(pdbvendor);
18330                break;
18331            }
18332            case sstmssqlwaitfor:
18333            {
18334                ret =  new TMssqlWaitFor(pdbvendor);
18335                break;
18336            }
18337            case sstmerge:
18338            {
18339                lcisnewsql = true;
18340
18341                if (pstate != EFindSqlStateType.stnormal)
18342                {
18343
18344                    if (lccurrentsqlstatement != null)
18345                    {
18346                        // merge union, merge join
18347                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstselect)
18348                        {
18349                                    lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
18350                                    if (lcnextsolidtoken != null)
18351                                       {
18352                                        if ((lcnextsolidtoken.tokencode == TBaseType.rrw_union) || (lcnextsolidtoken.tokencode == TBaseType.rrw_join))
18353                                           {
18354                                              lcisnewsql = false;
18355                                           }
18356                                        }
18357                        }
18358
18359                    }
18360
18361                    TSourceToken lcnexttoken = lcsourcetokenlist.nextsolidtoken(lcpos, 1, false);
18362                    if ( (lcnexttoken != null) )
18363                    {
18364                        if ( lcnexttoken.tokencode == TBaseType.rrw_sybase_partition )
18365                            lcisnewsql = false;
18366                    }
18367
18368                }
18369
18370                if (lcisnewsql)
18371                {
18372                    ret = new TMergeSqlStatement(pdbvendor);
18373                    ret.sqlstatementtype = gnewsqlstatementtype;
18374                }
18375
18376                break;
18377            }
18378            case sstmssqlbegintry :
18379            case sstmssqlbegincatch:
18380            {
18381                ret =  new TMssqlBlock(pdbvendor);
18382                ret.sqlstatementtype = gnewsqlstatementtype;
18383                break;
18384            }
18385            case sstmssqlexec:
18386            {
18387                lcisnewsql = true;
18388                // prev tokentext can't be with
18389                if ( pstate != EFindSqlStateType.stnormal )
18390                {
18391                    if ( TBaseType.assigned(lccurrentsqlstatement) )
18392                    {
18393                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
18394                        {
18395                            if ( lccurrentsqlstatement.dummytag == 1 )
18396                            {
18397                                lcisnewsql = false;
18398                                lccurrentsqlstatement.dummytag = 0; // no select is permited after it
18399                            }
18400                        }
18401
18402                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlgrant )
18403                        {
18404                            if ( TBaseType.assigned(lcprevsolidtoken) )
18405                            {
18406                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_grant )
18407                                    lcisnewsql = false;
18408                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
18409                                    lcisnewsql = false;
18410                            }
18411                        }else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlrevoke ){
18412                            if ( TBaseType.assigned(lcprevsolidtoken) )
18413                            {
18414                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_revoke )
18415                                    lcisnewsql = false;
18416                            }
18417                        }
18418
18419
18420
18421                        if (
18422                                (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlcreateprocedure)
18423                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetrigger)
18424                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlcreatefunction)
18425                                        ||(lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlalterprocedure)
18426                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlaltertrigger)
18427                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlalterfunction)
18428                                )
18429                        {
18430                            if ( TBaseType.assigned(lcprevsolidtoken) )
18431                            {
18432                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_with )
18433                                    lcisnewsql = false;
18434                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
18435                                    lcisnewsql = false;
18436                            }
18437                        }
18438                    }
18439                }
18440                if ( lcisnewsql )
18441                {
18442                    ret =  new TMssqlExecute(pdbvendor);
18443                }
18444                break;
18445            }
18446            case sstmssqlexecuteas:
18447            {
18448                lcisnewsql = true;
18449                // prev tokentext can't be with
18450                if ( pstate != EFindSqlStateType.stnormal )
18451                {
18452                    if ( TBaseType.assigned(lccurrentsqlstatement) )
18453                    {
18454                        if (
18455                                (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlcreateprocedure)
18456                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetrigger)
18457                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlcreatefunction)
18458                                        ||(lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlalterprocedure)
18459                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlaltertrigger)
18460                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlalterfunction)
18461                                )
18462                        {
18463                            if ( TBaseType.assigned(lcprevsolidtoken) )
18464                            {
18465                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_with )
18466                                    lcisnewsql = false;
18467                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
18468                                    lcisnewsql = false;
18469                            }
18470                        }
18471                    }
18472                }
18473                if ( lcisnewsql )
18474                {
18475                    ret =  new TMssqlExecuteAs(pdbvendor);
18476                    ret.sqlstatementtype = gnewsqlstatementtype;
18477                }
18478                break;
18479            }
18480            case sstmssqlset:
18481            {
18482                lcisnewsql = true;
18483                if ( pstate != EFindSqlStateType.stnormal )
18484                {
18485                    if ( TBaseType.assigned(lccurrentsqlstatement) )
18486                    {
18487
18488                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlif)
18489                        {
18490                             TSourceToken lcPPToken = lcsourcetokenlist.searchToken(TBaseType.rrw_update,"",pcst,-10);
18491                             if (TBaseType.assigned(lcPPToken))
18492                            {
18493                                  lcisnewsql = false;
18494                            }
18495                        }
18496
18497                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
18498                        {
18499                              if (lcprevsolidtoken != null)
18500                              {
18501                                  if (lcprevsolidtoken.tokencode == TBaseType.rrw_update){
18502                                    lcisnewsql = false;}
18503                              }
18504                        }
18505
18506                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstupdate )
18507                        {
18508                            if ( lccurrentsqlstatement.dummytag == 1 )
18509                            {
18510                                //update statement still find set clause yet, so this is setclause in update statement
18511                                lccurrentsqlstatement.dummytag = 0;
18512                                lcisnewsql = false;
18513                            }
18514                        }
18515                    }
18516
18517                    lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
18518                    if ( TBaseType.assigned(lcnextsolidtoken) )
18519                    { //set null, set default
18520                        if ( (TBaseType.mycomparetext(lcnextsolidtoken.getAstext(),"null")==0)
18521                                || (TBaseType.mycomparetext(lcnextsolidtoken.getAstext(), "default")==0) )
18522                        {
18523                            lcisnewsql = false;
18524                        }
18525                    }
18526
18527                }
18528
18529                if ( lcisnewsql )
18530                {
18531                    ret =  new TMssqlSet(pdbvendor);
18532                }
18533
18534                break;
18535            }
18536            case sstmssqlupdatetext:
18537            {
18538                ret =  new TMssqlUpdateText(pdbvendor);
18539                break;
18540            }
18541            case sstmssqlendconversation:
18542            {
18543                ret =  new TMssqlEndConversation(pdbvendor);
18544                break;
18545            }
18546            case sstmssqlbegindialog:
18547            {
18548                ret =  new TMssqlBeginDialog(pdbvendor);
18549                break;
18550            }
18551            case sstmssqlsendonconversation:
18552            {
18553                ret =  new TMssqlSendOnConversation(pdbvendor);
18554                break;
18555            }
18556            case sstmssqldisabletrigger :
18557            case sstmssqlenabletrigger:
18558            {
18559                lcisnewsql = true;
18560                if ( TBaseType.assigned(lccurrentsqlstatement) )
18561                {
18562                    if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstaltertable )
18563                        lcisnewsql = false;
18564                }
18565
18566                if ( lcisnewsql )
18567                {
18568                    ret =  new TDisableEnableTriggerStmt(pdbvendor);
18569                    ret.sqlstatementtype = gnewsqlstatementtype;
18570                }
18571                break;
18572            }
18573            case sstsybaseWritetext:
18574            {
18575                ret =  new TSybaseWritetext(pdbvendor);
18576                break;
18577            }
18578            case sstsybaseDeleteStatistics:
18579            {
18580                ret = new TSybaseDeleteStatistics(pdbvendor);
18581                break;
18582            }
18583            case sstcall:
18584            {
18585                ret = new TCallStatement(pdbvendor);
18586                break;
18587            }
18588            default:
18589            {
18590                ret =  new TUnknownSqlStatement(pdbvendor);
18591                ret.sqlstatementtype = gnewsqlstatementtype;
18592                break;
18593            }
18594        }    // case
18595
18596        return ret;
18597    }
18598
18599    // ---- Sybase ASE fork (dbvsybasease): full-family recognition; rejection of
18600    // ---- foreign statements is the parser policy layer, not this table.
18601public ESqlStatementType findsybaseasecmdusedbyyacc(TSourceToken pcst){
18602  ESqlStatementType ret = ESqlStatementType.sstinvalid;
18603
18604    int lcpos = pcst.posinlist;
18605    TSourceTokenList lcsourcetokenlist = pcst.container;
18606
18607    //subquery after semicolon or at first line
18608    if (  (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
18609      {
18610        int k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
18611        if ( k >0 )
18612          {
18613            ret = ESqlStatementType.sstselect;
18614          }
18615
18616        return ret;
18617      }
18618
18619
18620    ret = findsybaseasecmd(pcst);
18621    // execute can't be used to delimite other sql
18622    if ( ret == ESqlStatementType.sstmssqlexec )
18623      ret = ESqlStatementType.sstinvalid;
18624
18625  return ret;
18626}
18627
18628    // ---- SQL Anywhere fork (dbvsqlanywhere): full-family recognition; rejection of
18629    // ---- foreign statements is the parser policy layer, not this table.
18630void initsqlanywherecmds(){
18631// cmd must be sort alphabetically
18632    addsqlanywherecmds(ESqlStatementType.sstmssqladdsignature, TBaseType.rrw_add,"counter","signature"," "," "," "," ");
18633    addsqlanywherecmds(ESqlStatementType.sstmssqladdsignature, TBaseType.rrw_add,"signature"," "," "," "," "," ");
18634//alter
18635    addsqlanywherecmds(ESqlStatementType.sstmssqlalterapplicationrole, TBaseType.rrw_alter,"application","role"," "," "," "," ");
18636    addsqlanywherecmds(ESqlStatementType.sstmssqlalterassembly, TBaseType.rrw_alter,"assembly"," "," "," "," "," ");
18637    addsqlanywherecmds(ESqlStatementType.sstmssqlalterasymmetrickey, TBaseType.rrw_alter,"asymmetric","key"," "," "," "," ");
18638    addsqlanywherecmds(ESqlStatementType.sstmssqlalterauthorization, TBaseType.rrw_alter,"authorization"," "," "," "," "," ");
18639    addsqlanywherecmds(ESqlStatementType.sstmssqlaltercertificate, TBaseType.rrw_alter,"certificate"," "," "," "," "," ");
18640    addsqlanywherecmds(ESqlStatementType.sstmssqlaltercredential, TBaseType.rrw_alter,"credential"," "," "," "," "," ");
18641    addsqlanywherecmds(ESqlStatementType.sstmssqlalterdatabase, TBaseType.rrw_alter,"database"," "," "," "," "," ");
18642    addsqlanywherecmds(ESqlStatementType.sstsybasealterdbspace, TBaseType.rrw_alter,"dbspace"," "," "," "," "," ");
18643    addsqlanywherecmds(ESqlStatementType.sstsybasealterdomain, TBaseType.rrw_alter,"domain"," "," "," "," "," ");
18644    addsqlanywherecmds(ESqlStatementType.sstmssqlalterendpoint, TBaseType.rrw_alter,"endpoint"," "," "," "," "," ");
18645    addsqlanywherecmds(ESqlStatementType.sstmssqlalterfulltextcatalog, TBaseType.rrw_alter,"fulltext","catalog"," "," "," "," ");
18646    addsqlanywherecmds(ESqlStatementType.sstmssqlalterfulltextindex, TBaseType.rrw_alter,"fulltext","index"," "," "," "," ");
18647    addsqlanywherecmds(ESqlStatementType.sstmssqlalterfunction, TBaseType.rrw_alter,"function"," "," "," "," "," ");
18648    addsqlanywherecmds(ESqlStatementType.sstmssqlalterindex, TBaseType.rrw_alter,"index"," "," "," "," "," ");
18649    addsqlanywherecmds(ESqlStatementType.sstmssqlalterlogin, TBaseType.rrw_alter,"login"," "," "," "," "," ");
18650    addsqlanywherecmds(ESqlStatementType.sstmssqlaltermasterkey, TBaseType.rrw_alter,"master","key"," "," "," "," ");
18651    addsqlanywherecmds(ESqlStatementType.sstmssqlaltermessagetype, TBaseType.rrw_alter,"message","type"," "," "," "," ");
18652    addsqlanywherecmds(ESqlStatementType.sstmssqlalterpartitionfunction, TBaseType.rrw_alter,"partition","function"," "," "," "," ");
18653    addsqlanywherecmds(ESqlStatementType.sstmssqlalterpartitionscheme, TBaseType.rrw_alter,"partition","scheme"," "," "," "," ");
18654    addsqlanywherecmds(ESqlStatementType.sstmssqlalterprocedure, TBaseType.rrw_alter,"proc"," "," "," "," "," ");
18655    addsqlanywherecmds(ESqlStatementType.sstmssqlalterprocedure, TBaseType.rrw_alter,"procedure"," "," "," "," "," ");
18656    addsqlanywherecmds(ESqlStatementType.sstmssqlalterqueue, TBaseType.rrw_alter,"queue"," "," "," "," "," ");
18657    addsqlanywherecmds(ESqlStatementType.sstmssqlalterremoteservicebinding, TBaseType.rrw_alter,"remote","service","binding"," "," "," ");
18658    addsqlanywherecmds(ESqlStatementType.sstmssqlalterrole, TBaseType.rrw_alter,"role"," "," "," "," "," ");
18659    addsqlanywherecmds(ESqlStatementType.sstmssqlalterroute, TBaseType.rrw_alter,"route"," "," "," "," "," ");
18660    addsqlanywherecmds(ESqlStatementType.sstmssqlalterschema, TBaseType.rrw_alter,"schema"," "," "," "," "," ");
18661    addsqlanywherecmds(ESqlStatementType.sstsybasealterserver, TBaseType.rrw_alter,"server"," "," "," "," "," ");
18662    addsqlanywherecmds(ESqlStatementType.sstmssqlalterservice, TBaseType.rrw_alter,"service"," "," "," "," "," ");
18663    addsqlanywherecmds(ESqlStatementType.sstmssqlalterservicemasterkey, TBaseType.rrw_alter,"service","master","key"," "," "," ");
18664    addsqlanywherecmds(ESqlStatementType.sstmssqlaltersymmetrickey, TBaseType.rrw_alter,"symmetric","key"," "," "," "," ");
18665    addsqlanywherecmds(ESqlStatementType.sstaltertable, TBaseType.rrw_alter,"table"," "," "," "," "," ");
18666    addsqlanywherecmds(ESqlStatementType.sstmssqlaltertrigger, TBaseType.rrw_alter,"trigger"," "," "," "," "," ");
18667    addsqlanywherecmds(ESqlStatementType.sstmssqlalteruser, TBaseType.rrw_alter,"user"," "," "," "," "," ");
18668    addsqlanywherecmds(ESqlStatementType.sstmssqlalterview, TBaseType.rrw_alter,"view"," "," "," "," "," ");
18669    addsqlanywherecmds(ESqlStatementType.sstmssqlalterxmlschemacollection, TBaseType.rrw_alter,"xml","schema","collection"," "," "," ");
18670//backup
18671    addsqlanywherecmds(ESqlStatementType.sstmssqlbackupdatabase, TBaseType.rrw_backup,"database"," "," "," "," "," ");
18672    addsqlanywherecmds(ESqlStatementType.sstmssqlbackupcertificate, TBaseType.rrw_backup,"certificate"," "," "," "," "," ");
18673    addsqlanywherecmds(ESqlStatementType.sstmssqlbackuplog, TBaseType.rrw_backup,"log"," "," "," "," "," ");
18674    addsqlanywherecmds(ESqlStatementType.sstmssqlbackupmasterkey, TBaseType.rrw_backup,"master","key"," "," "," "," ");
18675    addsqlanywherecmds(ESqlStatementType.sstmssqlbackupservicemasterkey, TBaseType.rrw_backup,"service","master","key"," "," "," ");
18676//begin
18677    addsqlanywherecmds(ESqlStatementType.sstmssqlbegincatch, TBaseType.rrw_begin,"catch"," "," "," "," "," ");
18678    addsqlanywherecmds(ESqlStatementType.sstmssqlbeginconversationtimer, TBaseType.rrw_begin,"conversation","timer"," "," "," "," ");
18679    addsqlanywherecmds(ESqlStatementType.sstmssqlbegindialog, TBaseType.rrw_begin,"dialog"," "," "," "," "," ");
18680    addsqlanywherecmds(ESqlStatementType.sstmssqlbegindistributed, TBaseType.rrw_begin,"distributed"," "," "," "," "," ");
18681    addsqlanywherecmds(ESqlStatementType.sstmssqlbegintran, TBaseType.rrw_begin,"tran"," "," "," "," "," ");
18682    addsqlanywherecmds(ESqlStatementType.sstmssqlbegintran, TBaseType.rrw_begin,"transaction"," "," "," "," "," ");
18683    addsqlanywherecmds(ESqlStatementType.sstmssqlbegintry, TBaseType.rrw_begin,"try"," "," "," "," "," ");
18684//break
18685    addsqlanywherecmds(ESqlStatementType.sstbreak, TBaseType.rrw_break," "," "," "," "," "," ");
18686//bulk insert
18687    addsqlanywherecmds(ESqlStatementType.sstmssqlbulkinsert, TBaseType.rrw_bulk,"insert"," "," "," "," "," ");
18688
18689    addsqlanywherecmds(ESqlStatementType.sstcall, TBaseType.rrw_call," "," "," "," "," "," ");
18690
18691//checkpoint
18692    addsqlanywherecmds(ESqlStatementType.sstmssqlcheckpoint, TBaseType.rrw_checkpoint," "," "," "," "," "," ");
18693//close
18694    addsqlanywherecmds(ESqlStatementType.sstmssqlclose, TBaseType.rrw_close," "," "," "," "," "," ");
18695    addsqlanywherecmds(ESqlStatementType.sstmssqlclosesymmetrickey, TBaseType.rrw_close,"all", "symmetric", "keys"," "," "," ");
18696    addsqlanywherecmds(ESqlStatementType.sstmssqlclosemasterkey, TBaseType.rrw_close,"master", "key"," "," "," "," ");
18697    addsqlanywherecmds(ESqlStatementType.sstmssqlclosesymmetrickey, TBaseType.rrw_close,"symmetric", "key"," "," "," "," ");
18698//commit
18699    addsqlanywherecmds(ESqlStatementType.sstmssqlcommit, TBaseType.rrw_commit," "," "," "," "," "," ");
18700    addsqlanywherecmds(ESqlStatementType.sstmssqlcommit, TBaseType.rrw_commit,"work"," "," "," "," "," ");
18701    addsqlanywherecmds(ESqlStatementType.sstmssqlcommit, TBaseType.rrw_commit,"tran"," "," "," "," "," ");
18702    addsqlanywherecmds(ESqlStatementType.sstmssqlcommit, TBaseType.rrw_commit,"transaction"," "," "," "," "," ");
18703//continue
18704    addsqlanywherecmds(ESqlStatementType.sstmssqlcontinue, TBaseType.rrw_continue," "," "," "," "," "," ");
18705//create
18706    addsqlanywherecmds(ESqlStatementType.sstmssqlcreateaggregate, TBaseType.rrw_create,"aggregate"," "," "," "," "," ");
18707    addsqlanywherecmds(ESqlStatementType.sstmssqlcreateapplicationrole, TBaseType.rrw_create,"application", "role"," "," "," "," ");
18708    addsqlanywherecmds(ESqlStatementType.sstmssqlcreateassembly, TBaseType.rrw_create,"assembly"," "," "," "," "," ");
18709    addsqlanywherecmds(ESqlStatementType.sstmssqlcreateasymmetrickey, TBaseType.rrw_create,"asymmetric", "key"," "," "," "," ");
18710    addsqlanywherecmds(ESqlStatementType.sstmssqlcreatecertificate, TBaseType.rrw_create,"certificate"," "," "," "," "," ");
18711    addsqlanywherecmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"clustered","index"," "," "," "," ");
18712    addsqlanywherecmds(ESqlStatementType.sstmssqlcreatecontract, TBaseType.rrw_create,"contract"," "," "," "," "," ");
18713    addsqlanywherecmds(ESqlStatementType.sstmssqlcreatecredential, TBaseType.rrw_create,"credential"," "," "," "," "," ");
18714    addsqlanywherecmds(ESqlStatementType.sstcreatedatabase, TBaseType.rrw_create,"database"," "," "," "," "," ");
18715    addsqlanywherecmds(ESqlStatementType.sstsybasecreatedbspace, TBaseType.rrw_create,"dbspace"," "," "," "," "," ");
18716    addsqlanywherecmds(ESqlStatementType.sstsybasecreatedomain, TBaseType.rrw_create,"domain"," "," "," "," "," ");
18717    addsqlanywherecmds(ESqlStatementType.sstmssqlcreatedefault, TBaseType.rrw_create,"default"," "," "," "," "," ");
18718    addsqlanywherecmds(ESqlStatementType.sstmssqlcreateendpoint, TBaseType.rrw_create,"endpoint"," "," "," "," "," ");
18719    addsqlanywherecmds(ESqlStatementType.sstmssqlcreateeventnotification, TBaseType.rrw_create,"event", "notification"," "," "," "," ");
18720    addsqlanywherecmds(ESqlStatementType.sstsybasecreateexistingtable, TBaseType.rrw_create,"existing","table"," "," "," "," ");
18721    addsqlanywherecmds(ESqlStatementType.sstsybasecreateexternlogin, TBaseType.rrw_create,"externlogin"," "," "," "," "," ");
18722    addsqlanywherecmds(ESqlStatementType.sstmssqlcreatefulltextcatalog, TBaseType.rrw_create,"fulltext", "catalog"," "," "," "," ");
18723    addsqlanywherecmds(ESqlStatementType.sstmssqlcreatefulltextindex, TBaseType.rrw_create,"fulltext", "index"," "," "," "," ");
18724    addsqlanywherecmds(ESqlStatementType.sstmssqlcreatefunction, TBaseType.rrw_create,"function"," "," "," "," "," ");
18725    addsqlanywherecmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"index"," "," "," "," "," ");
18726    addsqlanywherecmds(ESqlStatementType.sstsybasecreatejoinindex, TBaseType.rrw_create,"join","index"," "," "," "," ");
18727    addsqlanywherecmds(ESqlStatementType.sstmssqlcreatelogin, TBaseType.rrw_create,"login"," "," "," "," "," ");
18728    addsqlanywherecmds(ESqlStatementType.sstmssqlcreatemasterkey, TBaseType.rrw_create,"master","key"," "," "," "," ");
18729    addsqlanywherecmds(ESqlStatementType.sstmssqlcreatemessagetype, TBaseType.rrw_create,"message","type"," "," "," "," ");
18730    addsqlanywherecmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"nonclustered","index"," "," "," "," ");
18731    addsqlanywherecmds(ESqlStatementType.sstmssqlcreatefunction, TBaseType.rrw_create,"or","replace","function"," "," "," ");
18732    addsqlanywherecmds(ESqlStatementType.sstmssqlcreateprocedure, TBaseType.rrw_create,"or","replace","proc"," "," "," ");
18733    addsqlanywherecmds(ESqlStatementType.sstmssqlcreateprocedure, TBaseType.rrw_create,"or","replace","procedure"," "," "," ");
18734    addsqlanywherecmds(ESqlStatementType.sstmssqlcreatepartitionfunction, TBaseType.rrw_create,"partition","function"," "," "," "," ");
18735    addsqlanywherecmds(ESqlStatementType.sstmssqlcreatepartitionscheme, TBaseType.rrw_create,"partition","scheme"," "," "," "," ");
18736    addsqlanywherecmds(ESqlStatementType.sstmssqlcreateprocedure, TBaseType.rrw_create,"proc"," "," "," "," "," ");
18737    addsqlanywherecmds(ESqlStatementType.sstmssqlcreateprocedure, TBaseType.rrw_create,"procedure"," "," "," "," "," ");
18738    addsqlanywherecmds(ESqlStatementType.sstmssqlcreatequeue, TBaseType.rrw_create,"queue"," "," "," "," "," ");
18739    addsqlanywherecmds(ESqlStatementType.sstmssqlcreateremoteservicebinding, TBaseType.rrw_create,"remote", "service", "binding"," "," "," ");
18740    addsqlanywherecmds(ESqlStatementType.sstmssqlcreaterole, TBaseType.rrw_create,"role"," "," "," "," "," ");
18741    addsqlanywherecmds(ESqlStatementType.sstmssqlcreateroute, TBaseType.rrw_create,"route"," "," "," "," "," ");
18742    addsqlanywherecmds(ESqlStatementType.sstmssqlcreaterule, TBaseType.rrw_create,"rule"," "," "," "," "," ");
18743    addsqlanywherecmds(ESqlStatementType.sstmssqlcreateschema, TBaseType.rrw_create,"schema"," "," "," "," "," ");
18744    addsqlanywherecmds(ESqlStatementType.sstsybasecreateserver, TBaseType.rrw_create,"server"," "," "," "," "," ");
18745    addsqlanywherecmds(ESqlStatementType.sstmssqlcreateservice, TBaseType.rrw_create,"service"," "," "," "," "," ");
18746    addsqlanywherecmds(ESqlStatementType.sstmssqlcreatestatistics, TBaseType.rrw_create,"statistics"," "," "," "," "," ");
18747    addsqlanywherecmds(ESqlStatementType.sstmssqlcreatesymmetrickey, TBaseType.rrw_create,"symmetric", "key"," "," "," "," ");
18748    addsqlanywherecmds(ESqlStatementType.sstmssqlcreatesynonym, TBaseType.rrw_create,"synonym"," "," "," "," "," ");
18749    addsqlanywherecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"table"," "," "," "," "," ");
18750    addsqlanywherecmds(ESqlStatementType.sstcreatetrigger, TBaseType.rrw_create,"trigger"," "," "," "," "," ");
18751    addsqlanywherecmds(ESqlStatementType.sstmssqlcreatetype, TBaseType.rrw_create,"type"," "," "," "," "," ");
18752    addsqlanywherecmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"cmp","index"," "," "," "," ");
18753    addsqlanywherecmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"date","index"," "," "," "," ");
18754    addsqlanywherecmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"dttm","index"," "," "," "," ");
18755    addsqlanywherecmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"hg","index"," "," "," "," ");
18756    addsqlanywherecmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"hng","index"," "," "," "," ");
18757    addsqlanywherecmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"lf","index"," "," "," "," ");
18758    addsqlanywherecmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"time","index"," "," "," "," ");
18759    addsqlanywherecmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"wd","index"," "," "," "," ");
18760    addsqlanywherecmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"unique","clustered","index"," "," "," ");
18761    addsqlanywherecmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"unique","index"," "," "," "," ");
18762    addsqlanywherecmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"unique","nonclustered","index"," "," "," ");
18763    addsqlanywherecmds(ESqlStatementType.sstmssqlcreateuser, TBaseType.rrw_create,"user"," "," "," "," "," ");
18764    addsqlanywherecmds(ESqlStatementType.sstsybasecreatevariable, TBaseType.rrw_create,"variable"," "," "," "," "," ");
18765    addsqlanywherecmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,"view"," "," "," "," "," ");
18766    addsqlanywherecmds(ESqlStatementType.sstmssqlcreatexmlschemacollection, TBaseType.rrw_create,"xml", "schema", "collection"," "," "," ");
18767// DBCC
18768    addsqlanywherecmds(ESqlStatementType.sstmssqldbcc, TBaseType.rrw_dbcc," "," "," "," "," "," ");
18769//DEALLOCATE
18770    addsqlanywherecmds(ESqlStatementType.sstmssqldeallocate, TBaseType.rrw_deallocate," "," "," "," "," "," ");
18771//DECLARE
18772    addsqlanywherecmds(ESqlStatementType.sstsybasedeallocatedescriptor, TBaseType.rrw_deallocate,"descriptor"," "," "," "," "," ");
18773    addsqlanywherecmds(ESqlStatementType.sstmssqldeclare, TBaseType.rrw_declare," "," "," "," "," "," ");
18774//DELETE
18775    addsqlanywherecmds(ESqlStatementType.sstsybasedeclarelocaltemptable, TBaseType.rrw_declare,"local","temporary","table"," "," "," ");
18776    addsqlanywherecmds(ESqlStatementType.sstdelete, TBaseType.rrw_delete," "," "," "," "," "," ");
18777
18778//DELETE statistics
18779    addsqlanywherecmds(ESqlStatementType.sstsybaseDeleteStatistics, TBaseType.rrw_delete,"shared","statistics"," "," "," "," ");
18780    addsqlanywherecmds(ESqlStatementType.sstsybaseDeleteStatistics, TBaseType.rrw_delete,"statistics"," "," "," "," "," ");
18781
18782//DENY
18783    addsqlanywherecmds(ESqlStatementType.sstmssqldeny, TBaseType.rrw_deny," "," "," "," "," "," ");
18784//DISABLE TRIGGER
18785    addsqlanywherecmds(ESqlStatementType.sstmssqldisabletrigger, TBaseType.rrw_disable,"trigger"," "," "," "," "," ");
18786//drop
18787    addsqlanywherecmds(ESqlStatementType.sstmssqldropaggregate, TBaseType.rrw_drop,"aggregate"," "," "," "," "," ");
18788    addsqlanywherecmds(ESqlStatementType.sstmssqldropapplicationrole, TBaseType.rrw_drop,"application", "role"," "," "," "," ");
18789    addsqlanywherecmds(ESqlStatementType.sstmssqldropassembly, TBaseType.rrw_drop,"assembly"," "," "," "," "," ");
18790    addsqlanywherecmds(ESqlStatementType.sstmssqldropasymmetrickey, TBaseType.rrw_drop,"asymmetric", "key"," "," "," "," ");
18791    addsqlanywherecmds(ESqlStatementType.sstmssqldropcertificate, TBaseType.rrw_drop,"certificate"," "," "," "," "," ");
18792    addsqlanywherecmds(ESqlStatementType.sstsybasedropconnection, TBaseType.rrw_drop,"connection"," "," "," "," "," ");
18793    addsqlanywherecmds(ESqlStatementType.sstmssqldropcontract, TBaseType.rrw_drop,"contract"," "," "," "," "," ");
18794    addsqlanywherecmds(ESqlStatementType.sstmssqldropsignature, TBaseType.rrw_drop,"counter", "signature"," "," "," "," ");
18795    addsqlanywherecmds(ESqlStatementType.sstmssqldropcredential, TBaseType.rrw_drop,"credential"," "," "," "," "," ");
18796    addsqlanywherecmds(ESqlStatementType.sstmssqldropdatabase, TBaseType.rrw_drop,"database"," "," "," "," "," ");
18797    addsqlanywherecmds(ESqlStatementType.sstmssqldropdefault, TBaseType.rrw_drop,"default"," "," "," "," "," ");
18798    addsqlanywherecmds(ESqlStatementType.sstmssqldropendpoint, TBaseType.rrw_drop,"endpoint"," "," "," "," "," ");
18799    addsqlanywherecmds(ESqlStatementType.sstmssqldropeventnotification, TBaseType.rrw_drop,"event", "notification"," "," "," "," ");
18800    addsqlanywherecmds(ESqlStatementType.sstsybasedropexternlogin, TBaseType.rrw_drop,"externlogin"," "," "," "," "," ");
18801    addsqlanywherecmds(ESqlStatementType.sstmssqldropfulltextcatalog, TBaseType.rrw_drop,"fulltext", "catalog"," "," "," "," ");
18802    addsqlanywherecmds(ESqlStatementType.sstmssqldropfulltextindex, TBaseType.rrw_drop,"fulltext", "index"," "," "," "," ");
18803    addsqlanywherecmds(ESqlStatementType.sstmssqldropfunction, TBaseType.rrw_drop,"function"," "," "," "," "," ");
18804    addsqlanywherecmds(ESqlStatementType.sstmssqldropindex, TBaseType.rrw_drop,"index"," "," "," "," "," ");
18805    addsqlanywherecmds(ESqlStatementType.sstmssqldroplogin, TBaseType.rrw_drop,"login"," "," "," "," "," ");
18806    addsqlanywherecmds(ESqlStatementType.sstmssqldropmasterkey, TBaseType.rrw_drop,"master", "key"," "," "," "," ");
18807    addsqlanywherecmds(ESqlStatementType.sstmssqldropmessagetype, TBaseType.rrw_drop,"message", "type"," "," "," "," ");
18808    addsqlanywherecmds(ESqlStatementType.sstmssqldroppartitionfunction, TBaseType.rrw_drop,"partition", "function"," "," "," "," ");
18809    addsqlanywherecmds(ESqlStatementType.sstmssqldroppartitionscheme, TBaseType.rrw_drop,"partition", "scheme"," "," "," "," ");
18810    addsqlanywherecmds(ESqlStatementType.sstmssqldropprocedure, TBaseType.rrw_drop,"proc"," "," "," "," "," ");
18811    addsqlanywherecmds(ESqlStatementType.sstmssqldropprocedure, TBaseType.rrw_drop,"procedure"," "," "," "," "," ");
18812    addsqlanywherecmds(ESqlStatementType.sstmssqldropqueue, TBaseType.rrw_drop,"queue"," "," "," "," "," ");
18813    addsqlanywherecmds(ESqlStatementType.sstmssqldropremoteservicebinding, TBaseType.rrw_drop,"remote", "service", "binding"," "," "," ");
18814    addsqlanywherecmds(ESqlStatementType.sstmssqldroprole, TBaseType.rrw_drop,"role"," "," "," "," "," ");
18815    addsqlanywherecmds(ESqlStatementType.sstmssqldroproute, TBaseType.rrw_drop,"route"," "," "," "," "," ");
18816    addsqlanywherecmds(ESqlStatementType.sstmssqldroprule, TBaseType.rrw_drop,"rule"," "," "," "," "," ");
18817    addsqlanywherecmds(ESqlStatementType.sstmssqldropschema, TBaseType.rrw_drop,"schema"," "," "," "," "," ");
18818    addsqlanywherecmds(ESqlStatementType.sstsybasedropserver, TBaseType.rrw_drop,"server"," "," "," "," "," ");
18819    addsqlanywherecmds(ESqlStatementType.sstmssqldropservice, TBaseType.rrw_drop,"service"," "," "," "," "," ");
18820    addsqlanywherecmds(ESqlStatementType.sstmssqldropsignature, TBaseType.rrw_drop,"signature"," "," "," "," "," ");
18821    addsqlanywherecmds(ESqlStatementType.sstsybasedropstatement, TBaseType.rrw_drop,"statement"," "," "," "," "," ");
18822    addsqlanywherecmds(ESqlStatementType.sstmssqldropstatistics, TBaseType.rrw_drop,"statistics"," "," "," "," "," ");
18823    addsqlanywherecmds(ESqlStatementType.sstmssqldropsymmetrickey, TBaseType.rrw_drop,"symmetric", "key"," "," "," "," ");
18824    addsqlanywherecmds(ESqlStatementType.sstmssqldropsynonym, TBaseType.rrw_drop,"synonym"," "," "," "," "," ");
18825    addsqlanywherecmds(ESqlStatementType.sstmssqldroptable, TBaseType.rrw_drop,"table"," "," "," "," "," ");
18826    addsqlanywherecmds(ESqlStatementType.sstmssqldroptrigger, TBaseType.rrw_drop,"trigger"," "," "," "," "," ");
18827    addsqlanywherecmds(ESqlStatementType.sstmssqldroptype, TBaseType.rrw_drop,"type"," "," "," "," "," ");
18828    addsqlanywherecmds(ESqlStatementType.sstmssqldropuser, TBaseType.rrw_drop,"user"," "," "," "," "," ");
18829    addsqlanywherecmds(ESqlStatementType.sstsybasedropvariable, TBaseType.rrw_drop,"variable"," "," "," "," "," ");
18830    addsqlanywherecmds(ESqlStatementType.sstmssqldropview, TBaseType.rrw_drop,"view"," "," "," "," "," ");
18831    addsqlanywherecmds(ESqlStatementType.sstmssqldropxmlschemacollection, TBaseType.rrw_drop,"xml", "schema", "collection"," "," "," ");
18832
18833    addsqlanywherecmds(ESqlStatementType.sstsybasedumpTran, TBaseType.rrw_sybase_dump,"tran"," "," "," "," "," ");
18834    addsqlanywherecmds(ESqlStatementType.sstsybasedumpTran, TBaseType.rrw_sybase_dump,"transaction"," "," "," "," "," ");
18835    addsqlanywherecmds(ESqlStatementType.sstsybaseallocatedescriptor, TBaseType.rrw_allocate,"descriptor"," "," "," "," "," ");
18836    addsqlanywherecmds(ESqlStatementType.sstcomment, TBaseType.rrw_comment," "," "," "," "," "," ");
18837    addsqlanywherecmds(ESqlStatementType.sstconnect, TBaseType.rrw_connect," "," "," "," "," "," ");
18838    addsqlanywherecmds(ESqlStatementType.sstdescribe, TBaseType.rrw_describe," "," "," "," "," "," ");
18839    addsqlanywherecmds(ESqlStatementType.sstprepare, TBaseType.rrw_prepare," "," "," "," "," "," ");
18840    addsqlanywherecmds(ESqlStatementType.sstsybasegetdescriptor, TBaseType.rrw_get,"descriptor"," "," "," "," "," ");
18841    addsqlanywherecmds(ESqlStatementType.sstsybasestartdatabase, TBaseType.rrw_start,"database"," "," "," "," "," ");
18842    addsqlanywherecmds(ESqlStatementType.sstsybasestartengine, TBaseType.rrw_start,"engine"," "," "," "," "," ");
18843    addsqlanywherecmds(ESqlStatementType.sstsybasestopdatabase, TBaseType.rrw_stop,"database"," "," "," "," "," ");
18844    addsqlanywherecmds(ESqlStatementType.sstsybasestopengine, TBaseType.rrw_stop,"engine"," "," "," "," "," ");
18845    addsqlanywherecmds(ESqlStatementType.sstsybaseforwardto, TBaseType.rrw_sybase_forward,"to"," "," "," "," "," ");
18846    addsqlanywherecmds(ESqlStatementType.sstsybaseinstalljava, TBaseType.rrw_sybase_install,"java"," "," "," "," "," ");
18847    addsqlanywherecmds(ESqlStatementType.sstsybaseiqutilities, TBaseType.rrw_sybase_iq,"utilities"," "," "," "," "," ");
18848    addsqlanywherecmds(ESqlStatementType.sstsybasemessage, TBaseType.rrw_sybase_message," "," "," "," "," "," ");
18849    addsqlanywherecmds(ESqlStatementType.sstsybaseoutput, TBaseType.rrw_sybase_output,"to"," "," "," "," "," ");
18850    addsqlanywherecmds(ESqlStatementType.sstsybaseput, TBaseType.rrw_sybase_put," "," "," "," "," "," ");
18851    addsqlanywherecmds(ESqlStatementType.sstsybaseread, TBaseType.rrw_sybase_read," "," "," "," "," "," ");
18852    addsqlanywherecmds(ESqlStatementType.sstsybaseremovejava, TBaseType.rrw_sybase_remove,"java"," "," "," "," "," ");
18853    addsqlanywherecmds(ESqlStatementType.sstsybasesynchronizejoinindex, TBaseType.rrw_sybase_synchronize,"join","index"," "," "," "," ");
18854    addsqlanywherecmds(ESqlStatementType.sstsybasetriggerevent, TBaseType.rrw_sybase_trigger,"event"," "," "," "," "," ");
18855//if
18856    addsqlanywherecmds(ESqlStatementType.sstmssqlif, TBaseType.rrw_if," "," "," "," "," "," ");
18857//enable trigger
18858    addsqlanywherecmds(ESqlStatementType.sstmssqlenabletrigger, TBaseType.rrw_enable,"trigger"," "," "," "," "," ");
18859//END CONVERSATION
18860// addsqlanywherecmds(ESqlStatementType.sstMssqlEndCatch,TBaseType.rrw_end,'catch');
18861    addsqlanywherecmds(ESqlStatementType.sstmssqlendconversation, TBaseType.rrw_end,"conversation"," "," "," "," "," ");
18862// addsqlanywherecmds(ESqlStatementType.sstMssqlEndTry,TBaseType.rrw_end,'try');
18863//exec
18864//exec as
18865    addsqlanywherecmds(ESqlStatementType.sstmssqlexec, TBaseType.rrw_exec," "," "," "," "," "," ");
18866    addsqlanywherecmds(ESqlStatementType.sstmssqlexecuteas, TBaseType.rrw_exec,"as","caller"," "," "," "," ");
18867    addsqlanywherecmds(ESqlStatementType.sstmssqlexecuteas, TBaseType.rrw_exec,"as","login"," "," "," "," ");
18868    addsqlanywherecmds(ESqlStatementType.sstmssqlexecuteas, TBaseType.rrw_exec,"as","user"," "," "," "," ");
18869    addsqlanywherecmds(ESqlStatementType.sstmssqlexec, TBaseType.rrw_execute, " "," "," "," "," "," ");
18870    addsqlanywherecmds(ESqlStatementType.sstmssqlexecuteas, TBaseType.rrw_execute,"as","caller"," "," "," "," ");
18871    addsqlanywherecmds(ESqlStatementType.sstmssqlexecuteas, TBaseType.rrw_execute,"as","login"," "," "," "," ");
18872    addsqlanywherecmds(ESqlStatementType.sstmssqlexecuteas, TBaseType.rrw_execute,"as","user"," "," "," "," ");
18873//fetch
18874    addsqlanywherecmds(ESqlStatementType.sstmssqlfetch, TBaseType.rrw_fetch," "," "," "," "," "," ");
18875//go
18876    addsqlanywherecmds(ESqlStatementType.sstmssqlgo, TBaseType.rrw_go," "," "," "," "," "," ");
18877//goto
18878    addsqlanywherecmds(ESqlStatementType.sstmssqlgoto, TBaseType.rrw_goto," "," "," "," "," "," ");
18879//GRANT
18880    addsqlanywherecmds(ESqlStatementType.sstmssqlgrant, TBaseType.rrw_grant," "," "," "," "," "," ");
18881//GRANT
18882    addsqlanywherecmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert," "," "," "," "," "," ");
18883
18884    addsqlanywherecmds(ESqlStatementType.sstsybaseInsertBulk, TBaseType.rrw_insert,"bulk"," "," "," "," "," ");
18885//KILL
18886    addsqlanywherecmds(ESqlStatementType.sstmssqlkill, TBaseType.rrw_kill," "," "," "," "," "," ");
18887//KILL
18888    addsqlanywherecmds(ESqlStatementType.sstmssqlkill, TBaseType.rrw_kill," "," "," "," "," "," ");
18889    addsqlanywherecmds(ESqlStatementType.sstmssqlkillquerynotificationsubscription, TBaseType.rrw_kill,"kill", "query", "notification", "subscription"," "," ");
18890    addsqlanywherecmds(ESqlStatementType.sstmssqlkillstats, TBaseType.rrw_kill,"stats"," "," "," "," "," ");
18891
18892    addsqlanywherecmds(ESqlStatementType.sstload,TBaseType.rrw_load,"table"," "," "," "," "," ");
18893//
18894 addsqlanywherecmds(ESqlStatementType.sstsybaselocktable,TBaseType.rw_locktable,"table"," "," "," "," "," ");
18895//MOVE CONVERSATION
18896    addsqlanywherecmds(ESqlStatementType.sstmssqlmoveconversation, TBaseType.rrw_move,"conversation"," "," "," "," "," ");
18897//merge
18898    addsqlanywherecmds(ESqlStatementType.sstmerge, TBaseType.rrw_merge," "," "," "," "," "," ");
18899//open
18900    addsqlanywherecmds(ESqlStatementType.sstmssqlopen, TBaseType.rrw_open," "," "," "," "," "," ");
18901    addsqlanywherecmds(ESqlStatementType.sstmssqlopenmasterkey, TBaseType.rrw_open,"master", "key"," "," "," "," ");
18902    addsqlanywherecmds(ESqlStatementType.sstmssqlopensymmetrickey, TBaseType.rrw_open,"symmetric", "key"," "," "," "," ");
18903//PRINT
18904    addsqlanywherecmds(ESqlStatementType.sstmssqlprint, TBaseType.rrw_print," "," "," "," "," "," ");
18905//RAISERROR
18906    addsqlanywherecmds(ESqlStatementType.sstmssqlraiserror, TBaseType.rrw_raiserror," "," "," "," "," "," ");
18907//READTEXT
18908    addsqlanywherecmds(ESqlStatementType.sstmssqlreadtext, TBaseType.rrw_readtext," "," "," "," "," "," ");
18909//RECEIVE
18910    addsqlanywherecmds(ESqlStatementType.sstmssqlreceive, TBaseType.rrw_receive," "," "," "," "," "," ");
18911//RECONFIGURE
18912    addsqlanywherecmds(ESqlStatementType.sstmssqlreconfigure, TBaseType.rrw_reconfigure," "," "," "," "," "," ");
18913//RESTORE
18914    addsqlanywherecmds(ESqlStatementType.sstmssqlrestoredatabase, TBaseType.rrw_restore,"database"," "," "," "," "," ");
18915    addsqlanywherecmds(ESqlStatementType.sstmssqlrestorefilelistonly, TBaseType.rrw_restore,"filelistonly"," "," "," "," "," ");
18916    addsqlanywherecmds(ESqlStatementType.sstmssqlrestoreheaderonly, TBaseType.rrw_restore,"headeronly"," "," "," "," "," ");
18917    addsqlanywherecmds(ESqlStatementType.sstmssqlrestorelabelonly, TBaseType.rrw_restore,"labelonly"," "," "," "," "," ");
18918    addsqlanywherecmds(ESqlStatementType.sstmssqlrestorelog, TBaseType.rrw_restore,"log"," "," "," "," "," ");
18919    addsqlanywherecmds(ESqlStatementType.sstmssqlrestoremasterkey, TBaseType.rrw_restore,"master","key"," "," "," "," ");
18920    addsqlanywherecmds(ESqlStatementType.sstmssqlrestorerewindonly, TBaseType.rrw_restore,"rewindonly"," "," "," "," "," ");
18921    addsqlanywherecmds(ESqlStatementType.sstmssqlrestoreservicemasterkey, TBaseType.rrw_restore,"service","master","key"," "," "," ");
18922    addsqlanywherecmds(ESqlStatementType.sstmssqlrestoreverifyonly, TBaseType.rrw_restore,"verifyonly"," "," "," "," "," ");
18923//RETURN
18924    addsqlanywherecmds(ESqlStatementType.sstmssqlreturn, TBaseType.rrw_return," "," "," "," "," "," ");
18925//REVERT
18926    addsqlanywherecmds(ESqlStatementType.sstmssqlrevert, TBaseType.rrw_revert," "," "," "," "," "," ");
18927//REVOKE
18928    addsqlanywherecmds(ESqlStatementType.sstmssqlrevoke, TBaseType.rrw_revoke," "," "," "," "," "," ");
18929//ROLLBACK
18930    addsqlanywherecmds(ESqlStatementType.sstmssqlrollback, TBaseType.rrw_rollback," "," "," "," "," "," ");
18931    addsqlanywherecmds(ESqlStatementType.sstmssqlrollback, TBaseType.rrw_rollback,"tran"," "," "," "," "," ");
18932    addsqlanywherecmds(ESqlStatementType.sstmssqlrollback, TBaseType.rrw_rollback,"transaction"," "," "," "," "," ");
18933    addsqlanywherecmds(ESqlStatementType.sstmssqlrollback, TBaseType.rrw_rollback,"work"," "," "," "," "," ");
18934//SAVE
18935    addsqlanywherecmds(ESqlStatementType.sstmssqlsavetran, TBaseType.rrw_save," "," "," "," "," "," ");
18936    addsqlanywherecmds(ESqlStatementType.sstmssqlsavetran, TBaseType.rrw_save,"tran"," "," "," "," "," ");
18937    addsqlanywherecmds(ESqlStatementType.sstmssqlsavetran, TBaseType.rrw_save,"transaction"," "," "," "," "," ");
18938//SELECT
18939    addsqlanywherecmds(ESqlStatementType.sstselect, TBaseType.rrw_select," "," "," "," "," "," ");
18940//SEND ON CONVERSATION
18941    addsqlanywherecmds(ESqlStatementType.sstmssqlsendonconversation, TBaseType.rrw_send,"on","conversation"," "," "," "," ");
18942//SET
18943    addsqlanywherecmds(ESqlStatementType.sstmssqlset, TBaseType.rrw_set," "," "," "," "," "," ");
18944//SET
18945    addsqlanywherecmds(ESqlStatementType.sstmssqlsetuser,TBaseType.rrw_setuser," "," "," "," "," "," ");
18946//SHUTDOWN
18947    addsqlanywherecmds(ESqlStatementType.sstmssqlshutdown, TBaseType.rrw_shutdown," "," "," "," "," "," ");
18948//SIGN
18949//    addsqlanywherecmds(ESqlStatementType.sstmssqlsign, rrw_sign," "," "," "," "," "," ");
18950//TRUNCATE TABLE
18951    addsqlanywherecmds(ESqlStatementType.sstmssqltruncatetable, TBaseType.rrw_truncate,"table"," "," "," "," "," ");
18952//UPDATE
18953    addsqlanywherecmds(ESqlStatementType.sstupdate, TBaseType.rrw_update," "," "," "," "," "," ");
18954//UPDATE all STATISTICS
18955    addsqlanywherecmds(ESqlStatementType.sstmssqlupdatestatistics, TBaseType.rrw_update,"all","statistics"," "," "," "," ");
18956//UPDATE index STATISTICS
18957    addsqlanywherecmds(ESqlStatementType.sstsybaseupdateindexstatistics, TBaseType.rrw_update,"index","statistics"," "," "," "," ");
18958//UPDATE STATISTICS
18959    addsqlanywherecmds(ESqlStatementType.sstmssqlupdatestatistics, TBaseType.rrw_update,"statistics"," "," "," "," "," ");
18960//UPDATETEXT
18961    addsqlanywherecmds(ESqlStatementType.sstmssqlupdatetext, TBaseType.rrw_updatetext," "," "," "," "," "," ");
18962//USE
18963    addsqlanywherecmds(ESqlStatementType.sstmssqluse, TBaseType.rrw_use," "," "," "," "," "," ");
18964//WAITFOR
18965    addsqlanywherecmds(ESqlStatementType.sstmssqlwaitfor, TBaseType.rrw_waitfor," "," "," "," "," "," ");
18966//WHILE
18967    addsqlanywherecmds(ESqlStatementType.sstmssqlwhile, TBaseType.rrw_while," "," "," "," "," "," ");
18968//WITH, don't recongize here, let isMssqlSql do it
18969// addsqlanywherecmds(ESqlStatementType.sstMssqlCTE,rrw_WITH,' ');
18970//WITH XMLNAMESPACES
18971    addsqlanywherecmds(ESqlStatementType.sstmssqlwithxmlnamespaces, TBaseType.rrw_with,"xmlnamespaces"," "," "," "," "," ");
18972//WRITETEXT
18973    addsqlanywherecmds(ESqlStatementType.sstsybaseWritetext, TBaseType.rrw_writetext," "," "," "," "," "," ");
18974
18975}
18976
18977    // ---- SQL Anywhere fork (dbvsqlanywhere): full-family recognition; rejection of
18978    // ---- foreign statements is the parser policy layer, not this table.
18979    TCustomSqlStatement issqlanywheresql(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
18980        TCustomSqlStatement ret = null;
18981        int k;
18982        boolean lcisnewsql;
18983        TSourceToken lcpprevsolidtoken,lcnextsolidtoken,lctoken;
18984
18985        gnewsqlstatementtype = ESqlStatementType.sstinvalid;
18986
18987        if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
18988                || (pcst.tokencode  == TBaseType.cmtslashstar)
18989                || (pcst.tokencode  == TBaseType.lexspace)
18990                || (pcst.tokencode  == TBaseType.lexnewline)
18991                || (pcst.tokentype == ETokenType.ttsemicolon) )
18992        {
18993            return ret;
18994        }
18995
18996        int lcpos = pcst.posinlist;
18997        TSourceTokenList lcsourcetokenlist = pcst.container;
18998        TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
18999
19000        //subquery after semicolon || at first line
19001        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
19002        {
19003            k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
19004            if ( k >0 )
19005            {
19006                ret =  new TSelectSqlStatement(pdbvendor);
19007            }
19008
19009            return ret;
19010        }
19011
19012        //cte
19013        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
19014        {
19015            ret = findcte(pcst,pdbvendor);
19016            if ( (ret != null) )  return ret;
19017        }
19018
19019        gnewsqlstatementtype = findsqlanywherecmd(pcst);
19020
19021        TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
19022        switch(gnewsqlstatementtype ) {   //
19023            case sstinvalid:
19024            {
19025                if ( pcst.tokencode == TBaseType.mslabel )
19026                {
19027                    ret =  new TMssqlLabel(pdbvendor);
19028                }
19029                else
19030                    ret = null;
19031
19032                break;
19033            }
19034            case sstselect:
19035            {
19036                lcisnewsql = true;
19037
19038                if ( pstate != EFindSqlStateType.stnormal )
19039                {
19040                    // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
19041                    if ( (lcprevsolidtoken != null) )
19042                    {
19043                        if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
19044                            lcisnewsql = false; //subqery
19045                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
19046                            lcisnewsql = false;
19047                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
19048                            lcisnewsql = false;
19049                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
19050                            lcisnewsql = false;
19051                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
19052                            lcisnewsql = false;
19053                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
19054                            lcisnewsql = false;
19055                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
19056                        {
19057                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
19058                                lcisnewsql = false;
19059                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
19060                                lcisnewsql = false;
19061                        }
19062                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
19063                        {
19064                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlset )
19065                                lcisnewsql = false;
19066                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqldeclare )
19067                                lcisnewsql = false;
19068                        }
19069
19070                        if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
19071                        {
19072                            lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
19073                            if ( (lcpprevsolidtoken != null) )
19074                            {
19075                                if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
19076                                    lcisnewsql = false;
19077                            }
19078                        }
19079
19080                    }
19081
19082                    if ( (lccurrentsqlstatement != null) )
19083                    {
19084                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
19085                        {
19086                        }
19087                        else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlgrant )
19088                        {
19089                            if ( (lcprevsolidtoken != null) )
19090                            {
19091                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_grant )
19092                                    lcisnewsql = false;
19093                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
19094                                    lcisnewsql = false;
19095                            }
19096                        } else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlrevoke )
19097                        {
19098                            if ( (lcprevsolidtoken != null) )
19099                            {
19100                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_revoke )
19101                                    lcisnewsql = false;
19102                            }
19103                        }else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview ){
19104                            lcisnewsql = false;
19105                        }
19106                    }
19107
19108                }
19109
19110                if ( lcisnewsql )
19111                    ret =  new TSelectSqlStatement(pdbvendor);
19112
19113                break;
19114
19115            }
19116            case sstinsert:
19117            {
19118                lcisnewsql = true;
19119                if ( pstate != EFindSqlStateType.stnormal )
19120                {
19121                    if ( (lccurrentsqlstatement != null) )
19122                    {
19123                        // merge
19124                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
19125                        {
19126                              if (lcprevsolidtoken != null)
19127                              {
19128                                  if (lcprevsolidtoken.tokencode == TBaseType.rrw_then)
19129                                  {lcisnewsql = false;}
19130                              }
19131                        }
19132
19133                        // bulk insert
19134                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlbulkinsert )
19135                        {
19136                            if ( (lcprevsolidtoken != null) )
19137                            {
19138                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_bulk )
19139                                    lcisnewsql = false;
19140                            }
19141                        }
19142
19143                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlgrant )
19144                        {
19145                            if ( (lcprevsolidtoken != null) )
19146                            {
19147                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_grant )
19148                                    lcisnewsql = false;
19149                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
19150                                    lcisnewsql = false;
19151                            }
19152                        }else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlrevoke ) {
19153                            if ( (lcprevsolidtoken != null) )
19154                            {
19155                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_revoke )
19156                                    lcisnewsql = false;
19157                            }
19158                        }
19159
19160                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetrigger )
19161                        {
19162                            if ( (lcprevsolidtoken != null) )
19163                            {
19164                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
19165                                    lcisnewsql = false;
19166                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
19167                                    lcisnewsql = false;
19168                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(),"after") == 0 )
19169                                    lcisnewsql = false;
19170                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(), "of") == 0 )
19171                                    lcisnewsql = false;
19172                            }
19173                        }
19174
19175
19176                    }
19177                }
19178
19179                if ( lcisnewsql )
19180                {
19181                    ret =  new TInsertSqlStatement(pdbvendor);
19182                    ret.dummytag = 1; //  select stmt in insert is permitted
19183                    for ( k = lcpos + 1; k < lcsourcetokenlist.size();k++ )    // iterate
19184                    {
19185                        if ( lcsourcetokenlist.get(k).isnonsolidtoken() ) continue;
19186                        if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_values ) break;
19187                        if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_go ) break;
19188                        if ( lcsourcetokenlist.get(k).tokentype == ETokenType.ttsemicolon ) break;
19189                        if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_select ) break;
19190                        if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_execute ) break;
19191                        if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_exec ) break;
19192                    }    // for (
19193                    if ( k > lcsourcetokenlist.size() - 1 )
19194                        k = lcsourcetokenlist.size() - 1;
19195
19196                    for ( int i = lcpos + 1; i <=  k; i++ )    // iterate
19197                    {
19198                        lcsourcetokenlist.get(i).tokenstatus = ETokenStatus.tsignoredbygetrawstatement;
19199                    }    // for (
19200
19201                }
19202
19203                break;
19204            }
19205            case sstsybaseInsertBulk:
19206            {
19207                ret =  new TInsertBulk(pdbvendor);
19208                break;
19209            }
19210            case sstupdate:
19211            {
19212                lcisnewsql = true;
19213                if ( pstate != EFindSqlStateType.stnormal )
19214                {
19215                    // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
19216                    if ( (lcprevsolidtoken != null) )
19217                    { //
19218                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
19219                            lcisnewsql = false;
19220                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
19221                            lcisnewsql = false;
19222                    }
19223
19224                    lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
19225                    if ( TBaseType.assigned(lcnextsolidtoken) )
19226                    {
19227                        if ( lcnextsolidtoken.tokentype == ETokenType.ttleftparenthesis)
19228                        {
19229                            k = lcsourcetokenlist.solidtokenafterpos(lcnextsolidtoken.posinlist,TBaseType.rrw_select,1,"(");
19230                            if ( k  == 0 ) lcisnewsql = false;
19231                        }
19232                    }
19233
19234
19235                    if ( TBaseType.assigned(lccurrentsqlstatement) )
19236                    {
19237                        // merge
19238                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
19239                        {
19240                              if (lcprevsolidtoken != null)
19241                              {
19242                                  if (lcprevsolidtoken.tokencode == TBaseType.rrw_then)
19243                                  {lcisnewsql = false;}
19244                              }
19245                        }
19246
19247                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlgrant )
19248                        {
19249                            if ( TBaseType.assigned(lcprevsolidtoken) )
19250                            {
19251                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_grant )
19252                                    lcisnewsql = false;
19253                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
19254                                    lcisnewsql = false;
19255                            }
19256                        }else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlrevoke )
19257                        {
19258                            if ( TBaseType.assigned(lcprevsolidtoken) )
19259                            {
19260                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_revoke )
19261                                    lcisnewsql = false;
19262                            }
19263                        }
19264                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetrigger )
19265                        {
19266                            if ( TBaseType.assigned(lcprevsolidtoken) )
19267                            {
19268                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
19269                                    lcisnewsql = false;
19270                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
19271                                    lcisnewsql = false;
19272                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(),"after") == 0 )
19273                                    lcisnewsql = false;
19274                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(), "of") == 0 )
19275                                    lcisnewsql = false;
19276                            }
19277                        }
19278
19279                    }
19280                }
19281
19282                if ( lcisnewsql )
19283                {
19284                    ret =  new TUpdateSqlStatement(pdbvendor);
19285                    ret.dummytag = 1; // means set clause in update is not found yet, used to seperate set clause from set statement
19286                }
19287
19288                break;
19289            }
19290            case sstdelete:
19291            {
19292                lcisnewsql = true;
19293
19294                if ( pstate != EFindSqlStateType.stnormal )
19295                {
19296                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
19297                    if ( TBaseType.assigned(lcprevsolidtoken) )
19298                    {
19299                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
19300                            lcisnewsql = false;
19301                    }
19302
19303                    if ( TBaseType.assigned(lccurrentsqlstatement) )
19304                    {
19305                        // merge
19306                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
19307                        {
19308                              if (lcprevsolidtoken != null)
19309                              {
19310                                  if (lcprevsolidtoken.tokencode == TBaseType.rrw_then)
19311                                  {lcisnewsql = false;}
19312                              }
19313                        }
19314
19315                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlgrant )
19316                        {
19317                            if ( TBaseType.assigned(lcprevsolidtoken) )
19318                            {
19319                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_grant )
19320                                    lcisnewsql = false;
19321                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
19322                                    lcisnewsql = false;
19323                            }
19324                        }else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlrevoke )
19325                        {
19326                            if ( TBaseType.assigned(lcprevsolidtoken) )
19327                            {
19328                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_revoke )
19329                                    lcisnewsql = false;
19330                            }
19331                        }
19332
19333                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetrigger )
19334                        {
19335                            if ( TBaseType.assigned(lcprevsolidtoken) )
19336                            {
19337                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
19338                                    lcisnewsql = false;
19339                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
19340                                    lcisnewsql = false;
19341                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(),"after") == 0 )
19342                                    lcisnewsql = false;
19343                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(), "of") == 0 )
19344                                    lcisnewsql = false;
19345                            }
19346                        }
19347
19348                    }
19349                }
19350
19351                if ( lcisnewsql )
19352                    ret =  new TDeleteSqlStatement(pdbvendor);
19353
19354                break;
19355            }
19356            case sstcreatetable:
19357            {
19358                ret =  new TCreateTableSqlStatement(pdbvendor);
19359                break;
19360            }
19361            case sstcreateview:
19362            {
19363                ret =  new TCreateViewSqlStatement(pdbvendor);
19364                break;
19365            }
19366            case sstaltertable:
19367            {
19368                ret =  new TAlterTableStatement(pdbvendor);
19369                break;
19370            }
19371            case sstmssqlfetch:
19372            {
19373                ret =  new TMssqlFetch(pdbvendor);
19374                break;
19375            }
19376            case sstmssqlif :
19377            {
19378                lcisnewsql = true;
19379                if ((lccurrentsqlstatement != null) && ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqldropprocedure ))
19380                {lcisnewsql = false;}
19381                // `DROP TABLE IF EXISTS t` and friends: the IF belongs to the DROP.
19382                // Mirrors TSqlCmds<Vendor>.isDropIfExistsContext in the modular
19383                // providers, which this monolithic path is the fallback for.
19384                if (lcisnewsql && DropIfExistsSupport.isDropIfExistsContext(pcst, lcsourcetokenlist.solidtokenbefore(lcpos)))
19385                {lcisnewsql = false;}
19386                if (lcisnewsql){
19387                    ret = new TMssqlIfElse(pdbvendor);
19388                    ret.dummytag = 1;// reduce to 0 while stmt find in 'if ( condtion stmt' || 'else stmt'
19389                }
19390
19391                break;
19392            }
19393            case sstmssqlwhile:
19394            {
19395                ret = new TMssqlIfElse(pdbvendor);
19396                ret.dummytag = 1;// reduce to 0 while stmt find in 'if ( condtion stmt' || 'else stmt'
19397                break;
19398            }
19399            case sstmssqlcreateprocedure :
19400            case sstmssqlalterprocedure:
19401            {
19402                ret = new TMssqlCreateProcedure(pdbvendor);
19403                break;
19404            }
19405            case sstmssqlcreatefunction :
19406            case sstmssqlalterfunction:
19407            {
19408                ret =  new TMssqlCreateFunction(pdbvendor);
19409                break;
19410            }
19411            case sstcreatetrigger :
19412            case sstmssqlaltertrigger:
19413            {
19414                ret =  new TCreateTriggerStmt(pdbvendor);
19415                break;
19416            }
19417            case sstmssqlreturn:
19418            {
19419                ret =  new TMssqlReturn(pdbvendor);
19420                break;
19421            }
19422            case sstmssqlprint:
19423            {
19424                ret =  new TMssqlPrint(pdbvendor);
19425                break;
19426            }
19427            case sstmssqluse:
19428            {
19429                ret =  new TUseDatabase(pdbvendor);
19430                break;
19431            }
19432            case sstmssqlgo:
19433            {
19434                ret =  new TMssqlGo(pdbvendor);
19435                break;
19436            }
19437            case sstmssqlrevert:
19438            {
19439                ret =  new TMssqlRevert(pdbvendor);
19440                break;
19441            }
19442            case sstmssqlgrant:
19443            {
19444                lcisnewsql = true;
19445                // prev tokentext can't be with
19446                if ( pstate != EFindSqlStateType.stnormal )
19447                {
19448                    if ( TBaseType.assigned(lcprevsolidtoken) )
19449                    {
19450                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_with )
19451                        {
19452                            ret = null;
19453                            lcisnewsql = false;
19454                        }
19455                    }
19456                }
19457                if ( lcisnewsql )
19458                {
19459                    ret =  new TGrantStmt(pdbvendor);
19460                    //ret.sqlstatementtype = gnewsqlstatementtype;
19461                    for ( k = lcpos + 1; k< lcsourcetokenlist.size();k++ )    // iterate
19462                    {
19463                        lctoken = lcsourcetokenlist.get(k);
19464                        if (lctoken.isnonsolidtoken() ) continue;
19465                        if ( lctoken.tokencode == TBaseType.rrw_go ) break;
19466                        if ( lctoken.tokentype == ETokenType.ttsemicolon ) break;
19467                        if ( lctoken.tokencode == TBaseType.rrw_to   ) break;
19468                        lctoken.tokenstatus = ETokenStatus.tsignoredbygetrawstatement;
19469                    }
19470                }
19471                break;
19472            }
19473            case sstmssqldeclare:
19474            {
19475                ret =  new TMssqlDeclare(pdbvendor);
19476                break;
19477            }
19478            case sstmssqlcontinue:
19479            {
19480                lcisnewsql = true;
19481                if ((lccurrentsqlstatement != null) && ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstload ))
19482                {lcisnewsql = false;}
19483                if (lcisnewsql){
19484                    ret =  new TMssqlContinue(pdbvendor);
19485                }
19486
19487                break;
19488            }
19489            case sstbreak:
19490            {
19491                ret =  new TBreakStmt(pdbvendor);
19492                break;
19493            }
19494            case sstmssqlopen:
19495            {
19496                ret =  new TMssqlOpen(pdbvendor);
19497                break;
19498            }
19499            case sstmssqlclose:
19500            {
19501                ret =  new TMssqlClose(pdbvendor);
19502                break;
19503            }
19504            case sstmssqlbulkinsert:
19505            {
19506                ret =  new TMssqlBulkInsert(pdbvendor);
19507                break;
19508            }
19509            case sstmssqldeallocate:
19510            {
19511                ret =  new TMssqlDeallocate(pdbvendor);
19512                break;
19513            }
19514            case sstmssqlraiserror:
19515            {
19516                ret =  new TMssqlRaiserror(pdbvendor);
19517                break;
19518            }
19519            case sstmssqlgoto:
19520            {
19521                ret =  new TMssqlGoTo(pdbvendor);
19522                break;
19523            }
19524            case sstmssqldropview:
19525            {
19526                ret =  new TDropViewSqlStatement(pdbvendor);
19527                break;
19528            }
19529            case sstmssqldroptable:
19530            {
19531                ret =  new TDropTableSqlStatement(pdbvendor);
19532                break;
19533            }
19534            case sstmssqldropindex:
19535            {
19536                ret =  new TDropIndexSqlStatement(pdbvendor);
19537                break;
19538            }
19539            case sstmssqldroppartitionscheme :
19540                ret = new TDropPartitionSchemeStmt(pdbvendor);
19541                break;
19542
19543            case sstmssqldropaggregate :
19544            case sstmssqldropapplicationrole :
19545            case sstmssqldropassembly :
19546            case sstmssqldropasymmetrickey :
19547            case sstmssqldropcertificate :
19548            case sstmssqldropcontract :
19549            case sstmssqldropcredential :
19550            case sstmssqldropdefault :
19551            case sstmssqldropendpoint :
19552            case sstmssqldropeventnotification :
19553            case sstmssqldropfulltextcatalog :
19554            case sstmssqldropfulltextindex :
19555            case sstmssqldropfunction :
19556            case sstmssqldroplogin :
19557            case sstmssqldropmasterkey :
19558            case sstmssqldropmessagetype :
19559            case sstmssqldroppartitionfunction :
19560            case sstmssqldropprocedure :
19561            case sstmssqldropqueue :
19562            case sstmssqldropremoteservicebinding :
19563            case sstmssqldroprole :
19564            case sstmssqldroproute :
19565            case sstmssqldroprule :
19566            case sstmssqldropschema :
19567            case sstmssqldropservice :
19568            case sstmssqldropsignature:
19569            case sstmssqldropstatistics :
19570            case sstmssqldropsymmetrickey :
19571            case sstmssqldroptrigger :
19572            case sstmssqldroptype :
19573            case sstmssqldropuser :
19574            case sstmssqldropxmlschemacollection:
19575            case sstmssqldropdatabase :
19576            {
19577                ret =  new TMssqlDropDbObject(EDbVendor.dbvsqlanywhere);
19578                ret.sqlstatementtype = gnewsqlstatementtype;
19579                break;
19580            }
19581            case sstmssqldropsynonym :
19582            {
19583                ret =  new TDropSynonymStmt(pdbvendor);
19584                break;
19585            }
19586            case sstmssqltruncatetable:
19587            {
19588                ret =  new TTruncateStatement(pdbvendor);
19589                break;
19590            }
19591            case sstmssqlbegintran:
19592            {
19593                ret =  new TBeginTran(pdbvendor);
19594                break;
19595            }
19596            case sstmssqlsavetran:
19597            {
19598                ret =  new TMssqlSaveTran(pdbvendor);
19599                break;
19600            }
19601            case sstmssqlcommit:
19602            {
19603                lcisnewsql = true;
19604
19605                if ( TBaseType.assigned(lcprevsolidtoken) )
19606                {
19607                    if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
19608                    {
19609
19610                        lcisnewsql = false;
19611                    }
19612                }
19613
19614                if (lcisnewsql){
19615                    ret =  new TMssqlCommit(pdbvendor);
19616                }
19617
19618                break;
19619            }
19620            case sstmssqlrollback:
19621            {
19622                ret =  new TMssqlRollback(pdbvendor);
19623                break;
19624            }
19625            case sstmssqlreadtext :
19626            case sstmssqldbcc :
19627            case sstmssqlrestore :
19628            case sstmssqlbackup :
19629            {
19630                ret = new TMssqlDummyStmt(pdbvendor);
19631                ret.sqlstatementtype = gnewsqlstatementtype;
19632                break;
19633            }
19634            case sstcreateindex:
19635            {
19636                ret =  new TCreateIndexSqlStatement(pdbvendor);
19637                break;
19638            }
19639            case sstmssqlwaitfor:
19640            {
19641                ret =  new TMssqlWaitFor(pdbvendor);
19642                break;
19643            }
19644            case sstmerge:
19645            {
19646                lcisnewsql = true;
19647
19648                if (pstate != EFindSqlStateType.stnormal)
19649                {
19650
19651                    if (lccurrentsqlstatement != null)
19652                    {
19653                        // merge union, merge join
19654                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstselect)
19655                        {
19656                                    lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
19657                                    if (lcnextsolidtoken != null)
19658                                       {
19659                                        if ((lcnextsolidtoken.tokencode == TBaseType.rrw_union) || (lcnextsolidtoken.tokencode == TBaseType.rrw_join))
19660                                           {
19661                                              lcisnewsql = false;
19662                                           }
19663                                        }
19664                        }
19665
19666                    }
19667
19668                    TSourceToken lcnexttoken = lcsourcetokenlist.nextsolidtoken(lcpos, 1, false);
19669                    if ( (lcnexttoken != null) )
19670                    {
19671                        if ( lcnexttoken.tokencode == TBaseType.rrw_sybase_partition )
19672                            lcisnewsql = false;
19673                    }
19674
19675                }
19676
19677                if (lcisnewsql)
19678                {
19679                    ret = new TMergeSqlStatement(pdbvendor);
19680                    ret.sqlstatementtype = gnewsqlstatementtype;
19681                }
19682
19683                break;
19684            }
19685            case sstmssqlbegintry :
19686            case sstmssqlbegincatch:
19687            {
19688                ret =  new TMssqlBlock(pdbvendor);
19689                ret.sqlstatementtype = gnewsqlstatementtype;
19690                break;
19691            }
19692            case sstmssqlexec:
19693            {
19694                lcisnewsql = true;
19695                // prev tokentext can't be with
19696                if ( pstate != EFindSqlStateType.stnormal )
19697                {
19698                    if ( TBaseType.assigned(lccurrentsqlstatement) )
19699                    {
19700                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
19701                        {
19702                            if ( lccurrentsqlstatement.dummytag == 1 )
19703                            {
19704                                lcisnewsql = false;
19705                                lccurrentsqlstatement.dummytag = 0; // no select is permited after it
19706                            }
19707                        }
19708
19709                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlgrant )
19710                        {
19711                            if ( TBaseType.assigned(lcprevsolidtoken) )
19712                            {
19713                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_grant )
19714                                    lcisnewsql = false;
19715                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
19716                                    lcisnewsql = false;
19717                            }
19718                        }else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlrevoke ){
19719                            if ( TBaseType.assigned(lcprevsolidtoken) )
19720                            {
19721                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_revoke )
19722                                    lcisnewsql = false;
19723                            }
19724                        }
19725
19726
19727
19728                        if (
19729                                (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlcreateprocedure)
19730                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetrigger)
19731                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlcreatefunction)
19732                                        ||(lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlalterprocedure)
19733                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlaltertrigger)
19734                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlalterfunction)
19735                                )
19736                        {
19737                            if ( TBaseType.assigned(lcprevsolidtoken) )
19738                            {
19739                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_with )
19740                                    lcisnewsql = false;
19741                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
19742                                    lcisnewsql = false;
19743                            }
19744                        }
19745                    }
19746                }
19747                if ( lcisnewsql )
19748                {
19749                    ret =  new TMssqlExecute(pdbvendor);
19750                }
19751                break;
19752            }
19753            case sstmssqlexecuteas:
19754            {
19755                lcisnewsql = true;
19756                // prev tokentext can't be with
19757                if ( pstate != EFindSqlStateType.stnormal )
19758                {
19759                    if ( TBaseType.assigned(lccurrentsqlstatement) )
19760                    {
19761                        if (
19762                                (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlcreateprocedure)
19763                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetrigger)
19764                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlcreatefunction)
19765                                        ||(lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlalterprocedure)
19766                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlaltertrigger)
19767                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlalterfunction)
19768                                )
19769                        {
19770                            if ( TBaseType.assigned(lcprevsolidtoken) )
19771                            {
19772                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_with )
19773                                    lcisnewsql = false;
19774                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
19775                                    lcisnewsql = false;
19776                            }
19777                        }
19778                    }
19779                }
19780                if ( lcisnewsql )
19781                {
19782                    ret =  new TMssqlExecuteAs(pdbvendor);
19783                    ret.sqlstatementtype = gnewsqlstatementtype;
19784                }
19785                break;
19786            }
19787            case sstmssqlset:
19788            {
19789                lcisnewsql = true;
19790                if ( pstate != EFindSqlStateType.stnormal )
19791                {
19792                    if ( TBaseType.assigned(lccurrentsqlstatement) )
19793                    {
19794
19795                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlif)
19796                        {
19797                             TSourceToken lcPPToken = lcsourcetokenlist.searchToken(TBaseType.rrw_update,"",pcst,-10);
19798                             if (TBaseType.assigned(lcPPToken))
19799                            {
19800                                  lcisnewsql = false;
19801                            }
19802                        }
19803
19804                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
19805                        {
19806                              if (lcprevsolidtoken != null)
19807                              {
19808                                  if (lcprevsolidtoken.tokencode == TBaseType.rrw_update){
19809                                    lcisnewsql = false;}
19810                              }
19811                        }
19812
19813                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstupdate )
19814                        {
19815                            if ( lccurrentsqlstatement.dummytag == 1 )
19816                            {
19817                                //update statement still find set clause yet, so this is setclause in update statement
19818                                lccurrentsqlstatement.dummytag = 0;
19819                                lcisnewsql = false;
19820                            }
19821                        }
19822                    }
19823
19824                    lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
19825                    if ( TBaseType.assigned(lcnextsolidtoken) )
19826                    { //set null, set default
19827                        if ( (TBaseType.mycomparetext(lcnextsolidtoken.getAstext(),"null")==0)
19828                                || (TBaseType.mycomparetext(lcnextsolidtoken.getAstext(), "default")==0) )
19829                        {
19830                            lcisnewsql = false;
19831                        }
19832                    }
19833
19834                }
19835
19836                if ( lcisnewsql )
19837                {
19838                    ret =  new TMssqlSet(pdbvendor);
19839                }
19840
19841                break;
19842            }
19843            case sstmssqlupdatetext:
19844            {
19845                ret =  new TMssqlUpdateText(pdbvendor);
19846                break;
19847            }
19848            case sstmssqlendconversation:
19849            {
19850                ret =  new TMssqlEndConversation(pdbvendor);
19851                break;
19852            }
19853            case sstmssqlbegindialog:
19854            {
19855                ret =  new TMssqlBeginDialog(pdbvendor);
19856                break;
19857            }
19858            case sstmssqlsendonconversation:
19859            {
19860                ret =  new TMssqlSendOnConversation(pdbvendor);
19861                break;
19862            }
19863            case sstmssqldisabletrigger :
19864            case sstmssqlenabletrigger:
19865            {
19866                lcisnewsql = true;
19867                if ( TBaseType.assigned(lccurrentsqlstatement) )
19868                {
19869                    if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstaltertable )
19870                        lcisnewsql = false;
19871                }
19872
19873                if ( lcisnewsql )
19874                {
19875                    ret =  new TDisableEnableTriggerStmt(pdbvendor);
19876                    ret.sqlstatementtype = gnewsqlstatementtype;
19877                }
19878                break;
19879            }
19880            case sstsybaseWritetext:
19881            {
19882                ret =  new TSybaseWritetext(pdbvendor);
19883                break;
19884            }
19885            case sstsybaseDeleteStatistics:
19886            {
19887                ret = new TSybaseDeleteStatistics(pdbvendor);
19888                break;
19889            }
19890            case sstcall:
19891            {
19892                ret = new TCallStatement(pdbvendor);
19893                break;
19894            }
19895            default:
19896            {
19897                ret =  new TUnknownSqlStatement(pdbvendor);
19898                ret.sqlstatementtype = gnewsqlstatementtype;
19899                break;
19900            }
19901        }    // case
19902
19903        return ret;
19904    }
19905
19906    // ---- SQL Anywhere fork (dbvsqlanywhere): full-family recognition; rejection of
19907    // ---- foreign statements is the parser policy layer, not this table.
19908public ESqlStatementType findsqlanywherecmdusedbyyacc(TSourceToken pcst){
19909  ESqlStatementType ret = ESqlStatementType.sstinvalid;
19910
19911    int lcpos = pcst.posinlist;
19912    TSourceTokenList lcsourcetokenlist = pcst.container;
19913
19914    //subquery after semicolon or at first line
19915    if (  (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
19916      {
19917        int k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
19918        if ( k >0 )
19919          {
19920            ret = ESqlStatementType.sstselect;
19921          }
19922
19923        return ret;
19924      }
19925
19926
19927    ret = findsqlanywherecmd(pcst);
19928    // execute can't be used to delimite other sql
19929    if ( ret == ESqlStatementType.sstmssqlexec )
19930      ret = ESqlStatementType.sstinvalid;
19931
19932  return ret;
19933}
19934
19935    // ---- Sybase IQ fork (dbvsybaseiq): full-family recognition; rejection of
19936    // ---- foreign statements is the parser policy layer, not this table.
19937void initsybaseiqcmds(){
19938// cmd must be sort alphabetically
19939    addsybaseiqcmds(ESqlStatementType.sstmssqladdsignature, TBaseType.rrw_add,"counter","signature"," "," "," "," ");
19940    addsybaseiqcmds(ESqlStatementType.sstmssqladdsignature, TBaseType.rrw_add,"signature"," "," "," "," "," ");
19941//alter
19942    addsybaseiqcmds(ESqlStatementType.sstmssqlalterapplicationrole, TBaseType.rrw_alter,"application","role"," "," "," "," ");
19943    addsybaseiqcmds(ESqlStatementType.sstmssqlalterassembly, TBaseType.rrw_alter,"assembly"," "," "," "," "," ");
19944    addsybaseiqcmds(ESqlStatementType.sstmssqlalterasymmetrickey, TBaseType.rrw_alter,"asymmetric","key"," "," "," "," ");
19945    addsybaseiqcmds(ESqlStatementType.sstmssqlalterauthorization, TBaseType.rrw_alter,"authorization"," "," "," "," "," ");
19946    addsybaseiqcmds(ESqlStatementType.sstmssqlaltercertificate, TBaseType.rrw_alter,"certificate"," "," "," "," "," ");
19947    addsybaseiqcmds(ESqlStatementType.sstmssqlaltercredential, TBaseType.rrw_alter,"credential"," "," "," "," "," ");
19948    addsybaseiqcmds(ESqlStatementType.sstmssqlalterdatabase, TBaseType.rrw_alter,"database"," "," "," "," "," ");
19949    addsybaseiqcmds(ESqlStatementType.sstsybasealterdbspace, TBaseType.rrw_alter,"dbspace"," "," "," "," "," ");
19950    addsybaseiqcmds(ESqlStatementType.sstsybasealterdomain, TBaseType.rrw_alter,"domain"," "," "," "," "," ");
19951    addsybaseiqcmds(ESqlStatementType.sstmssqlalterendpoint, TBaseType.rrw_alter,"endpoint"," "," "," "," "," ");
19952    addsybaseiqcmds(ESqlStatementType.sstmssqlalterfulltextcatalog, TBaseType.rrw_alter,"fulltext","catalog"," "," "," "," ");
19953    addsybaseiqcmds(ESqlStatementType.sstmssqlalterfulltextindex, TBaseType.rrw_alter,"fulltext","index"," "," "," "," ");
19954    addsybaseiqcmds(ESqlStatementType.sstmssqlalterfunction, TBaseType.rrw_alter,"function"," "," "," "," "," ");
19955    addsybaseiqcmds(ESqlStatementType.sstmssqlalterindex, TBaseType.rrw_alter,"index"," "," "," "," "," ");
19956    addsybaseiqcmds(ESqlStatementType.sstmssqlalterlogin, TBaseType.rrw_alter,"login"," "," "," "," "," ");
19957    addsybaseiqcmds(ESqlStatementType.sstmssqlaltermasterkey, TBaseType.rrw_alter,"master","key"," "," "," "," ");
19958    addsybaseiqcmds(ESqlStatementType.sstmssqlaltermessagetype, TBaseType.rrw_alter,"message","type"," "," "," "," ");
19959    addsybaseiqcmds(ESqlStatementType.sstmssqlalterpartitionfunction, TBaseType.rrw_alter,"partition","function"," "," "," "," ");
19960    addsybaseiqcmds(ESqlStatementType.sstmssqlalterpartitionscheme, TBaseType.rrw_alter,"partition","scheme"," "," "," "," ");
19961    addsybaseiqcmds(ESqlStatementType.sstmssqlalterprocedure, TBaseType.rrw_alter,"proc"," "," "," "," "," ");
19962    addsybaseiqcmds(ESqlStatementType.sstmssqlalterprocedure, TBaseType.rrw_alter,"procedure"," "," "," "," "," ");
19963    addsybaseiqcmds(ESqlStatementType.sstmssqlalterqueue, TBaseType.rrw_alter,"queue"," "," "," "," "," ");
19964    addsybaseiqcmds(ESqlStatementType.sstmssqlalterremoteservicebinding, TBaseType.rrw_alter,"remote","service","binding"," "," "," ");
19965    addsybaseiqcmds(ESqlStatementType.sstmssqlalterrole, TBaseType.rrw_alter,"role"," "," "," "," "," ");
19966    addsybaseiqcmds(ESqlStatementType.sstmssqlalterroute, TBaseType.rrw_alter,"route"," "," "," "," "," ");
19967    addsybaseiqcmds(ESqlStatementType.sstmssqlalterschema, TBaseType.rrw_alter,"schema"," "," "," "," "," ");
19968    addsybaseiqcmds(ESqlStatementType.sstsybasealterserver, TBaseType.rrw_alter,"server"," "," "," "," "," ");
19969    addsybaseiqcmds(ESqlStatementType.sstmssqlalterservice, TBaseType.rrw_alter,"service"," "," "," "," "," ");
19970    addsybaseiqcmds(ESqlStatementType.sstmssqlalterservicemasterkey, TBaseType.rrw_alter,"service","master","key"," "," "," ");
19971    addsybaseiqcmds(ESqlStatementType.sstmssqlaltersymmetrickey, TBaseType.rrw_alter,"symmetric","key"," "," "," "," ");
19972    addsybaseiqcmds(ESqlStatementType.sstaltertable, TBaseType.rrw_alter,"table"," "," "," "," "," ");
19973    addsybaseiqcmds(ESqlStatementType.sstmssqlaltertrigger, TBaseType.rrw_alter,"trigger"," "," "," "," "," ");
19974    addsybaseiqcmds(ESqlStatementType.sstmssqlalteruser, TBaseType.rrw_alter,"user"," "," "," "," "," ");
19975    addsybaseiqcmds(ESqlStatementType.sstmssqlalterview, TBaseType.rrw_alter,"view"," "," "," "," "," ");
19976    addsybaseiqcmds(ESqlStatementType.sstmssqlalterxmlschemacollection, TBaseType.rrw_alter,"xml","schema","collection"," "," "," ");
19977//backup
19978    addsybaseiqcmds(ESqlStatementType.sstmssqlbackupdatabase, TBaseType.rrw_backup,"database"," "," "," "," "," ");
19979    addsybaseiqcmds(ESqlStatementType.sstmssqlbackupcertificate, TBaseType.rrw_backup,"certificate"," "," "," "," "," ");
19980    addsybaseiqcmds(ESqlStatementType.sstmssqlbackuplog, TBaseType.rrw_backup,"log"," "," "," "," "," ");
19981    addsybaseiqcmds(ESqlStatementType.sstmssqlbackupmasterkey, TBaseType.rrw_backup,"master","key"," "," "," "," ");
19982    addsybaseiqcmds(ESqlStatementType.sstmssqlbackupservicemasterkey, TBaseType.rrw_backup,"service","master","key"," "," "," ");
19983//begin
19984    addsybaseiqcmds(ESqlStatementType.sstmssqlbegincatch, TBaseType.rrw_begin,"catch"," "," "," "," "," ");
19985    addsybaseiqcmds(ESqlStatementType.sstmssqlbeginconversationtimer, TBaseType.rrw_begin,"conversation","timer"," "," "," "," ");
19986    addsybaseiqcmds(ESqlStatementType.sstmssqlbegindialog, TBaseType.rrw_begin,"dialog"," "," "," "," "," ");
19987    addsybaseiqcmds(ESqlStatementType.sstmssqlbegindistributed, TBaseType.rrw_begin,"distributed"," "," "," "," "," ");
19988    addsybaseiqcmds(ESqlStatementType.sstmssqlbegintran, TBaseType.rrw_begin,"tran"," "," "," "," "," ");
19989    addsybaseiqcmds(ESqlStatementType.sstmssqlbegintran, TBaseType.rrw_begin,"transaction"," "," "," "," "," ");
19990    addsybaseiqcmds(ESqlStatementType.sstmssqlbegintry, TBaseType.rrw_begin,"try"," "," "," "," "," ");
19991//break
19992    addsybaseiqcmds(ESqlStatementType.sstbreak, TBaseType.rrw_break," "," "," "," "," "," ");
19993//bulk insert
19994    addsybaseiqcmds(ESqlStatementType.sstmssqlbulkinsert, TBaseType.rrw_bulk,"insert"," "," "," "," "," ");
19995
19996    addsybaseiqcmds(ESqlStatementType.sstcall, TBaseType.rrw_call," "," "," "," "," "," ");
19997
19998//checkpoint
19999    addsybaseiqcmds(ESqlStatementType.sstmssqlcheckpoint, TBaseType.rrw_checkpoint," "," "," "," "," "," ");
20000//close
20001    addsybaseiqcmds(ESqlStatementType.sstmssqlclose, TBaseType.rrw_close," "," "," "," "," "," ");
20002    addsybaseiqcmds(ESqlStatementType.sstmssqlclosesymmetrickey, TBaseType.rrw_close,"all", "symmetric", "keys"," "," "," ");
20003    addsybaseiqcmds(ESqlStatementType.sstmssqlclosemasterkey, TBaseType.rrw_close,"master", "key"," "," "," "," ");
20004    addsybaseiqcmds(ESqlStatementType.sstmssqlclosesymmetrickey, TBaseType.rrw_close,"symmetric", "key"," "," "," "," ");
20005//commit
20006    addsybaseiqcmds(ESqlStatementType.sstmssqlcommit, TBaseType.rrw_commit," "," "," "," "," "," ");
20007    addsybaseiqcmds(ESqlStatementType.sstmssqlcommit, TBaseType.rrw_commit,"work"," "," "," "," "," ");
20008    addsybaseiqcmds(ESqlStatementType.sstmssqlcommit, TBaseType.rrw_commit,"tran"," "," "," "," "," ");
20009    addsybaseiqcmds(ESqlStatementType.sstmssqlcommit, TBaseType.rrw_commit,"transaction"," "," "," "," "," ");
20010//continue
20011    addsybaseiqcmds(ESqlStatementType.sstmssqlcontinue, TBaseType.rrw_continue," "," "," "," "," "," ");
20012//create
20013    addsybaseiqcmds(ESqlStatementType.sstmssqlcreateaggregate, TBaseType.rrw_create,"aggregate"," "," "," "," "," ");
20014    addsybaseiqcmds(ESqlStatementType.sstmssqlcreateapplicationrole, TBaseType.rrw_create,"application", "role"," "," "," "," ");
20015    addsybaseiqcmds(ESqlStatementType.sstmssqlcreateassembly, TBaseType.rrw_create,"assembly"," "," "," "," "," ");
20016    addsybaseiqcmds(ESqlStatementType.sstmssqlcreateasymmetrickey, TBaseType.rrw_create,"asymmetric", "key"," "," "," "," ");
20017    addsybaseiqcmds(ESqlStatementType.sstmssqlcreatecertificate, TBaseType.rrw_create,"certificate"," "," "," "," "," ");
20018    addsybaseiqcmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"clustered","index"," "," "," "," ");
20019    addsybaseiqcmds(ESqlStatementType.sstmssqlcreatecontract, TBaseType.rrw_create,"contract"," "," "," "," "," ");
20020    addsybaseiqcmds(ESqlStatementType.sstmssqlcreatecredential, TBaseType.rrw_create,"credential"," "," "," "," "," ");
20021    addsybaseiqcmds(ESqlStatementType.sstcreatedatabase, TBaseType.rrw_create,"database"," "," "," "," "," ");
20022    addsybaseiqcmds(ESqlStatementType.sstsybasecreatedbspace, TBaseType.rrw_create,"dbspace"," "," "," "," "," ");
20023    addsybaseiqcmds(ESqlStatementType.sstsybasecreatedomain, TBaseType.rrw_create,"domain"," "," "," "," "," ");
20024    addsybaseiqcmds(ESqlStatementType.sstmssqlcreatedefault, TBaseType.rrw_create,"default"," "," "," "," "," ");
20025    addsybaseiqcmds(ESqlStatementType.sstmssqlcreateendpoint, TBaseType.rrw_create,"endpoint"," "," "," "," "," ");
20026    addsybaseiqcmds(ESqlStatementType.sstmssqlcreateeventnotification, TBaseType.rrw_create,"event", "notification"," "," "," "," ");
20027    addsybaseiqcmds(ESqlStatementType.sstsybasecreateexistingtable, TBaseType.rrw_create,"existing","table"," "," "," "," ");
20028    addsybaseiqcmds(ESqlStatementType.sstsybasecreateexternlogin, TBaseType.rrw_create,"externlogin"," "," "," "," "," ");
20029    addsybaseiqcmds(ESqlStatementType.sstmssqlcreatefulltextcatalog, TBaseType.rrw_create,"fulltext", "catalog"," "," "," "," ");
20030    addsybaseiqcmds(ESqlStatementType.sstmssqlcreatefulltextindex, TBaseType.rrw_create,"fulltext", "index"," "," "," "," ");
20031    addsybaseiqcmds(ESqlStatementType.sstmssqlcreatefunction, TBaseType.rrw_create,"function"," "," "," "," "," ");
20032    addsybaseiqcmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"index"," "," "," "," "," ");
20033    addsybaseiqcmds(ESqlStatementType.sstsybasecreatejoinindex, TBaseType.rrw_create,"join","index"," "," "," "," ");
20034    addsybaseiqcmds(ESqlStatementType.sstmssqlcreatelogin, TBaseType.rrw_create,"login"," "," "," "," "," ");
20035    addsybaseiqcmds(ESqlStatementType.sstmssqlcreatemasterkey, TBaseType.rrw_create,"master","key"," "," "," "," ");
20036    addsybaseiqcmds(ESqlStatementType.sstmssqlcreatemessagetype, TBaseType.rrw_create,"message","type"," "," "," "," ");
20037    addsybaseiqcmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"nonclustered","index"," "," "," "," ");
20038    addsybaseiqcmds(ESqlStatementType.sstmssqlcreatefunction, TBaseType.rrw_create,"or","replace","function"," "," "," ");
20039    addsybaseiqcmds(ESqlStatementType.sstmssqlcreateprocedure, TBaseType.rrw_create,"or","replace","proc"," "," "," ");
20040    addsybaseiqcmds(ESqlStatementType.sstmssqlcreateprocedure, TBaseType.rrw_create,"or","replace","procedure"," "," "," ");
20041    addsybaseiqcmds(ESqlStatementType.sstmssqlcreatepartitionfunction, TBaseType.rrw_create,"partition","function"," "," "," "," ");
20042    addsybaseiqcmds(ESqlStatementType.sstmssqlcreatepartitionscheme, TBaseType.rrw_create,"partition","scheme"," "," "," "," ");
20043    addsybaseiqcmds(ESqlStatementType.sstmssqlcreateprocedure, TBaseType.rrw_create,"proc"," "," "," "," "," ");
20044    addsybaseiqcmds(ESqlStatementType.sstmssqlcreateprocedure, TBaseType.rrw_create,"procedure"," "," "," "," "," ");
20045    addsybaseiqcmds(ESqlStatementType.sstmssqlcreatequeue, TBaseType.rrw_create,"queue"," "," "," "," "," ");
20046    addsybaseiqcmds(ESqlStatementType.sstmssqlcreateremoteservicebinding, TBaseType.rrw_create,"remote", "service", "binding"," "," "," ");
20047    addsybaseiqcmds(ESqlStatementType.sstmssqlcreaterole, TBaseType.rrw_create,"role"," "," "," "," "," ");
20048    addsybaseiqcmds(ESqlStatementType.sstmssqlcreateroute, TBaseType.rrw_create,"route"," "," "," "," "," ");
20049    addsybaseiqcmds(ESqlStatementType.sstmssqlcreaterule, TBaseType.rrw_create,"rule"," "," "," "," "," ");
20050    addsybaseiqcmds(ESqlStatementType.sstmssqlcreateschema, TBaseType.rrw_create,"schema"," "," "," "," "," ");
20051    addsybaseiqcmds(ESqlStatementType.sstsybasecreateserver, TBaseType.rrw_create,"server"," "," "," "," "," ");
20052    addsybaseiqcmds(ESqlStatementType.sstmssqlcreateservice, TBaseType.rrw_create,"service"," "," "," "," "," ");
20053    addsybaseiqcmds(ESqlStatementType.sstmssqlcreatestatistics, TBaseType.rrw_create,"statistics"," "," "," "," "," ");
20054    addsybaseiqcmds(ESqlStatementType.sstmssqlcreatesymmetrickey, TBaseType.rrw_create,"symmetric", "key"," "," "," "," ");
20055    addsybaseiqcmds(ESqlStatementType.sstmssqlcreatesynonym, TBaseType.rrw_create,"synonym"," "," "," "," "," ");
20056    addsybaseiqcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"table"," "," "," "," "," ");
20057    addsybaseiqcmds(ESqlStatementType.sstcreatetrigger, TBaseType.rrw_create,"trigger"," "," "," "," "," ");
20058    addsybaseiqcmds(ESqlStatementType.sstmssqlcreatetype, TBaseType.rrw_create,"type"," "," "," "," "," ");
20059    addsybaseiqcmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"cmp","index"," "," "," "," ");
20060    addsybaseiqcmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"date","index"," "," "," "," ");
20061    addsybaseiqcmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"dttm","index"," "," "," "," ");
20062    addsybaseiqcmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"hg","index"," "," "," "," ");
20063    addsybaseiqcmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"hng","index"," "," "," "," ");
20064    addsybaseiqcmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"lf","index"," "," "," "," ");
20065    addsybaseiqcmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"time","index"," "," "," "," ");
20066    addsybaseiqcmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"wd","index"," "," "," "," ");
20067    addsybaseiqcmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"unique","clustered","index"," "," "," ");
20068    addsybaseiqcmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"unique","index"," "," "," "," ");
20069    addsybaseiqcmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"unique","nonclustered","index"," "," "," ");
20070    addsybaseiqcmds(ESqlStatementType.sstmssqlcreateuser, TBaseType.rrw_create,"user"," "," "," "," "," ");
20071    addsybaseiqcmds(ESqlStatementType.sstsybasecreatevariable, TBaseType.rrw_create,"variable"," "," "," "," "," ");
20072    addsybaseiqcmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,"view"," "," "," "," "," ");
20073    addsybaseiqcmds(ESqlStatementType.sstmssqlcreatexmlschemacollection, TBaseType.rrw_create,"xml", "schema", "collection"," "," "," ");
20074// DBCC
20075    addsybaseiqcmds(ESqlStatementType.sstmssqldbcc, TBaseType.rrw_dbcc," "," "," "," "," "," ");
20076//DEALLOCATE
20077    addsybaseiqcmds(ESqlStatementType.sstmssqldeallocate, TBaseType.rrw_deallocate," "," "," "," "," "," ");
20078//DECLARE
20079    addsybaseiqcmds(ESqlStatementType.sstsybasedeallocatedescriptor, TBaseType.rrw_deallocate,"descriptor"," "," "," "," "," ");
20080    addsybaseiqcmds(ESqlStatementType.sstmssqldeclare, TBaseType.rrw_declare," "," "," "," "," "," ");
20081//DELETE
20082    addsybaseiqcmds(ESqlStatementType.sstsybasedeclarelocaltemptable, TBaseType.rrw_declare,"local","temporary","table"," "," "," ");
20083    addsybaseiqcmds(ESqlStatementType.sstdelete, TBaseType.rrw_delete," "," "," "," "," "," ");
20084
20085//DELETE statistics
20086    addsybaseiqcmds(ESqlStatementType.sstsybaseDeleteStatistics, TBaseType.rrw_delete,"shared","statistics"," "," "," "," ");
20087    addsybaseiqcmds(ESqlStatementType.sstsybaseDeleteStatistics, TBaseType.rrw_delete,"statistics"," "," "," "," "," ");
20088
20089//DENY
20090    addsybaseiqcmds(ESqlStatementType.sstmssqldeny, TBaseType.rrw_deny," "," "," "," "," "," ");
20091//DISABLE TRIGGER
20092    addsybaseiqcmds(ESqlStatementType.sstmssqldisabletrigger, TBaseType.rrw_disable,"trigger"," "," "," "," "," ");
20093//drop
20094    addsybaseiqcmds(ESqlStatementType.sstmssqldropaggregate, TBaseType.rrw_drop,"aggregate"," "," "," "," "," ");
20095    addsybaseiqcmds(ESqlStatementType.sstmssqldropapplicationrole, TBaseType.rrw_drop,"application", "role"," "," "," "," ");
20096    addsybaseiqcmds(ESqlStatementType.sstmssqldropassembly, TBaseType.rrw_drop,"assembly"," "," "," "," "," ");
20097    addsybaseiqcmds(ESqlStatementType.sstmssqldropasymmetrickey, TBaseType.rrw_drop,"asymmetric", "key"," "," "," "," ");
20098    addsybaseiqcmds(ESqlStatementType.sstmssqldropcertificate, TBaseType.rrw_drop,"certificate"," "," "," "," "," ");
20099    addsybaseiqcmds(ESqlStatementType.sstsybasedropconnection, TBaseType.rrw_drop,"connection"," "," "," "," "," ");
20100    addsybaseiqcmds(ESqlStatementType.sstmssqldropcontract, TBaseType.rrw_drop,"contract"," "," "," "," "," ");
20101    addsybaseiqcmds(ESqlStatementType.sstmssqldropsignature, TBaseType.rrw_drop,"counter", "signature"," "," "," "," ");
20102    addsybaseiqcmds(ESqlStatementType.sstmssqldropcredential, TBaseType.rrw_drop,"credential"," "," "," "," "," ");
20103    addsybaseiqcmds(ESqlStatementType.sstmssqldropdatabase, TBaseType.rrw_drop,"database"," "," "," "," "," ");
20104    addsybaseiqcmds(ESqlStatementType.sstmssqldropdefault, TBaseType.rrw_drop,"default"," "," "," "," "," ");
20105    addsybaseiqcmds(ESqlStatementType.sstmssqldropendpoint, TBaseType.rrw_drop,"endpoint"," "," "," "," "," ");
20106    addsybaseiqcmds(ESqlStatementType.sstmssqldropeventnotification, TBaseType.rrw_drop,"event", "notification"," "," "," "," ");
20107    addsybaseiqcmds(ESqlStatementType.sstsybasedropexternlogin, TBaseType.rrw_drop,"externlogin"," "," "," "," "," ");
20108    addsybaseiqcmds(ESqlStatementType.sstmssqldropfulltextcatalog, TBaseType.rrw_drop,"fulltext", "catalog"," "," "," "," ");
20109    addsybaseiqcmds(ESqlStatementType.sstmssqldropfulltextindex, TBaseType.rrw_drop,"fulltext", "index"," "," "," "," ");
20110    addsybaseiqcmds(ESqlStatementType.sstmssqldropfunction, TBaseType.rrw_drop,"function"," "," "," "," "," ");
20111    addsybaseiqcmds(ESqlStatementType.sstmssqldropindex, TBaseType.rrw_drop,"index"," "," "," "," "," ");
20112    addsybaseiqcmds(ESqlStatementType.sstmssqldroplogin, TBaseType.rrw_drop,"login"," "," "," "," "," ");
20113    addsybaseiqcmds(ESqlStatementType.sstmssqldropmasterkey, TBaseType.rrw_drop,"master", "key"," "," "," "," ");
20114    addsybaseiqcmds(ESqlStatementType.sstmssqldropmessagetype, TBaseType.rrw_drop,"message", "type"," "," "," "," ");
20115    addsybaseiqcmds(ESqlStatementType.sstmssqldroppartitionfunction, TBaseType.rrw_drop,"partition", "function"," "," "," "," ");
20116    addsybaseiqcmds(ESqlStatementType.sstmssqldroppartitionscheme, TBaseType.rrw_drop,"partition", "scheme"," "," "," "," ");
20117    addsybaseiqcmds(ESqlStatementType.sstmssqldropprocedure, TBaseType.rrw_drop,"proc"," "," "," "," "," ");
20118    addsybaseiqcmds(ESqlStatementType.sstmssqldropprocedure, TBaseType.rrw_drop,"procedure"," "," "," "," "," ");
20119    addsybaseiqcmds(ESqlStatementType.sstmssqldropqueue, TBaseType.rrw_drop,"queue"," "," "," "," "," ");
20120    addsybaseiqcmds(ESqlStatementType.sstmssqldropremoteservicebinding, TBaseType.rrw_drop,"remote", "service", "binding"," "," "," ");
20121    addsybaseiqcmds(ESqlStatementType.sstmssqldroprole, TBaseType.rrw_drop,"role"," "," "," "," "," ");
20122    addsybaseiqcmds(ESqlStatementType.sstmssqldroproute, TBaseType.rrw_drop,"route"," "," "," "," "," ");
20123    addsybaseiqcmds(ESqlStatementType.sstmssqldroprule, TBaseType.rrw_drop,"rule"," "," "," "," "," ");
20124    addsybaseiqcmds(ESqlStatementType.sstmssqldropschema, TBaseType.rrw_drop,"schema"," "," "," "," "," ");
20125    addsybaseiqcmds(ESqlStatementType.sstsybasedropserver, TBaseType.rrw_drop,"server"," "," "," "," "," ");
20126    addsybaseiqcmds(ESqlStatementType.sstmssqldropservice, TBaseType.rrw_drop,"service"," "," "," "," "," ");
20127    addsybaseiqcmds(ESqlStatementType.sstmssqldropsignature, TBaseType.rrw_drop,"signature"," "," "," "," "," ");
20128    addsybaseiqcmds(ESqlStatementType.sstsybasedropstatement, TBaseType.rrw_drop,"statement"," "," "," "," "," ");
20129    addsybaseiqcmds(ESqlStatementType.sstmssqldropstatistics, TBaseType.rrw_drop,"statistics"," "," "," "," "," ");
20130    addsybaseiqcmds(ESqlStatementType.sstmssqldropsymmetrickey, TBaseType.rrw_drop,"symmetric", "key"," "," "," "," ");
20131    addsybaseiqcmds(ESqlStatementType.sstmssqldropsynonym, TBaseType.rrw_drop,"synonym"," "," "," "," "," ");
20132    addsybaseiqcmds(ESqlStatementType.sstmssqldroptable, TBaseType.rrw_drop,"table"," "," "," "," "," ");
20133    addsybaseiqcmds(ESqlStatementType.sstmssqldroptrigger, TBaseType.rrw_drop,"trigger"," "," "," "," "," ");
20134    addsybaseiqcmds(ESqlStatementType.sstmssqldroptype, TBaseType.rrw_drop,"type"," "," "," "," "," ");
20135    addsybaseiqcmds(ESqlStatementType.sstmssqldropuser, TBaseType.rrw_drop,"user"," "," "," "," "," ");
20136    addsybaseiqcmds(ESqlStatementType.sstsybasedropvariable, TBaseType.rrw_drop,"variable"," "," "," "," "," ");
20137    addsybaseiqcmds(ESqlStatementType.sstmssqldropview, TBaseType.rrw_drop,"view"," "," "," "," "," ");
20138    addsybaseiqcmds(ESqlStatementType.sstmssqldropxmlschemacollection, TBaseType.rrw_drop,"xml", "schema", "collection"," "," "," ");
20139
20140    addsybaseiqcmds(ESqlStatementType.sstsybasedumpTran, TBaseType.rrw_sybase_dump,"tran"," "," "," "," "," ");
20141    addsybaseiqcmds(ESqlStatementType.sstsybasedumpTran, TBaseType.rrw_sybase_dump,"transaction"," "," "," "," "," ");
20142    addsybaseiqcmds(ESqlStatementType.sstsybaseallocatedescriptor, TBaseType.rrw_allocate,"descriptor"," "," "," "," "," ");
20143    addsybaseiqcmds(ESqlStatementType.sstcomment, TBaseType.rrw_comment," "," "," "," "," "," ");
20144    addsybaseiqcmds(ESqlStatementType.sstconnect, TBaseType.rrw_connect," "," "," "," "," "," ");
20145    addsybaseiqcmds(ESqlStatementType.sstdescribe, TBaseType.rrw_describe," "," "," "," "," "," ");
20146    addsybaseiqcmds(ESqlStatementType.sstprepare, TBaseType.rrw_prepare," "," "," "," "," "," ");
20147    addsybaseiqcmds(ESqlStatementType.sstsybasegetdescriptor, TBaseType.rrw_get,"descriptor"," "," "," "," "," ");
20148    addsybaseiqcmds(ESqlStatementType.sstsybasestartdatabase, TBaseType.rrw_start,"database"," "," "," "," "," ");
20149    addsybaseiqcmds(ESqlStatementType.sstsybasestartengine, TBaseType.rrw_start,"engine"," "," "," "," "," ");
20150    addsybaseiqcmds(ESqlStatementType.sstsybasestopdatabase, TBaseType.rrw_stop,"database"," "," "," "," "," ");
20151    addsybaseiqcmds(ESqlStatementType.sstsybasestopengine, TBaseType.rrw_stop,"engine"," "," "," "," "," ");
20152    addsybaseiqcmds(ESqlStatementType.sstsybaseforwardto, TBaseType.rrw_sybase_forward,"to"," "," "," "," "," ");
20153    addsybaseiqcmds(ESqlStatementType.sstsybaseinstalljava, TBaseType.rrw_sybase_install,"java"," "," "," "," "," ");
20154    addsybaseiqcmds(ESqlStatementType.sstsybaseiqutilities, TBaseType.rrw_sybase_iq,"utilities"," "," "," "," "," ");
20155    addsybaseiqcmds(ESqlStatementType.sstsybasemessage, TBaseType.rrw_sybase_message," "," "," "," "," "," ");
20156    addsybaseiqcmds(ESqlStatementType.sstsybaseoutput, TBaseType.rrw_sybase_output,"to"," "," "," "," "," ");
20157    addsybaseiqcmds(ESqlStatementType.sstsybaseput, TBaseType.rrw_sybase_put," "," "," "," "," "," ");
20158    addsybaseiqcmds(ESqlStatementType.sstsybaseread, TBaseType.rrw_sybase_read," "," "," "," "," "," ");
20159    addsybaseiqcmds(ESqlStatementType.sstsybaseremovejava, TBaseType.rrw_sybase_remove,"java"," "," "," "," "," ");
20160    addsybaseiqcmds(ESqlStatementType.sstsybasesynchronizejoinindex, TBaseType.rrw_sybase_synchronize,"join","index"," "," "," "," ");
20161    addsybaseiqcmds(ESqlStatementType.sstsybasetriggerevent, TBaseType.rrw_sybase_trigger,"event"," "," "," "," "," ");
20162//if
20163    addsybaseiqcmds(ESqlStatementType.sstmssqlif, TBaseType.rrw_if," "," "," "," "," "," ");
20164//enable trigger
20165    addsybaseiqcmds(ESqlStatementType.sstmssqlenabletrigger, TBaseType.rrw_enable,"trigger"," "," "," "," "," ");
20166//END CONVERSATION
20167// addsybaseiqcmds(ESqlStatementType.sstMssqlEndCatch,TBaseType.rrw_end,'catch');
20168    addsybaseiqcmds(ESqlStatementType.sstmssqlendconversation, TBaseType.rrw_end,"conversation"," "," "," "," "," ");
20169// addsybaseiqcmds(ESqlStatementType.sstMssqlEndTry,TBaseType.rrw_end,'try');
20170//exec
20171//exec as
20172    addsybaseiqcmds(ESqlStatementType.sstmssqlexec, TBaseType.rrw_exec," "," "," "," "," "," ");
20173    addsybaseiqcmds(ESqlStatementType.sstmssqlexecuteas, TBaseType.rrw_exec,"as","caller"," "," "," "," ");
20174    addsybaseiqcmds(ESqlStatementType.sstmssqlexecuteas, TBaseType.rrw_exec,"as","login"," "," "," "," ");
20175    addsybaseiqcmds(ESqlStatementType.sstmssqlexecuteas, TBaseType.rrw_exec,"as","user"," "," "," "," ");
20176    addsybaseiqcmds(ESqlStatementType.sstmssqlexec, TBaseType.rrw_execute, " "," "," "," "," "," ");
20177    addsybaseiqcmds(ESqlStatementType.sstmssqlexecuteas, TBaseType.rrw_execute,"as","caller"," "," "," "," ");
20178    addsybaseiqcmds(ESqlStatementType.sstmssqlexecuteas, TBaseType.rrw_execute,"as","login"," "," "," "," ");
20179    addsybaseiqcmds(ESqlStatementType.sstmssqlexecuteas, TBaseType.rrw_execute,"as","user"," "," "," "," ");
20180//fetch
20181    addsybaseiqcmds(ESqlStatementType.sstmssqlfetch, TBaseType.rrw_fetch," "," "," "," "," "," ");
20182//go
20183    addsybaseiqcmds(ESqlStatementType.sstmssqlgo, TBaseType.rrw_go," "," "," "," "," "," ");
20184//goto
20185    addsybaseiqcmds(ESqlStatementType.sstmssqlgoto, TBaseType.rrw_goto," "," "," "," "," "," ");
20186//GRANT
20187    addsybaseiqcmds(ESqlStatementType.sstmssqlgrant, TBaseType.rrw_grant," "," "," "," "," "," ");
20188//GRANT
20189    addsybaseiqcmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert," "," "," "," "," "," ");
20190
20191    addsybaseiqcmds(ESqlStatementType.sstsybaseInsertBulk, TBaseType.rrw_insert,"bulk"," "," "," "," "," ");
20192//KILL
20193    addsybaseiqcmds(ESqlStatementType.sstmssqlkill, TBaseType.rrw_kill," "," "," "," "," "," ");
20194//KILL
20195    addsybaseiqcmds(ESqlStatementType.sstmssqlkill, TBaseType.rrw_kill," "," "," "," "," "," ");
20196    addsybaseiqcmds(ESqlStatementType.sstmssqlkillquerynotificationsubscription, TBaseType.rrw_kill,"kill", "query", "notification", "subscription"," "," ");
20197    addsybaseiqcmds(ESqlStatementType.sstmssqlkillstats, TBaseType.rrw_kill,"stats"," "," "," "," "," ");
20198
20199    addsybaseiqcmds(ESqlStatementType.sstload,TBaseType.rrw_load,"table"," "," "," "," "," ");
20200//
20201 addsybaseiqcmds(ESqlStatementType.sstsybaselocktable,TBaseType.rw_locktable,"table"," "," "," "," "," ");
20202//MOVE CONVERSATION
20203    addsybaseiqcmds(ESqlStatementType.sstmssqlmoveconversation, TBaseType.rrw_move,"conversation"," "," "," "," "," ");
20204//merge
20205    addsybaseiqcmds(ESqlStatementType.sstmerge, TBaseType.rrw_merge," "," "," "," "," "," ");
20206//open
20207    addsybaseiqcmds(ESqlStatementType.sstmssqlopen, TBaseType.rrw_open," "," "," "," "," "," ");
20208    addsybaseiqcmds(ESqlStatementType.sstmssqlopenmasterkey, TBaseType.rrw_open,"master", "key"," "," "," "," ");
20209    addsybaseiqcmds(ESqlStatementType.sstmssqlopensymmetrickey, TBaseType.rrw_open,"symmetric", "key"," "," "," "," ");
20210//PRINT
20211    addsybaseiqcmds(ESqlStatementType.sstmssqlprint, TBaseType.rrw_print," "," "," "," "," "," ");
20212//RAISERROR
20213    addsybaseiqcmds(ESqlStatementType.sstmssqlraiserror, TBaseType.rrw_raiserror," "," "," "," "," "," ");
20214//READTEXT
20215    addsybaseiqcmds(ESqlStatementType.sstmssqlreadtext, TBaseType.rrw_readtext," "," "," "," "," "," ");
20216//RECEIVE
20217    addsybaseiqcmds(ESqlStatementType.sstmssqlreceive, TBaseType.rrw_receive," "," "," "," "," "," ");
20218//RECONFIGURE
20219    addsybaseiqcmds(ESqlStatementType.sstmssqlreconfigure, TBaseType.rrw_reconfigure," "," "," "," "," "," ");
20220//RESTORE
20221    addsybaseiqcmds(ESqlStatementType.sstmssqlrestoredatabase, TBaseType.rrw_restore,"database"," "," "," "," "," ");
20222    addsybaseiqcmds(ESqlStatementType.sstmssqlrestorefilelistonly, TBaseType.rrw_restore,"filelistonly"," "," "," "," "," ");
20223    addsybaseiqcmds(ESqlStatementType.sstmssqlrestoreheaderonly, TBaseType.rrw_restore,"headeronly"," "," "," "," "," ");
20224    addsybaseiqcmds(ESqlStatementType.sstmssqlrestorelabelonly, TBaseType.rrw_restore,"labelonly"," "," "," "," "," ");
20225    addsybaseiqcmds(ESqlStatementType.sstmssqlrestorelog, TBaseType.rrw_restore,"log"," "," "," "," "," ");
20226    addsybaseiqcmds(ESqlStatementType.sstmssqlrestoremasterkey, TBaseType.rrw_restore,"master","key"," "," "," "," ");
20227    addsybaseiqcmds(ESqlStatementType.sstmssqlrestorerewindonly, TBaseType.rrw_restore,"rewindonly"," "," "," "," "," ");
20228    addsybaseiqcmds(ESqlStatementType.sstmssqlrestoreservicemasterkey, TBaseType.rrw_restore,"service","master","key"," "," "," ");
20229    addsybaseiqcmds(ESqlStatementType.sstmssqlrestoreverifyonly, TBaseType.rrw_restore,"verifyonly"," "," "," "," "," ");
20230//RETURN
20231    addsybaseiqcmds(ESqlStatementType.sstmssqlreturn, TBaseType.rrw_return," "," "," "," "," "," ");
20232//REVERT
20233    addsybaseiqcmds(ESqlStatementType.sstmssqlrevert, TBaseType.rrw_revert," "," "," "," "," "," ");
20234//REVOKE
20235    addsybaseiqcmds(ESqlStatementType.sstmssqlrevoke, TBaseType.rrw_revoke," "," "," "," "," "," ");
20236//ROLLBACK
20237    addsybaseiqcmds(ESqlStatementType.sstmssqlrollback, TBaseType.rrw_rollback," "," "," "," "," "," ");
20238    addsybaseiqcmds(ESqlStatementType.sstmssqlrollback, TBaseType.rrw_rollback,"tran"," "," "," "," "," ");
20239    addsybaseiqcmds(ESqlStatementType.sstmssqlrollback, TBaseType.rrw_rollback,"transaction"," "," "," "," "," ");
20240    addsybaseiqcmds(ESqlStatementType.sstmssqlrollback, TBaseType.rrw_rollback,"work"," "," "," "," "," ");
20241//SAVE
20242    addsybaseiqcmds(ESqlStatementType.sstmssqlsavetran, TBaseType.rrw_save," "," "," "," "," "," ");
20243    addsybaseiqcmds(ESqlStatementType.sstmssqlsavetran, TBaseType.rrw_save,"tran"," "," "," "," "," ");
20244    addsybaseiqcmds(ESqlStatementType.sstmssqlsavetran, TBaseType.rrw_save,"transaction"," "," "," "," "," ");
20245//SELECT
20246    addsybaseiqcmds(ESqlStatementType.sstselect, TBaseType.rrw_select," "," "," "," "," "," ");
20247//SEND ON CONVERSATION
20248    addsybaseiqcmds(ESqlStatementType.sstmssqlsendonconversation, TBaseType.rrw_send,"on","conversation"," "," "," "," ");
20249//SET
20250    addsybaseiqcmds(ESqlStatementType.sstmssqlset, TBaseType.rrw_set," "," "," "," "," "," ");
20251//SET
20252    addsybaseiqcmds(ESqlStatementType.sstmssqlsetuser,TBaseType.rrw_setuser," "," "," "," "," "," ");
20253//SHUTDOWN
20254    addsybaseiqcmds(ESqlStatementType.sstmssqlshutdown, TBaseType.rrw_shutdown," "," "," "," "," "," ");
20255//SIGN
20256//    addsybaseiqcmds(ESqlStatementType.sstmssqlsign, rrw_sign," "," "," "," "," "," ");
20257//TRUNCATE TABLE
20258    addsybaseiqcmds(ESqlStatementType.sstmssqltruncatetable, TBaseType.rrw_truncate,"table"," "," "," "," "," ");
20259//UPDATE
20260    addsybaseiqcmds(ESqlStatementType.sstupdate, TBaseType.rrw_update," "," "," "," "," "," ");
20261//UPDATE all STATISTICS
20262    addsybaseiqcmds(ESqlStatementType.sstmssqlupdatestatistics, TBaseType.rrw_update,"all","statistics"," "," "," "," ");
20263//UPDATE index STATISTICS
20264    addsybaseiqcmds(ESqlStatementType.sstsybaseupdateindexstatistics, TBaseType.rrw_update,"index","statistics"," "," "," "," ");
20265//UPDATE STATISTICS
20266    addsybaseiqcmds(ESqlStatementType.sstmssqlupdatestatistics, TBaseType.rrw_update,"statistics"," "," "," "," "," ");
20267//UPDATETEXT
20268    addsybaseiqcmds(ESqlStatementType.sstmssqlupdatetext, TBaseType.rrw_updatetext," "," "," "," "," "," ");
20269//USE
20270    addsybaseiqcmds(ESqlStatementType.sstmssqluse, TBaseType.rrw_use," "," "," "," "," "," ");
20271//WAITFOR
20272    addsybaseiqcmds(ESqlStatementType.sstmssqlwaitfor, TBaseType.rrw_waitfor," "," "," "," "," "," ");
20273//WHILE
20274    addsybaseiqcmds(ESqlStatementType.sstmssqlwhile, TBaseType.rrw_while," "," "," "," "," "," ");
20275//WITH, don't recongize here, let isMssqlSql do it
20276// addsybaseiqcmds(ESqlStatementType.sstMssqlCTE,rrw_WITH,' ');
20277//WITH XMLNAMESPACES
20278    addsybaseiqcmds(ESqlStatementType.sstmssqlwithxmlnamespaces, TBaseType.rrw_with,"xmlnamespaces"," "," "," "," "," ");
20279//WRITETEXT
20280    addsybaseiqcmds(ESqlStatementType.sstsybaseWritetext, TBaseType.rrw_writetext," "," "," "," "," "," ");
20281
20282}
20283
20284    // ---- Sybase IQ fork (dbvsybaseiq): full-family recognition; rejection of
20285    // ---- foreign statements is the parser policy layer, not this table.
20286    TCustomSqlStatement issybaseiqsql(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
20287        TCustomSqlStatement ret = null;
20288        int k;
20289        boolean lcisnewsql;
20290        TSourceToken lcpprevsolidtoken,lcnextsolidtoken,lctoken;
20291
20292        gnewsqlstatementtype = ESqlStatementType.sstinvalid;
20293
20294        if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
20295                || (pcst.tokencode  == TBaseType.cmtslashstar)
20296                || (pcst.tokencode  == TBaseType.lexspace)
20297                || (pcst.tokencode  == TBaseType.lexnewline)
20298                || (pcst.tokentype == ETokenType.ttsemicolon) )
20299        {
20300            return ret;
20301        }
20302
20303        int lcpos = pcst.posinlist;
20304        TSourceTokenList lcsourcetokenlist = pcst.container;
20305        TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
20306
20307        //subquery after semicolon || at first line
20308        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
20309        {
20310            k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
20311            if ( k >0 )
20312            {
20313                ret =  new TSelectSqlStatement(pdbvendor);
20314            }
20315
20316            return ret;
20317        }
20318
20319        //cte
20320        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
20321        {
20322            ret = findcte(pcst,pdbvendor);
20323            if ( (ret != null) )  return ret;
20324        }
20325
20326        gnewsqlstatementtype = findsybaseiqcmd(pcst);
20327
20328        TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
20329        switch(gnewsqlstatementtype ) {   //
20330            case sstinvalid:
20331            {
20332                if ( pcst.tokencode == TBaseType.mslabel )
20333                {
20334                    ret =  new TMssqlLabel(pdbvendor);
20335                }
20336                else
20337                    ret = null;
20338
20339                break;
20340            }
20341            case sstselect:
20342            {
20343                lcisnewsql = true;
20344
20345                if ( pstate != EFindSqlStateType.stnormal )
20346                {
20347                    // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
20348                    if ( (lcprevsolidtoken != null) )
20349                    {
20350                        if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
20351                            lcisnewsql = false; //subqery
20352                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
20353                            lcisnewsql = false;
20354                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
20355                            lcisnewsql = false;
20356                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
20357                            lcisnewsql = false;
20358                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
20359                            lcisnewsql = false;
20360                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
20361                            lcisnewsql = false;
20362                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
20363                        {
20364                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
20365                                lcisnewsql = false;
20366                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
20367                                lcisnewsql = false;
20368                        }
20369                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
20370                        {
20371                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlset )
20372                                lcisnewsql = false;
20373                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqldeclare )
20374                                lcisnewsql = false;
20375                        }
20376
20377                        if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
20378                        {
20379                            lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
20380                            if ( (lcpprevsolidtoken != null) )
20381                            {
20382                                if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
20383                                    lcisnewsql = false;
20384                            }
20385                        }
20386
20387                    }
20388
20389                    if ( (lccurrentsqlstatement != null) )
20390                    {
20391                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
20392                        {
20393                        }
20394                        else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlgrant )
20395                        {
20396                            if ( (lcprevsolidtoken != null) )
20397                            {
20398                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_grant )
20399                                    lcisnewsql = false;
20400                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
20401                                    lcisnewsql = false;
20402                            }
20403                        } else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlrevoke )
20404                        {
20405                            if ( (lcprevsolidtoken != null) )
20406                            {
20407                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_revoke )
20408                                    lcisnewsql = false;
20409                            }
20410                        }else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview ){
20411                            lcisnewsql = false;
20412                        }
20413                    }
20414
20415                }
20416
20417                if ( lcisnewsql )
20418                    ret =  new TSelectSqlStatement(pdbvendor);
20419
20420                break;
20421
20422            }
20423            case sstinsert:
20424            {
20425                lcisnewsql = true;
20426                if ( pstate != EFindSqlStateType.stnormal )
20427                {
20428                    if ( (lccurrentsqlstatement != null) )
20429                    {
20430                        // merge
20431                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
20432                        {
20433                              if (lcprevsolidtoken != null)
20434                              {
20435                                  if (lcprevsolidtoken.tokencode == TBaseType.rrw_then)
20436                                  {lcisnewsql = false;}
20437                              }
20438                        }
20439
20440                        // bulk insert
20441                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlbulkinsert )
20442                        {
20443                            if ( (lcprevsolidtoken != null) )
20444                            {
20445                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_bulk )
20446                                    lcisnewsql = false;
20447                            }
20448                        }
20449
20450                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlgrant )
20451                        {
20452                            if ( (lcprevsolidtoken != null) )
20453                            {
20454                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_grant )
20455                                    lcisnewsql = false;
20456                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
20457                                    lcisnewsql = false;
20458                            }
20459                        }else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlrevoke ) {
20460                            if ( (lcprevsolidtoken != null) )
20461                            {
20462                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_revoke )
20463                                    lcisnewsql = false;
20464                            }
20465                        }
20466
20467                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetrigger )
20468                        {
20469                            if ( (lcprevsolidtoken != null) )
20470                            {
20471                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
20472                                    lcisnewsql = false;
20473                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
20474                                    lcisnewsql = false;
20475                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(),"after") == 0 )
20476                                    lcisnewsql = false;
20477                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(), "of") == 0 )
20478                                    lcisnewsql = false;
20479                            }
20480                        }
20481
20482
20483                    }
20484                }
20485
20486                if ( lcisnewsql )
20487                {
20488                    ret =  new TInsertSqlStatement(pdbvendor);
20489                    ret.dummytag = 1; //  select stmt in insert is permitted
20490                    for ( k = lcpos + 1; k < lcsourcetokenlist.size();k++ )    // iterate
20491                    {
20492                        if ( lcsourcetokenlist.get(k).isnonsolidtoken() ) continue;
20493                        if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_values ) break;
20494                        if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_go ) break;
20495                        if ( lcsourcetokenlist.get(k).tokentype == ETokenType.ttsemicolon ) break;
20496                        if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_select ) break;
20497                        if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_execute ) break;
20498                        if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_exec ) break;
20499                    }    // for (
20500                    if ( k > lcsourcetokenlist.size() - 1 )
20501                        k = lcsourcetokenlist.size() - 1;
20502
20503                    for ( int i = lcpos + 1; i <=  k; i++ )    // iterate
20504                    {
20505                        lcsourcetokenlist.get(i).tokenstatus = ETokenStatus.tsignoredbygetrawstatement;
20506                    }    // for (
20507
20508                }
20509
20510                break;
20511            }
20512            case sstsybaseInsertBulk:
20513            {
20514                ret =  new TInsertBulk(pdbvendor);
20515                break;
20516            }
20517            case sstupdate:
20518            {
20519                lcisnewsql = true;
20520                if ( pstate != EFindSqlStateType.stnormal )
20521                {
20522                    // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
20523                    if ( (lcprevsolidtoken != null) )
20524                    { //
20525                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
20526                            lcisnewsql = false;
20527                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
20528                            lcisnewsql = false;
20529                    }
20530
20531                    lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
20532                    if ( TBaseType.assigned(lcnextsolidtoken) )
20533                    {
20534                        if ( lcnextsolidtoken.tokentype == ETokenType.ttleftparenthesis)
20535                        {
20536                            k = lcsourcetokenlist.solidtokenafterpos(lcnextsolidtoken.posinlist,TBaseType.rrw_select,1,"(");
20537                            if ( k  == 0 ) lcisnewsql = false;
20538                        }
20539                    }
20540
20541
20542                    if ( TBaseType.assigned(lccurrentsqlstatement) )
20543                    {
20544                        // merge
20545                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
20546                        {
20547                              if (lcprevsolidtoken != null)
20548                              {
20549                                  if (lcprevsolidtoken.tokencode == TBaseType.rrw_then)
20550                                  {lcisnewsql = false;}
20551                              }
20552                        }
20553
20554                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlgrant )
20555                        {
20556                            if ( TBaseType.assigned(lcprevsolidtoken) )
20557                            {
20558                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_grant )
20559                                    lcisnewsql = false;
20560                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
20561                                    lcisnewsql = false;
20562                            }
20563                        }else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlrevoke )
20564                        {
20565                            if ( TBaseType.assigned(lcprevsolidtoken) )
20566                            {
20567                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_revoke )
20568                                    lcisnewsql = false;
20569                            }
20570                        }
20571                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetrigger )
20572                        {
20573                            if ( TBaseType.assigned(lcprevsolidtoken) )
20574                            {
20575                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
20576                                    lcisnewsql = false;
20577                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
20578                                    lcisnewsql = false;
20579                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(),"after") == 0 )
20580                                    lcisnewsql = false;
20581                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(), "of") == 0 )
20582                                    lcisnewsql = false;
20583                            }
20584                        }
20585
20586                    }
20587                }
20588
20589                if ( lcisnewsql )
20590                {
20591                    ret =  new TUpdateSqlStatement(pdbvendor);
20592                    ret.dummytag = 1; // means set clause in update is not found yet, used to seperate set clause from set statement
20593                }
20594
20595                break;
20596            }
20597            case sstdelete:
20598            {
20599                lcisnewsql = true;
20600
20601                if ( pstate != EFindSqlStateType.stnormal )
20602                {
20603                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
20604                    if ( TBaseType.assigned(lcprevsolidtoken) )
20605                    {
20606                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
20607                            lcisnewsql = false;
20608                    }
20609
20610                    if ( TBaseType.assigned(lccurrentsqlstatement) )
20611                    {
20612                        // merge
20613                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
20614                        {
20615                              if (lcprevsolidtoken != null)
20616                              {
20617                                  if (lcprevsolidtoken.tokencode == TBaseType.rrw_then)
20618                                  {lcisnewsql = false;}
20619                              }
20620                        }
20621
20622                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlgrant )
20623                        {
20624                            if ( TBaseType.assigned(lcprevsolidtoken) )
20625                            {
20626                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_grant )
20627                                    lcisnewsql = false;
20628                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
20629                                    lcisnewsql = false;
20630                            }
20631                        }else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlrevoke )
20632                        {
20633                            if ( TBaseType.assigned(lcprevsolidtoken) )
20634                            {
20635                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_revoke )
20636                                    lcisnewsql = false;
20637                            }
20638                        }
20639
20640                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetrigger )
20641                        {
20642                            if ( TBaseType.assigned(lcprevsolidtoken) )
20643                            {
20644                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
20645                                    lcisnewsql = false;
20646                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
20647                                    lcisnewsql = false;
20648                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(),"after") == 0 )
20649                                    lcisnewsql = false;
20650                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(), "of") == 0 )
20651                                    lcisnewsql = false;
20652                            }
20653                        }
20654
20655                    }
20656                }
20657
20658                if ( lcisnewsql )
20659                    ret =  new TDeleteSqlStatement(pdbvendor);
20660
20661                break;
20662            }
20663            case sstcreatetable:
20664            {
20665                ret =  new TCreateTableSqlStatement(pdbvendor);
20666                break;
20667            }
20668            case sstcreateview:
20669            {
20670                ret =  new TCreateViewSqlStatement(pdbvendor);
20671                break;
20672            }
20673            case sstaltertable:
20674            {
20675                ret =  new TAlterTableStatement(pdbvendor);
20676                break;
20677            }
20678            case sstmssqlfetch:
20679            {
20680                ret =  new TMssqlFetch(pdbvendor);
20681                break;
20682            }
20683            case sstmssqlif :
20684            {
20685                lcisnewsql = true;
20686                if ((lccurrentsqlstatement != null) && ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqldropprocedure ))
20687                {lcisnewsql = false;}
20688                // `DROP TABLE IF EXISTS t` and friends: the IF belongs to the DROP.
20689                // Mirrors TSqlCmds<Vendor>.isDropIfExistsContext in the modular
20690                // providers, which this monolithic path is the fallback for.
20691                if (lcisnewsql && DropIfExistsSupport.isDropIfExistsContext(pcst, lcsourcetokenlist.solidtokenbefore(lcpos)))
20692                {lcisnewsql = false;}
20693                if (lcisnewsql){
20694                    ret = new TMssqlIfElse(pdbvendor);
20695                    ret.dummytag = 1;// reduce to 0 while stmt find in 'if ( condtion stmt' || 'else stmt'
20696                }
20697
20698                break;
20699            }
20700            case sstmssqlwhile:
20701            {
20702                ret = new TMssqlIfElse(pdbvendor);
20703                ret.dummytag = 1;// reduce to 0 while stmt find in 'if ( condtion stmt' || 'else stmt'
20704                break;
20705            }
20706            case sstmssqlcreateprocedure :
20707            case sstmssqlalterprocedure:
20708            {
20709                ret = new TMssqlCreateProcedure(pdbvendor);
20710                break;
20711            }
20712            case sstmssqlcreatefunction :
20713            case sstmssqlalterfunction:
20714            {
20715                ret =  new TMssqlCreateFunction(pdbvendor);
20716                break;
20717            }
20718            case sstcreatetrigger :
20719            case sstmssqlaltertrigger:
20720            {
20721                ret =  new TCreateTriggerStmt(pdbvendor);
20722                break;
20723            }
20724            case sstmssqlreturn:
20725            {
20726                ret =  new TMssqlReturn(pdbvendor);
20727                break;
20728            }
20729            case sstmssqlprint:
20730            {
20731                ret =  new TMssqlPrint(pdbvendor);
20732                break;
20733            }
20734            case sstmssqluse:
20735            {
20736                ret =  new TUseDatabase(pdbvendor);
20737                break;
20738            }
20739            case sstmssqlgo:
20740            {
20741                ret =  new TMssqlGo(pdbvendor);
20742                break;
20743            }
20744            case sstmssqlrevert:
20745            {
20746                ret =  new TMssqlRevert(pdbvendor);
20747                break;
20748            }
20749            case sstmssqlgrant:
20750            {
20751                lcisnewsql = true;
20752                // prev tokentext can't be with
20753                if ( pstate != EFindSqlStateType.stnormal )
20754                {
20755                    if ( TBaseType.assigned(lcprevsolidtoken) )
20756                    {
20757                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_with )
20758                        {
20759                            ret = null;
20760                            lcisnewsql = false;
20761                        }
20762                    }
20763                }
20764                if ( lcisnewsql )
20765                {
20766                    ret =  new TGrantStmt(pdbvendor);
20767                    //ret.sqlstatementtype = gnewsqlstatementtype;
20768                    for ( k = lcpos + 1; k< lcsourcetokenlist.size();k++ )    // iterate
20769                    {
20770                        lctoken = lcsourcetokenlist.get(k);
20771                        if (lctoken.isnonsolidtoken() ) continue;
20772                        if ( lctoken.tokencode == TBaseType.rrw_go ) break;
20773                        if ( lctoken.tokentype == ETokenType.ttsemicolon ) break;
20774                        if ( lctoken.tokencode == TBaseType.rrw_to   ) break;
20775                        lctoken.tokenstatus = ETokenStatus.tsignoredbygetrawstatement;
20776                    }
20777                }
20778                break;
20779            }
20780            case sstmssqldeclare:
20781            {
20782                ret =  new TMssqlDeclare(pdbvendor);
20783                break;
20784            }
20785            case sstmssqlcontinue:
20786            {
20787                lcisnewsql = true;
20788                if ((lccurrentsqlstatement != null) && ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstload ))
20789                {lcisnewsql = false;}
20790                if (lcisnewsql){
20791                    ret =  new TMssqlContinue(pdbvendor);
20792                }
20793
20794                break;
20795            }
20796            case sstbreak:
20797            {
20798                ret =  new TBreakStmt(pdbvendor);
20799                break;
20800            }
20801            case sstmssqlopen:
20802            {
20803                ret =  new TMssqlOpen(pdbvendor);
20804                break;
20805            }
20806            case sstmssqlclose:
20807            {
20808                ret =  new TMssqlClose(pdbvendor);
20809                break;
20810            }
20811            case sstmssqlbulkinsert:
20812            {
20813                ret =  new TMssqlBulkInsert(pdbvendor);
20814                break;
20815            }
20816            case sstmssqldeallocate:
20817            {
20818                ret =  new TMssqlDeallocate(pdbvendor);
20819                break;
20820            }
20821            case sstmssqlraiserror:
20822            {
20823                ret =  new TMssqlRaiserror(pdbvendor);
20824                break;
20825            }
20826            case sstmssqlgoto:
20827            {
20828                ret =  new TMssqlGoTo(pdbvendor);
20829                break;
20830            }
20831            case sstmssqldropview:
20832            {
20833                ret =  new TDropViewSqlStatement(pdbvendor);
20834                break;
20835            }
20836            case sstmssqldroptable:
20837            {
20838                ret =  new TDropTableSqlStatement(pdbvendor);
20839                break;
20840            }
20841            case sstmssqldropindex:
20842            {
20843                ret =  new TDropIndexSqlStatement(pdbvendor);
20844                break;
20845            }
20846            case sstmssqldroppartitionscheme :
20847                ret = new TDropPartitionSchemeStmt(pdbvendor);
20848                break;
20849
20850            case sstmssqldropaggregate :
20851            case sstmssqldropapplicationrole :
20852            case sstmssqldropassembly :
20853            case sstmssqldropasymmetrickey :
20854            case sstmssqldropcertificate :
20855            case sstmssqldropcontract :
20856            case sstmssqldropcredential :
20857            case sstmssqldropdefault :
20858            case sstmssqldropendpoint :
20859            case sstmssqldropeventnotification :
20860            case sstmssqldropfulltextcatalog :
20861            case sstmssqldropfulltextindex :
20862            case sstmssqldropfunction :
20863            case sstmssqldroplogin :
20864            case sstmssqldropmasterkey :
20865            case sstmssqldropmessagetype :
20866            case sstmssqldroppartitionfunction :
20867            case sstmssqldropprocedure :
20868            case sstmssqldropqueue :
20869            case sstmssqldropremoteservicebinding :
20870            case sstmssqldroprole :
20871            case sstmssqldroproute :
20872            case sstmssqldroprule :
20873            case sstmssqldropschema :
20874            case sstmssqldropservice :
20875            case sstmssqldropsignature:
20876            case sstmssqldropstatistics :
20877            case sstmssqldropsymmetrickey :
20878            case sstmssqldroptrigger :
20879            case sstmssqldroptype :
20880            case sstmssqldropuser :
20881            case sstmssqldropxmlschemacollection:
20882            case sstmssqldropdatabase :
20883            {
20884                ret =  new TMssqlDropDbObject(EDbVendor.dbvsybaseiq);
20885                ret.sqlstatementtype = gnewsqlstatementtype;
20886                break;
20887            }
20888            case sstmssqldropsynonym :
20889            {
20890                ret =  new TDropSynonymStmt(pdbvendor);
20891                break;
20892            }
20893            case sstmssqltruncatetable:
20894            {
20895                ret =  new TTruncateStatement(pdbvendor);
20896                break;
20897            }
20898            case sstmssqlbegintran:
20899            {
20900                ret =  new TBeginTran(pdbvendor);
20901                break;
20902            }
20903            case sstmssqlsavetran:
20904            {
20905                ret =  new TMssqlSaveTran(pdbvendor);
20906                break;
20907            }
20908            case sstmssqlcommit:
20909            {
20910                lcisnewsql = true;
20911
20912                if ( TBaseType.assigned(lcprevsolidtoken) )
20913                {
20914                    if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
20915                    {
20916
20917                        lcisnewsql = false;
20918                    }
20919                }
20920
20921                if (lcisnewsql){
20922                    ret =  new TMssqlCommit(pdbvendor);
20923                }
20924
20925                break;
20926            }
20927            case sstmssqlrollback:
20928            {
20929                ret =  new TMssqlRollback(pdbvendor);
20930                break;
20931            }
20932            case sstmssqlreadtext :
20933            case sstmssqldbcc :
20934            case sstmssqlrestore :
20935            case sstmssqlbackup :
20936            {
20937                ret = new TMssqlDummyStmt(pdbvendor);
20938                ret.sqlstatementtype = gnewsqlstatementtype;
20939                break;
20940            }
20941            case sstcreateindex:
20942            {
20943                ret =  new TCreateIndexSqlStatement(pdbvendor);
20944                break;
20945            }
20946            case sstmssqlwaitfor:
20947            {
20948                ret =  new TMssqlWaitFor(pdbvendor);
20949                break;
20950            }
20951            case sstmerge:
20952            {
20953                lcisnewsql = true;
20954
20955                if (pstate != EFindSqlStateType.stnormal)
20956                {
20957
20958                    if (lccurrentsqlstatement != null)
20959                    {
20960                        // merge union, merge join
20961                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstselect)
20962                        {
20963                                    lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
20964                                    if (lcnextsolidtoken != null)
20965                                       {
20966                                        if ((lcnextsolidtoken.tokencode == TBaseType.rrw_union) || (lcnextsolidtoken.tokencode == TBaseType.rrw_join))
20967                                           {
20968                                              lcisnewsql = false;
20969                                           }
20970                                        }
20971                        }
20972
20973                    }
20974
20975                    TSourceToken lcnexttoken = lcsourcetokenlist.nextsolidtoken(lcpos, 1, false);
20976                    if ( (lcnexttoken != null) )
20977                    {
20978                        if ( lcnexttoken.tokencode == TBaseType.rrw_sybase_partition )
20979                            lcisnewsql = false;
20980                    }
20981
20982                }
20983
20984                if (lcisnewsql)
20985                {
20986                    ret = new TMergeSqlStatement(pdbvendor);
20987                    ret.sqlstatementtype = gnewsqlstatementtype;
20988                }
20989
20990                break;
20991            }
20992            case sstmssqlbegintry :
20993            case sstmssqlbegincatch:
20994            {
20995                ret =  new TMssqlBlock(pdbvendor);
20996                ret.sqlstatementtype = gnewsqlstatementtype;
20997                break;
20998            }
20999            case sstmssqlexec:
21000            {
21001                lcisnewsql = true;
21002                // prev tokentext can't be with
21003                if ( pstate != EFindSqlStateType.stnormal )
21004                {
21005                    if ( TBaseType.assigned(lccurrentsqlstatement) )
21006                    {
21007                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
21008                        {
21009                            if ( lccurrentsqlstatement.dummytag == 1 )
21010                            {
21011                                lcisnewsql = false;
21012                                lccurrentsqlstatement.dummytag = 0; // no select is permited after it
21013                            }
21014                        }
21015
21016                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlgrant )
21017                        {
21018                            if ( TBaseType.assigned(lcprevsolidtoken) )
21019                            {
21020                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_grant )
21021                                    lcisnewsql = false;
21022                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
21023                                    lcisnewsql = false;
21024                            }
21025                        }else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlrevoke ){
21026                            if ( TBaseType.assigned(lcprevsolidtoken) )
21027                            {
21028                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_revoke )
21029                                    lcisnewsql = false;
21030                            }
21031                        }
21032
21033
21034
21035                        if (
21036                                (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlcreateprocedure)
21037                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetrigger)
21038                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlcreatefunction)
21039                                        ||(lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlalterprocedure)
21040                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlaltertrigger)
21041                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlalterfunction)
21042                                )
21043                        {
21044                            if ( TBaseType.assigned(lcprevsolidtoken) )
21045                            {
21046                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_with )
21047                                    lcisnewsql = false;
21048                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
21049                                    lcisnewsql = false;
21050                            }
21051                        }
21052                    }
21053                }
21054                if ( lcisnewsql )
21055                {
21056                    ret =  new TMssqlExecute(pdbvendor);
21057                }
21058                break;
21059            }
21060            case sstmssqlexecuteas:
21061            {
21062                lcisnewsql = true;
21063                // prev tokentext can't be with
21064                if ( pstate != EFindSqlStateType.stnormal )
21065                {
21066                    if ( TBaseType.assigned(lccurrentsqlstatement) )
21067                    {
21068                        if (
21069                                (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlcreateprocedure)
21070                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetrigger)
21071                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlcreatefunction)
21072                                        ||(lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlalterprocedure)
21073                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlaltertrigger)
21074                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlalterfunction)
21075                                )
21076                        {
21077                            if ( TBaseType.assigned(lcprevsolidtoken) )
21078                            {
21079                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_with )
21080                                    lcisnewsql = false;
21081                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
21082                                    lcisnewsql = false;
21083                            }
21084                        }
21085                    }
21086                }
21087                if ( lcisnewsql )
21088                {
21089                    ret =  new TMssqlExecuteAs(pdbvendor);
21090                    ret.sqlstatementtype = gnewsqlstatementtype;
21091                }
21092                break;
21093            }
21094            case sstmssqlset:
21095            {
21096                lcisnewsql = true;
21097                if ( pstate != EFindSqlStateType.stnormal )
21098                {
21099                    if ( TBaseType.assigned(lccurrentsqlstatement) )
21100                    {
21101
21102                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlif)
21103                        {
21104                             TSourceToken lcPPToken = lcsourcetokenlist.searchToken(TBaseType.rrw_update,"",pcst,-10);
21105                             if (TBaseType.assigned(lcPPToken))
21106                            {
21107                                  lcisnewsql = false;
21108                            }
21109                        }
21110
21111                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
21112                        {
21113                              if (lcprevsolidtoken != null)
21114                              {
21115                                  if (lcprevsolidtoken.tokencode == TBaseType.rrw_update){
21116                                    lcisnewsql = false;}
21117                              }
21118                        }
21119
21120                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstupdate )
21121                        {
21122                            if ( lccurrentsqlstatement.dummytag == 1 )
21123                            {
21124                                //update statement still find set clause yet, so this is setclause in update statement
21125                                lccurrentsqlstatement.dummytag = 0;
21126                                lcisnewsql = false;
21127                            }
21128                        }
21129                    }
21130
21131                    lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
21132                    if ( TBaseType.assigned(lcnextsolidtoken) )
21133                    { //set null, set default
21134                        if ( (TBaseType.mycomparetext(lcnextsolidtoken.getAstext(),"null")==0)
21135                                || (TBaseType.mycomparetext(lcnextsolidtoken.getAstext(), "default")==0) )
21136                        {
21137                            lcisnewsql = false;
21138                        }
21139                    }
21140
21141                }
21142
21143                if ( lcisnewsql )
21144                {
21145                    ret =  new TMssqlSet(pdbvendor);
21146                }
21147
21148                break;
21149            }
21150            case sstmssqlupdatetext:
21151            {
21152                ret =  new TMssqlUpdateText(pdbvendor);
21153                break;
21154            }
21155            case sstmssqlendconversation:
21156            {
21157                ret =  new TMssqlEndConversation(pdbvendor);
21158                break;
21159            }
21160            case sstmssqlbegindialog:
21161            {
21162                ret =  new TMssqlBeginDialog(pdbvendor);
21163                break;
21164            }
21165            case sstmssqlsendonconversation:
21166            {
21167                ret =  new TMssqlSendOnConversation(pdbvendor);
21168                break;
21169            }
21170            case sstmssqldisabletrigger :
21171            case sstmssqlenabletrigger:
21172            {
21173                lcisnewsql = true;
21174                if ( TBaseType.assigned(lccurrentsqlstatement) )
21175                {
21176                    if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstaltertable )
21177                        lcisnewsql = false;
21178                }
21179
21180                if ( lcisnewsql )
21181                {
21182                    ret =  new TDisableEnableTriggerStmt(pdbvendor);
21183                    ret.sqlstatementtype = gnewsqlstatementtype;
21184                }
21185                break;
21186            }
21187            case sstsybaseWritetext:
21188            {
21189                ret =  new TSybaseWritetext(pdbvendor);
21190                break;
21191            }
21192            case sstsybaseDeleteStatistics:
21193            {
21194                ret = new TSybaseDeleteStatistics(pdbvendor);
21195                break;
21196            }
21197            case sstcall:
21198            {
21199                ret = new TCallStatement(pdbvendor);
21200                break;
21201            }
21202            default:
21203            {
21204                ret =  new TUnknownSqlStatement(pdbvendor);
21205                ret.sqlstatementtype = gnewsqlstatementtype;
21206                break;
21207            }
21208        }    // case
21209
21210        return ret;
21211    }
21212
21213    // ---- Sybase IQ fork (dbvsybaseiq): full-family recognition; rejection of
21214    // ---- foreign statements is the parser policy layer, not this table.
21215public ESqlStatementType findsybaseiqcmdusedbyyacc(TSourceToken pcst){
21216  ESqlStatementType ret = ESqlStatementType.sstinvalid;
21217
21218    int lcpos = pcst.posinlist;
21219    TSourceTokenList lcsourcetokenlist = pcst.container;
21220
21221    //subquery after semicolon or at first line
21222    if (  (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
21223      {
21224        int k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
21225        if ( k >0 )
21226          {
21227            ret = ESqlStatementType.sstselect;
21228          }
21229
21230        return ret;
21231      }
21232
21233
21234    ret = findsybaseiqcmd(pcst);
21235    // execute can't be used to delimite other sql
21236    if ( ret == ESqlStatementType.sstmssqlexec )
21237      ret = ESqlStatementType.sstinvalid;
21238
21239  return ret;
21240}
21241}