001package gudusoft.gsqlparser.sqlcmds;
002
003//import gudusoft.gsqlparser.*;
004import gudusoft.gsqlparser.*;
005import gudusoft.gsqlparser.stmt.*;
006import gudusoft.gsqlparser.stmt.bigquery.TExportDataStmt;
007import gudusoft.gsqlparser.stmt.couchbase.TInferKeyspaceStmt;
008import gudusoft.gsqlparser.stmt.couchbase.TTBuildIndexesStmt;
009import gudusoft.gsqlparser.stmt.databricks.*;
010import gudusoft.gsqlparser.stmt.hana.*;
011import gudusoft.gsqlparser.stmt.hive.*;
012import gudusoft.gsqlparser.stmt.informix.*;
013import gudusoft.gsqlparser.stmt.netezza.TNetezzaGenerateStatistics;
014import gudusoft.gsqlparser.stmt.netezza.TNetezzaGroomTable;
015import gudusoft.gsqlparser.stmt.postgresql.*;
016import gudusoft.gsqlparser.stmt.presto.TResetSessionStmt;
017import gudusoft.gsqlparser.stmt.redshift.*;
018import gudusoft.gsqlparser.stmt.snowflake.*;
019import gudusoft.gsqlparser.stmt.sparksql.*;
020import gudusoft.gsqlparser.stmt.sybase.TInsertBulk;
021import gudusoft.gsqlparser.stmt.sybase.TSybaseDeleteStatistics;
022import gudusoft.gsqlparser.stmt.sybase.TSybaseWritetext;
023import gudusoft.gsqlparser.stmt.teradata.*;
024import gudusoft.gsqlparser.stmt.mysql.*;
025import gudusoft.gsqlparser.stmt.db2.*;
026import gudusoft.gsqlparser.stmt.mssql.*;
027import gudusoft.gsqlparser.stmt.oracle.*;
028import gudusoft.gsqlparser.stmt.mdx.*;
029import gudusoft.gsqlparser.stmt.vertica.*;
030
031
032public class TSqlCmds {
033
034    /**
035     * @deprecated Use standalone TSqlCmd class directly
036     */
037    @Deprecated
038    public class TSqlCmd extends gudusoft.gsqlparser.sqlcmds.TSqlCmd {
039        public TSqlCmd() {
040            super();
041        }
042    }
043
044    /**
045     * @deprecated Use standalone TSqlCmdList class directly
046     */
047    @Deprecated
048    public class TSqlCmdList extends gudusoft.gsqlparser.sqlcmds.TSqlCmdList {
049        public TSqlCmdList() {
050            super();
051        }
052    }
053
054    TSqlCmdList mssqlcmds,oraclecmds,db2cmds,mysqlcmds,accesscmds,mdxcmds,teradatacmds,
055            postgresqlcmds,netezzacmds,sybasecmds,informixcmds,hivecmds,greenplumcmds,
056            redshiftcmds,hanacmds,verticacmds,couchbasecmds,snowflakecmds,bigquerycmds,
057            sparksqlcmds,prestocmds,athenacmds,databrickscmds,gaussdbcmds;
058
059    public TSqlCmdList getSqlCmdList(EDbVendor dbVendor){
060        TSqlCmdList sqlCmdList = null;
061        switch(dbVendor){
062            case dbvmssql:
063                if (mssqlcmds.size() == 0) {initmssqlcmds();}
064                sqlCmdList = mssqlcmds;
065                break;
066            case dbvoracle:
067                if (oraclecmds.size() == 0) {initoraclecmds();}
068                sqlCmdList = oraclecmds;
069                break;
070            case 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 dbvinformix:
115                if (informixcmds.size() == 0) {initinformixcmds();}
116                sqlCmdList = informixcmds;
117                break;
118            case dbvhive:
119                if (hivecmds.size() == 0) {inithivecmds();}
120                sqlCmdList = hivecmds;
121                break;
122            case dbvimpala:
123                if (hivecmds.size() == 0) {inithivecmds();
124                }
125                sqlCmdList = hivecmds;
126                break;
127            case dbvgreenplum:
128                if (greenplumcmds.size() == 0) {initgreenplumcmds();
129                }
130                sqlCmdList = greenplumcmds;
131                break;
132            case dbvhana:
133                if (hanacmds.size() == 0) {inithanacmds();
134                }
135                sqlCmdList = hanacmds;
136                break;
137            case dbvvertica:
138                if (verticacmds.size() == 0) {initverticacmds();
139                }
140                sqlCmdList = verticacmds;
141                break;
142            case dbvcouchbase:
143                if (couchbasecmds.size() == 0) {initcouchbasecmds();
144                }
145                sqlCmdList = couchbasecmds;
146                break;
147            case dbvsnowflake:
148                if (snowflakecmds.size() == 0) {initsnowflakecmds();
149                }
150                sqlCmdList = snowflakecmds;
151                break;
152            case dbvbigquery:
153                if (bigquerycmds.size() == 0) {initbigquerycmds();
154                }
155                sqlCmdList = bigquerycmds;
156                break;
157            case dbvsparksql:
158                if (sparksqlcmds.size() == 0) {initsparksqlcmds();
159                }
160                sqlCmdList = sparksqlcmds;
161                break;
162            case dbvpresto:
163                if (prestocmds.size() == 0) {initprestocmds();
164                }
165                sqlCmdList = prestocmds;
166                break;
167            case dbvathena:
168                if (athenacmds.size() == 0) {initathenacmds();
169                }
170                sqlCmdList = athenacmds;
171                break;
172            case dbvdatabricks:
173                if (databrickscmds.size() == 0) {initdatabrickscmds();
174                }
175                sqlCmdList = databrickscmds;
176                break;
177            case dbvgaussdb:
178                if (gaussdbcmds.size() == 0) {initgaussdbcmds();
179                }
180                sqlCmdList = gaussdbcmds;
181                break;
182        }
183        return  sqlCmdList;
184    }
185
186    ESqlStatementType gnewsqlstatementtype;
187
188   // int  mssqlcmdscurrentcount,oraclecmdscurrentcount,db2cmdscurrentcount,mysqlcmdscurrentcount,mdxcmdscurrentcount ;
189
190    public TSqlCmds(){
191//        mssqlcmdscurrentcount = 0;
192//        oraclecmdscurrentcount = 0;
193//        db2cmdscurrentcount = 0;
194//        mysqlcmdscurrentcount = 0;
195//        mdxcmdscurrentcount = 0;
196        mssqlcmds = new TSqlCmdList();
197        sybasecmds = new TSqlCmdList();
198        oraclecmds = new TSqlCmdList();
199        db2cmds = new TSqlCmdList();
200        mysqlcmds = new TSqlCmdList();
201        accesscmds = new TSqlCmdList();
202        mdxcmds = new TSqlCmdList();
203        teradatacmds = new TSqlCmdList();
204        postgresqlcmds = new TSqlCmdList();
205        netezzacmds = new TSqlCmdList();
206        informixcmds = new TSqlCmdList();
207        hivecmds = new TSqlCmdList();
208        greenplumcmds = new TSqlCmdList();
209        redshiftcmds = new TSqlCmdList();
210        hanacmds = new TSqlCmdList();
211        verticacmds = new TSqlCmdList();
212        couchbasecmds = new TSqlCmdList();
213        snowflakecmds = new TSqlCmdList();
214        bigquerycmds = new TSqlCmdList();
215        sparksqlcmds = new TSqlCmdList();
216        prestocmds = new TSqlCmdList();
217        athenacmds = new TSqlCmdList();
218        databrickscmds = new TSqlCmdList();
219        gaussdbcmds = new TSqlCmdList();
220    }
221
222    void addcmds(EDbVendor dbVendor, ESqlStatementType psqlstatementtype, int ptoken1, String ptoken2, String ptoken3, String ptoken4, String ptoken5,String ptoken6,String ptoken7){
223      TSqlCmd sc = new TSqlCmd();
224      sc.sqlstatementtype = psqlstatementtype;
225      sc.token1 = ptoken1;
226      sc.token2 = ptoken2;
227      sc.token3 = ptoken3;
228      sc.token4 = ptoken4;
229      sc.token5 = ptoken5;
230      sc.token6 = ptoken6;
231      sc.token7 = ptoken7;
232      switch(dbVendor){
233          case dbvmssql:
234              if (sc.token1 > TBaseType.rrw_abort){
235                  switch (sc.token1){
236                      case TBaseType.rrw_sqlserver_throw:
237                          sc.token1Str = "throw";
238                          break;
239                      default:
240                          break;
241                  }
242              }
243              mssqlcmds.add(sc);
244              break;
245          case dbvoracle:
246              oraclecmds.add(sc);
247              break;
248          case dbvdameng:
249              oraclecmds.add(sc);
250              break;
251          case dbvmysql:
252              if (sc.token1 > TBaseType.rrw_abort){
253                  switch (sc.token1){
254                      case TBaseType.rrw_mysql_delimiter:
255                          sc.token1Str = "delimiter";
256                          break;
257                      case TBaseType.rrw_mysql_desc:
258                          sc.token1Str = "desc";
259                          break;
260                      default:
261                          break;
262                  }
263              }
264              mysqlcmds.add(sc);
265              break;
266          case dbvoceanbase:
267              // Phase 1: route to MySQL command list — see getSqlCmdList()
268              // case dbvoceanbase for rationale.
269              if (sc.token1 > TBaseType.rrw_abort){
270                  switch (sc.token1){
271                      case TBaseType.rrw_mysql_delimiter:
272                          sc.token1Str = "delimiter";
273                          break;
274                      case TBaseType.rrw_mysql_desc:
275                          sc.token1Str = "desc";
276                          break;
277                      default:
278                          break;
279                  }
280              }
281              mysqlcmds.add(sc);
282              break;
283          case dbvdb2:
284              db2cmds.add(sc);
285              break;
286          case dbvmdx:
287              mdxcmds.add(sc);
288              break;
289          case dbvteradata:
290              if (sc.token1 > TBaseType.rrw_abort){
291                  switch (sc.token1){
292                      case TBaseType.rrw_teradata_wait:
293                          sc.token1Str = "wait";
294                          break;
295                      case TBaseType.rrw_teradata_using:
296                          sc.token1Str = "using";
297                          break;
298                      case TBaseType.rrw_teradata_upd:
299                          sc.token1Str = "update";
300                          break;
301                      case TBaseType.rrw_teradata_sel:
302                          sc.token1Str = "select";
303                          break;
304                      case TBaseType.rrw_teradata_restart:
305                          sc.token1Str = "restart";
306                          break;
307                      case TBaseType.rrw_teradata_position:
308                          sc.token1Str = "position";
309                          break;
310                      case TBaseType.rrw_teradata_modify:
311                          sc.token1Str = "modify";
312                          break;
313                      case TBaseType.rrw_teradata_logon:
314                          sc.token1Str = "logon";
315                          break;
316                      case TBaseType.rrw_teradata_locking:
317                          sc.token1Str = "locking";
318                          break;
319                      case TBaseType.rrw_teradata_ins:
320                          sc.token1Str = "insert";
321                          break;
322                      case TBaseType.rrw_teradata_help:
323                          sc.token1Str = "help";
324                          break;
325                      case TBaseType.rrw_teradata_give:
326                          sc.token1Str = "give";
327                          break;
328                      case TBaseType.rrw_teradata_echo:
329                          sc.token1Str = "echo";
330                          break;
331                      case TBaseType.rrw_teradata_dump:
332                          sc.token1Str = "dump";
333                          break;
334                      case TBaseType.rrw_teradata_diagnostic:
335                          sc.token1Str = "diagnostic";
336                          break;
337                      case TBaseType.rrw_teradata_del:
338                          sc.token1Str = "delete";
339                          break;
340                      case TBaseType.rrw_teradata_cv:
341                          sc.token1Str = "create view";
342                          break;
343                      case TBaseType.rrw_teradata_collect:
344                          sc.token1Str = "collect";
345                          break;
346                      case TBaseType.rrw_teradata_cm:
347                          sc.token1Str = "create macro";
348                          break;
349                      default:
350                          break;
351                  }
352              }
353              teradatacmds.add(sc);
354              break;
355          case dbvpostgresql:
356              if (sc.token1 > TBaseType.rrw_abort){
357                  switch (sc.token1){
358                      case TBaseType.rrw_postgresql_cluster:
359                          sc.token1Str = "cluster";
360                          break;
361                      case TBaseType.rrw_postgresql_copy:
362                          sc.token1Str = "copy";
363                          break;
364                      case TBaseType.rrw_postgresql_discard:
365                          sc.token1Str = "discard";
366                          break;
367                      case TBaseType.rrw_postgresql_listen:
368                          sc.token1Str = "listen";
369                          break;
370                      case TBaseType.rrw_postgresql_notify:
371                          sc.token1Str = "notify";
372                          break;
373                      case TBaseType.rrw_postgresql_reassign:
374                          sc.token1Str = "reassign";
375                          break;
376                      case TBaseType.rrw_postgresql_reindex:
377                          sc.token1Str = "reindex";
378                          break;
379                      case TBaseType.rrw_postgresql_security:
380                          sc.token1Str = "security";
381                          break;
382                      case TBaseType.rrw_postgresql_unlisten:
383                          sc.token1Str = "unlisten";
384                          break;
385                      default:
386                          break;
387                  }
388              }
389              postgresqlcmds.add(sc);
390              break;
391          case dbvredshift:
392              if (sc.token1 > TBaseType.rrw_abort){
393                  switch (sc.token1){
394                      case TBaseType.rrw_redshift_cancel:
395                          sc.token1Str = "cancel";
396                          break;
397                      case TBaseType.rrw_redshift_copy:
398                          sc.token1Str = "copy";
399                          break;
400                      case TBaseType.rrw_redshift_unload:
401                          sc.token1Str = "unload";
402                          break;
403                      case TBaseType.rrw_redshift_vacuum:
404                          sc.token1Str = "vacuum";
405                          break;
406                      default:
407                          break;
408                  }
409              }
410              redshiftcmds.add(sc);
411              break;
412          case dbvnetezza:
413              if (sc.token1 > TBaseType.rrw_abort){
414                  switch (sc.token1){
415                      case TBaseType.rrw_netezza_copy:
416                          sc.token1Str = "copy";
417                          break;
418                      case TBaseType.rrw_netezza_generate:
419                          sc.token1Str = "generate";
420                          break;
421                      case TBaseType.rrw_netezza_groom:
422                          sc.token1Str = "groom";
423                          break;
424                      default:
425                          break;
426                  }
427              }
428              netezzacmds.add(sc);
429              break;
430          case dbvsybase:
431
432              if (sc.token1 > TBaseType.rrw_abort){
433                  switch (sc.token1){
434                      case TBaseType.rrw_sybase_dump:
435                          sc.token1Str = "dump";
436                          break;
437                      default:
438                          break;
439                  }
440              }
441              sybasecmds.add(sc);
442              break;
443          case dbvinformix:
444              if (sc.token1 > TBaseType.rrw_abort){
445                  switch (sc.token1){
446                      case TBaseType.rrw_informix_connect_to:
447                          sc.token1Str = "connect to";
448                          break;
449                      case TBaseType.rrw_informix_info:
450                          sc.token1Str = "info";
451                          break;
452                      case TBaseType.rrw_informix_output:
453                          sc.token1Str = "output";
454                          break;
455                      case TBaseType.rrw_informix_put:
456                          sc.token1Str = "put";
457                          break;
458                      case TBaseType.rrw_informix_unload:
459                          sc.token1Str = "unload";
460                          break;
461                      case TBaseType.rrw_informix_whenever:
462                          sc.token1Str = "whenever";
463                          break;
464                      default:
465                          break;
466                  }
467              }
468              informixcmds.add(sc);
469              break;
470          case dbvhive:
471              if (sc.token1 > TBaseType.rrw_abort){
472                  switch (sc.token1){
473                      case TBaseType.rrw_hive_desc:
474                          sc.token1Str = "desc";
475                          break;
476                      case TBaseType.rrw_hive_export:
477                          sc.token1Str = "export";
478                          break;
479                      case TBaseType.rrw_hive_import:
480                          sc.token1Str = "import";
481                          break;
482                      case TBaseType.rrw_hive_msck:
483                          sc.token1Str = "msck";
484                          break;
485                      default:
486                          break;
487                  }
488              }
489              hivecmds.add(sc);
490              break;
491          case dbvimpala:
492              hivecmds.add(sc);
493              break;
494          case dbvgreenplum:
495              if (sc.token1 > TBaseType.rrw_abort){
496                  switch (sc.token1){
497                      case TBaseType.rrw_greenplum_cluster:
498                          sc.token1Str = "cluster";
499                          break;
500                      case TBaseType.rrw_greenplum_copy:
501                          sc.token1Str = "copy";
502                          break;
503                      case TBaseType.rrw_greenplum_reassign:
504                          sc.token1Str = "reassign";
505                          break;
506                      case TBaseType.rrw_greenplum_reindex:
507                          sc.token1Str = "reindex";
508                          break;
509                      case TBaseType.rrw_greenplum_vacuum:
510                          sc.token1Str = "vacuum";
511                          break;
512                      case TBaseType.rrw_greenplum_analyse:
513                          sc.token1Str = "analyse";
514                          break;
515                      default:
516                          break;
517                  }
518              }
519              greenplumcmds.add(sc);
520              break;
521          case dbvhana:
522              if (sc.token1 > TBaseType.rrw_abort){
523                  switch (sc.token1){
524                      case TBaseType.rrw_hana_unset:
525                          sc.token1Str = "unset";
526                          break;
527                      case TBaseType.rrw_hana_upsert:
528                          sc.token1Str = "upsert";
529                          break;
530                      case TBaseType.rrw_hana_import:
531                          sc.token1Str = "import";
532                          break;
533                      case TBaseType.rrw_hana_export:
534                          sc.token1Str = "export";
535                          break;
536                      case TBaseType.rrw_hana_recover:
537                          sc.token1Str = "recover";
538                          break;
539                      case TBaseType.rrw_hana_unload:
540                          sc.token1Str = "unload";
541                          break;
542                      default:
543                          break;
544                  }
545              }
546              hanacmds.add(sc);
547              break;
548          case dbvvertica:
549              verticacmds.add(sc);
550              break;
551          case dbvcouchbase:
552              couchbasecmds.add(sc);
553              break;
554          case dbvsnowflake:
555              snowflakecmds.add(sc);
556              break;
557          case dbvbigquery:
558              bigquerycmds.add(sc);
559              break;
560          case dbvsparksql:
561              sparksqlcmds.add(sc);
562              break;
563          case dbvpresto:
564              prestocmds.add(sc);
565              break;
566          case dbvathena:
567              athenacmds.add(sc);
568              break;
569          case dbvdatabricks:
570              databrickscmds.add(sc);
571              break;
572          case dbvgaussdb:
573              gaussdbcmds.add(sc);
574              break;
575      }
576  }
577
578  void addmssqlcmds(ESqlStatementType psqlstatementtype, int ptoken1, String ptoken2, String ptoken3, String ptoken4, String ptoken5, String ptoken6, String ptoken7){
579    addcmds(EDbVendor.dbvmssql,psqlstatementtype,ptoken1,ptoken2,ptoken3,ptoken4,ptoken5,ptoken6,ptoken7);
580  }
581
582void addsybasecmds(ESqlStatementType psqlstatementtype, int ptoken1, String ptoken2, String ptoken3, String ptoken4, String ptoken5, String ptoken6, String ptoken7){
583  addcmds(EDbVendor.dbvsybase,psqlstatementtype,ptoken1,ptoken2,ptoken3,ptoken4,ptoken5,ptoken6,ptoken7);
584}
585
586void addpostgresqlcmds(ESqlStatementType psqlstatementtype, int ptoken1, String ptoken2, String ptoken3, String ptoken4, String ptoken5, String ptoken6, String ptoken7){
587  addcmds(EDbVendor.dbvpostgresql,psqlstatementtype,ptoken1,ptoken2,ptoken3,ptoken4,ptoken5,ptoken6,ptoken7);
588}
589
590    void addgaussdbcmds(ESqlStatementType psqlstatementtype, int ptoken1, String ptoken2, String ptoken3, String ptoken4, String ptoken5, String ptoken6, String ptoken7){
591        addcmds(EDbVendor.dbvgaussdb,psqlstatementtype,ptoken1,ptoken2,ptoken3,ptoken4,ptoken5,ptoken6,ptoken7);
592    }
593
594void addredshiftcmds(ESqlStatementType psqlstatementtype, int ptoken1, String ptoken2, String ptoken3, String ptoken4, String ptoken5, String ptoken6, String ptoken7){
595    addcmds(EDbVendor.dbvredshift,psqlstatementtype,ptoken1,ptoken2,ptoken3,ptoken4,ptoken5,ptoken6,ptoken7);
596}
597
598    void addnetezzacmds(ESqlStatementType psqlstatementtype, int ptoken1, String ptoken2, String ptoken3, String ptoken4, String ptoken5, String ptoken6, String ptoken7){
599  addcmds(EDbVendor.dbvnetezza,psqlstatementtype,ptoken1,ptoken2,ptoken3,ptoken4,ptoken5,ptoken6,ptoken7);
600}
601
602
603void addoraclecmds(ESqlStatementType psqlstatementtype, int ptoken1, String ptoken2, String ptoken3, String ptoken4, String ptoken5, String ptoken6, String ptoken7){
604  addcmds(EDbVendor.dbvoracle,psqlstatementtype,ptoken1,ptoken2,ptoken3,ptoken4,ptoken5,ptoken6,ptoken7);
605}
606
607void addhivecmds(ESqlStatementType psqlstatementtype, int ptoken1, String ptoken2, String ptoken3, String ptoken4, String ptoken5, String ptoken6, String ptoken7){
608  addcmds(EDbVendor.dbvhive,psqlstatementtype,ptoken1,ptoken2,ptoken3,ptoken4,ptoken5,ptoken6,ptoken7);
609}
610
611void addmysqlcmds(ESqlStatementType psqlstatementtype, int ptoken1, String ptoken2, String ptoken3, String ptoken4, String ptoken5, String ptoken6, String ptoken7){
612  addcmds(EDbVendor.dbvmysql,psqlstatementtype,ptoken1,ptoken2,ptoken3,ptoken4,ptoken5,ptoken6,ptoken7);
613}
614
615void addsparksqlcmds(ESqlStatementType psqlstatementtype, int ptoken1, String ptoken2, String ptoken3, String ptoken4, String ptoken5, String ptoken6, String ptoken7){
616    addcmds(EDbVendor.dbvsparksql,psqlstatementtype,ptoken1,ptoken2,ptoken3,ptoken4,ptoken5,ptoken6,ptoken7);
617}
618
619void addprestocmds(ESqlStatementType psqlstatementtype, int ptoken1, String ptoken2, String ptoken3, String ptoken4, String ptoken5, String ptoken6, String ptoken7){
620    addcmds(EDbVendor.dbvpresto,psqlstatementtype,ptoken1,ptoken2,ptoken3,ptoken4,ptoken5,ptoken6,ptoken7);
621}
622
623void addathenacmds(ESqlStatementType psqlstatementtype, int ptoken1, String ptoken2, String ptoken3, String ptoken4, String ptoken5, String ptoken6, String ptoken7){
624    addcmds(EDbVendor.dbvathena,psqlstatementtype,ptoken1,ptoken2,ptoken3,ptoken4,ptoken5,ptoken6,ptoken7);
625}
626
627void adddatabrickscmds(ESqlStatementType psqlstatementtype, int ptoken1, String ptoken2, String ptoken3, String ptoken4, String ptoken5, String ptoken6, String ptoken7){
628    addcmds(EDbVendor.dbvdatabricks,psqlstatementtype,ptoken1,ptoken2,ptoken3,ptoken4,ptoken5,ptoken6,ptoken7);
629}
630
631
632void adddb2cmds(ESqlStatementType psqlstatementtype, int ptoken1, String ptoken2, String ptoken3, String ptoken4, String ptoken5, String ptoken6, String ptoken7){
633  addcmds(EDbVendor.dbvdb2,psqlstatementtype,ptoken1,ptoken2,ptoken3,ptoken4,ptoken5,ptoken6,ptoken7);
634}
635
636void addmdxcmds(ESqlStatementType psqlstatementtype, int ptoken1, String ptoken2, String ptoken3, String ptoken4, String ptoken5, String ptoken6, String ptoken7){
637  addcmds(EDbVendor.dbvmdx,psqlstatementtype,ptoken1,ptoken2,ptoken3,ptoken4,ptoken5,ptoken6,ptoken7);
638}
639
640void addteradatacmds(ESqlStatementType psqlstatementtype, int ptoken1, String ptoken2, String ptoken3, String ptoken4, String ptoken5, String ptoken6, String ptoken7){
641  addcmds(EDbVendor.dbvteradata,psqlstatementtype,ptoken1,ptoken2,ptoken3,ptoken4,ptoken5,ptoken6,ptoken7);
642}
643
644void addinformixcmds(ESqlStatementType psqlstatementtype, int ptoken1, String ptoken2, String ptoken3, String ptoken4, String ptoken5, String ptoken6, String ptoken7){
645  addcmds(EDbVendor.dbvinformix,psqlstatementtype,ptoken1,ptoken2,ptoken3,ptoken4,ptoken5,ptoken6,ptoken7);
646}
647
648void addgreenplumcmds(ESqlStatementType psqlstatementtype, int ptoken1, String ptoken2, String ptoken3, String ptoken4, String ptoken5, String ptoken6, String ptoken7){
649  addcmds(EDbVendor.dbvgreenplum,psqlstatementtype,ptoken1,ptoken2,ptoken3,ptoken4,ptoken5,ptoken6,ptoken7);
650}
651
652void addhanacmds(ESqlStatementType psqlstatementtype, int ptoken1, String ptoken2, String ptoken3, String ptoken4, String ptoken5, String ptoken6, String ptoken7){
653    addcmds(EDbVendor.dbvhana,psqlstatementtype,ptoken1,ptoken2,ptoken3,ptoken4,ptoken5,ptoken6,ptoken7);
654}
655
656void addverticacmds(ESqlStatementType psqlstatementtype, int ptoken1, String ptoken2, String ptoken3, String ptoken4, String ptoken5, String ptoken6, String ptoken7){
657    addcmds(EDbVendor.dbvvertica,psqlstatementtype,ptoken1,ptoken2,ptoken3,ptoken4,ptoken5,ptoken6,ptoken7);
658}
659
660void addcouchbasecmds(ESqlStatementType psqlstatementtype, int ptoken1, String ptoken2, String ptoken3, String ptoken4, String ptoken5, String ptoken6, String ptoken7){
661    addcmds(EDbVendor.dbvcouchbase,psqlstatementtype,ptoken1,ptoken2,ptoken3,ptoken4,ptoken5,ptoken6,ptoken7);
662}
663
664void addsnowflakecmds(ESqlStatementType psqlstatementtype, int ptoken1, String ptoken2, String ptoken3, String ptoken4, String ptoken5, String ptoken6, String ptoken7){
665        addcmds(EDbVendor.dbvsnowflake,psqlstatementtype,ptoken1,ptoken2,ptoken3,ptoken4,ptoken5,ptoken6,ptoken7);
666    }
667
668void addbigquerycmds(ESqlStatementType psqlstatementtype, int ptoken1, String ptoken2, String ptoken3, String ptoken4, String ptoken5, String ptoken6, String ptoken7){
669    addcmds(EDbVendor.dbvbigquery,psqlstatementtype,ptoken1,ptoken2,ptoken3,ptoken4,ptoken5,ptoken6,ptoken7);
670}
671
672ESqlStatementType finddbcmd(TSourceToken ptoken, TSqlCmdList pdbcmds ){
673    ESqlStatementType ret = ESqlStatementType.sstinvalid;
674    if (ptoken.tokentype != ETokenType.ttkeyword){return ret;}
675    int lcchecktokens = 0;
676
677    // Look up initial command array index in hash using first token code
678
679    int startIndex = pdbcmds.getStartIndex(ptoken.tokencode);
680    if (startIndex == -1)
681        return ret;
682
683    for(int i=startIndex; i<pdbcmds.size();i++){
684        if ( ((TSqlCmd)pdbcmds.get(i)).token1 != ptoken.tokencode)
685        {
686            if (lcchecktokens > 0 ) {break;}
687            else
688              continue;
689        }
690        else
691        {
692            if (lcchecktokens < 1)
693            {lcchecktokens = 1;}
694        }
695
696        // first cmd tokentext is same, then check second
697        if ((((TSqlCmd)pdbcmds.get(i)).token2 == "") || (((TSqlCmd)pdbcmds.get(i)).token2 == " ") )
698        {
699            ret = ((TSqlCmd)pdbcmds.get(i)).sqlstatementtype;
700            if (((TSqlCmd)pdbcmds.get(i)).token2 == "")
701              break;
702        }
703
704        int k;
705        TSourceToken lcnextsolidtoken  = nextsolidtoken(ptoken);
706        if (lcnextsolidtoken == null)  break;
707        if ((((TSqlCmd)pdbcmds.get(i)).token2 == "*"))// && (lcchecktokens < 2) ) // can match any string
708        {
709            k = 0;
710        }
711        else {
712          k = TBaseType.mycomparetext(lcnextsolidtoken.toString() ,((TSqlCmd)pdbcmds.get(i)).token2);
713        }
714        if (k != 0)
715        {
716            if (lcchecktokens > 1)  break;
717            else
718              continue;
719        }
720        else if (k == 0)
721        {
722            if (lcchecktokens < 2)
723              lcchecktokens = 2;
724        }
725
726        // second cmd tokentext is same, then check third
727        if ((((TSqlCmd)pdbcmds.get(i)).token3 == "") || (((TSqlCmd)pdbcmds.get(i)).token3 == " "))
728        {
729            ret = ((TSqlCmd)pdbcmds.get(i)).sqlstatementtype;
730            if (((TSqlCmd)pdbcmds.get(i)).token3 == "")
731              break;
732        }
733
734        TSourceToken lcnnextsolidtoken = nextsolidtoken(lcnextsolidtoken);
735        if (lcnnextsolidtoken == null) break;
736        if ((((TSqlCmd)pdbcmds.get(i)).token3 == "*"))// && (lcchecktokens < 3))  // can match any string
737          k = 0;
738        else
739        {
740            k = TBaseType.mycomparetext(lcnnextsolidtoken.toString(), ((TSqlCmd)pdbcmds.get(i)).token3);
741        }
742        if (k != 0)
743        {
744            if (lcchecktokens > 2)  {break;}
745            else
746              continue;
747        }
748        else
749        {
750            if (lcchecktokens < 3)
751            {lcchecktokens = 3;}
752        }
753
754        // third cmd tokentext is same, then check fourth
755        if ((((TSqlCmd)pdbcmds.get(i)).token4 == "") || (((TSqlCmd)pdbcmds.get(i)).token4 == " "))
756        {
757            ret = ((TSqlCmd)pdbcmds.get(i)).sqlstatementtype;
758            if (((TSqlCmd)pdbcmds.get(i)).token4 == "")
759              break;
760        }
761
762        TSourceToken lcnnnextsolidtoken = nextsolidtoken(lcnnextsolidtoken);
763        if (lcnnnextsolidtoken == null) { break;}
764        if ((((TSqlCmd)(pdbcmds.get(i))).token4 == "*"))// && (lcchecktokens < 4))  // can match any string
765        {k = 0;}
766        else
767        {k = TBaseType.mycomparetext(lcnnnextsolidtoken.getAstext(),((TSqlCmd)pdbcmds.get(i)).token4);}
768
769        if (k != 0 )
770        {
771            if (lcchecktokens > 3)  break;
772            else
773              continue;
774        }
775        else
776        {
777            if (lcchecktokens < 4)
778              lcchecktokens = 4;
779        }
780
781        // fourth cmd tokentext is same, then check fiveth
782        if ((((TSqlCmd)pdbcmds.get(i)).token5 == "") || (((TSqlCmd)pdbcmds.get(i)).token5 == " ") )
783        {
784            ret = ((TSqlCmd)pdbcmds.get(i)).sqlstatementtype;
785            if (((TSqlCmd)pdbcmds.get(i)).token5 == "")
786              break;
787        }
788
789        TSourceToken lcnnnnextsolidtoken = nextsolidtoken(lcnnnextsolidtoken);
790        if (lcnnnnextsolidtoken == null)  break;
791        if ((((TSqlCmd)pdbcmds.get(i)).token5 == "*") )//&& (lcchecktokens < 5) ) // can match any string
792        { k = 0;}
793        else
794        { k = TBaseType.mycomparetext(lcnnnnextsolidtoken.getAstext(), ((TSqlCmd)pdbcmds.get(i)).token5);}
795        if ( k != 0)
796        {
797            if (lcchecktokens > 4)  break;
798            else
799              continue;
800        }
801        else
802        {
803            if (lcchecktokens < 5)
804              lcchecktokens = 5;
805        }
806
807        // fiveth cmd tokentext is same, then check sixth
808        if ((((TSqlCmd)pdbcmds.get(i)).token6 == "") || (((TSqlCmd)pdbcmds.get(i)).token6 == " "))
809        {
810            ret = ((TSqlCmd)pdbcmds.get(i)).sqlstatementtype;
811            if (((TSqlCmd)pdbcmds.get(i)).token6 == "")
812              break;
813        }
814
815        TSourceToken lcnnnnnextsolidtoken = nextsolidtoken(lcnnnnextsolidtoken);
816        if (lcnnnnnextsolidtoken == null)  break;
817        if ((((TSqlCmd)pdbcmds.get(i)).token6 == "*"))// && (lcchecktokens < 6)) // can match any string
818        {k = 0;}
819        else
820        { k = TBaseType.mycomparetext(lcnnnnnextsolidtoken.getAstext(),((TSqlCmd)pdbcmds.get(i)).token6);}
821        if (k != 0)
822        {
823            if (lcchecktokens > 5) break;
824            else
825              continue;
826        }
827        else
828        {
829            if (lcchecktokens < 6)
830              lcchecktokens = 6;
831        }
832
833        // sixth cmd tokentext is same, then check seventh
834        if ((((TSqlCmd)pdbcmds.get(i)).token7 == "") || (((TSqlCmd)pdbcmds.get(i)).token7 == " "))
835        {
836            ret = ((TSqlCmd)pdbcmds.get(i)).sqlstatementtype;
837            if(((TSqlCmd)pdbcmds.get(i)).token7 == "")
838              break;
839        }
840
841        TSourceToken lcnnnnnnextsolidtoken = nextsolidtoken(lcnnnnnextsolidtoken);
842        if (lcnnnnnnextsolidtoken == null) break;
843        if ((((TSqlCmd)pdbcmds.get(i)).token7 == "*"))// && (lcchecktokens < 7)) // can match any string
844        {k = 0;}
845        else
846        { k = TBaseType.mycomparetext(lcnnnnnnextsolidtoken.getAstext(),((TSqlCmd)pdbcmds.get(i)).token7);}
847        if (k  != 0)
848        {
849            if (lcchecktokens > 6 ) break;
850            else
851              continue;
852        }
853        else
854        {
855            if (lcchecktokens < 7)
856            {lcchecktokens = 7;}
857            ret = ((TSqlCmd)pdbcmds.get(i)).sqlstatementtype;
858            break;
859        }
860
861
862    } //for
863    return ret;
864}
865
866TSourceToken nextsolidtoken(TSourceToken ptoken){
867    TSourceToken ret = null;
868    if (ptoken.container == null) {return ret;}
869    ret = ptoken.container.nextsolidtoken(ptoken,1,false);
870
871    return ret;
872}
873
874void initteradatacmds(){
875
876 addteradatacmds(ESqlStatementType.sstteradataabort, TBaseType.rrw_abort,  " "," "," "," "," "," ");
877 addteradatacmds(ESqlStatementType.sstteradataalterconstraint, TBaseType.rrw_alter,"constraint"," "," "," "," "," ");
878 addteradatacmds(ESqlStatementType.sstteradataalterfunction, TBaseType.rrw_alter,"function"," "," "," "," "," ");
879 addteradatacmds(ESqlStatementType.sstteradataalterfunction, TBaseType.rrw_alter,"specific","function"," "," "," "," ");
880 addteradatacmds(ESqlStatementType.sstteradataaltermethod, TBaseType.rrw_alter,"method"," "," "," "," "," ");
881 addteradatacmds(ESqlStatementType.sstteradataaltermethod, TBaseType.rrw_alter,"constructor","method"," "," "," "," ");
882 addteradatacmds(ESqlStatementType.sstteradataaltermethod, TBaseType.rrw_alter,"instance","method"," "," "," "," ");
883 addteradatacmds(ESqlStatementType.sstteradataaltermethod, TBaseType.rrw_alter,"specific","method"," "," "," "," ");
884 addteradatacmds(ESqlStatementType.sstteradataalterprocedure, TBaseType.rrw_alter,"procedure"," "," "," "," "," ");
885 addteradatacmds(ESqlStatementType.sstteradataalterreplicationgroup, TBaseType.rrw_alter,"replication","group"," "," "," "," ");
886 addteradatacmds(ESqlStatementType.sstteradataaltertable, TBaseType.rrw_alter,"table"," "," "," "," "," ");
887 addteradatacmds(ESqlStatementType.sstteradataaltertrigger, TBaseType.rrw_alter,"trigger"," "," "," "," "," ");
888 addteradatacmds(ESqlStatementType.sstteradataaltertype, TBaseType.rrw_alter,"type"," "," "," "," "," ");
889 addteradatacmds(ESqlStatementType.sstteradataalterzone, TBaseType.rrw_alter,"zone"," "," "," "," "," ");
890
891 addteradatacmds(ESqlStatementType.sstteradatabegindeclaresection, TBaseType.rrw_begin,"delcare","section"," "," "," "," ");
892 addteradatacmds(ESqlStatementType.sstteradatabeginlogging, TBaseType.rrw_begin,"logging"," "," "," "," "," ");
893 addteradatacmds(ESqlStatementType.sstteradatabeginquerylogging, TBaseType.rrw_begin,"query","logging"," "," "," "," ");    
894 addteradatacmds(ESqlStatementType.sstteradatabegintransaction, TBaseType.rrw_begin,"transaction"," "," "," "," "," ");
895 addteradatacmds(ESqlStatementType.sstteradatabegintransaction, TBaseType.rrw_bt," "," "," "," "," "," ");
896 addteradatacmds(ESqlStatementType.sstteradatabeginrequest, TBaseType.rrw_begin,"request"," "," "," "," "," ");
897
898 addteradatacmds(ESqlStatementType.sstteradatacall, TBaseType.rrw_call," "," "," "," "," "," ");
899 addteradatacmds(ESqlStatementType.sstteradatacheckworkload, TBaseType.rrw_check,"workload"," "," "," "," "," ");
900 addteradatacmds(ESqlStatementType.sstteradatacheckpoint, TBaseType.rrw_checkpoint," "," "," "," "," "," ");
901 addteradatacmds(ESqlStatementType.sstteradataclose, TBaseType.rrw_close," "," "," "," "," "," ");
902
903 addteradatacmds(ESqlStatementType.sstteradatacreatemacro, TBaseType.rrw_teradata_cm," "," "," "," "," "," ");
904
905 addteradatacmds(ESqlStatementType.sstteradatacollectdemographics, TBaseType.rrw_teradata_collect,"demographics"," "," "," "," "," ");
906
907 addteradatacmds(ESqlStatementType.sstteradatacollectstatistics, TBaseType.rrw_teradata_collect,"statistics"," "," "," "," "," ");
908 addteradatacmds(ESqlStatementType.sstteradatacollectstatistics, TBaseType.rrw_teradata_collect,"stats"," "," "," "," "," ");
909 addteradatacmds(ESqlStatementType.sstteradatacollectstatistics, TBaseType.rrw_teradata_collect,"stat"," "," "," "," "," ");
910    addteradatacmds(ESqlStatementType.sstteradatacollectstatistics, TBaseType.rrw_teradata_collect,"summary","statistics"," "," "," "," ");
911    addteradatacmds(ESqlStatementType.sstteradatacollectstatistics, TBaseType.rrw_teradata_collect,"summary","stats"," "," "," "," ");
912    addteradatacmds(ESqlStatementType.sstteradatacollectstatistics, TBaseType.rrw_teradata_collect,"summary","stat"," "," "," "," ");
913
914
915 addteradatacmds(ESqlStatementType.sstteradatacomment, TBaseType.rrw_comment," "," "," "," "," "," ");
916 addteradatacmds(ESqlStatementType.sstteradatacommit, TBaseType.rrw_commit," "," "," "," "," "," ");
917 addteradatacmds(ESqlStatementType.sstteradataconnect, TBaseType.rrw_connect," "," "," "," "," "," ");
918 addteradatacmds(ESqlStatementType.sstteradatacreateauthorization, TBaseType.rrw_create,"authorization"," "," "," "," "," ");
919 addteradatacmds(ESqlStatementType.sstteradatacreatecast, TBaseType.rrw_create,"cast"," "," "," "," "," ");
920
921 addteradatacmds(ESqlStatementType.sstteradatacreatemethod, TBaseType.rrw_create,"constructor","method"," "," "," "," ");
922
923 addteradatacmds(ESqlStatementType.sstteradatacreatedatabase, TBaseType.rrw_create,"database"," "," "," "," "," ");
924 addteradatacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"error","table"," "," "," "," ");
925 addteradatacmds(ESqlStatementType.sstteradatacreaterole, TBaseType.rrw_create,"external","role"," "," "," "," ");
926
927 addteradatacmds(ESqlStatementType.sstteradatacreatefunction, TBaseType.rrw_create,"function"," "," "," "," "," ");
928
929 addteradatacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"global","temporary","multiset","table"," "," ");
930 addteradatacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"global","temporary","set","table"," "," ");
931 addteradatacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"global","temporary","table"," "," "," ");
932
933 addteradatacmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"hash","index"," "," "," "," ");
934 addteradatacmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"index"," "," "," "," "," ");
935
936 addteradatacmds(ESqlStatementType.sstteradatacreatemethod, TBaseType.rrw_create,"instance","method"," "," "," "," ");
937
938 addteradatacmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"join","index"," "," "," "," ");
939
940 addteradatacmds(ESqlStatementType.sstteradatacreatemacro, TBaseType.rrw_create,"macro"," "," "," "," "," ");
941
942 addteradatacmds(ESqlStatementType.sstteradatacreatemethod, TBaseType.rrw_create,"method"," "," "," "," "," ");
943 addteradatacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"multiset","global","temporary","table"," "," ");
944 addteradatacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"multiset","table"," "," "," "," ");
945 addteradatacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"multiset","volatile","table"," "," "," ");
946
947 addteradatacmds(ESqlStatementType.sstteradatacreateordering, TBaseType.rrw_create,"ordering"," "," "," "," "," ");
948
949 addteradatacmds(ESqlStatementType.sstcreateprocedure, TBaseType.rrw_create,"proc"," "," "," "," "," ");
950 addteradatacmds(ESqlStatementType.sstcreateprocedure, TBaseType.rrw_create,"procedure"," "," "," "," "," ");
951
952 addteradatacmds(ESqlStatementType.sstteradatacreateprofile, TBaseType.rrw_create,"profile"," "," "," "," "," ");
953
954    addteradatacmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,"recursive","view"," "," "," "," ");
955
956    addteradatacmds(ESqlStatementType.sstteradatacreatereplicationgroup, TBaseType.rrw_create,"replication","group"," "," "," "," ");
957    addteradatacmds(ESqlStatementType.sstteradatacreaterole, TBaseType.rrw_create,"role"," "," "," "," "," ");
958    addteradatacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"set","global","temporary","table"," "," ");
959    addteradatacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"set","table"," "," "," "," ");
960    addteradatacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"set","volatile","table"," "," "," ");
961    addteradatacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"table"," "," "," "," "," ");
962    addteradatacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"temporary","table"," "," "," "," ");
963
964    addteradatacmds(ESqlStatementType.sstteradatacreatetransform, TBaseType.rrw_create,"transform"," "," "," "," "," ");
965
966    addteradatacmds(ESqlStatementType.sstteradatacreatetrigger, TBaseType.rrw_create,"trigger"," "," "," "," "," ");
967
968    addteradatacmds(ESqlStatementType.sstteradatacreatetype, TBaseType.rrw_create,"type"," "," "," "," "," ");
969
970    addteradatacmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"unique","index"," "," "," "," ");
971
972    addteradatacmds(ESqlStatementType.sstteradatacreateuser, TBaseType.rrw_create,"user"," "," "," "," "," ");
973
974    addteradatacmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,"view"," "," "," "," "," ");
975
976    addteradatacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"volatile","multiset","table"," "," "," ");
977    addteradatacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"volatile","table"," "," "," "," ");
978    addteradatacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"volatile","set","table"," "," "," ");
979
980    addteradatacmds(ESqlStatementType.sstcreatezone, TBaseType.rrw_create,"zone"," "," "," "," "," ");
981
982    addteradatacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_ct," "," "," "," "," "," ");
983
984    addteradatacmds(ESqlStatementType.sstcreateview, TBaseType.rrw_teradata_cv," "," "," "," "," "," ");
985
986    addteradatacmds(ESqlStatementType.sstteradatadatabase, TBaseType.rrw_database," "," "," "," "," "," ");
987
988    addteradatacmds(ESqlStatementType.sstteradatadeclarecursor, TBaseType.rrw_declare,"cursor"," "," "," "," "," ");
989
990    addteradatacmds(ESqlStatementType.sstteradatadeclarestatement, TBaseType.rrw_declare,"statement"," "," "," "," "," ");
991
992    addteradatacmds(ESqlStatementType.sstteradatadeclaretable, TBaseType.rrw_declare,"table"," "," "," "," "," ");
993
994    addteradatacmds(ESqlStatementType.sstdelete, TBaseType.rrw_teradata_del," "," "," "," "," "," ");
995
996    addteradatacmds(ESqlStatementType.sstdelete, TBaseType.rrw_delete," "," "," "," "," "," ");
997
998    addteradatacmds(ESqlStatementType.sstteradatadeletedatabase, TBaseType.rrw_delete,"database"," "," "," "," "," ");
999
1000    addteradatacmds(ESqlStatementType.sstteradatadeleteuser, TBaseType.rrw_delete,"user"," "," "," "," "," ");
1001
1002    addteradatacmds(ESqlStatementType.sstteradatadescribe, TBaseType.rrw_describe," "," "," "," "," "," ");
1003
1004    addteradatacmds(ESqlStatementType.sstteradatadiagnostic, TBaseType.rrw_teradata_diagnostic," "," "," "," "," "," ");
1005
1006    addteradatacmds(ESqlStatementType.sstteradatadropauthorization, TBaseType.rrw_drop,"authorization"," "," "," "," "," ");
1007
1008    addteradatacmds(ESqlStatementType.sstteradatadropcast, TBaseType.rrw_drop,"cast"," "," "," "," "," ");
1009    addteradatacmds(ESqlStatementType.sstteradatadropconstraint, TBaseType.rrw_drop,"constraint"," "," "," "," "," ");
1010    addteradatacmds(ESqlStatementType.sstteradatadropdatabase, TBaseType.rrw_drop,"database"," "," "," "," "," ");
1011    addteradatacmds(ESqlStatementType.sstdroptable, TBaseType.rrw_drop,"error","table"," "," "," "," ");
1012    addteradatacmds(ESqlStatementType.sstteradatadroprole, TBaseType.rrw_drop,"external","role"," "," "," "," ");
1013
1014    addteradatacmds(ESqlStatementType.sstteradatadropfunction, TBaseType.rrw_drop,"function"," "," "," "," "," ");
1015
1016    addteradatacmds(ESqlStatementType.sstdropindex, TBaseType.rrw_drop,"hash","index"," "," "," "," ");
1017    addteradatacmds(ESqlStatementType.sstdropindex, TBaseType.rrw_drop,"index"," "," "," "," "," ");
1018    addteradatacmds(ESqlStatementType.sstdropindex, TBaseType.rrw_drop,"join","index"," "," "," "," ");
1019
1020    addteradatacmds(ESqlStatementType.sstteradatadropmacro, TBaseType.rrw_drop,"macro"," "," "," "," "," ");
1021
1022    addteradatacmds(ESqlStatementType.sstteradatadropordering, TBaseType.rrw_drop,"ordering"," "," "," "," "," ");
1023
1024    addteradatacmds(ESqlStatementType.sstteradatadropprocedure, TBaseType.rrw_drop,"procedure"," "," "," "," "," ");
1025
1026    addteradatacmds(ESqlStatementType.sstteradatadropprofile, TBaseType.rrw_drop,"profile"," "," "," "," "," ");
1027
1028    addteradatacmds(ESqlStatementType.sstteradatadropreplicationgroup, TBaseType.rrw_drop,"replication","group"," "," "," "," ");
1029
1030    addteradatacmds(ESqlStatementType.sstteradatadroprole, TBaseType.rrw_drop,"role"," "," "," "," "," ");
1031
1032    addteradatacmds(ESqlStatementType.sstteradatadropfunction, TBaseType.rrw_drop,"specific","function"," "," "," "," ");
1033
1034    addteradatacmds(ESqlStatementType.sstteradatadropstatistics, TBaseType.rrw_drop,"stat"," "," "," "," "," ");
1035    addteradatacmds(ESqlStatementType.sstteradatadropstatistics, TBaseType.rrw_drop,"statistics"," "," "," "," "," ");
1036    addteradatacmds(ESqlStatementType.sstteradatadropstatistics, TBaseType.rrw_drop,"stats"," "," "," "," "," ");
1037
1038    addteradatacmds(ESqlStatementType.sstdroptable, TBaseType.rrw_drop,"table"," "," "," "," "," ");
1039    addteradatacmds(ESqlStatementType.sstdroptable, TBaseType.rrw_drop,"temporary","table"," "," "," "," ");
1040
1041    addteradatacmds(ESqlStatementType.sstteradatadroptransform, TBaseType.rrw_drop,"transform"," "," "," "," "," ");
1042
1043    addteradatacmds(ESqlStatementType.sstteradatadroptrigger, TBaseType.rrw_drop,"trigger"," "," "," "," "," ");
1044
1045    addteradatacmds(ESqlStatementType.sstteradatadroptype, TBaseType.rrw_drop,"type"," "," "," "," "," ");
1046    addteradatacmds(ESqlStatementType.sstdropindex, TBaseType.rrw_drop,"unique","index"," "," "," "," ");
1047
1048    addteradatacmds(ESqlStatementType.sstteradatadropuser, TBaseType.rrw_drop,"user"," "," "," "," "," ");
1049
1050    addteradatacmds(ESqlStatementType.sstdropview, TBaseType.rrw_drop,"view"," "," "," "," "," ");
1051
1052    addteradatacmds(ESqlStatementType.sstteradatadropzone, TBaseType.rrw_drop,"zone"," "," "," "," "," ");
1053
1054    addteradatacmds(ESqlStatementType.sstteradatadumpexplain, TBaseType.rrw_teradata_dump,"explain"," "," "," "," "," ");
1055
1056    addteradatacmds(ESqlStatementType.sstteradataecho, TBaseType.rrw_teradata_echo," "," "," "," "," "," ");
1057
1058    addteradatacmds(ESqlStatementType.sstteradataenddeclaresection, TBaseType.rrw_end,"declare","section"," "," "," "," ");
1059
1060    addteradatacmds(ESqlStatementType.sstteradataendlogging, TBaseType.rrw_end,"logging"," "," "," "," "," ");
1061
1062    addteradatacmds(ESqlStatementType.sstteradataendquerylogging, TBaseType.rrw_end,"query","logging"," "," "," "," ");
1063
1064    addteradatacmds(ESqlStatementType.sstteradataendtransaction, TBaseType.rrw_end,"transaction"," "," "," "," "," ");
1065
1066    addteradatacmds(ESqlStatementType.sstteradataendtransaction, TBaseType.rrw_et," "," "," "," "," "," ");
1067    addteradatacmds(ESqlStatementType.sstteradataendrequest, TBaseType.rrw_end,"request"," "," "," "," "," ");
1068
1069    addteradatacmds(ESqlStatementType.sstteradataexecute, TBaseType.rrw_execute," "," "," "," "," "," ");
1070
1071    addteradatacmds(ESqlStatementType.sstteradataexecute, TBaseType.rrw_exec," "," "," "," "," "," ");
1072
1073    addteradatacmds(ESqlStatementType.sstteradataexecuteimmediate, TBaseType.rrw_execute,"immediate"," "," "," "," "," ");
1074
1075    addteradatacmds(ESqlStatementType.sstteradataExit, TBaseType.rrw_teradata_exit," "," "," "," "," "," ");
1076
1077    addteradatacmds(ESqlStatementType.sstExplain, TBaseType.rrw_explain, " ", " ", " ", " ", " ", " ");
1078
1079
1080    addteradatacmds(ESqlStatementType.sstteradatafetch, TBaseType.rrw_fetch," "," "," "," "," "," ");
1081
1082    addteradatacmds(ESqlStatementType.sstteradatagetcrash, TBaseType.rrw_get,"crash"," "," "," "," "," ");
1083
1084    addteradatacmds(ESqlStatementType.sstgetdiagnostics, TBaseType.rrw_get,"diagnostics"," "," "," "," "," ");
1085
1086    addteradatacmds(ESqlStatementType.sstteradatagive, TBaseType.rrw_teradata_give," "," "," "," "," "," ");
1087
1088    addteradatacmds(ESqlStatementType.sstteradatagrant, TBaseType.rrw_grant," "," "," "," "," "," ");
1089
1090    addteradatacmds(ESqlStatementType.sstteradatahelp, TBaseType.rrw_teradata_help," "," "," "," "," "," ");
1091
1092    addteradatacmds(ESqlStatementType.sstteradatainclude, TBaseType.rrw_include," "," "," "," "," "," ");
1093
1094    addteradatacmds(ESqlStatementType.sstinsert, TBaseType.rrw_teradata_ins," "," "," "," "," "," ");
1095
1096    addteradatacmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert," "," "," "," "," "," ");
1097
1098    addteradatacmds(ESqlStatementType.sstteradatainsertexplain, TBaseType.rrw_insert,"explain"," "," "," "," "," ");
1099
1100    addteradatacmds(ESqlStatementType.sstteradatalabel, TBaseType.rrw_teradata_label," "," "," "," "," "," ");
1101    addteradatacmds(ESqlStatementType.sstteradatalock, TBaseType.rrw_lock," "," "," "," "," "," ");
1102    addteradatacmds(ESqlStatementType.sstteradatalock, TBaseType.rrw_teradata_locking," "," "," "," "," "," ");
1103    addteradatacmds(ESqlStatementType.sstteradatalogon, TBaseType.rrw_teradata_logon," "," "," "," "," "," ");
1104
1105    addteradatacmds(ESqlStatementType.sstmerge, TBaseType.rrw_merge," "," "," "," "," "," ");
1106
1107    addteradatacmds(ESqlStatementType.sstteradatamodifydatabase, TBaseType.rrw_teradata_modify,"database"," "," "," "," "," ");
1108
1109    addteradatacmds(ESqlStatementType.sstteradatamodifyprofile, TBaseType.rrw_teradata_modify,"profile"," "," "," "," "," ");
1110
1111    addteradatacmds(ESqlStatementType.sstteradatamodifyuser, TBaseType.rrw_teradata_modify,"user"," "," "," "," "," ");
1112
1113    addteradatacmds(ESqlStatementType.sstteradataopen, TBaseType.rrw_open," "," "," "," "," "," ");
1114
1115    addteradatacmds(ESqlStatementType.sstteradataposition, TBaseType.rrw_teradata_position," "," "," "," "," "," ");
1116
1117    addteradatacmds(ESqlStatementType.sstteradataprepare, TBaseType.rrw_prepare," "," "," "," "," "," ");
1118
1119    addteradatacmds(ESqlStatementType.sstteradatareleaseLock, TBaseType.rrw_release,"lock"," "," "," "," "," ");
1120
1121    addteradatacmds(ESqlStatementType.sstteradatarenamefunction, TBaseType.rrw_rename,"function"," "," "," "," "," ");
1122    addteradatacmds(ESqlStatementType.sstteradatarenamemacro, TBaseType.rrw_rename,"macro"," "," "," "," "," ");
1123    addteradatacmds(ESqlStatementType.sstteradatarenameprocedure, TBaseType.rrw_rename,"procedure"," "," "," "," "," ");
1124    addteradatacmds(ESqlStatementType.sstteradatarenametable, TBaseType.rrw_rename,"table"," "," "," "," "," ");
1125    addteradatacmds(ESqlStatementType.sstteradatarenametrigger, TBaseType.rrw_rename,"trigger"," "," "," "," "," ");
1126    addteradatacmds(ESqlStatementType.sstteradatarenameview, TBaseType.rrw_rename,"view"," "," "," "," "," ");
1127
1128    addteradatacmds(ESqlStatementType.sstteradatareplacecast, TBaseType.rrw_replace,"cast"," "," "," "," "," ");
1129
1130    addteradatacmds(ESqlStatementType.sstteradatareplacemethod, TBaseType.rrw_replace,"constructor","method"," "," "," "," ");
1131
1132    addteradatacmds(ESqlStatementType.sstteradatareplacefunction, TBaseType.rrw_replace,"function"," "," "," "," "," ");
1133
1134    addteradatacmds(ESqlStatementType.sstteradatareplacemethod, TBaseType.rrw_replace,"instance","method"," "," "," "," ");
1135
1136    addteradatacmds(ESqlStatementType.sstteradatareplacemacro, TBaseType.rrw_replace,"macro"," "," "," "," "," ");
1137
1138    addteradatacmds(ESqlStatementType.sstteradatareplacemethod, TBaseType.rrw_replace,"method"," "," "," "," "," ");
1139
1140    addteradatacmds(ESqlStatementType.sstteradatareplaceordering, TBaseType.rrw_replace,"ordering"," "," "," "," "," ");
1141
1142    addteradatacmds(ESqlStatementType.sstteradatareplaceprocedure, TBaseType.rrw_replace,"procedure"," "," "," "," "," ");
1143
1144    addteradatacmds(ESqlStatementType.sstteradatareplacemethod, TBaseType.rrw_replace,"specific","method"," "," "," "," ");
1145
1146    addteradatacmds(ESqlStatementType.sstteradatareplacetransform, TBaseType.rrw_replace,"transform"," "," "," "," "," ");
1147
1148    addteradatacmds(ESqlStatementType.sstteradatacreatetrigger, TBaseType.rrw_replace,"trigger"," "," "," "," "," ");
1149
1150    addteradatacmds(ESqlStatementType.sstteradatareplaceview, TBaseType.rrw_replace,"view"," "," "," "," "," ");
1151    addteradatacmds(ESqlStatementType.sstteradatareplaceview, TBaseType.rrw_replace,"recursive","view"," "," "," "," ");
1152
1153    addteradatacmds(ESqlStatementType.sstteradatarestartindexanalysis, TBaseType.rrw_teradata_restart,"index","analysis"," "," "," "," ");
1154
1155    addteradatacmds(ESqlStatementType.sstteradatarevoke, TBaseType.rrw_revoke," "," "," "," "," "," ");
1156
1157    // addteradatacmds(ESqlStatementType.sstteradatarewind, TBaseType.rrw_rewind," "," "," "," "," "," ");
1158
1159    addteradatacmds(ESqlStatementType.sstteradatarollback, TBaseType.rrw_rollback," "," "," "," "," "," ");
1160
1161    addteradatacmds(ESqlStatementType.sstselect, TBaseType.rrw_teradata_sel," "," "," "," "," "," ");
1162    addteradatacmds(ESqlStatementType.sstselect, TBaseType.rrw_select," "," "," "," "," "," ");
1163
1164    //addteradatacmds(ESqlStatementType.sstsetbuffersize, TBaseType.rrw_set,"buffersize"," "," "," "," "," ");
1165    addteradatacmds(ESqlStatementType.sstteradatasetrole, TBaseType.rrw_set,"role"," "," "," "," "," ");
1166
1167    addteradatacmds(ESqlStatementType.sstteradatasetsession, TBaseType.rrw_set,"session"," "," "," "," "," ");
1168    addteradatacmds(ESqlStatementType.sstteradatasetsession, TBaseType.rrw_ss," "," "," "," "," "," ");
1169//    addteradatacmds(ESqlStatementType.sstteradatasetsessionaccount, TBaseType.rrw_set,"session","account"," "," "," "," ");
1170
1171    addteradatacmds(ESqlStatementType.sstteradatasettimezone, TBaseType.rrw_set,"time","zone"," "," "," "," ");
1172
1173    addteradatacmds(ESqlStatementType.sstteradatashow, TBaseType.rrw_show," "," "," "," "," "," ");
1174
1175    addteradatacmds(ESqlStatementType.sstteradatashowmethod, TBaseType.rrw_show,"constructor","method"," "," "," "," ");
1176
1177    addteradatacmds(ESqlStatementType.sstteradatashowfunction, TBaseType.rrw_show,"function"," "," "," "," "," ");
1178
1179    addteradatacmds(ESqlStatementType.sstteradatashowindex, TBaseType.rrw_show,"hash","index"," "," "," "," ");
1180
1181    addteradatacmds(ESqlStatementType.sstteradatashowmethod, TBaseType.rrw_show,"instance","method"," "," "," "," ");
1182
1183    addteradatacmds(ESqlStatementType.sstteradatashowindex, TBaseType.rrw_show,"join","index"," "," "," "," ");
1184
1185    addteradatacmds(ESqlStatementType.sstteradatashowmacro, TBaseType.rrw_show,"macro"," "," "," "," "," ");
1186
1187    addteradatacmds(ESqlStatementType.sstteradatashowmethod, TBaseType.rrw_show,"method"," "," "," "," "," ");
1188
1189    addteradatacmds(ESqlStatementType.sstteradatashowprocedure, TBaseType.rrw_show,"procedure"," "," "," "," "," ");
1190
1191    addteradatacmds(ESqlStatementType.sstteradatashowreplicationgroup, TBaseType.rrw_show,"replication","group"," "," "," "," ");
1192
1193    addteradatacmds(ESqlStatementType.sstteradatashowfunction, TBaseType.rrw_show,"specific","function"," "," "," "," ");
1194    addteradatacmds(ESqlStatementType.sstteradatashowmethod, TBaseType.rrw_show,"specific","method"," "," "," "," ");
1195
1196    addteradatacmds(ESqlStatementType.sstteradatashowtable, TBaseType.rrw_show,"table "," "," "," "," "," ");
1197    addteradatacmds(ESqlStatementType.sstteradatashowtable, TBaseType.rrw_show,"temporary","table"," "," "," "," ");
1198
1199    addteradatacmds(ESqlStatementType.sstteradatashowtrigger, TBaseType.rrw_show,"trigger"," "," "," "," "," ");
1200    addteradatacmds(ESqlStatementType.sstteradatashowtype, TBaseType.rrw_show,"type"," "," "," "," "," ");
1201    addteradatacmds(ESqlStatementType.sstteradatashowview, TBaseType.rrw_show,"view"," "," "," "," "," ");
1202
1203    //addteradatacmds(ESqlStatementType.sstteradatatest, TBaseType.rrw_test," "," "," "," "," "," ");
1204    addteradatacmds(ESqlStatementType.sstupdate, TBaseType.rrw_teradata_upd," "," "," "," "," "," ");
1205    addteradatacmds(ESqlStatementType.sstupdate, TBaseType.rrw_update," "," "," "," "," "," ");
1206
1207    addteradatacmds(ESqlStatementType.sstteradatausing, TBaseType.rrw_teradata_using," "," "," "," "," "," ");
1208
1209    addteradatacmds(ESqlStatementType.sstteradatawait, TBaseType.rrw_teradata_wait," "," "," "," "," "," ");
1210    //addteradatacmds(ESqlStatementType.sstteradatawhenever, TBaseType.rrw_whenever," "," "," "," "," "," ");
1211
1212}
1213
1214 void inithivecmds(){
1215     addhivecmds(ESqlStatementType.sstalterdatabase, TBaseType.rrw_alter,  "database"," "," "," "," "," ");
1216     addhivecmds(ESqlStatementType.sstalterindex, TBaseType.rrw_alter,  "index"," "," "," "," "," ");
1217     addhivecmds(ESqlStatementType.sstaltertable, TBaseType.rrw_alter,  "table"," "," "," "," "," ");
1218     addhivecmds(ESqlStatementType.sstalterview, TBaseType.rrw_alter,  "view"," "," "," "," "," ");
1219     addhivecmds(ESqlStatementType.sstanalyzeTable, TBaseType.rrw_analyze,  "table"," "," "," "," "," ");
1220
1221
1222     addhivecmds(ESqlStatementType.sstcreatedatabase, TBaseType.rrw_create,  "database"," "," "," "," "," ");
1223     addhivecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,  "external","table"," "," "," "," ");
1224     addhivecmds(ESqlStatementType.ssthiveCreateFunction, TBaseType.rrw_create,  "function"," "," "," "," "," ");
1225     addhivecmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,  "index"," "," "," "," "," ");
1226     addhivecmds(ESqlStatementType.sstcreatematerializedview, TBaseType.rrw_create,"materialized","view"," "," "," "," ");
1227
1228     addhivecmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,  "or","replace","view"," "," "," ");
1229     addhivecmds(ESqlStatementType.ssthiveCreateRole, TBaseType.rrw_create,  "role"," "," "," "," "," ");
1230     addhivecmds(ESqlStatementType.sstcreatedatabase, TBaseType.rrw_create,  "schema"," "," "," "," "," ");
1231     addhivecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,  "table"," "," "," "," "," ");
1232     addhivecmds(ESqlStatementType.ssthiveCreateFunction, TBaseType.rrw_create,  "temporary","function"," "," "," "," ");
1233     addhivecmds(ESqlStatementType.sstCreateMacro, TBaseType.rrw_create,  "temporary","macro"," "," "," "," ");
1234     addhivecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,  "temporary","table"," "," "," "," ");
1235     addhivecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,  "transactional","table"," "," "," "," ");
1236     addhivecmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,  "view"," "," "," "," "," ");
1237
1238     addhivecmds(ESqlStatementType.sstdelete, TBaseType.rrw_delete," "," "," "," "," "," ");
1239     addhivecmds(ESqlStatementType.ssthiveDesc, TBaseType.rrw_hive_desc,  " "," "," "," "," "," ");
1240
1241     addhivecmds(ESqlStatementType.ssthiveDesc, TBaseType.rrw_describe,  " "," "," "," "," "," ");
1242
1243     addhivecmds(ESqlStatementType.ssthiveDropDatabase, TBaseType.rrw_drop,  "database"," "," "," "," "," ");
1244     addhivecmds(ESqlStatementType.sstdropindex, TBaseType.rrw_drop,  "index"," "," "," "," "," ");
1245     addhivecmds(ESqlStatementType.ssthiveDropRole, TBaseType.rrw_drop,  "role"," "," "," "," "," ");
1246     addhivecmds(ESqlStatementType.ssthiveDropDatabase, TBaseType.rrw_drop,  "schema"," "," "," "," "," ");
1247     addhivecmds(ESqlStatementType.sstdroptable, TBaseType.rrw_drop,  "table"," "," "," "," "," ");
1248     addhivecmds(ESqlStatementType.ssthiveDropFunciton, TBaseType.rrw_drop,  "temporary","function"," "," "," "," ");
1249     addhivecmds(ESqlStatementType.sstDropMacro, TBaseType.rrw_drop,  "temporary","macro"," "," "," "," ");
1250     addhivecmds(ESqlStatementType.sstdropview, TBaseType.rrw_drop,  "view"," "," "," "," "," ");
1251
1252     addhivecmds(ESqlStatementType.ssthiveExplain, TBaseType.rrw_explain,  " "," "," "," "," "," ");
1253
1254     addhivecmds(ESqlStatementType.ssthiveExportTable, TBaseType.rrw_hive_export,  "table"," "," "," "," "," ");
1255
1256     addhivecmds(ESqlStatementType.ssthiveGrant, TBaseType.rrw_grant,  " "," "," "," "," "," ");
1257     addhivecmds(ESqlStatementType.ssthiveGrantRole, TBaseType.rrw_grant,  "role"," "," "," "," "," ");
1258
1259     addhivecmds(ESqlStatementType.ssthiveImportTable, TBaseType.rrw_hive_import,  "external","table"," "," "," "," ");
1260     addhivecmds(ESqlStatementType.ssthiveImportTable, TBaseType.rrw_hive_import,  "from"," "," "," "," "," ");
1261     addhivecmds(ESqlStatementType.ssthiveImportTable, TBaseType.rrw_hive_import,  "table"," "," "," "," "," ");
1262
1263     addhivecmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert,  " "," "," "," "," "," ");
1264
1265
1266     addhivecmds(ESqlStatementType.ssthiveLoad, TBaseType.rrw_load,  "data"," "," "," "," "," ");
1267
1268     addhivecmds(ESqlStatementType.ssthiveLockTable, TBaseType.rrw_lock,  "table"," "," "," "," "," ");
1269
1270     //merge
1271     addhivecmds(ESqlStatementType.sstmerge, TBaseType.rrw_merge," "," "," "," "," "," ");
1272
1273     addhivecmds(ESqlStatementType.sstmsck, TBaseType.rrw_hive_msck,  " "," "," "," "," "," ");
1274
1275     addhivecmds(ESqlStatementType.ssthiveRevoke, TBaseType.rrw_revoke,  " "," "," "," "," "," ");
1276     addhivecmds(ESqlStatementType.ssthiveRevokeRole, TBaseType.rrw_revoke,  "role"," "," "," "," "," ");
1277
1278     addhivecmds(ESqlStatementType.sstselect, TBaseType.rrw_select,  " "," "," "," "," "," ");
1279     addhivecmds(ESqlStatementType.ssthiveSet, TBaseType.rrw_set,  " "," "," "," "," "," ");
1280     addhivecmds(ESqlStatementType.ssthiveShow, TBaseType.rrw_show,  " "," "," "," "," "," ");
1281     addhivecmds(ESqlStatementType.ssthiveShowGrants, TBaseType.rrw_show,  "grant"," "," "," "," "," ");
1282     addhivecmds(ESqlStatementType.ssthiveShowRoleGrants, TBaseType.rrw_show,  "role","grant"," "," "," "," ");
1283
1284     addhivecmds(ESqlStatementType.sstTruncate, TBaseType.rrw_truncate,  "table"," "," "," "," "," ");
1285
1286     addhivecmds(ESqlStatementType.ssthiveUnlockTable, TBaseType.rrw_unlock,  "table"," "," "," "," "," ");
1287     addhivecmds(ESqlStatementType.sstupdate, TBaseType.rrw_update," "," "," "," "," "," ");
1288     addhivecmds(ESqlStatementType.sstupsert, TBaseType.rrw_hive_upsert, " ", " ", " ", " ", " ", " ");
1289     addhivecmds(ESqlStatementType.ssthiveSwitchDatabase, TBaseType.rrw_use,  " "," "," "," "," "," ");
1290 }
1291
1292    void initdatabrickscmds(){
1293        adddatabrickscmds(ESqlStatementType.sstaddAchieve, TBaseType.rrw_add,  "archive"," "," "," "," "," ");
1294        adddatabrickscmds(ESqlStatementType.sstaddAchieve, TBaseType.rrw_add,  "archives"," "," "," "," "," ");
1295        adddatabrickscmds(ESqlStatementType.sstaltercatalog, TBaseType.rrw_alter,  "catalog"," "," "," "," "," ");
1296        adddatabrickscmds(ESqlStatementType.sstalterdatabase, TBaseType.rrw_alter,  "database"," "," "," "," "," ");
1297        adddatabrickscmds(ESqlStatementType.sstalterlocation, TBaseType.rrw_alter,  "external","location"," "," "," "," ");
1298        adddatabrickscmds(ESqlStatementType.sstAlterGroup, TBaseType.rrw_alter,  "group"," "," "," "," "," ");
1299        adddatabrickscmds(ESqlStatementType.sstalterprovider, TBaseType.rrw_alter,  "provider"," "," "," "," "," ");
1300        adddatabrickscmds(ESqlStatementType.sstalterrecipient, TBaseType.rrw_alter,  "recipient"," "," "," "," "," ");
1301        adddatabrickscmds(ESqlStatementType.sstAlterSchema, TBaseType.rrw_alter,  "schema"," "," "," "," "," ");
1302        adddatabrickscmds(ESqlStatementType.sstAltershare, TBaseType.rrw_alter,  "share"," "," "," "," "," ");
1303        adddatabrickscmds(ESqlStatementType.sstaltercredental, TBaseType.rrw_alter,  "storage","credential"," "," "," "," ");
1304        adddatabrickscmds(ESqlStatementType.sstaltertable, TBaseType.rrw_alter,  "table"," "," "," "," "," ");
1305        adddatabrickscmds(ESqlStatementType.sstalterview, TBaseType.rrw_alter,  "view"," "," "," "," "," ");
1306        adddatabrickscmds(ESqlStatementType.sstAnalyzeTable, TBaseType.rrw_analyze,  "table"," "," "," "," "," ");
1307        adddatabrickscmds(ESqlStatementType.sstAnalyzeTable, TBaseType.rrw_analyze,  "tables"," "," "," "," "," ");
1308        adddatabrickscmds(ESqlStatementType.sstCacheSelect, TBaseType.rrw_cache,  "select"," "," "," "," "," ");
1309        adddatabrickscmds(ESqlStatementType.sstClearCache, TBaseType.rrw_clear,  "cache"," "," "," "," "," ");
1310        adddatabrickscmds(ESqlStatementType.sstCommentOn, TBaseType.rrw_comment,  "on"," "," "," "," "," ");
1311        adddatabrickscmds(ESqlStatementType.sstConvertToDelta, TBaseType.rrw_databricks_convert,  "to","delta"," "," "," "," ");
1312        adddatabrickscmds(ESqlStatementType.sstCopyInto, TBaseType.rrw_databricks_copy,  "into"," "," "," "," "," ");
1313        adddatabrickscmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,  "bloomfilter","index"," "," "," "," ");
1314        adddatabrickscmds(ESqlStatementType.sstcreatecatalog, TBaseType.rrw_create,  "catalog"," "," "," "," "," ");
1315        adddatabrickscmds(ESqlStatementType.sstcreatedatabase, TBaseType.rrw_create,  "database"," "," "," "," "," ");
1316        adddatabrickscmds(ESqlStatementType.sstCreateExternallocation, TBaseType.rrw_create,  "external","location"," "," "," "," ");
1317        adddatabrickscmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create,  "function"," "," "," "," "," ");
1318        adddatabrickscmds(ESqlStatementType.sstCreategroup, TBaseType.rrw_create,  "group"," "," "," "," "," ");
1319        adddatabrickscmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create,  "or","replace","function"," "," "," ");
1320        adddatabrickscmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,  "or","replace","table"," "," "," ");
1321        adddatabrickscmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create,  "or","replace","temp","function"," "," ");
1322        adddatabrickscmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,  "or","replace","temp","view"," "," ");
1323        adddatabrickscmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create,  "or","replace","temporary","function"," "," ");
1324        adddatabrickscmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,  "or","replace","temporary","view"," "," ");
1325        adddatabrickscmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,  "or","replace","view"," "," ", " ");
1326        adddatabrickscmds(ESqlStatementType.sstcreaterecipient, TBaseType.rrw_create,  "recipient"," "," "," "," "," ");
1327        adddatabrickscmds(ESqlStatementType.sstcreateschema, TBaseType.rrw_create,  "schema"," "," "," "," "," ");
1328        adddatabrickscmds(ESqlStatementType.sstcreateshare, TBaseType.rrw_create,  "share"," "," "," "," "," ");
1329        adddatabrickscmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create,  "temp","function"," "," "," "," ");
1330        adddatabrickscmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create,  "temporary","function"," "," "," "," ");
1331        adddatabrickscmds(ESqlStatementType.sstcreaterole, TBaseType.rrw_create,  "role"," "," "," "," "," ");
1332        adddatabrickscmds(ESqlStatementType.sstcreateschema, TBaseType.rrw_create,  "schema"," "," "," "," "," ");
1333        adddatabrickscmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,  "table"," "," "," "," "," ");
1334        adddatabrickscmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,  "view"," "," "," "," "," ");
1335        adddatabrickscmds(ESqlStatementType.sstdelete, TBaseType.rrw_delete,  "from"," "," "," "," "," ");
1336        adddatabrickscmds(ESqlStatementType.sstDeny, TBaseType.rrw_deny,  " "," "," "," "," "," ");
1337        adddatabrickscmds(ESqlStatementType.sstdescribe, TBaseType.rrw_databricks_desc,  " "," "," "," "," "," ");
1338        adddatabrickscmds(ESqlStatementType.sstdescribeCatalog, TBaseType.rrw_databricks_desc,  "catalog"," "," "," "," "," ");
1339        adddatabrickscmds(ESqlStatementType.sstdescribeFunction, TBaseType.rrw_databricks_desc,  "function"," "," "," "," "," ");
1340        adddatabrickscmds(ESqlStatementType.sstdescribeProvider, TBaseType.rrw_databricks_desc,  "provider"," "," "," "," "," ");
1341        adddatabrickscmds(ESqlStatementType.sstdescribeQuery, TBaseType.rrw_databricks_desc,  "query"," "," "," "," "," ");
1342        adddatabrickscmds(ESqlStatementType.sstdescribeRecipient, TBaseType.rrw_databricks_desc,  "recipient"," "," "," "," "," ");
1343        adddatabrickscmds(ESqlStatementType.sstdescribeSchema, TBaseType.rrw_databricks_desc,  "schema"," "," "," "," "," ");
1344        adddatabrickscmds(ESqlStatementType.sstdescribeShare, TBaseType.rrw_databricks_desc,  "share"," "," "," "," "," ");
1345        adddatabrickscmds(ESqlStatementType.sstdescribeTable, TBaseType.rrw_databricks_desc,  "table"," "," "," "," "," ");
1346        adddatabrickscmds(ESqlStatementType.sstdescribe, TBaseType.rrw_describe,  " "," "," "," "," "," ");
1347        adddatabrickscmds(ESqlStatementType.sstdescribeCatalog, TBaseType.rrw_describe,  "catalog"," "," "," "," "," ");
1348        adddatabrickscmds(ESqlStatementType.sstdescribeDatabase, TBaseType.rrw_describe,  "database"," "," "," "," "," ");
1349        adddatabrickscmds(ESqlStatementType.sstdescribeLocation, TBaseType.rrw_describe,  "external","location"," "," "," "," ");
1350        adddatabrickscmds(ESqlStatementType.sstdescribeFunction, TBaseType.rrw_describe,  "function"," "," "," "," "," ");
1351        adddatabrickscmds(ESqlStatementType.sstdescribeProvider, TBaseType.rrw_describe,  "provider"," "," "," "," "," ");
1352        adddatabrickscmds(ESqlStatementType.sstdescribeQuery, TBaseType.rrw_describe,  "query"," "," "," "," "," ");
1353        adddatabrickscmds(ESqlStatementType.sstdescribeRecipient, TBaseType.rrw_describe,  "recipient"," "," "," "," "," ");
1354        adddatabrickscmds(ESqlStatementType.sstdescribeSchema, TBaseType.rrw_describe,  "schema"," "," "," "," "," ");
1355        adddatabrickscmds(ESqlStatementType.sstdescribeShare, TBaseType.rrw_describe,  "share"," "," "," "," "," ");
1356        adddatabrickscmds(ESqlStatementType.sstdescribeCredential, TBaseType.rrw_describe,  "storage","credential"," "," "," "," ");
1357        adddatabrickscmds(ESqlStatementType.sstdescribeTable, TBaseType.rrw_describe,  "table"," "," "," "," "," ");
1358        adddatabrickscmds(ESqlStatementType.sstdropindex, TBaseType.rrw_drop,  "bloomfilter","index"," "," "," "," ");
1359        adddatabrickscmds(ESqlStatementType.sstdropcatalog, TBaseType.rrw_drop,  "catalog"," "," "," "," "," ");
1360        adddatabrickscmds(ESqlStatementType.sstdropdatabase, TBaseType.rrw_drop,  "database"," "," "," "," "," ");
1361        adddatabrickscmds(ESqlStatementType.sstdroplocation, TBaseType.rrw_drop,  "external","location"," "," "," "," ");
1362        adddatabrickscmds(ESqlStatementType.sstdropfunction, TBaseType.rrw_drop,  "function"," "," "," "," "," ");
1363        adddatabrickscmds(ESqlStatementType.sstDropGroup, TBaseType.rrw_drop,  "group"," "," "," "," "," ");
1364        adddatabrickscmds(ESqlStatementType.sstdropprovider, TBaseType.rrw_drop,  "provider"," "," "," "," "," ");
1365        adddatabrickscmds(ESqlStatementType.sstdroprecipient, TBaseType.rrw_drop,  "recipient"," "," "," "," "," ");
1366        adddatabrickscmds(ESqlStatementType.sstdropschema, TBaseType.rrw_drop,  "schema"," "," "," "," "," ");
1367        adddatabrickscmds(ESqlStatementType.sstdropshare, TBaseType.rrw_drop,  "share"," "," "," "," "," ");
1368        adddatabrickscmds(ESqlStatementType.sstdropcredential, TBaseType.rrw_drop,  "storage","credential"," "," "," "," ");
1369        adddatabrickscmds(ESqlStatementType.sstdropfunction, TBaseType.rrw_drop,  "temp","function"," "," "," "," ");
1370        adddatabrickscmds(ESqlStatementType.sstdropfunction, TBaseType.rrw_drop,  "temporary","function"," "," "," "," ");
1371        adddatabrickscmds(ESqlStatementType.sstdroptable, TBaseType.rrw_drop,  "table"," "," "," "," "," ");
1372        adddatabrickscmds(ESqlStatementType.sstdropview, TBaseType.rrw_drop,  "view"," "," "," "," "," ");
1373        adddatabrickscmds(ESqlStatementType.sstExplain, TBaseType.rrw_explain,  " "," "," "," "," "," ");
1374        adddatabrickscmds(ESqlStatementType.sstmsckrepairtable, TBaseType.rrw_databricks_fsck,  "repair"," "," "," "," "," ");
1375        adddatabrickscmds(ESqlStatementType.sstGrant, TBaseType.rrw_grant,  " "," "," "," "," "," ");
1376        adddatabrickscmds(ESqlStatementType.sstGrant, TBaseType.rrw_grant,  "select","on","share"," "," "," ");
1377        adddatabrickscmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert,  " "," "," "," "," "," ");
1378        adddatabrickscmds(ESqlStatementType.sstList, TBaseType.rrw_databricks_list,  " "," "," "," "," "," ");
1379        adddatabrickscmds(ESqlStatementType.sstLoadData, TBaseType.rrw_load,  "data"," "," "," "," "," ");
1380        adddatabrickscmds(ESqlStatementType.sstmerge, TBaseType.rrw_merge,  "into"," "," "," "," "," ");
1381        adddatabrickscmds(ESqlStatementType.sstmsckrepairtable, TBaseType.rrw_databricks_msck,  "repair"," "," "," "," "," ");
1382        adddatabrickscmds(ESqlStatementType.sstmsckrepairtable, TBaseType.rrw_databricks_msck,  "repair","table"," "," "," "," ");
1383        adddatabrickscmds(ESqlStatementType.sstOptimize, TBaseType.rrw_optimize,  " "," "," "," "," "," ");
1384        adddatabrickscmds(ESqlStatementType.sstRefresh, TBaseType.rrw_refresh,  " "," "," "," "," "," ");
1385        adddatabrickscmds(ESqlStatementType.sstRefreshFunction, TBaseType.rrw_refresh,  "function"," "," "," "," "," ");
1386        adddatabrickscmds(ESqlStatementType.sstRefreshTable, TBaseType.rrw_refresh,  "table"," "," "," "," "," ");
1387        adddatabrickscmds(ESqlStatementType.sstReorgTable, TBaseType.rrw_databricks_reorg,  "table"," "," "," "," "," ");
1388        adddatabrickscmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_replace,  "table"," "," "," "," "," ");
1389        adddatabrickscmds(ESqlStatementType.sstReset, TBaseType.rrw_reset,  " "," "," "," "," "," ");
1390        adddatabrickscmds(ESqlStatementType.sstRestoreTable, TBaseType.rrw_restore,  " "," "," "," "," "," ");
1391        adddatabrickscmds(ESqlStatementType.sstRevoke, TBaseType.rrw_revoke,  " "," "," "," "," "," ");
1392        adddatabrickscmds(ESqlStatementType.sstRevoke, TBaseType.rrw_revoke,  "select","on","share"," "," "," ");
1393        adddatabrickscmds(ESqlStatementType.sstset, TBaseType.rrw_set,  " "," "," "," "," "," ");
1394        adddatabrickscmds(ESqlStatementType.sstUseCatalog, TBaseType.rrw_set,  "catalog"," "," "," "," "," ");
1395        adddatabrickscmds(ESqlStatementType.sstset, TBaseType.rrw_set,  "time","zone"," "," "," "," ");
1396        adddatabrickscmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "all","functions"," "," "," "," ");
1397        adddatabrickscmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "all","in","share"," "," "," ");
1398        adddatabrickscmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "catalogs"," "," "," "," "," ");
1399        adddatabrickscmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "columns"," "," "," "," "," ");
1400        adddatabrickscmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "create","table"," "," "," "," ");
1401        adddatabrickscmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "external","locations"," "," "," "," ");
1402        adddatabrickscmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "functions"," "," "," "," "," ");
1403        adddatabrickscmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "grants"," "," "," "," "," ");
1404        adddatabrickscmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "grants","on","share"," "," "," ");
1405        adddatabrickscmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "grants","to","recipient"," "," "," ");
1406        adddatabrickscmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "groups"," "," "," "," "," ");
1407        adddatabrickscmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "partitions"," "," "," "," "," ");
1408        adddatabrickscmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "providers"," "," "," "," "," ");
1409        adddatabrickscmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "recipients"," "," "," "," "," ");
1410        adddatabrickscmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "schemas"," "," "," "," "," ");
1411        adddatabrickscmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "shares"," "," "," "," "," ");
1412        adddatabrickscmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "storage","credentials"," "," "," "," ");
1413        adddatabrickscmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "system","functions"," "," "," "," ");
1414        adddatabrickscmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "table","extended"," "," "," "," ");
1415        adddatabrickscmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "tables"," "," "," "," "," ");
1416        adddatabrickscmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "tblproperties"," "," "," "," "," ");
1417        adddatabrickscmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "user","functions"," "," "," "," ");
1418        adddatabrickscmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "users"," "," "," "," "," ");
1419        adddatabrickscmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "views"," "," "," "," "," ");
1420        adddatabrickscmds(ESqlStatementType.sstsync, TBaseType.rrw_databricks_sync,  "schema"," "," "," "," "," ");
1421        adddatabrickscmds(ESqlStatementType.sstsync, TBaseType.rrw_databricks_sync,  "table"," "," "," "," "," ");
1422        adddatabrickscmds(ESqlStatementType.ssttruncatetable, TBaseType.rrw_truncate,  "table"," "," "," "," "," ");
1423        adddatabrickscmds(ESqlStatementType.sstUnCacheTable, TBaseType.rrw_databricks_uncache,  "table"," "," "," "," "," ");
1424        adddatabrickscmds(ESqlStatementType.sstupdate, TBaseType.rrw_update,  " "," "," "," "," "," ");
1425        adddatabrickscmds(ESqlStatementType.sstUseSchema, TBaseType.rrw_use,  " "," "," "," "," "," ");
1426        adddatabrickscmds(ESqlStatementType.sstUseCatalog, TBaseType.rrw_use,  "catalog"," "," "," "," "," ");
1427        adddatabrickscmds(ESqlStatementType.sstUseSchema, TBaseType.rrw_use,  "database"," "," "," "," "," ");
1428        adddatabrickscmds(ESqlStatementType.sstUseSchema, TBaseType.rrw_use,  "schema"," "," "," "," "," ");
1429        adddatabrickscmds(ESqlStatementType.sstVacuum, TBaseType.rrw_databricks_vacuum,  " "," "," "," "," "," ");
1430
1431        adddatabrickscmds(ESqlStatementType.sstValues, TBaseType.rrw_values,  " "," "," "," "," "," ");
1432
1433        adddatabrickscmds(ESqlStatementType.sstGrant, TBaseType.rrw_grant,  " "," "," "," "," "," ");
1434        adddatabrickscmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert,  " "," "," "," "," "," ");
1435        adddatabrickscmds(ESqlStatementType.sstprepare, TBaseType.rrw_prepare,  " "," "," "," "," "," ");
1436        adddatabrickscmds(ESqlStatementType.sstcreaterole, TBaseType.rrw_replace,  "table"," "," "," "," "," ");
1437        adddatabrickscmds(ESqlStatementType.sstResetSession, TBaseType.rrw_reset,  "session"," "," "," "," "," ");
1438        adddatabrickscmds(ESqlStatementType.sstRevoke, TBaseType.rrw_revoke,  " "," "," "," "," "," ");
1439        adddatabrickscmds(ESqlStatementType.sstrollback, TBaseType.rrw_rollback,  " "," "," "," "," "," ");
1440        adddatabrickscmds(ESqlStatementType.sstselect, TBaseType.rrw_select,  " "," "," "," "," "," ");
1441        adddatabrickscmds(ESqlStatementType.sstset, TBaseType.rrw_set,  "role"," "," "," "," "," ");
1442        adddatabrickscmds(ESqlStatementType.sstset, TBaseType.rrw_set,  "session"," "," "," "," "," ");
1443
1444        adddatabrickscmds(ESqlStatementType.sstStartTransaction, TBaseType.rrw_start,  "transaction"," "," "," "," "," ");
1445
1446    }
1447    void initprestocmds(){
1448        addprestocmds(ESqlStatementType.sstalterfunction, TBaseType.rrw_alter,  "function"," "," "," "," "," ");
1449        addprestocmds(ESqlStatementType.sstAlterSchema, TBaseType.rrw_alter,  "schema"," "," "," "," "," ");
1450        addprestocmds(ESqlStatementType.sstaltertable, TBaseType.rrw_alter,  "table"," "," "," "," "," ");
1451        addprestocmds(ESqlStatementType.sstAnalyzeTable, TBaseType.rrw_analyze,  " "," "," "," "," "," ");
1452        addprestocmds(ESqlStatementType.sstcall, TBaseType.rrw_call,  " "," "," "," "," "," ");
1453        addprestocmds(ESqlStatementType.sstcommit, TBaseType.rrw_commit,  " "," "," "," "," "," ");
1454        addprestocmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create,  "function"," "," "," "," "," ");
1455        addprestocmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create,  "or","replace","function"," "," "," ");
1456        addprestocmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create,  "temporary","function"," "," "," "," ");
1457        addprestocmds(ESqlStatementType.sstcreaterole, TBaseType.rrw_create,  "role"," "," "," "," "," ");
1458        addprestocmds(ESqlStatementType.sstcreateschema, TBaseType.rrw_create,  "schema"," "," "," "," "," ");
1459        addprestocmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,  "table"," "," "," "," "," ");
1460        addprestocmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,  "view"," "," "," "," "," ");
1461        addprestocmds(ESqlStatementType.sstpostgresqlDeallocate, TBaseType.rrw_deallocate,  "prepare"," "," "," "," "," ");
1462        addprestocmds(ESqlStatementType.sstdelete, TBaseType.rrw_delete,  " "," "," "," "," "," ");
1463        addprestocmds(ESqlStatementType.sstdescribe, TBaseType.rrw_describe,  " "," "," "," "," "," ");
1464        addprestocmds(ESqlStatementType.sstdropfunction, TBaseType.rrw_drop,  "function"," "," "," "," "," ");
1465        addprestocmds(ESqlStatementType.sstdroprole, TBaseType.rrw_drop,  "role"," "," "," "," "," ");
1466        addprestocmds(ESqlStatementType.sstdropschema, TBaseType.rrw_drop,  "schema"," "," "," "," "," ");
1467        addprestocmds(ESqlStatementType.sstdroptable, TBaseType.rrw_drop,  "table"," "," "," "," "," ");
1468        addprestocmds(ESqlStatementType.sstdropview, TBaseType.rrw_drop,  "view"," "," "," "," "," ");
1469        addprestocmds(ESqlStatementType.sstExecute, TBaseType.rrw_execute,  " "," "," "," "," "," ");
1470        addprestocmds(ESqlStatementType.sstExplain, TBaseType.rrw_explain,  " "," "," "," "," "," ");
1471        addprestocmds(ESqlStatementType.sstGrant, TBaseType.rrw_grant,  " "," "," "," "," "," ");
1472        addprestocmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert,  " "," "," "," "," "," ");
1473        addprestocmds(ESqlStatementType.sstprepare, TBaseType.rrw_prepare,  " "," "," "," "," "," ");
1474        addprestocmds(ESqlStatementType.sstResetSession, TBaseType.rrw_reset,  "session"," "," "," "," "," ");
1475        addprestocmds(ESqlStatementType.sstRevoke, TBaseType.rrw_revoke,  " "," "," "," "," "," ");
1476        addprestocmds(ESqlStatementType.sstrollback, TBaseType.rrw_rollback,  " "," "," "," "," "," ");
1477        addprestocmds(ESqlStatementType.sstselect, TBaseType.rrw_select,  " "," "," "," "," "," ");
1478        addprestocmds(ESqlStatementType.sstset, TBaseType.rrw_set,  "role"," "," "," "," "," ");
1479        addprestocmds(ESqlStatementType.sstset, TBaseType.rrw_set,  "session"," "," "," "," "," ");
1480        addprestocmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "catalogs"," "," "," "," "," ");
1481        addprestocmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "columns"," "," "," "," "," ");
1482        addprestocmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "create","function"," "," "," "," ");
1483        addprestocmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "create","table"," "," "," "," ");
1484        addprestocmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "create","view"," "," "," "," ");
1485        addprestocmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "current","roles"," "," "," "," ");
1486        addprestocmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "functions"," "," "," "," "," ");
1487        addprestocmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "grants"," "," "," "," "," ");
1488        addprestocmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "role","grants"," "," "," "," ");
1489        addprestocmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "roles"," "," "," "," "," ");
1490        addprestocmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "schemas"," "," "," "," "," ");
1491        addprestocmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "session"," "," "," "," "," ");
1492        addprestocmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "stats"," "," "," "," "," ");
1493        addprestocmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "tables"," "," "," "," "," ");
1494        addprestocmds(ESqlStatementType.sstStartTransaction, TBaseType.rrw_start,  "transaction"," "," "," "," "," ");
1495        addprestocmds(ESqlStatementType.sstUse, TBaseType.rrw_use,  " "," "," "," "," "," ");
1496        addprestocmds(ESqlStatementType.sstValues, TBaseType.rrw_values,  " "," "," "," "," "," ");
1497    }
1498
1499    void initathenacmds(){
1500        addathenacmds(ESqlStatementType.sstalterdatabase, TBaseType.rrw_alter,  "database"," "," "," "," "," ");
1501        addathenacmds(ESqlStatementType.sstalterfunction, TBaseType.rrw_alter,  "function"," "," "," "," "," ");
1502        addathenacmds(ESqlStatementType.sstalterdatabase, TBaseType.rrw_alter,  "schema"," "," "," "," "," ");
1503        addathenacmds(ESqlStatementType.sstaltertable, TBaseType.rrw_alter,  "table"," "," "," "," "," ");
1504        addathenacmds(ESqlStatementType.sstAnalyzeTable, TBaseType.rrw_analyze,  " "," "," "," "," "," ");
1505        addathenacmds(ESqlStatementType.sstcall, TBaseType.rrw_call,  " "," "," "," "," "," ");
1506        addathenacmds(ESqlStatementType.sstcommit, TBaseType.rrw_commit,  " "," "," "," "," "," ");
1507        addathenacmds(ESqlStatementType.sstcreatedatabase, TBaseType.rrw_create,  "database"," "," "," "," "," ");
1508        addathenacmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create,  "function"," "," "," "," "," ");
1509        addathenacmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create,  "or","replace","function"," "," "," ");
1510        addathenacmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create,  "temporary","function"," "," "," "," ");
1511        addathenacmds(ESqlStatementType.sstcreaterole, TBaseType.rrw_create,  "role"," "," "," "," "," ");
1512        addathenacmds(ESqlStatementType.sstcreatedatabase, TBaseType.rrw_create,  "schema"," "," "," "," "," ");
1513        addathenacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,  "table"," "," "," "," "," ");
1514        addathenacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,  "external","table"," "," "," "," ");
1515        addathenacmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,  "view"," "," "," "," "," ");
1516        addathenacmds(ESqlStatementType.sstpostgresqlDeallocate, TBaseType.rrw_deallocate,  "prepare"," "," "," "," "," ");
1517        addathenacmds(ESqlStatementType.sstdelete, TBaseType.rrw_delete,  " "," "," "," "," "," ");
1518        addathenacmds(ESqlStatementType.sstdescribe, TBaseType.rrw_describe,  " "," "," "," "," "," ");
1519        addathenacmds(ESqlStatementType.sstdropdatabase, TBaseType.rrw_drop,  "database"," "," "," "," "," ");
1520        addathenacmds(ESqlStatementType.sstdropfunction, TBaseType.rrw_drop,  "function"," "," "," "," "," ");
1521        addathenacmds(ESqlStatementType.sstdroprole, TBaseType.rrw_drop,  "role"," "," "," "," "," ");
1522        addathenacmds(ESqlStatementType.sstdropdatabase, TBaseType.rrw_drop,  "schema"," "," "," "," "," ");
1523        addathenacmds(ESqlStatementType.sstdroptable, TBaseType.rrw_drop,  "table"," "," "," "," "," ");
1524        addathenacmds(ESqlStatementType.sstdropview, TBaseType.rrw_drop,  "view"," "," "," "," "," ");
1525        addathenacmds(ESqlStatementType.sstExecute, TBaseType.rrw_execute,  " "," "," "," "," "," ");
1526        addathenacmds(ESqlStatementType.sstExplain, TBaseType.rrw_explain,  " "," "," "," "," "," ");
1527        addathenacmds(ESqlStatementType.sstGrant, TBaseType.rrw_grant,  " "," "," "," "," "," ");
1528        addathenacmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert,  " "," "," "," "," "," ");
1529        addathenacmds(ESqlStatementType.sstmsck, TBaseType.rrw_athena_msck,  " "," "," "," "," "," ");
1530        addathenacmds(ESqlStatementType.sstprepare, TBaseType.rrw_prepare,  " "," "," "," "," "," ");
1531        addathenacmds(ESqlStatementType.sstResetSession, TBaseType.rrw_reset,  "session"," "," "," "," "," ");
1532        addathenacmds(ESqlStatementType.sstRevoke, TBaseType.rrw_revoke,  " "," "," "," "," "," ");
1533        addathenacmds(ESqlStatementType.sstrollback, TBaseType.rrw_rollback,  " "," "," "," "," "," ");
1534        addathenacmds(ESqlStatementType.sstselect, TBaseType.rrw_select,  " "," "," "," "," "," ");
1535        addathenacmds(ESqlStatementType.sstset, TBaseType.rrw_set,  "role"," "," "," "," "," ");
1536        addathenacmds(ESqlStatementType.sstset, TBaseType.rrw_set,  "session"," "," "," "," "," ");
1537        addathenacmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "catalogs"," "," "," "," "," ");
1538        addathenacmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "columns"," "," "," "," "," ");
1539        addathenacmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "create","function"," "," "," "," ");
1540        addathenacmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "create","table"," "," "," "," ");
1541        addathenacmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "create","view"," "," "," "," ");
1542        addathenacmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "current","roles"," "," "," "," ");
1543        addathenacmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "databases"," "," "," "," "," ");
1544        addathenacmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "functions"," "," "," "," "," ");
1545        addathenacmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "grants"," "," "," "," "," ");
1546        addathenacmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "partitions"," "," "," "," "," ");
1547        addathenacmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "role","grants"," "," "," "," ");
1548        addathenacmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "roles"," "," "," "," "," ");
1549        addathenacmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "schemas"," "," "," "," "," ");
1550        addathenacmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "session"," "," "," "," "," ");
1551        addathenacmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "stats"," "," "," "," "," ");
1552        addathenacmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "tables"," "," "," "," "," ");
1553        addathenacmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "tblproperties"," "," "," "," "," ");
1554        addathenacmds(ESqlStatementType.sstShow, TBaseType.rrw_show,  "views"," "," "," "," "," ");
1555        addathenacmds(ESqlStatementType.sstStartTransaction, TBaseType.rrw_start,  "transaction"," "," "," "," "," ");
1556        addathenacmds(ESqlStatementType.sstunload, TBaseType.rrw_athena_unload, " ", " ", " ", " ", " ", " ");
1557        addathenacmds(ESqlStatementType.sstUse, TBaseType.rrw_use,  " "," "," "," "," "," ");
1558        addathenacmds(ESqlStatementType.sstValues, TBaseType.rrw_values,  " "," "," "," "," "," ");
1559    }
1560
1561 void initsparksqlcmds(){
1562     addsparksqlcmds(ESqlStatementType.sstAddFile, TBaseType.rrw_add,  "file"," "," "," "," "," ");
1563     addsparksqlcmds(ESqlStatementType.sstAddJar, TBaseType.rrw_add,  "jar"," "," "," "," "," ");
1564     addsparksqlcmds(ESqlStatementType.sstalterdatabase, TBaseType.rrw_alter,  "database"," "," "," "," "," ");
1565     addsparksqlcmds(ESqlStatementType.sstaltertable, TBaseType.rrw_alter,  "table"," "," "," "," "," ");
1566     addsparksqlcmds(ESqlStatementType.sstalterview, TBaseType.rrw_alter,  "view"," "," "," "," "," ");
1567     addsparksqlcmds(ESqlStatementType.sstanalyzeTable, TBaseType.rrw_analyze,  "table"," "," "," "," "," ");
1568     addsparksqlcmds(ESqlStatementType.sstCacheTable, TBaseType.rrw_cache,  "table"," "," "," "," "," ");
1569     addsparksqlcmds(ESqlStatementType.sstCacheTable, TBaseType.rrw_cache,  "lazy","table"," "," "," "," ");
1570     addsparksqlcmds(ESqlStatementType.sstClearCache, TBaseType.rrw_clear,  "cache"," "," "," "," "," ");
1571     addsparksqlcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,  "external","table"," "," "," "," ");
1572     addsparksqlcmds(ESqlStatementType.sstcreatedatabase, TBaseType.rrw_create,  "database"," "," "," "," "," ");
1573     addsparksqlcmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create,  "function"," "," "," "," "," ");
1574     addsparksqlcmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,  "global","temporary","view"," "," "," ");
1575     addsparksqlcmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create,  "or","replace","function"," "," "," ");
1576     addsparksqlcmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,  "or","replace","global","temporary","view"," ");
1577     addsparksqlcmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create,  "or","replace","temporary","function"," "," ");
1578     addsparksqlcmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,  "or","replace","temporary","view"," "," ");
1579     addsparksqlcmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,  "or","replace","view"," "," "," ");
1580     addsparksqlcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,  "table"," "," "," "," "," ");
1581     addsparksqlcmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create,  "temporary","function"," "," "," "," ");
1582     addsparksqlcmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,  "temporary","view"," "," "," "," ");
1583     addsparksqlcmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,  "view"," "," "," "," "," ");
1584     addsparksqlcmds(ESqlStatementType.sstdescribeTable, TBaseType.rrw_spark_desc,  " "," "," "," "," "," ");
1585     addsparksqlcmds(ESqlStatementType.sstdescribeTable, TBaseType.rrw_describe,  " "," "," "," "," "," ");
1586     addsparksqlcmds(ESqlStatementType.sstdescribeDatabase, TBaseType.rrw_spark_desc,  "database"," "," "," "," "," ");
1587     addsparksqlcmds(ESqlStatementType.sstdescribeFunction, TBaseType.rrw_spark_desc,  "function"," "," "," "," "," ");
1588     addsparksqlcmds(ESqlStatementType.sstdescribeQuery, TBaseType.rrw_spark_desc,  "query"," "," "," "," "," ");
1589     addsparksqlcmds(ESqlStatementType.sstdescribeTable, TBaseType.rrw_spark_desc,  "table"," "," "," "," "," ");
1590     addsparksqlcmds(ESqlStatementType.sstdescribeFunction, TBaseType.rrw_describe,  "function"," "," "," "," "," ");
1591     addsparksqlcmds(ESqlStatementType.sstdescribeDatabase, TBaseType.rrw_describe,  "database"," "," "," "," "," ");
1592     addsparksqlcmds(ESqlStatementType.sstdescribeQuery, TBaseType.rrw_describe,  "query"," "," "," "," "," ");
1593     addsparksqlcmds(ESqlStatementType.sstdescribeTable, TBaseType.rrw_describe,  "table"," "," "," "," "," ");
1594     addsparksqlcmds(ESqlStatementType.sstdropdatabase, TBaseType.rrw_drop,  "schema"," "," "," "," "," ");
1595     addsparksqlcmds(ESqlStatementType.sstdropdatabase, TBaseType.rrw_drop,  "database"," "," "," "," "," ");
1596     addsparksqlcmds(ESqlStatementType.sstdropfunction, TBaseType.rrw_drop,  "function"," "," "," "," "," ");
1597     addsparksqlcmds(ESqlStatementType.sstdropfunction, TBaseType.rrw_drop,  "temporary","function"," "," "," "," ");
1598     addsparksqlcmds(ESqlStatementType.sstdroptable, TBaseType.rrw_drop,  "table"," "," "," "," "," ");
1599     addsparksqlcmds(ESqlStatementType.sstdropview, TBaseType.rrw_drop,  "view"," "," "," "," "," ");
1600     addsparksqlcmds(ESqlStatementType.sstExplain, TBaseType.rrw_explain,  " "," "," "," "," "," ");
1601     addsparksqlcmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert,  " "," "," "," "," "," ");
1602     addsparksqlcmds(ESqlStatementType.sstListFile, TBaseType.rrw_spark_list,  "file"," "," "," "," "," ");
1603     addsparksqlcmds(ESqlStatementType.sstListJar, TBaseType.rrw_spark_list,  "jar"," "," "," "," "," ");
1604     addsparksqlcmds(ESqlStatementType.sstLoadData, TBaseType.rrw_load,  "data"," "," "," "," "," ");
1605     addsparksqlcmds(ESqlStatementType.sstmsck, TBaseType.rrw_spark_msck, "repair","table"," "," "," "," ");
1606     addsparksqlcmds(ESqlStatementType.sstRefresh, TBaseType.rrw_refresh,  " "," "," "," "," "," ");
1607     addsparksqlcmds(ESqlStatementType.sstRefreshFunction, TBaseType.rrw_refresh,  "function"," "," "," "," "," ");
1608     addsparksqlcmds(ESqlStatementType.sstRefreshTable, TBaseType.rrw_refresh,  "table"," "," "," "," "," ");
1609     addsparksqlcmds(ESqlStatementType.sstReset, TBaseType.rrw_reset,  " "," "," "," "," "," ");
1610     addsparksqlcmds(ESqlStatementType.sstselect, TBaseType.rrw_select,  " "," "," "," "," "," ");
1611     addsparksqlcmds(ESqlStatementType.sstset, TBaseType.rrw_set,  " "," "," "," "," "," ");
1612     addsparksqlcmds(ESqlStatementType.sstSetTimeZone, TBaseType.rrw_set,  "time","zone"," "," "," "," ");
1613     addsparksqlcmds(ESqlStatementType.sstShowColumns, TBaseType.rrw_show,  "columns"," "," "," "," "," ");
1614     addsparksqlcmds(ESqlStatementType.sstShowCreateTable, TBaseType.rrw_show,  "create","table"," "," "," "," ");
1615     addsparksqlcmds(ESqlStatementType.sstShowDatabases, TBaseType.rrw_show,  "databases"," "," "," "," "," ");
1616     addsparksqlcmds(ESqlStatementType.sstShowFunctions, TBaseType.rrw_show,  "functions"," "," "," "," "," ");
1617     addsparksqlcmds(ESqlStatementType.sstShowPartitions, TBaseType.rrw_show,  "partitions"," "," "," "," "," ");
1618     addsparksqlcmds(ESqlStatementType.sstShowTableExtended, TBaseType.rrw_show,  "table","extended"," "," "," "," ");
1619     addsparksqlcmds(ESqlStatementType.sstShowTables, TBaseType.rrw_show,  "tables"," "," "," "," "," ");
1620     addsparksqlcmds(ESqlStatementType.sstShowTblProperties, TBaseType.rrw_show,  "tblproperties"," "," "," "," "," ");
1621     addsparksqlcmds(ESqlStatementType.sstShowUser, TBaseType.rrw_show,  "user"," "," "," "," "," ");
1622     addsparksqlcmds(ESqlStatementType.sstShowViews, TBaseType.rrw_show,  "views"," "," "," "," "," ");
1623     addsparksqlcmds(ESqlStatementType.ssttruncatetable, TBaseType.rrw_truncate,  "table"," "," "," "," "," ");
1624     addsparksqlcmds(ESqlStatementType.sstrepairtable, TBaseType.rrw_repair,  "table"," "," "," "," "," ");
1625     addsparksqlcmds(ESqlStatementType.sstUnCacheTable, TBaseType.rrw_spark_uncache,  "table"," "," "," "," "," ");
1626     addsparksqlcmds(ESqlStatementType.sstUse, TBaseType.rrw_use,  " "," "," "," "," "," ");
1627
1628 }
1629
1630 void initmysqlcmds(){
1631// cmd must be sort alphabetically
1632    addmysqlcmds(ESqlStatementType.sstmysqlalterview, TBaseType.rrw_alter,  "algorithm"," "," "," "," "," ");
1633    addmysqlcmds(ESqlStatementType.sstmysqlalterdatabase, TBaseType.rrw_alter,  "database"," "," "," "," "," ");
1634     addmysqlcmds(ESqlStatementType.sstmysqlalterfunction, TBaseType.rrw_alter,  "function"," "," "," "," "," ");
1635     addmysqlcmds(ESqlStatementType.sstmysqlalterprocedure, TBaseType.rrw_alter,  "procedure"," "," "," "," "," ");
1636     addmysqlcmds(ESqlStatementType.sstmysqlalterview, TBaseType.rrw_alter,  "sql","security","definer","view"," "," ");
1637     addmysqlcmds(ESqlStatementType.sstmysqlalterview, TBaseType.rrw_alter,  "sql","security","invoker","view"," "," ");
1638     addmysqlcmds(ESqlStatementType.sstaltertable, TBaseType.rrw_alter,  "table"," "," "," "," "," ");
1639     addmysqlcmds(ESqlStatementType.sstmysqlalterview, TBaseType.rrw_alter,  "view"," "," "," "," "," ");
1640     addmysqlcmds(ESqlStatementType.sstmysqlanalyzetable, TBaseType.rrw_analyze,  "table"," "," "," "," "," ");
1641     addmysqlcmds(ESqlStatementType.sstmysqlbackuptable, TBaseType.rrw_backup, "table"," "," "," "," "," ");
1642     addmysqlcmds(ESqlStatementType.sstmysqlstarttransaction, TBaseType.rrw_begin, " "," "," "," "," "," ");
1643     addmysqlcmds(ESqlStatementType.sstmysqlcacheindex, TBaseType.rrw_cache,  "index"," "," "," "," "," ");
1644     addmysqlcmds(ESqlStatementType.sstmysqlcall, TBaseType.rrw_call," "," "," "," "," "," ");
1645     addmysqlcmds(ESqlStatementType.sstmysqlcase, TBaseType.rrw_case," "," "," "," "," "," ");
1646     addmysqlcmds(ESqlStatementType.sstmysqlchangemasterto, TBaseType.rrw_change,"master", "to"," "," "," "," ");
1647     addmysqlcmds(ESqlStatementType.sstmysqlchecktable, TBaseType.rrw_check,"table"," "," "," "," "," ");
1648     addmysqlcmds(ESqlStatementType.sstmysqlchecktable, TBaseType.rrw_check,"tables"," "," "," "," "," ");
1649     addmysqlcmds(ESqlStatementType.sstmysqlchecksumtable, TBaseType.rrw_checksum,"table"," "," "," "," "," ");
1650     addmysqlcmds(ESqlStatementType.sstmysqlclose, TBaseType.rrw_close," "," "," "," "," "," ");
1651     addmysqlcmds(ESqlStatementType.sstmysqlcommit, TBaseType.rrw_commit," "," "," "," "," "," ");
1652     addmysqlcmds(ESqlStatementType.sstmysqlcreatefunction, TBaseType.rrw_create,"aggregate","function"," "," "," "," ");
1653     addmysqlcmds(ESqlStatementType.sstmysqlcreatedatabase, TBaseType.rrw_create,"database"," "," "," "," "," ");
1654     addmysqlcmds(ESqlStatementType.sstmysqlcreatefunction, TBaseType.rrw_create,"definer", "=", "current_user", "function"," "," ");
1655     addmysqlcmds(ESqlStatementType.sstmysqlcreateprocedure, TBaseType.rrw_create,"definer", "=", "current_user", "procedure"," "," ");
1656     addmysqlcmds(ESqlStatementType.sstcreatetrigger, TBaseType.rrw_create,"definer", "=", "current_user", "trigger"," "," ");
1657     addmysqlcmds(ESqlStatementType.sstmysqlcreateprocedure, TBaseType.rrw_create,"definer", "=","*","procedure"," "," ");
1658     addmysqlcmds(ESqlStatementType.sstmysqlcreatefunction, TBaseType.rrw_create,"definer", "=","*","function"," "," ");
1659     addmysqlcmds(ESqlStatementType.sstcreatetrigger, TBaseType.rrw_create,"definer", "=","*","trigger"," "," ");
1660     addmysqlcmds(ESqlStatementType.sstmysqlcreatefunction, TBaseType.rrw_create,"definer", "=","*","*","*","function");
1661     addmysqlcmds(ESqlStatementType.sstmysqlcreateprocedure, TBaseType.rrw_create,"definer", "=","*","*","*","procedure");
1662     addmysqlcmds(ESqlStatementType.sstcreatetrigger, TBaseType.rrw_create,"definer", "=","*","*","*","trigger");
1663     addmysqlcmds(ESqlStatementType.sstmysqlcreateindex, TBaseType.rrw_create,"fulltext","index"," "," "," "," ");
1664     addmysqlcmds(ESqlStatementType.sstmysqlcreatefunction, TBaseType.rrw_create,"function"," "," "," "," "," ");
1665     addmysqlcmds(ESqlStatementType.sstmysqlcreateindex, TBaseType.rrw_create,"index"," "," "," "," "," ");
1666     addmysqlcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"or","replace","table"," "," "," ");
1667     addmysqlcmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,"or","replace","view"," "," "," ");
1668     addmysqlcmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,"or","replace","*","*","*","view");
1669     addmysqlcmds(ESqlStatementType.sstmysqlcreateprocedure, TBaseType.rrw_create,"procedure"," "," "," "," "," ");
1670     addmysqlcmds(ESqlStatementType.sstmysqlcreateindex, TBaseType.rrw_create,"spatial","index"," "," "," "," ");
1671     addmysqlcmds(ESqlStatementType.sstmysqlcreatedatabase, TBaseType.rrw_create,"schema"," "," "," "," "," ");
1672     addmysqlcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"table"," "," "," "," "," ");
1673     addmysqlcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"temp","table"," "," "," "," ");
1674     addmysqlcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"temporary","table"," "," "," "," ");
1675     addmysqlcmds(ESqlStatementType.sstcreatetrigger, TBaseType.rrw_create,"trigger"," "," "," "," "," ");
1676     addmysqlcmds(ESqlStatementType.sstmysqlcreateindex, TBaseType.rrw_create,"unique","index"," "," "," "," ");
1677     addmysqlcmds(ESqlStatementType.sstmysqlcreateuser, TBaseType.rrw_create,"user"," "," "," "," "," ");
1678     addmysqlcmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,"view"," "," "," "," "," ");
1679     addmysqlcmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,"*","*","*","*","*","view");
1680     addmysqlcmds(ESqlStatementType.sstmysqldeallocateprepare, TBaseType.rrw_deallocate,"prepare"," "," "," "," "," ");
1681     addmysqlcmds(ESqlStatementType.sstmysqldeclare, TBaseType.rrw_declare," "," "," "," "," "," ");
1682     addmysqlcmds(ESqlStatementType.sstdelete, TBaseType.rrw_delete," "," "," "," "," "," ");
1683     addmysqlcmds(ESqlStatementType.sstmysqldelimiter, TBaseType.rrw_mysql_delimiter," "," "," "," "," "," ");
1684     addmysqlcmds(ESqlStatementType.sstdescribe, TBaseType.rrw_mysql_desc," "," "," "," "," "," ");
1685     addmysqlcmds(ESqlStatementType.sstdescribe, TBaseType.rrw_describe," "," "," "," "," "," ");
1686     addmysqlcmds(ESqlStatementType.sstmysqldo, TBaseType.rrw_do," "," "," "," "," "," ");
1687     addmysqlcmds(ESqlStatementType.sstmysqldropdatabase, TBaseType.rrw_drop,"database"," "," "," "," "," ");
1688     addmysqlcmds(ESqlStatementType.sstmysqldropfunction, TBaseType.rrw_drop,"function"," "," "," "," "," ");
1689     addmysqlcmds(ESqlStatementType.sstmysqldropindex, TBaseType.rrw_drop,"index"," "," "," "," "," ");
1690     addmysqlcmds(ESqlStatementType.sstmysqldropprepare, TBaseType.rrw_drop,"prepare"," "," "," "," "," ");
1691     addmysqlcmds(ESqlStatementType.sstmysqldropprocedure, TBaseType.rrw_drop,"procedure"," "," "," "," "," ");
1692     addmysqlcmds(ESqlStatementType.sstmysqldropdatabase, TBaseType.rrw_drop,"schema"," "," "," "," "," ");
1693     addmysqlcmds(ESqlStatementType.sstmysqldroptable, TBaseType.rrw_drop,"table"," "," "," "," "," ");
1694     addmysqlcmds(ESqlStatementType.sstmysqldroptable, TBaseType.rrw_drop,"tables"," "," "," "," "," ");
1695     addmysqlcmds(ESqlStatementType.sstmysqldroptable, TBaseType.rrw_drop,"temporary","table"," "," "," "," ");
1696     addmysqlcmds(ESqlStatementType.sstmysqldroptrigger, TBaseType.rrw_drop,"trigger"," "," "," "," "," ");
1697     addmysqlcmds(ESqlStatementType.sstmysqldropuser, TBaseType.rrw_drop,"user"," "," "," "," "," ");
1698     addmysqlcmds(ESqlStatementType.sstdropview, TBaseType.rrw_drop,"view"," "," "," "," "," ");
1699     addmysqlcmds(ESqlStatementType.sstmysqlexecute, TBaseType.rrw_execute," "," "," "," "," "," ");
1700     addmysqlcmds(ESqlStatementType.sstExplain, TBaseType.rrw_explain," "," "," "," "," "," ");
1701     addmysqlcmds(ESqlStatementType.sstmysqlfetch, TBaseType.rrw_fetch," "," "," "," "," "," ");
1702     addmysqlcmds(ESqlStatementType.sstmysqlflush, TBaseType.rrw_flush," "," "," "," "," "," ");
1703     addmysqlcmds(ESqlStatementType.sstmysqlgrant, TBaseType.rrw_grant," "," "," "," "," "," ");
1704     addmysqlcmds(ESqlStatementType.sstmysqlhandler, TBaseType.rrw_handler," "," "," "," "," "," ");
1705     addmysqlcmds(ESqlStatementType.sstmysqlifstmt, TBaseType.rrw_if," "," "," "," "," "," ");
1706     addmysqlcmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert," "," "," "," "," "," ");
1707     addmysqlcmds(ESqlStatementType.sstmysqliterate, TBaseType.rrw_iterate," "," "," "," "," "," ");
1708     addmysqlcmds(ESqlStatementType.sstmysqlkill, TBaseType.rrw_kill," "," "," "," "," "," ");
1709     addmysqlcmds(ESqlStatementType.sstmysqlleave, TBaseType.rrw_leave," "," "," "," "," "," ");
1710     addmysqlcmds(ESqlStatementType.sstmysqlloaddatafrommaster, TBaseType.rrw_load,"data", "from", "master"," "," "," ");
1711     addmysqlcmds(ESqlStatementType.sstmysqlloaddatainfile, TBaseType.rrw_load,"data", "infile"," "," "," "," ");
1712     addmysqlcmds(ESqlStatementType.sstmysqlloaddatainfile, TBaseType.rrw_load,"data", "local","infile"," "," "," ");
1713     addmysqlcmds(ESqlStatementType.sstmysqlloadindexintocache, TBaseType.rrw_load,"index", "into", "cache"," "," "," ");
1714     addmysqlcmds(ESqlStatementType.sstmysqlloadtable, TBaseType.rrw_load,"table"," "," "," "," "," ");
1715     addmysqlcmds(ESqlStatementType.sstmysqllocktable, TBaseType.rrw_lock,"table"," "," "," "," "," ");
1716     addmysqlcmds(ESqlStatementType.sstmysqllocktable, TBaseType.rrw_lock,"tables"," "," "," "," "," ");
1717     addmysqlcmds(ESqlStatementType.sstmysqlloop, TBaseType.rrw_loop," "," "," "," "," "," ");
1718     addmysqlcmds(ESqlStatementType.sstmysqlopen, TBaseType.rrw_open," "," "," "," "," "," ");
1719     addmysqlcmds(ESqlStatementType.sstmysqloptimizetable, TBaseType.rrw_optimize,"local","table"," "," "," "," ");
1720     addmysqlcmds(ESqlStatementType.sstmysqloptimizetable, TBaseType.rrw_optimize,"no_write_to_binlog","table"," "," "," "," ");
1721     addmysqlcmds(ESqlStatementType.sstmysqloptimizetable, TBaseType.rrw_optimize,"table"," "," "," "," "," ");
1722     addmysqlcmds(ESqlStatementType.sstmysqlprepare, TBaseType.rrw_prepare," "," "," "," "," "," ");
1723     addmysqlcmds(ESqlStatementType.sstmysqlpurgelogs, TBaseType.rrw_purge,"binary","logs"," "," "," "," ");
1724     addmysqlcmds(ESqlStatementType.sstmysqlpurgelogs, TBaseType.rrw_purge,"logs"," "," "," "," "," ");
1725     addmysqlcmds(ESqlStatementType.sstmysqlpurgelogs, TBaseType.rrw_purge,"master","logs"," "," "," "," ");
1726     addmysqlcmds(ESqlStatementType.sstmysqlreleasesavepoint,TBaseType. rrw_release,"savepoint"," "," "," "," "," ");
1727     addmysqlcmds(ESqlStatementType.sstmysqlrenametable, TBaseType.rrw_rename,"table"," "," "," "," "," ");
1728     addmysqlcmds(ESqlStatementType.sstmysqlrenameuser, TBaseType.rrw_rename,"user"," "," "," "," "," ");
1729     addmysqlcmds(ESqlStatementType.sstmysqlrepairtable,TBaseType.rrw_repair,"local","table"," "," "," "," ");
1730     addmysqlcmds(ESqlStatementType.sstmysqlrepairtable, TBaseType.rrw_repair,"no_write_to_binlog","table"," "," "," "," ");
1731     addmysqlcmds(ESqlStatementType.sstmysqlrepairtable, TBaseType.rrw_repair,"table"," "," "," "," "," ");
1732     addmysqlcmds(ESqlStatementType.sstmysqlrepeat, TBaseType.rrw_repeat," "," "," "," "," "," ");
1733     addmysqlcmds(ESqlStatementType.sstmysqlreplace, TBaseType.rrw_replace," "," "," "," "," "," ");
1734     addmysqlcmds(ESqlStatementType.sstmysqlreset, TBaseType.rrw_reset," "," "," "," "," "," ");
1735     addmysqlcmds(ESqlStatementType.sstmysqlresetmaster, TBaseType.rrw_reset,"master"," "," "," "," "," ");
1736     addmysqlcmds(ESqlStatementType.sstmysqlresetslave, TBaseType.rrw_reset,"slave"," "," "," "," "," ");
1737     addmysqlcmds(ESqlStatementType.sstmysqlrestoretable, TBaseType.rrw_restore,"table"," "," "," "," "," ");
1738     addmysqlcmds(ESqlStatementType.sstmysqlrevoke, TBaseType.rrw_revoke," "," "," "," "," "," ");
1739     addmysqlcmds(ESqlStatementType.sstmysqlrollback, TBaseType.rrw_rollback," "," "," "," "," "," ");
1740     addmysqlcmds(ESqlStatementType.sstmysqlsavepoint, TBaseType.rrw_savepoint," "," "," "," "," "," ");
1741     addmysqlcmds(ESqlStatementType.sstselect, TBaseType.rrw_select," "," "," "," "," "," ");
1742     addmysqlcmds(ESqlStatementType.sstmysqlset, TBaseType.rrw_set," "," "," "," "," "," ");
1743     addmysqlcmds(ESqlStatementType.sstmysqlsetautocommit, TBaseType.rrw_set,"autocommit"," "," "," "," "," ");
1744     addmysqlcmds(ESqlStatementType.sstmysqldelimiter, TBaseType.rrw_set,"delimiter"," "," "," "," "," ");
1745     addmysqlcmds(ESqlStatementType.sstmysqlsetglobalsql_slave_skip_counter, TBaseType.rrw_set,"global", "sql_slave_skip_counter"," "," "," "," ");
1746     addmysqlcmds(ESqlStatementType.sstmysqlsettransaction, TBaseType.rrw_set,"global","transaction"," "," "," "," ");
1747     addmysqlcmds(ESqlStatementType.sstmysqlset, TBaseType.rrw_set,"PASSWORD"," "," "," "," "," ");
1748     addmysqlcmds(ESqlStatementType.sstmysqlsettransaction, TBaseType.rrw_set,"session","transaction"," "," "," "," ");
1749     addmysqlcmds(ESqlStatementType.sstmysqlsetsql_log_bin, TBaseType.rrw_set,"sql_log_bin"," "," "," "," "," ");
1750     addmysqlcmds(ESqlStatementType.sstmysqlsettransaction, TBaseType.rrw_set,"transaction"," "," "," "," "," ");
1751     addmysqlcmds(ESqlStatementType.sstmysqlshowlogs, TBaseType.rrw_show,"bdb","logs"," "," "," "," ");
1752     addmysqlcmds(ESqlStatementType.sstmysqlshowbinlogevents, TBaseType.rrw_show,"binlog", "events"," "," "," "," ");
1753     addmysqlcmds(ESqlStatementType.sstmysqlshowcharacterset, TBaseType.rrw_show,"character", "set"," "," "," "," ");
1754     addmysqlcmds(ESqlStatementType.sstmysqlshowcharacterset, TBaseType.rrw_show,"charset", " "," "," "," "," ");
1755     addmysqlcmds(ESqlStatementType.sstmysqlshowcollation, TBaseType.rrw_show,"collation"," "," "," "," "," ");
1756     addmysqlcmds(ESqlStatementType.sstmysqlshowcolumns, TBaseType.rrw_show,"columns"," "," "," "," "," ");
1757     addmysqlcmds(ESqlStatementType.sstmysqlshowwarnings, TBaseType.rrw_show,"count"," "," "," "," "," ");
1758     addmysqlcmds(ESqlStatementType.sstmysqlshowcreateschema, TBaseType.rrw_show,"create", "schema"," "," "," "," ");
1759     addmysqlcmds(ESqlStatementType.sstmysqlshowcreatedatabase, TBaseType.rrw_show,"create", "database"," "," "," "," ");
1760     addmysqlcmds(ESqlStatementType.sstmysqlshowcreatefunction, TBaseType.rrw_show,"create","function"," "," "," "," ");
1761     addmysqlcmds(ESqlStatementType.sstmysqlshowcreateprocedure, TBaseType.rrw_show,"create","procedure"," "," "," "," ");
1762     addmysqlcmds(ESqlStatementType.sstmysqlshowcreatetable, TBaseType.rrw_show,"create","table"," "," "," "," ");
1763     addmysqlcmds(ESqlStatementType.sstmysqlshowcreateview, TBaseType.rrw_show,"create","view"," "," "," "," ");
1764     addmysqlcmds(ESqlStatementType.sstmysqlshowdatabases, TBaseType.rrw_show,"databases"," "," "," "," "," ");
1765     addmysqlcmds(ESqlStatementType.sstmysqlshowengine, TBaseType.rrw_show,"engine"," "," "," "," "," ");
1766     addmysqlcmds(ESqlStatementType.sstmysqlshowengines, TBaseType.rrw_show,"engines"," "," "," "," "," ");
1767     addmysqlcmds(ESqlStatementType.sstmysqlshowerrors, TBaseType.rrw_show,"errors"," "," "," "," "," ");
1768     addmysqlcmds(ESqlStatementType.sstmysqlshowindex, TBaseType.rrw_show,"extend","index"," "," "," "," ");
1769     addmysqlcmds(ESqlStatementType.sstmysqlshowindex, TBaseType.rrw_show,"extend","indexes"," "," "," "," ");
1770     addmysqlcmds(ESqlStatementType.sstmysqlshowindex, TBaseType.rrw_show,"extend","keys"," "," "," "," ");
1771     addmysqlcmds(ESqlStatementType.sstmysqlshowfields, TBaseType.rrw_show,"fields"," "," "," "," "," ");
1772     addmysqlcmds(ESqlStatementType.sstmysqlshowcolumns, TBaseType.rrw_show,"full","columns"," "," "," "," ");
1773     addmysqlcmds(ESqlStatementType.sstmysqlshowfields, TBaseType.rrw_show,"full","fields"," "," "," "," ");
1774     addmysqlcmds(ESqlStatementType.sstmysqlshowprocesslist, TBaseType.rrw_show,"full","processlist"," "," "," "," ");
1775     addmysqlcmds(ESqlStatementType.sstmysqlshowtables, TBaseType.rrw_show,"full","tables"," "," "," "," ");
1776     addmysqlcmds(ESqlStatementType.sstmysqlshowfunctionstatus, TBaseType.rrw_show,"function", "status"," "," "," "," ");
1777     addmysqlcmds(ESqlStatementType.sstmysqlshowstatus, TBaseType.rrw_show,"global","status"," "," "," "," ");
1778     addmysqlcmds(ESqlStatementType.sstmysqlshowvariables, TBaseType.rrw_show,"global","variables"," "," "," "," ");
1779     addmysqlcmds(ESqlStatementType.sstmysqlshowgrants, TBaseType.rrw_show,"grants"," "," "," "," "," ");
1780     addmysqlcmds(ESqlStatementType.sstmysqlshowindex, TBaseType.rrw_show,"index"," "," "," "," "," ");
1781     addmysqlcmds(ESqlStatementType.sstmysqlshowindex, TBaseType.rrw_show,"indexes"," "," "," "," "," ");
1782     addmysqlcmds(ESqlStatementType.sstmysqlshowinnodbstatus, TBaseType.rrw_show,"innodb", "status"," "," "," "," ");
1783     addmysqlcmds(ESqlStatementType.sstmysqlshowindex, TBaseType.rrw_show,"keys"," "," "," "," "," ");
1784     addmysqlcmds(ESqlStatementType.sstmysqlshowlogs, TBaseType.rrw_show,"logs"," "," "," "," "," ");
1785     addmysqlcmds(ESqlStatementType.sstmysqlshowmasterlogs, TBaseType.rrw_show,"master", "logs"," "," "," "," ");
1786     addmysqlcmds(ESqlStatementType.sstmysqlshowmasterstatus, TBaseType.rrw_show,"master", "status"," "," "," "," ");
1787     addmysqlcmds(ESqlStatementType.sstmysqlshowtables, TBaseType.rrw_show,"open","tables"," "," "," "," ");
1788     addmysqlcmds(ESqlStatementType.sstmysqlshowplugins, TBaseType.rrw_show,"plugins"," "," "," "," "," ");
1789     addmysqlcmds(ESqlStatementType.sstmysqlshowprivileges, TBaseType.rrw_show,"privileges"," "," "," "," "," ");
1790     addmysqlcmds(ESqlStatementType.sstmysqlshowfunctionstatus, TBaseType.rrw_show,"procedure", "status"," "," "," "," ");
1791     addmysqlcmds(ESqlStatementType.sstmysqlshowprocesslist, TBaseType.rrw_show,"processlist"," "," "," "," "," ");
1792     addmysqlcmds(ESqlStatementType.sstmysqlshowprofile, TBaseType.rrw_show,"profile"," "," "," "," "," ");
1793     addmysqlcmds(ESqlStatementType.sstmysqlshowprofiles, TBaseType.rrw_show,"profiles"," "," "," "," "," ");
1794     addmysqlcmds(ESqlStatementType.sstmysqlshowreplicaStatus, TBaseType.rrw_show,"replica","status"," "," "," "," ");
1795     addmysqlcmds(ESqlStatementType.sstmysqlshowstatus, TBaseType.rrw_show,"session","status"," "," "," "," ");
1796     addmysqlcmds(ESqlStatementType.sstmysqlshowvariables, TBaseType.rrw_show,"session","variables"," "," "," "," ");
1797     addmysqlcmds(ESqlStatementType.sstmysqlshowslavehosts, TBaseType.rrw_show,"slave", "hosts"," "," "," "," ");
1798     addmysqlcmds(ESqlStatementType.sstmysqlshowslavestatus, TBaseType.rrw_show,"slave", "status"," "," "," "," ");
1799     addmysqlcmds(ESqlStatementType.sstmysqlshowstatus, TBaseType.rrw_show,"status"," "," "," "," "," ");
1800     addmysqlcmds(ESqlStatementType.sstmysqlshowengines, TBaseType.rrw_show,"storage","engines"," "," "," "," ");
1801     addmysqlcmds(ESqlStatementType.sstmysqlshowtablestatus, TBaseType.rrw_show,"table", "status"," "," "," "," ");
1802     addmysqlcmds(ESqlStatementType.sstmysqlshowtables, TBaseType.rrw_show,"tables"," "," "," "," "," ");
1803     addmysqlcmds(ESqlStatementType.sstmysqlshowtriggers, TBaseType.rrw_show,"triggers"," "," "," "," "," ");
1804     addmysqlcmds(ESqlStatementType.sstmysqlshowvariables, TBaseType.rrw_show,"variables"," "," "," "," "," ");
1805     addmysqlcmds(ESqlStatementType.sstmysqlshowwarnings, TBaseType.rrw_show,"warnings"," "," "," "," "," ");
1806     addmysqlcmds(ESqlStatementType.sstmysqlsignal, TBaseType.rrw_signal," "," "," "," "," "," ");
1807     addmysqlcmds(ESqlStatementType.sstmysqlstartslave, TBaseType.rrw_start,"slave"," "," "," "," "," ");
1808     addmysqlcmds(ESqlStatementType.sstmysqlstarttransaction, TBaseType.rrw_start,"transaction"," "," "," "," "," ");
1809     addmysqlcmds(ESqlStatementType.sstmysqlstopslave, TBaseType.rrw_stop,"slave"," "," "," "," "," ");
1810     addmysqlcmds(ESqlStatementType.sstmysqltruncate, TBaseType.rrw_truncate," "," "," "," "," "," ");
1811     addmysqlcmds(ESqlStatementType.sstmysqlunlocktable, TBaseType.rrw_unlock,"tables"," "," "," "," "," ");
1812     addmysqlcmds(ESqlStatementType.sstupdate, TBaseType.rrw_update," "," "," "," "," "," ");
1813     addmysqlcmds(ESqlStatementType.sstmysqluse, TBaseType.rrw_use," "," "," "," "," "," ");
1814     addmysqlcmds(ESqlStatementType.sstmysqlwhile, TBaseType.rrw_while," "," "," "," "," "," ");
1815
1816}
1817
1818void initmdxcmds(){
1819// cmd must be sort alphabetically
1820    addmdxcmds(ESqlStatementType.sstmdxaltercube, TBaseType.rrw_alter,"cube"," "," "," "," "," ");
1821    addmdxcmds(ESqlStatementType.sstmdxalterdimension, TBaseType.rrw_alter,"dimension"," "," "," "," "," ");
1822    addmdxcmds(ESqlStatementType.sstmdxcalculate, TBaseType.rrw_calculate," "," "," "," "," "," ");
1823    addmdxcmds(ESqlStatementType.sstmdxcall, TBaseType.rrw_call," "," "," "," "," "," ");
1824    addmdxcmds(ESqlStatementType.sstmdxcase, TBaseType.rrw_case," "," "," "," "," "," ");
1825    addmdxcmds(ESqlStatementType.sstmdxclearcalculations, TBaseType.rrw_clear,"calculations"," "," "," "," "," ");
1826    addmdxcmds(ESqlStatementType.sstmdxcreateaction, TBaseType.rrw_create,"action"," "," "," "," "," ");
1827    addmdxcmds(ESqlStatementType.sstmdxcreatemember, TBaseType.rrw_create,"calculated","member"," "," "," "," ");
1828    addmdxcmds(ESqlStatementType.sstmdxcreatecellcalculation, TBaseType.rrw_create,"cell","calculation"," "," "," "," ");
1829    addmdxcmds(ESqlStatementType.sstmdxcreatedimensionmember, TBaseType.rrw_create,"dimension","member"," "," "," "," ");
1830    addmdxcmds(ESqlStatementType.sstmdxcreateglobalcube, TBaseType.rrw_create,"global","cube"," "," "," "," ");
1831    addmdxcmds(ESqlStatementType.sstmdxcreateset, TBaseType.rrw_create,"hidden","set"," "," "," "," ");
1832    addmdxcmds(ESqlStatementType.sstmdxcreatemeasure, TBaseType.rrw_create,"measure"," "," "," "," "," ");
1833    addmdxcmds(ESqlStatementType.sstmdxcreatemember, TBaseType.rrw_create,"member"," "," "," "," "," ");
1834    addmdxcmds(ESqlStatementType.sstmdxcreatemember, TBaseType.rrw_create,"session","calculated","memeber"," "," "," ");
1835    addmdxcmds(ESqlStatementType.sstmdxcreatesessioncube, TBaseType.rrw_create,"session","cube"," "," "," "," ");
1836    addmdxcmds(ESqlStatementType.sstmdxcreatedimensionmember, TBaseType.rrw_create,"session","dimension","member"," "," "," ");
1837    addmdxcmds(ESqlStatementType.sstmdxcreateset, TBaseType.rrw_create,"session","hidden","set"," "," "," ");
1838    addmdxcmds(ESqlStatementType.sstmdxcreatemember, TBaseType.rrw_create,"session","memeber"," "," "," "," ");
1839    addmdxcmds(ESqlStatementType.sstmdxcreateset, TBaseType.rrw_create,"session","set"," "," "," "," ");
1840    addmdxcmds(ESqlStatementType.sstmdxcreateset, TBaseType.rrw_create,"set"," "," "," "," "," ");
1841    addmdxcmds(ESqlStatementType.sstmdxcreatesubcube, TBaseType.rrw_create,"subcube"," "," "," "," "," ");
1842    addmdxcmds(ESqlStatementType.sstmdxdrillthrough, TBaseType.rrw_drillthrough," "," "," "," "," "," ");
1843    addmdxcmds(ESqlStatementType.sstmdxdropaction, TBaseType.rrw_drop,"action"," "," "," "," "," ");
1844    addmdxcmds(ESqlStatementType.sstmdxdropmember, TBaseType.rrw_drop,"calculated","member"," "," "," "," ");
1845    addmdxcmds(ESqlStatementType.sstmdxdropcellcalculation, TBaseType.rrw_drop,"cell","calcution"," "," "," "," ");
1846    addmdxcmds(ESqlStatementType.sstmdxdropdimensionmember, TBaseType.rrw_drop,"dimension","member"," "," "," "," ");
1847    addmdxcmds(ESqlStatementType.sstmdxdropmember, TBaseType.rrw_drop,"member"," "," "," "," "," ");
1848    addmdxcmds(ESqlStatementType.sstmdxdropmember, TBaseType.rrw_drop,"session","member"," "," "," "," ");
1849    addmdxcmds(ESqlStatementType.sstmdxdropmember, TBaseType.rrw_drop,"session","calculated","member"," "," "," ");
1850    addmdxcmds(ESqlStatementType.sstmdxdropcellcalculation, TBaseType.rrw_drop,"session","cell","calcution"," "," "," ");
1851    addmdxcmds(ESqlStatementType.sstmdxdropset, TBaseType.rrw_drop,"set"," "," "," "," "," ");
1852    addmdxcmds(ESqlStatementType.sstmdxdropsubcube, TBaseType.rrw_drop,"subcube"," "," "," "," "," ");
1853    addmdxcmds(ESqlStatementType.sstmdxexisting, TBaseType.rrw_existing," "," "," "," "," "," ");
1854    addmdxcmds(ESqlStatementType.sstmdxfreeze, TBaseType.rrw_freeze," "," "," "," "," "," ");
1855    addmdxcmds(ESqlStatementType.sstmdxif, TBaseType.rrw_if," "," "," "," "," "," ");
1856    addmdxcmds(ESqlStatementType.sstmdxrefreshcube, TBaseType.rrw_refresh,"cube"," "," "," "," "," ");
1857    addmdxcmds(ESqlStatementType.sstmdxscope, TBaseType.rrw_scope," "," "," "," "," "," ");
1858    addmdxcmds(ESqlStatementType.sstmdxselect, TBaseType.rrw_select," "," "," "," "," "," ");
1859    addmdxcmds(ESqlStatementType.sstmdxupdate, TBaseType.rrw_update," "," "," "," "," "," ");
1860
1861}
1862
1863void initsybasecmds(){
1864// cmd must be sort alphabetically
1865    addsybasecmds(ESqlStatementType.sstmssqladdsignature, TBaseType.rrw_add,"counter","signature"," "," "," "," ");
1866    addsybasecmds(ESqlStatementType.sstmssqladdsignature, TBaseType.rrw_add,"signature"," "," "," "," "," ");
1867//alter
1868    addsybasecmds(ESqlStatementType.sstmssqlalterapplicationrole, TBaseType.rrw_alter,"application","role"," "," "," "," ");
1869    addsybasecmds(ESqlStatementType.sstmssqlalterassembly, TBaseType.rrw_alter,"assembly"," "," "," "," "," ");
1870    addsybasecmds(ESqlStatementType.sstmssqlalterasymmetrickey, TBaseType.rrw_alter,"asymmetric","key"," "," "," "," ");
1871    addsybasecmds(ESqlStatementType.sstmssqlalterauthorization, TBaseType.rrw_alter,"authorization"," "," "," "," "," ");
1872    addsybasecmds(ESqlStatementType.sstmssqlaltercertificate, TBaseType.rrw_alter,"certificate"," "," "," "," "," ");
1873    addsybasecmds(ESqlStatementType.sstmssqlaltercredential, TBaseType.rrw_alter,"credential"," "," "," "," "," ");
1874    addsybasecmds(ESqlStatementType.sstmssqlalterdatabase, TBaseType.rrw_alter,"database"," "," "," "," "," ");
1875    addsybasecmds(ESqlStatementType.sstmssqlalterendpoint, TBaseType.rrw_alter,"endpoint"," "," "," "," "," ");
1876    addsybasecmds(ESqlStatementType.sstmssqlalterfulltextcatalog, TBaseType.rrw_alter,"fulltext","catalog"," "," "," "," ");
1877    addsybasecmds(ESqlStatementType.sstmssqlalterfulltextindex, TBaseType.rrw_alter,"fulltext","index"," "," "," "," ");
1878    addsybasecmds(ESqlStatementType.sstmssqlalterfunction, TBaseType.rrw_alter,"function"," "," "," "," "," ");
1879    addsybasecmds(ESqlStatementType.sstmssqlalterindex, TBaseType.rrw_alter,"index"," "," "," "," "," ");
1880    addsybasecmds(ESqlStatementType.sstmssqlalterlogin, TBaseType.rrw_alter,"login"," "," "," "," "," ");
1881    addsybasecmds(ESqlStatementType.sstmssqlaltermasterkey, TBaseType.rrw_alter,"master","key"," "," "," "," ");
1882    addsybasecmds(ESqlStatementType.sstmssqlaltermessagetype, TBaseType.rrw_alter,"message","type"," "," "," "," ");
1883    addsybasecmds(ESqlStatementType.sstmssqlalterpartitionfunction, TBaseType.rrw_alter,"partition","function"," "," "," "," ");
1884    addsybasecmds(ESqlStatementType.sstmssqlalterpartitionscheme, TBaseType.rrw_alter,"partition","scheme"," "," "," "," ");
1885    addsybasecmds(ESqlStatementType.sstmssqlalterprocedure, TBaseType.rrw_alter,"proc"," "," "," "," "," ");
1886    addsybasecmds(ESqlStatementType.sstmssqlalterprocedure, TBaseType.rrw_alter,"procedure"," "," "," "," "," ");
1887    addsybasecmds(ESqlStatementType.sstmssqlalterqueue, TBaseType.rrw_alter,"queue"," "," "," "," "," ");
1888    addsybasecmds(ESqlStatementType.sstmssqlalterremoteservicebinding, TBaseType.rrw_alter,"remote","service","binding"," "," "," ");
1889    addsybasecmds(ESqlStatementType.sstmssqlalterrole, TBaseType.rrw_alter,"role"," "," "," "," "," ");
1890    addsybasecmds(ESqlStatementType.sstmssqlalterroute, TBaseType.rrw_alter,"route"," "," "," "," "," ");
1891    addsybasecmds(ESqlStatementType.sstmssqlalterschema, TBaseType.rrw_alter,"schema"," "," "," "," "," ");
1892    addsybasecmds(ESqlStatementType.sstmssqlalterservice, TBaseType.rrw_alter,"service"," "," "," "," "," ");
1893    addsybasecmds(ESqlStatementType.sstmssqlalterservicemasterkey, TBaseType.rrw_alter,"service","master","key"," "," "," ");
1894    addsybasecmds(ESqlStatementType.sstmssqlaltersymmetrickey, TBaseType.rrw_alter,"symmetric","key"," "," "," "," ");
1895    addsybasecmds(ESqlStatementType.sstaltertable, TBaseType.rrw_alter,"table"," "," "," "," "," ");
1896    addsybasecmds(ESqlStatementType.sstmssqlaltertrigger, TBaseType.rrw_alter,"trigger"," "," "," "," "," ");
1897    addsybasecmds(ESqlStatementType.sstmssqlalteruser, TBaseType.rrw_alter,"user"," "," "," "," "," ");
1898    addsybasecmds(ESqlStatementType.sstmssqlalterview, TBaseType.rrw_alter,"view"," "," "," "," "," ");
1899    addsybasecmds(ESqlStatementType.sstmssqlalterxmlschemacollection, TBaseType.rrw_alter,"xml","schema","collection"," "," "," ");
1900//backup
1901    addsybasecmds(ESqlStatementType.sstmssqlbackupdatabase, TBaseType.rrw_backup,"database"," "," "," "," "," ");
1902    addsybasecmds(ESqlStatementType.sstmssqlbackupcertificate, TBaseType.rrw_backup,"certificate"," "," "," "," "," ");
1903    addsybasecmds(ESqlStatementType.sstmssqlbackuplog, TBaseType.rrw_backup,"log"," "," "," "," "," ");
1904    addsybasecmds(ESqlStatementType.sstmssqlbackupmasterkey, TBaseType.rrw_backup,"master","key"," "," "," "," ");
1905    addsybasecmds(ESqlStatementType.sstmssqlbackupservicemasterkey, TBaseType.rrw_backup,"service","master","key"," "," "," ");
1906//begin
1907    addsybasecmds(ESqlStatementType.sstmssqlbegincatch, TBaseType.rrw_begin,"catch"," "," "," "," "," ");
1908    addsybasecmds(ESqlStatementType.sstmssqlbeginconversationtimer, TBaseType.rrw_begin,"conversation","timer"," "," "," "," ");
1909    addsybasecmds(ESqlStatementType.sstmssqlbegindialog, TBaseType.rrw_begin,"dialog"," "," "," "," "," ");
1910    addsybasecmds(ESqlStatementType.sstmssqlbegindistributed, TBaseType.rrw_begin,"distributed"," "," "," "," "," ");
1911    addsybasecmds(ESqlStatementType.sstmssqlbegintran, TBaseType.rrw_begin,"tran"," "," "," "," "," ");
1912    addsybasecmds(ESqlStatementType.sstmssqlbegintran, TBaseType.rrw_begin,"transaction"," "," "," "," "," ");
1913    addsybasecmds(ESqlStatementType.sstmssqlbegintry, TBaseType.rrw_begin,"try"," "," "," "," "," ");
1914//break
1915    addsybasecmds(ESqlStatementType.sstbreak, TBaseType.rrw_break," "," "," "," "," "," ");
1916//bulk insert
1917    addsybasecmds(ESqlStatementType.sstmssqlbulkinsert, TBaseType.rrw_bulk,"insert"," "," "," "," "," ");
1918
1919    addsybasecmds(ESqlStatementType.sstcall, TBaseType.rrw_call," "," "," "," "," "," ");
1920
1921//checkpoint
1922    addsybasecmds(ESqlStatementType.sstmssqlcheckpoint, TBaseType.rrw_checkpoint," "," "," "," "," "," ");
1923//close
1924    addsybasecmds(ESqlStatementType.sstmssqlclose, TBaseType.rrw_close," "," "," "," "," "," ");
1925    addsybasecmds(ESqlStatementType.sstmssqlclosesymmetrickey, TBaseType.rrw_close,"all", "symmetric", "keys"," "," "," ");
1926    addsybasecmds(ESqlStatementType.sstmssqlclosemasterkey, TBaseType.rrw_close,"master", "key"," "," "," "," ");
1927    addsybasecmds(ESqlStatementType.sstmssqlclosesymmetrickey, TBaseType.rrw_close,"symmetric", "key"," "," "," "," ");
1928//commit
1929    addsybasecmds(ESqlStatementType.sstmssqlcommit, TBaseType.rrw_commit," "," "," "," "," "," ");
1930    addsybasecmds(ESqlStatementType.sstmssqlcommit, TBaseType.rrw_commit,"work"," "," "," "," "," ");
1931    addsybasecmds(ESqlStatementType.sstmssqlcommit, TBaseType.rrw_commit,"tran"," "," "," "," "," ");
1932    addsybasecmds(ESqlStatementType.sstmssqlcommit, TBaseType.rrw_commit,"transaction"," "," "," "," "," ");
1933//continue
1934    addsybasecmds(ESqlStatementType.sstmssqlcontinue, TBaseType.rrw_continue," "," "," "," "," "," ");
1935//create
1936    addsybasecmds(ESqlStatementType.sstmssqlcreateaggregate, TBaseType.rrw_create,"aggregate"," "," "," "," "," ");
1937    addsybasecmds(ESqlStatementType.sstmssqlcreateapplicationrole, TBaseType.rrw_create,"application", "role"," "," "," "," ");
1938    addsybasecmds(ESqlStatementType.sstmssqlcreateassembly, TBaseType.rrw_create,"assembly"," "," "," "," "," ");
1939    addsybasecmds(ESqlStatementType.sstmssqlcreateasymmetrickey, TBaseType.rrw_create,"asymmetric", "key"," "," "," "," ");
1940    addsybasecmds(ESqlStatementType.sstmssqlcreatecertificate, TBaseType.rrw_create,"certificate"," "," "," "," "," ");
1941    addsybasecmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"clustered","index"," "," "," "," ");
1942    addsybasecmds(ESqlStatementType.sstmssqlcreatecontract, TBaseType.rrw_create,"contract"," "," "," "," "," ");
1943    addsybasecmds(ESqlStatementType.sstmssqlcreatecredential, TBaseType.rrw_create,"credential"," "," "," "," "," ");
1944    addsybasecmds(ESqlStatementType.sstcreatedatabase, TBaseType.rrw_create,"database"," "," "," "," "," ");
1945    addsybasecmds(ESqlStatementType.sstmssqlcreatedefault, TBaseType.rrw_create,"default"," "," "," "," "," ");
1946    addsybasecmds(ESqlStatementType.sstmssqlcreateendpoint, TBaseType.rrw_create,"endpoint"," "," "," "," "," ");
1947    addsybasecmds(ESqlStatementType.sstmssqlcreateeventnotification, TBaseType.rrw_create,"event", "notification"," "," "," "," ");
1948    addsybasecmds(ESqlStatementType.sstmssqlcreatefulltextcatalog, TBaseType.rrw_create,"fulltext", "catalog"," "," "," "," ");
1949    addsybasecmds(ESqlStatementType.sstmssqlcreatefulltextindex, TBaseType.rrw_create,"fulltext", "index"," "," "," "," ");
1950    addsybasecmds(ESqlStatementType.sstmssqlcreatefunction, TBaseType.rrw_create,"function"," "," "," "," "," ");
1951    addsybasecmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"index"," "," "," "," "," ");
1952    addsybasecmds(ESqlStatementType.sstmssqlcreatelogin, TBaseType.rrw_create,"login"," "," "," "," "," ");
1953    addsybasecmds(ESqlStatementType.sstmssqlcreatemasterkey, TBaseType.rrw_create,"master","key"," "," "," "," ");
1954    addsybasecmds(ESqlStatementType.sstmssqlcreatemessagetype, TBaseType.rrw_create,"message","type"," "," "," "," ");
1955    addsybasecmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"nonclustered","index"," "," "," "," ");
1956    addsybasecmds(ESqlStatementType.sstmssqlcreatefunction, TBaseType.rrw_create,"or","replace","function"," "," "," ");
1957    addsybasecmds(ESqlStatementType.sstmssqlcreateprocedure, TBaseType.rrw_create,"or","replace","proc"," "," "," ");
1958    addsybasecmds(ESqlStatementType.sstmssqlcreateprocedure, TBaseType.rrw_create,"or","replace","procedure"," "," "," ");
1959    addsybasecmds(ESqlStatementType.sstmssqlcreatepartitionfunction, TBaseType.rrw_create,"partition","function"," "," "," "," ");
1960    addsybasecmds(ESqlStatementType.sstmssqlcreatepartitionscheme, TBaseType.rrw_create,"partition","scheme"," "," "," "," ");
1961    addsybasecmds(ESqlStatementType.sstmssqlcreateprocedure, TBaseType.rrw_create,"proc"," "," "," "," "," ");
1962    addsybasecmds(ESqlStatementType.sstmssqlcreateprocedure, TBaseType.rrw_create,"procedure"," "," "," "," "," ");
1963    addsybasecmds(ESqlStatementType.sstmssqlcreatequeue, TBaseType.rrw_create,"queue"," "," "," "," "," ");
1964    addsybasecmds(ESqlStatementType.sstmssqlcreateremoteservicebinding, TBaseType.rrw_create,"remote", "service", "binding"," "," "," ");
1965    addsybasecmds(ESqlStatementType.sstmssqlcreaterole, TBaseType.rrw_create,"role"," "," "," "," "," ");
1966    addsybasecmds(ESqlStatementType.sstmssqlcreateroute, TBaseType.rrw_create,"route"," "," "," "," "," ");
1967    addsybasecmds(ESqlStatementType.sstmssqlcreaterule, TBaseType.rrw_create,"rule"," "," "," "," "," ");
1968    addsybasecmds(ESqlStatementType.sstmssqlcreateschema, TBaseType.rrw_create,"schema"," "," "," "," "," ");
1969    addsybasecmds(ESqlStatementType.sstmssqlcreateservice, TBaseType.rrw_create,"service"," "," "," "," "," ");
1970    addsybasecmds(ESqlStatementType.sstmssqlcreatestatistics, TBaseType.rrw_create,"statistics"," "," "," "," "," ");
1971    addsybasecmds(ESqlStatementType.sstmssqlcreatesymmetrickey, TBaseType.rrw_create,"symmetric", "key"," "," "," "," ");
1972    addsybasecmds(ESqlStatementType.sstmssqlcreatesynonym, TBaseType.rrw_create,"synonym"," "," "," "," "," ");
1973    addsybasecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"table"," "," "," "," "," ");
1974    addsybasecmds(ESqlStatementType.sstcreatetrigger, TBaseType.rrw_create,"trigger"," "," "," "," "," ");
1975    addsybasecmds(ESqlStatementType.sstmssqlcreatetype, TBaseType.rrw_create,"type"," "," "," "," "," ");
1976    addsybasecmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"unique","clustered","index"," "," "," ");
1977    addsybasecmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"unique","index"," "," "," "," ");
1978    addsybasecmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"unique","nonclustered","index"," "," "," ");
1979    addsybasecmds(ESqlStatementType.sstmssqlcreateuser, TBaseType.rrw_create,"user"," "," "," "," "," ");
1980    addsybasecmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,"view"," "," "," "," "," ");
1981    addsybasecmds(ESqlStatementType.sstmssqlcreatexmlschemacollection, TBaseType.rrw_create,"xml", "schema", "collection"," "," "," ");
1982// DBCC
1983    addsybasecmds(ESqlStatementType.sstmssqldbcc, TBaseType.rrw_dbcc," "," "," "," "," "," ");
1984//DEALLOCATE
1985    addsybasecmds(ESqlStatementType.sstmssqldeallocate, TBaseType.rrw_deallocate," "," "," "," "," "," ");
1986//DECLARE
1987    addsybasecmds(ESqlStatementType.sstmssqldeclare, TBaseType.rrw_declare," "," "," "," "," "," ");
1988//DELETE
1989    addsybasecmds(ESqlStatementType.sstdelete, TBaseType.rrw_delete," "," "," "," "," "," ");
1990
1991//DELETE statistics
1992    addsybasecmds(ESqlStatementType.sstsybaseDeleteStatistics, TBaseType.rrw_delete,"shared","statistics"," "," "," "," ");
1993    addsybasecmds(ESqlStatementType.sstsybaseDeleteStatistics, TBaseType.rrw_delete,"statistics"," "," "," "," "," ");
1994
1995//DENY
1996    addsybasecmds(ESqlStatementType.sstmssqldeny, TBaseType.rrw_deny," "," "," "," "," "," ");
1997//DISABLE TRIGGER
1998    addsybasecmds(ESqlStatementType.sstmssqldisabletrigger, TBaseType.rrw_disable,"trigger"," "," "," "," "," ");
1999//drop
2000    addsybasecmds(ESqlStatementType.sstmssqldropaggregate, TBaseType.rrw_drop,"aggregate"," "," "," "," "," ");
2001    addsybasecmds(ESqlStatementType.sstmssqldropapplicationrole, TBaseType.rrw_drop,"application", "role"," "," "," "," ");
2002    addsybasecmds(ESqlStatementType.sstmssqldropassembly, TBaseType.rrw_drop,"assembly"," "," "," "," "," ");
2003    addsybasecmds(ESqlStatementType.sstmssqldropasymmetrickey, TBaseType.rrw_drop,"asymmetric", "key"," "," "," "," ");
2004    addsybasecmds(ESqlStatementType.sstmssqldropcertificate, TBaseType.rrw_drop,"certificate"," "," "," "," "," ");
2005    addsybasecmds(ESqlStatementType.sstmssqldropcontract, TBaseType.rrw_drop,"contract"," "," "," "," "," ");
2006    addsybasecmds(ESqlStatementType.sstmssqldropsignature, TBaseType.rrw_drop,"counter", "signature"," "," "," "," ");
2007    addsybasecmds(ESqlStatementType.sstmssqldropcredential, TBaseType.rrw_drop,"credential"," "," "," "," "," ");
2008    addsybasecmds(ESqlStatementType.sstmssqldropdatabase, TBaseType.rrw_drop,"database"," "," "," "," "," ");
2009    addsybasecmds(ESqlStatementType.sstmssqldropdefault, TBaseType.rrw_drop,"default"," "," "," "," "," ");
2010    addsybasecmds(ESqlStatementType.sstmssqldropendpoint, TBaseType.rrw_drop,"endpoint"," "," "," "," "," ");
2011    addsybasecmds(ESqlStatementType.sstmssqldropeventnotification, TBaseType.rrw_drop,"event", "notification"," "," "," "," ");
2012    addsybasecmds(ESqlStatementType.sstmssqldropfulltextcatalog, TBaseType.rrw_drop,"fulltext", "catalog"," "," "," "," ");
2013    addsybasecmds(ESqlStatementType.sstmssqldropfulltextindex, TBaseType.rrw_drop,"fulltext", "index"," "," "," "," ");
2014    addsybasecmds(ESqlStatementType.sstmssqldropfunction, TBaseType.rrw_drop,"function"," "," "," "," "," ");
2015    addsybasecmds(ESqlStatementType.sstmssqldropindex, TBaseType.rrw_drop,"index"," "," "," "," "," ");
2016    addsybasecmds(ESqlStatementType.sstmssqldroplogin, TBaseType.rrw_drop,"login"," "," "," "," "," ");
2017    addsybasecmds(ESqlStatementType.sstmssqldropmasterkey, TBaseType.rrw_drop,"master", "key"," "," "," "," ");
2018    addsybasecmds(ESqlStatementType.sstmssqldropmessagetype, TBaseType.rrw_drop,"message", "type"," "," "," "," ");
2019    addsybasecmds(ESqlStatementType.sstmssqldroppartitionfunction, TBaseType.rrw_drop,"partition", "function"," "," "," "," ");
2020    addsybasecmds(ESqlStatementType.sstmssqldroppartitionscheme, TBaseType.rrw_drop,"partition", "scheme"," "," "," "," ");
2021    addsybasecmds(ESqlStatementType.sstmssqldropprocedure, TBaseType.rrw_drop,"proc"," "," "," "," "," ");
2022    addsybasecmds(ESqlStatementType.sstmssqldropprocedure, TBaseType.rrw_drop,"procedure"," "," "," "," "," ");
2023    addsybasecmds(ESqlStatementType.sstmssqldropqueue, TBaseType.rrw_drop,"queue"," "," "," "," "," ");
2024    addsybasecmds(ESqlStatementType.sstmssqldropremoteservicebinding, TBaseType.rrw_drop,"remote", "service", "binding"," "," "," ");
2025    addsybasecmds(ESqlStatementType.sstmssqldroprole, TBaseType.rrw_drop,"role"," "," "," "," "," ");
2026    addsybasecmds(ESqlStatementType.sstmssqldroproute, TBaseType.rrw_drop,"route"," "," "," "," "," ");
2027    addsybasecmds(ESqlStatementType.sstmssqldroprule, TBaseType.rrw_drop,"rule"," "," "," "," "," ");
2028    addsybasecmds(ESqlStatementType.sstmssqldropschema, TBaseType.rrw_drop,"schema"," "," "," "," "," ");
2029    addsybasecmds(ESqlStatementType.sstmssqldropservice, TBaseType.rrw_drop,"service"," "," "," "," "," ");
2030    addsybasecmds(ESqlStatementType.sstmssqldropsignature, TBaseType.rrw_drop,"signature"," "," "," "," "," ");
2031    addsybasecmds(ESqlStatementType.sstmssqldropstatistics, TBaseType.rrw_drop,"statistics"," "," "," "," "," ");
2032    addsybasecmds(ESqlStatementType.sstmssqldropsymmetrickey, TBaseType.rrw_drop,"symmetric", "key"," "," "," "," ");
2033    addsybasecmds(ESqlStatementType.sstmssqldropsynonym, TBaseType.rrw_drop,"synonym"," "," "," "," "," ");
2034    addsybasecmds(ESqlStatementType.sstmssqldroptable, TBaseType.rrw_drop,"table"," "," "," "," "," ");
2035    addsybasecmds(ESqlStatementType.sstmssqldroptrigger, TBaseType.rrw_drop,"trigger"," "," "," "," "," ");
2036    addsybasecmds(ESqlStatementType.sstmssqldroptype, TBaseType.rrw_drop,"type"," "," "," "," "," ");
2037    addsybasecmds(ESqlStatementType.sstmssqldropuser, TBaseType.rrw_drop,"user"," "," "," "," "," ");
2038    addsybasecmds(ESqlStatementType.sstmssqldropview, TBaseType.rrw_drop,"view"," "," "," "," "," ");
2039    addsybasecmds(ESqlStatementType.sstmssqldropxmlschemacollection, TBaseType.rrw_drop,"xml", "schema", "collection"," "," "," ");
2040
2041    addsybasecmds(ESqlStatementType.sstsybasedumpTran, TBaseType.rrw_sybase_dump,"tran"," "," "," "," "," ");
2042    addsybasecmds(ESqlStatementType.sstsybasedumpTran, TBaseType.rrw_sybase_dump,"transaction"," "," "," "," "," ");
2043//if
2044    addsybasecmds(ESqlStatementType.sstmssqlif, TBaseType.rrw_if," "," "," "," "," "," ");
2045//enable trigger
2046    addsybasecmds(ESqlStatementType.sstmssqlenabletrigger, TBaseType.rrw_enable,"trigger"," "," "," "," "," ");
2047//END CONVERSATION
2048// addsybasecmds(ESqlStatementType.sstMssqlEndCatch,TBaseType.rrw_end,'catch');
2049    addsybasecmds(ESqlStatementType.sstmssqlendconversation, TBaseType.rrw_end,"conversation"," "," "," "," "," ");
2050// addsybasecmds(ESqlStatementType.sstMssqlEndTry,TBaseType.rrw_end,'try');
2051//exec
2052//exec as
2053    addsybasecmds(ESqlStatementType.sstmssqlexec, TBaseType.rrw_exec," "," "," "," "," "," ");
2054    addsybasecmds(ESqlStatementType.sstmssqlexecuteas, TBaseType.rrw_exec,"as","caller"," "," "," "," ");
2055    addsybasecmds(ESqlStatementType.sstmssqlexecuteas, TBaseType.rrw_exec,"as","login"," "," "," "," ");
2056    addsybasecmds(ESqlStatementType.sstmssqlexecuteas, TBaseType.rrw_exec,"as","user"," "," "," "," ");
2057    addsybasecmds(ESqlStatementType.sstmssqlexec, TBaseType.rrw_execute, " "," "," "," "," "," ");
2058    addsybasecmds(ESqlStatementType.sstmssqlexecuteas, TBaseType.rrw_execute,"as","caller"," "," "," "," ");
2059    addsybasecmds(ESqlStatementType.sstmssqlexecuteas, TBaseType.rrw_execute,"as","login"," "," "," "," ");
2060    addsybasecmds(ESqlStatementType.sstmssqlexecuteas, TBaseType.rrw_execute,"as","user"," "," "," "," ");
2061//fetch
2062    addsybasecmds(ESqlStatementType.sstmssqlfetch, TBaseType.rrw_fetch," "," "," "," "," "," ");
2063//go
2064    addsybasecmds(ESqlStatementType.sstmssqlgo, TBaseType.rrw_go," "," "," "," "," "," ");
2065//goto
2066    addsybasecmds(ESqlStatementType.sstmssqlgoto, TBaseType.rrw_goto," "," "," "," "," "," ");
2067//GRANT
2068    addsybasecmds(ESqlStatementType.sstmssqlgrant, TBaseType.rrw_grant," "," "," "," "," "," ");
2069//GRANT
2070    addsybasecmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert," "," "," "," "," "," ");
2071
2072    addsybasecmds(ESqlStatementType.sstsybaseInsertBulk, TBaseType.rrw_insert,"bulk"," "," "," "," "," ");
2073//KILL
2074    addsybasecmds(ESqlStatementType.sstmssqlkill, TBaseType.rrw_kill," "," "," "," "," "," ");
2075//KILL
2076    addsybasecmds(ESqlStatementType.sstmssqlkill, TBaseType.rrw_kill," "," "," "," "," "," ");
2077    addsybasecmds(ESqlStatementType.sstmssqlkillquerynotificationsubscription, TBaseType.rrw_kill,"kill", "query", "notification", "subscription"," "," ");
2078    addsybasecmds(ESqlStatementType.sstmssqlkillstats, TBaseType.rrw_kill,"stats"," "," "," "," "," ");
2079
2080    addsybasecmds(ESqlStatementType.sstload,TBaseType.rrw_load,"table"," "," "," "," "," ");
2081//
2082 addsybasecmds(ESqlStatementType.sstsybaselocktable,TBaseType.rw_locktable,"table"," "," "," "," "," ");
2083//MOVE CONVERSATION
2084    addsybasecmds(ESqlStatementType.sstmssqlmoveconversation, TBaseType.rrw_move,"conversation"," "," "," "," "," ");
2085//merge
2086    addsybasecmds(ESqlStatementType.sstmerge, TBaseType.rrw_merge," "," "," "," "," "," ");
2087//open
2088    addsybasecmds(ESqlStatementType.sstmssqlopen, TBaseType.rrw_open," "," "," "," "," "," ");
2089    addsybasecmds(ESqlStatementType.sstmssqlopenmasterkey, TBaseType.rrw_open,"master", "key"," "," "," "," ");
2090    addsybasecmds(ESqlStatementType.sstmssqlopensymmetrickey, TBaseType.rrw_open,"symmetric", "key"," "," "," "," ");
2091//PRINT
2092    addsybasecmds(ESqlStatementType.sstmssqlprint, TBaseType.rrw_print," "," "," "," "," "," ");
2093//RAISERROR
2094    addsybasecmds(ESqlStatementType.sstmssqlraiserror, TBaseType.rrw_raiserror," "," "," "," "," "," ");
2095//READTEXT
2096    addsybasecmds(ESqlStatementType.sstmssqlreadtext, TBaseType.rrw_readtext," "," "," "," "," "," ");
2097//RECEIVE
2098    addsybasecmds(ESqlStatementType.sstmssqlreceive, TBaseType.rrw_receive," "," "," "," "," "," ");
2099//RECONFIGURE
2100    addsybasecmds(ESqlStatementType.sstmssqlreconfigure, TBaseType.rrw_reconfigure," "," "," "," "," "," ");
2101//RESTORE
2102    addsybasecmds(ESqlStatementType.sstmssqlrestoredatabase, TBaseType.rrw_restore,"database"," "," "," "," "," ");
2103    addsybasecmds(ESqlStatementType.sstmssqlrestorefilelistonly, TBaseType.rrw_restore,"filelistonly"," "," "," "," "," ");
2104    addsybasecmds(ESqlStatementType.sstmssqlrestoreheaderonly, TBaseType.rrw_restore,"headeronly"," "," "," "," "," ");
2105    addsybasecmds(ESqlStatementType.sstmssqlrestorelabelonly, TBaseType.rrw_restore,"labelonly"," "," "," "," "," ");
2106    addsybasecmds(ESqlStatementType.sstmssqlrestorelog, TBaseType.rrw_restore,"log"," "," "," "," "," ");
2107    addsybasecmds(ESqlStatementType.sstmssqlrestoremasterkey, TBaseType.rrw_restore,"master","key"," "," "," "," ");
2108    addsybasecmds(ESqlStatementType.sstmssqlrestorerewindonly, TBaseType.rrw_restore,"rewindonly"," "," "," "," "," ");
2109    addsybasecmds(ESqlStatementType.sstmssqlrestoreservicemasterkey, TBaseType.rrw_restore,"service","master","key"," "," "," ");
2110    addsybasecmds(ESqlStatementType.sstmssqlrestoreverifyonly, TBaseType.rrw_restore,"verifyonly"," "," "," "," "," ");
2111//RETURN
2112    addsybasecmds(ESqlStatementType.sstmssqlreturn, TBaseType.rrw_return," "," "," "," "," "," ");
2113//REVERT
2114    addsybasecmds(ESqlStatementType.sstmssqlrevert, TBaseType.rrw_revert," "," "," "," "," "," ");
2115//REVOKE
2116    addsybasecmds(ESqlStatementType.sstmssqlrevoke, TBaseType.rrw_revoke," "," "," "," "," "," ");
2117//ROLLBACK
2118    addsybasecmds(ESqlStatementType.sstmssqlrollback, TBaseType.rrw_rollback," "," "," "," "," "," ");
2119    addsybasecmds(ESqlStatementType.sstmssqlrollback, TBaseType.rrw_rollback,"tran"," "," "," "," "," ");
2120    addsybasecmds(ESqlStatementType.sstmssqlrollback, TBaseType.rrw_rollback,"transaction"," "," "," "," "," ");
2121    addsybasecmds(ESqlStatementType.sstmssqlrollback, TBaseType.rrw_rollback,"work"," "," "," "," "," ");
2122//SAVE
2123    addsybasecmds(ESqlStatementType.sstmssqlsavetran, TBaseType.rrw_save," "," "," "," "," "," ");
2124    addsybasecmds(ESqlStatementType.sstmssqlsavetran, TBaseType.rrw_save,"tran"," "," "," "," "," ");
2125    addsybasecmds(ESqlStatementType.sstmssqlsavetran, TBaseType.rrw_save,"transaction"," "," "," "," "," ");
2126//SELECT
2127    addsybasecmds(ESqlStatementType.sstselect, TBaseType.rrw_select," "," "," "," "," "," ");
2128//SEND ON CONVERSATION
2129    addsybasecmds(ESqlStatementType.sstmssqlsendonconversation, TBaseType.rrw_send,"on","conversation"," "," "," "," ");
2130//SET
2131    addsybasecmds(ESqlStatementType.sstmssqlset, TBaseType.rrw_set," "," "," "," "," "," ");
2132//SET
2133    addsybasecmds(ESqlStatementType.sstmssqlsetuser,TBaseType.rrw_setuser," "," "," "," "," "," ");
2134//SHUTDOWN
2135    addsybasecmds(ESqlStatementType.sstmssqlshutdown, TBaseType.rrw_shutdown," "," "," "," "," "," ");
2136//SIGN
2137//    addsybasecmds(ESqlStatementType.sstmssqlsign, rrw_sign," "," "," "," "," "," ");
2138//TRUNCATE TABLE
2139    addsybasecmds(ESqlStatementType.sstmssqltruncatetable, TBaseType.rrw_truncate,"table"," "," "," "," "," ");
2140//UPDATE
2141    addsybasecmds(ESqlStatementType.sstupdate, TBaseType.rrw_update," "," "," "," "," "," ");
2142//UPDATE all STATISTICS
2143    addsybasecmds(ESqlStatementType.sstmssqlupdatestatistics, TBaseType.rrw_update,"all","statistics"," "," "," "," ");
2144//UPDATE index STATISTICS
2145    addsybasecmds(ESqlStatementType.sstsybaseupdateindexstatistics, TBaseType.rrw_update,"index","statistics"," "," "," "," ");
2146//UPDATE STATISTICS
2147    addsybasecmds(ESqlStatementType.sstmssqlupdatestatistics, TBaseType.rrw_update,"statistics"," "," "," "," "," ");
2148//UPDATETEXT
2149    addsybasecmds(ESqlStatementType.sstmssqlupdatetext, TBaseType.rrw_updatetext," "," "," "," "," "," ");
2150//USE
2151    addsybasecmds(ESqlStatementType.sstmssqluse, TBaseType.rrw_use," "," "," "," "," "," ");
2152//WAITFOR
2153    addsybasecmds(ESqlStatementType.sstmssqlwaitfor, TBaseType.rrw_waitfor," "," "," "," "," "," ");
2154//WHILE
2155    addsybasecmds(ESqlStatementType.sstmssqlwhile, TBaseType.rrw_while," "," "," "," "," "," ");
2156//WITH, don't recongize here, let isMssqlSql do it
2157// addsybasecmds(ESqlStatementType.sstMssqlCTE,rrw_WITH,' ');
2158//WITH XMLNAMESPACES
2159    addsybasecmds(ESqlStatementType.sstmssqlwithxmlnamespaces, TBaseType.rrw_with,"xmlnamespaces"," "," "," "," "," ");
2160//WRITETEXT
2161    addsybasecmds(ESqlStatementType.sstsybaseWritetext, TBaseType.rrw_writetext," "," "," "," "," "," ");
2162
2163}
2164
2165void initmssqlcmds(){
2166// cmd must be sort alphabetically
2167    addmssqlcmds(ESqlStatementType.sstmssqladdsignature, TBaseType.rrw_add,"counter","signature"," "," "," "," ");
2168    addmssqlcmds(ESqlStatementType.sstmssqladdsignature, TBaseType.rrw_add,"signature"," "," "," "," "," ");
2169//alter
2170    addmssqlcmds(ESqlStatementType.sstmssqlalterapplicationrole, TBaseType.rrw_alter,"application","role"," "," "," "," ");
2171    addmssqlcmds(ESqlStatementType.sstmssqlalterassembly, TBaseType.rrw_alter,"assembly"," "," "," "," "," ");
2172    addmssqlcmds(ESqlStatementType.sstmssqlalterasymmetrickey, TBaseType.rrw_alter,"asymmetric","key"," "," "," "," ");
2173    addmssqlcmds(ESqlStatementType.sstmssqlalterauthorization, TBaseType.rrw_alter,"authorization"," "," "," "," "," ");
2174    addmssqlcmds(ESqlStatementType.sstmssqlaltercertificate, TBaseType.rrw_alter,"certificate"," "," "," "," "," ");
2175    addmssqlcmds(ESqlStatementType.sstmssqlaltercredential, TBaseType.rrw_alter,"credential"," "," "," "," "," ");
2176    addmssqlcmds(ESqlStatementType.sstmssqlalterdatabase, TBaseType.rrw_alter,"database"," "," "," "," "," ");
2177    addmssqlcmds(ESqlStatementType.sstmssqlalterendpoint, TBaseType.rrw_alter,"endpoint"," "," "," "," "," ");
2178    addmssqlcmds(ESqlStatementType.sstmssqlalterfulltextcatalog, TBaseType.rrw_alter,"fulltext","catalog"," "," "," "," ");
2179    addmssqlcmds(ESqlStatementType.sstmssqlalterfulltextindex, TBaseType.rrw_alter,"fulltext","index"," "," "," "," ");
2180    addmssqlcmds(ESqlStatementType.sstmssqlalterfunction, TBaseType.rrw_alter,"function"," "," "," "," "," ");
2181    addmssqlcmds(ESqlStatementType.sstmssqlalterindex, TBaseType.rrw_alter,"index"," "," "," "," "," ");
2182    addmssqlcmds(ESqlStatementType.sstmssqlalterlogin, TBaseType.rrw_alter,"login"," "," "," "," "," ");
2183    addmssqlcmds(ESqlStatementType.sstmssqlaltermasterkey, TBaseType.rrw_alter,"master","key"," "," "," "," ");
2184    addmssqlcmds(ESqlStatementType.sstmssqlaltermessagetype, TBaseType.rrw_alter,"message","type"," "," "," "," ");
2185    addmssqlcmds(ESqlStatementType.sstmssqlalterpartitionfunction, TBaseType.rrw_alter,"partition","function"," "," "," "," ");
2186    addmssqlcmds(ESqlStatementType.sstmssqlalterpartitionscheme, TBaseType.rrw_alter,"partition","scheme"," "," "," "," ");
2187    addmssqlcmds(ESqlStatementType.sstmssqlalterprocedure, TBaseType.rrw_alter,"proc"," "," "," "," "," ");
2188    addmssqlcmds(ESqlStatementType.sstmssqlalterprocedure, TBaseType.rrw_alter,"procedure"," "," "," "," "," ");
2189    addmssqlcmds(ESqlStatementType.sstmssqlalterqueue, TBaseType.rrw_alter,"queue"," "," "," "," "," ");
2190    addmssqlcmds(ESqlStatementType.sstmssqlalterremoteservicebinding, TBaseType.rrw_alter,"remote","service","binding"," "," "," ");
2191    addmssqlcmds(ESqlStatementType.sstmssqlalterrole, TBaseType.rrw_alter,"role"," "," "," "," "," ");
2192    addmssqlcmds(ESqlStatementType.sstmssqlalterroute, TBaseType.rrw_alter,"route"," "," "," "," "," ");
2193    addmssqlcmds(ESqlStatementType.sstmssqlalterschema, TBaseType.rrw_alter,"schema"," "," "," "," "," ");
2194    addmssqlcmds(ESqlStatementType.sstmssqlAlterSecurityPolicy, TBaseType.rrw_alter, "security", "policy", " ", " ", " ", " ");
2195    addmssqlcmds(ESqlStatementType.sstaltersequence, TBaseType.rrw_alter, "sequence", " ", " ", " ", " ", " ");
2196    addmssqlcmds(ESqlStatementType.sstmssqlalterservice, TBaseType.rrw_alter,"service"," "," "," "," "," ");
2197    addmssqlcmds(ESqlStatementType.sstmssqlalterservicemasterkey, TBaseType.rrw_alter,"service","master","key"," "," "," ");
2198    addmssqlcmds(ESqlStatementType.sstmssqlaltersymmetrickey, TBaseType.rrw_alter,"symmetric","key"," "," "," "," ");
2199    addmssqlcmds(ESqlStatementType.sstaltertable, TBaseType.rrw_alter,"table"," "," "," "," "," ");
2200    addmssqlcmds(ESqlStatementType.sstmssqlaltertrigger, TBaseType.rrw_alter,"trigger"," "," "," "," "," ");
2201    addmssqlcmds(ESqlStatementType.sstmssqlalteruser, TBaseType.rrw_alter,"user"," "," "," "," "," ");
2202    addmssqlcmds(ESqlStatementType.sstmssqlalterview, TBaseType.rrw_alter,"view"," "," "," "," "," ");
2203    addmssqlcmds(ESqlStatementType.sstmssqlalterxmlschemacollection, TBaseType.rrw_alter,"xml","schema","collection"," "," "," ");
2204//backup
2205    addmssqlcmds(ESqlStatementType.sstmssqlbackupcertificate, TBaseType.rrw_backup,"certificate"," "," "," "," "," ");
2206    addmssqlcmds(ESqlStatementType.sstmssqlbackupdatabase, TBaseType.rrw_backup,"database"," "," "," "," "," ");
2207    addmssqlcmds(ESqlStatementType.sstmssqlbackuplog, TBaseType.rrw_backup,"log"," "," "," "," "," ");
2208    addmssqlcmds(ESqlStatementType.sstmssqlbackupmasterkey, TBaseType.rrw_backup,"master","key"," "," "," "," ");
2209    addmssqlcmds(ESqlStatementType.sstmssqlbackupservicemasterkey, TBaseType.rrw_backup,"service","master","key"," "," "," ");
2210//begin
2211    addmssqlcmds(ESqlStatementType.sstmssqlbegincatch, TBaseType.rrw_begin,"catch"," "," "," "," "," ");
2212    addmssqlcmds(ESqlStatementType.sstmssqlbeginconversationtimer, TBaseType.rrw_begin,"conversation","timer"," "," "," "," ");
2213    addmssqlcmds(ESqlStatementType.sstmssqlbegindialog, TBaseType.rrw_begin,"dialog"," "," "," "," "," ");
2214    addmssqlcmds(ESqlStatementType.sstmssqlbegindistributed, TBaseType.rrw_begin,"distributed"," "," "," "," "," ");
2215    addmssqlcmds(ESqlStatementType.sstmssqlbegintran, TBaseType.rrw_begin,"tran"," "," "," "," "," ");
2216    addmssqlcmds(ESqlStatementType.sstmssqlbegintran, TBaseType.rrw_begin,"transaction"," "," "," "," "," ");
2217    addmssqlcmds(ESqlStatementType.sstmssqlbegintry, TBaseType.rrw_begin,"try"," "," "," "," "," ");
2218//break
2219    addmssqlcmds(ESqlStatementType.sstbreak, TBaseType.rrw_break," "," "," "," "," "," ");
2220//bulk insert
2221    addmssqlcmds(ESqlStatementType.sstmssqlbulkinsert, TBaseType.rrw_bulk,"insert"," "," "," "," "," ");
2222//checkpoint
2223    addmssqlcmds(ESqlStatementType.sstmssqlcheckpoint, TBaseType.rrw_checkpoint," "," "," "," "," "," ");
2224//close
2225    addmssqlcmds(ESqlStatementType.sstmssqlclose, TBaseType.rrw_close," "," "," "," "," "," ");
2226    addmssqlcmds(ESqlStatementType.sstmssqlclosesymmetrickey, TBaseType.rrw_close,"all", "symmetric", "keys"," "," "," ");
2227    addmssqlcmds(ESqlStatementType.sstmssqlclosemasterkey, TBaseType.rrw_close,"master", "key"," "," "," "," ");
2228    addmssqlcmds(ESqlStatementType.sstmssqlclosesymmetrickey, TBaseType.rrw_close,"symmetric", "key"," "," "," "," ");
2229//commit
2230    addmssqlcmds(ESqlStatementType.sstmssqlcommit, TBaseType.rrw_commit," "," "," "," "," "," ");
2231    addmssqlcmds(ESqlStatementType.sstmssqlcommit, TBaseType.rrw_commit,"work"," "," "," "," "," ");
2232    addmssqlcmds(ESqlStatementType.sstmssqlcommit, TBaseType.rrw_commit,"tran"," "," "," "," "," ");
2233    addmssqlcmds(ESqlStatementType.sstmssqlcommit, TBaseType.rrw_commit,"transaction"," "," "," "," "," ");
2234//continue
2235    addmssqlcmds(ESqlStatementType.sstmssqlcontinue, TBaseType.rrw_continue," "," "," "," "," "," ");
2236// copy into
2237    addmssqlcmds(ESqlStatementType.sstCopyInto, TBaseType.rrw_sqlserver_copyinto,"into"," "," "," "," "," ");
2238//create
2239    addmssqlcmds(ESqlStatementType.sstmssqlcreateaggregate, TBaseType.rrw_create,"aggregate"," "," "," "," "," ");
2240    addmssqlcmds(ESqlStatementType.sstmssqlcreateapplicationrole, TBaseType.rrw_create,"application", "role"," "," "," "," ");
2241    addmssqlcmds(ESqlStatementType.sstmssqlcreateassembly, TBaseType.rrw_create,"assembly"," "," "," "," "," ");
2242    addmssqlcmds(ESqlStatementType.sstmssqlcreateasymmetrickey, TBaseType.rrw_create,"asymmetric", "key"," "," "," "," ");
2243    addmssqlcmds(ESqlStatementType.sstmssqlcreatecertificate, TBaseType.rrw_create,"certificate"," "," "," "," "," ");
2244    addmssqlcmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"clustered","columnstore","index"," "," "," ");
2245    addmssqlcmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"clustered","index"," "," "," "," ");
2246    addmssqlcmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"columnstore","index"," "," "," "," ");
2247    addmssqlcmds(ESqlStatementType.sstmssqlcreatecontract, TBaseType.rrw_create,"contract"," "," "," "," "," ");
2248    addmssqlcmds(ESqlStatementType.sstcreatecredential, TBaseType.rrw_create,"credential"," "," "," "," "," ");
2249    addmssqlcmds(ESqlStatementType.sstcreatedatabase, TBaseType.rrw_create,"database"," "," "," "," "," ");
2250    addmssqlcmds(ESqlStatementType.sstmssqlcreatedatabaseencryptionkey, TBaseType.rrw_create,"database","encryption","key"," "," "," ");
2251    addmssqlcmds(ESqlStatementType.sstmssqlcreateselectivexmlindex, TBaseType.rrw_create,"selective","xml","index"," "," "," ");
2252    addmssqlcmds(ESqlStatementType.sstmssqlcreatejsonindex, TBaseType.rrw_create,"json","index"," "," "," "," ");
2253    addmssqlcmds(ESqlStatementType.sstmssqlcreatevectorindex, TBaseType.rrw_create,"vector","index"," "," "," "," ");
2254    addmssqlcmds(ESqlStatementType.sstmssqlrenameobject, TBaseType.rrw_rename,"object"," "," "," "," "," ");
2255    addmssqlcmds(ESqlStatementType.sstmssqlcreateremotetableasselect, TBaseType.rrw_create,"remote","table"," "," "," "," ");
2256    addmssqlcmds(ESqlStatementType.sstcreatecredential, TBaseType.rrw_create,"database","scoped","credential"," "," "," ");
2257    addmssqlcmds(ESqlStatementType.sstmssqlcreatedefault, TBaseType.rrw_create,"default"," "," "," "," "," ");
2258    addmssqlcmds(ESqlStatementType.sstmssqlcreateendpoint, TBaseType.rrw_create,"endpoint"," "," "," "," "," ");
2259    addmssqlcmds(ESqlStatementType.sstmssqlcreateeventnotification, TBaseType.rrw_create,"event", "notification"," "," "," "," ");
2260    addmssqlcmds(ESqlStatementType.sstmssqlcreateeventsession, TBaseType.rrw_create,"event", "session"," "," "," "," ");
2261    addmssqlcmds(ESqlStatementType.sstmssqlcreateevexternalDataSource, TBaseType.rrw_create,"external", "data","source"," "," "," ");
2262    addmssqlcmds(ESqlStatementType.sstCreateFileFormat, TBaseType.rrw_create,"external","file","format"," "," "," ");
2263    addmssqlcmds(ESqlStatementType.sstmssqlcreateevexternalLanguage, TBaseType.rrw_create,"external", "language"," "," "," "," ");
2264    addmssqlcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"external","table"," "," "," "," ");
2265    addmssqlcmds(ESqlStatementType.sstmssqlcreatefulltextcatalog, TBaseType.rrw_create,"fulltext", "catalog"," "," "," "," ");
2266    addmssqlcmds(ESqlStatementType.sstmssqlcreatefulltextindex, TBaseType.rrw_create,"fulltext", "index"," "," "," "," ");
2267    addmssqlcmds(ESqlStatementType.sstmssqlcreatefunction, TBaseType.rrw_create,"function"," "," "," "," "," ");
2268    addmssqlcmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"index"," "," "," "," "," ");
2269    addmssqlcmds(ESqlStatementType.sstmssqlcreatelogin, TBaseType.rrw_create,"login"," "," "," "," "," ");
2270    addmssqlcmds(ESqlStatementType.sstmssqlcreatemasterkey, TBaseType.rrw_create,"master","key"," "," "," "," ");
2271    addmssqlcmds(ESqlStatementType.sstcreatematerializedview, TBaseType.rrw_create,"materialized","view"," "," "," "," ");
2272
2273    addmssqlcmds(ESqlStatementType.sstmssqlcreatemessagetype, TBaseType.rrw_create,"message","type"," "," "," "," ");
2274    addmssqlcmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"nonclustered","columnstore","index"," "," "," ");
2275    addmssqlcmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"nonclustered","index"," "," "," "," ");
2276
2277    addmssqlcmds(ESqlStatementType.sstmssqlcreatefunction, TBaseType.rrw_create,"or","alter","function"," "," "," ");
2278
2279    addmssqlcmds(ESqlStatementType.sstmssqlcreateprocedure, TBaseType.rrw_create,"or","alter","proc"," "," "," ");
2280    addmssqlcmds(ESqlStatementType.sstmssqlcreateprocedure, TBaseType.rrw_create,"or","alter","procedure"," "," "," ");
2281
2282    addmssqlcmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,"or","alter","view"," "," "," ");
2283    addmssqlcmds(ESqlStatementType.sstmssqlcreatepartitionfunction, TBaseType.rrw_create,"partition","function"," "," "," "," ");
2284    addmssqlcmds(ESqlStatementType.sstmssqlcreatepartitionscheme, TBaseType.rrw_create,"partition","scheme"," "," "," "," ");
2285    addmssqlcmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"primary","xml","index"," "," "," ");
2286    addmssqlcmds(ESqlStatementType.sstmssqlcreateprocedure, TBaseType.rrw_create,"proc"," "," "," "," "," ");
2287    addmssqlcmds(ESqlStatementType.sstmssqlcreateprocedure, TBaseType.rrw_create,"procedure"," "," "," "," "," ");
2288    addmssqlcmds(ESqlStatementType.sstmssqlcreatequeue, TBaseType.rrw_create,"queue"," "," "," "," "," ");
2289    addmssqlcmds(ESqlStatementType.sstmssqlcreateremoteservicebinding, TBaseType.rrw_create,"remote", "service", "binding"," "," "," ");
2290    addmssqlcmds(ESqlStatementType.sstmssqlcreaterole, TBaseType.rrw_create,"role"," "," "," "," "," ");
2291    addmssqlcmds(ESqlStatementType.sstmssqlcreateroute, TBaseType.rrw_create,"route"," "," "," "," "," ");
2292    addmssqlcmds(ESqlStatementType.sstmssqlcreaterule, TBaseType.rrw_create,"rule"," "," "," "," "," ");
2293    addmssqlcmds(ESqlStatementType.sstmssqlcreateschema, TBaseType.rrw_create,"schema"," "," "," "," "," ");
2294    addmssqlcmds(ESqlStatementType.sstmssqlCreateSecurityPolicy, TBaseType.rrw_create, "security", "policy", " ", " ", " ", " ");
2295    addmssqlcmds(ESqlStatementType.sstcreatesequence, TBaseType.rrw_create, "sequence", " ", " ", " ", " ", " ");
2296    addmssqlcmds(ESqlStatementType.sstmssqlcreateservice, TBaseType.rrw_create,"service"," "," "," "," "," ");
2297    addmssqlcmds(ESqlStatementType.sstmssqlcreatestatistics, TBaseType.rrw_create,"statistics"," "," "," "," "," ");
2298    addmssqlcmds(ESqlStatementType.sstmssqlcreatesymmetrickey, TBaseType.rrw_create,"symmetric", "key"," "," "," "," ");
2299    addmssqlcmds(ESqlStatementType.sstmssqlcreatesynonym, TBaseType.rrw_create,"synonym"," "," "," "," "," ");
2300    addmssqlcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"table"," "," "," "," "," ");
2301    addmssqlcmds(ESqlStatementType.sstcreatetrigger, TBaseType.rrw_create,"trigger"," "," "," "," "," ");
2302    addmssqlcmds(ESqlStatementType.sstmssqlcreatetype, TBaseType.rrw_create,"type"," "," "," "," "," ");
2303    addmssqlcmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"unique","clustered","index"," "," "," ");
2304    addmssqlcmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"unique","index"," "," "," "," ");
2305    addmssqlcmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"unique","nonclustered","index"," "," "," ");
2306    addmssqlcmds(ESqlStatementType.sstmssqlcreateuser, TBaseType.rrw_create,"user"," "," "," "," "," ");
2307    addmssqlcmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,"view"," "," "," "," "," ");
2308    addmssqlcmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"xml","index"," "," "," "," ");
2309    addmssqlcmds(ESqlStatementType.sstmssqlcreatexmlschemacollection, TBaseType.rrw_create,"xml", "schema", "collection"," "," "," ");
2310// DBCC
2311    addmssqlcmds(ESqlStatementType.sstmssqldbcc, TBaseType.rrw_dbcc," "," "," "," "," "," ");
2312//DEALLOCATE
2313    addmssqlcmds(ESqlStatementType.sstmssqldeallocate, TBaseType.rrw_deallocate," "," "," "," "," "," ");
2314//DECLARE
2315    addmssqlcmds(ESqlStatementType.sstmssqldeclare, TBaseType.rrw_declare," "," "," "," "," "," ");
2316//DELETE
2317    addmssqlcmds(ESqlStatementType.sstdelete, TBaseType.rrw_delete," "," "," "," "," "," ");
2318//DENY
2319    addmssqlcmds(ESqlStatementType.sstmssqldeny, TBaseType.rrw_deny," "," "," "," "," "," ");
2320//DISABLE TRIGGER
2321    addmssqlcmds(ESqlStatementType.sstmssqldisabletrigger, TBaseType.rrw_disable,"trigger"," "," "," "," "," ");
2322//drop
2323    addmssqlcmds(ESqlStatementType.sstmssqldropaggregate, TBaseType.rrw_drop,"aggregate"," "," "," "," "," ");
2324    addmssqlcmds(ESqlStatementType.sstmssqldropapplicationrole, TBaseType.rrw_drop,"application", "role"," "," "," "," ");
2325    addmssqlcmds(ESqlStatementType.sstmssqldropassembly, TBaseType.rrw_drop,"assembly"," "," "," "," "," ");
2326    addmssqlcmds(ESqlStatementType.sstmssqldropasymmetrickey, TBaseType.rrw_drop,"asymmetric", "key"," "," "," "," ");
2327    addmssqlcmds(ESqlStatementType.sstmssqldropcertificate, TBaseType.rrw_drop,"certificate"," "," "," "," "," ");
2328    addmssqlcmds(ESqlStatementType.sstmssqldropcontract, TBaseType.rrw_drop,"contract"," "," "," "," "," ");
2329    addmssqlcmds(ESqlStatementType.sstmssqldropsignature, TBaseType.rrw_drop,"counter", "signature"," "," "," "," ");
2330    addmssqlcmds(ESqlStatementType.sstmssqldropcredential, TBaseType.rrw_drop,"credential"," "," "," "," "," ");
2331    addmssqlcmds(ESqlStatementType.sstmssqldropdatabase, TBaseType.rrw_drop,"database"," "," "," "," "," ");
2332    addmssqlcmds(ESqlStatementType.sstmssqldropdefault, TBaseType.rrw_drop,"default"," "," "," "," "," ");
2333    addmssqlcmds(ESqlStatementType.sstmssqldropendpoint, TBaseType.rrw_drop,"endpoint"," "," "," "," "," ");
2334    addmssqlcmds(ESqlStatementType.sstmssqldropeventnotification, TBaseType.rrw_drop,"event", "notification"," "," "," "," ");
2335    addmssqlcmds(ESqlStatementType.sstmssqldropeventsession, TBaseType.rrw_drop,"event", "session"," "," "," "," ");
2336    addmssqlcmds(ESqlStatementType.sstmssqldropfulltextcatalog, TBaseType.rrw_drop,"fulltext", "catalog"," "," "," "," ");
2337    addmssqlcmds(ESqlStatementType.sstmssqldropfulltextindex, TBaseType.rrw_drop,"fulltext", "index"," "," "," "," ");
2338    addmssqlcmds(ESqlStatementType.sstmssqldropfunction, TBaseType.rrw_drop,"function"," "," "," "," "," ");
2339    addmssqlcmds(ESqlStatementType.sstmssqldropindex, TBaseType.rrw_drop,"index"," "," "," "," "," ");
2340    addmssqlcmds(ESqlStatementType.sstmssqldroplogin, TBaseType.rrw_drop,"login"," "," "," "," "," ");
2341    addmssqlcmds(ESqlStatementType.sstmssqldropmasterkey, TBaseType.rrw_drop,"master", "key"," "," "," "," ");
2342    addmssqlcmds(ESqlStatementType.sstmssqldropmessagetype, TBaseType.rrw_drop,"message", "type"," "," "," "," ");
2343    addmssqlcmds(ESqlStatementType.sstmssqldroppartitionfunction, TBaseType.rrw_drop,"partition", "function"," "," "," "," ");
2344    addmssqlcmds(ESqlStatementType.sstmssqldroppartitionscheme, TBaseType.rrw_drop,"partition", "scheme"," "," "," "," ");
2345    addmssqlcmds(ESqlStatementType.sstmssqldropprocedure, TBaseType.rrw_drop,"proc"," "," "," "," "," ");
2346    addmssqlcmds(ESqlStatementType.sstmssqldropprocedure, TBaseType.rrw_drop,"procedure"," "," "," "," "," ");
2347    addmssqlcmds(ESqlStatementType.sstmssqldropqueue, TBaseType.rrw_drop,"queue"," "," "," "," "," ");
2348    addmssqlcmds(ESqlStatementType.sstmssqldropremoteservicebinding, TBaseType.rrw_drop,"remote", "service", "binding"," "," "," ");
2349    addmssqlcmds(ESqlStatementType.sstmssqldroprole, TBaseType.rrw_drop,"role"," "," "," "," "," ");
2350    addmssqlcmds(ESqlStatementType.sstmssqldroproute, TBaseType.rrw_drop,"route"," "," "," "," "," ");
2351    addmssqlcmds(ESqlStatementType.sstmssqldroprule, TBaseType.rrw_drop,"rule"," "," "," "," "," ");
2352    addmssqlcmds(ESqlStatementType.sstmssqldropschema, TBaseType.rrw_drop,"schema"," "," "," "," "," ");
2353    addmssqlcmds(ESqlStatementType.sstmssqlDropSecurityPolicy, TBaseType.rrw_drop, "security", "policy", " ", " ", " ", " ");
2354    addmssqlcmds(ESqlStatementType.sstdropsequence, TBaseType.rrw_drop,"sequence"," "," "," "," "," ");
2355    addmssqlcmds(ESqlStatementType.sstmssqldropservice, TBaseType.rrw_drop,"service"," "," "," "," "," ");
2356    addmssqlcmds(ESqlStatementType.sstmssqldropsignature, TBaseType.rrw_drop,"signature"," "," "," "," "," ");
2357    addmssqlcmds(ESqlStatementType.sstmssqldropstatistics, TBaseType.rrw_drop,"statistics"," "," "," "," "," ");
2358    addmssqlcmds(ESqlStatementType.sstmssqldropsymmetrickey, TBaseType.rrw_drop,"symmetric", "key"," "," "," "," ");
2359    addmssqlcmds(ESqlStatementType.sstmssqldropsynonym, TBaseType.rrw_drop,"synonym"," "," "," "," "," ");
2360    addmssqlcmds(ESqlStatementType.sstmssqldroptable, TBaseType.rrw_drop,"table"," "," "," "," "," ");
2361    addmssqlcmds(ESqlStatementType.sstmssqldroptrigger, TBaseType.rrw_drop,"trigger"," "," "," "," "," ");
2362    addmssqlcmds(ESqlStatementType.sstmssqldroptype, TBaseType.rrw_drop,"type"," "," "," "," "," ");
2363    addmssqlcmds(ESqlStatementType.sstmssqldropuser, TBaseType.rrw_drop,"user"," "," "," "," "," ");
2364    addmssqlcmds(ESqlStatementType.sstmssqldropview, TBaseType.rrw_drop,"view"," "," "," "," "," ");
2365    addmssqlcmds(ESqlStatementType.sstmssqldropxmlschemacollection, TBaseType.rrw_drop,"xml", "schema", "collection"," "," "," ");
2366//enable trigger
2367    addmssqlcmds(ESqlStatementType.sstmssqlenabletrigger, TBaseType.rrw_enable,"trigger"," "," "," "," "," ");
2368//END CONVERSATION
2369// AddMssqlCmds(ESqlStatementType.sstMssqlEndCatch,TBaseType.rrw_end,'catch');
2370    addmssqlcmds(ESqlStatementType.sstmssqlendconversation, TBaseType.rrw_end,"conversation"," "," "," "," "," ");
2371// AddMssqlCmds(ESqlStatementType.sstMssqlEndTry,TBaseType.rrw_end,'try');
2372//exec
2373//exec as
2374    addmssqlcmds(ESqlStatementType.sstmssqlexec, TBaseType.rrw_exec," "," "," "," "," "," ");
2375    addmssqlcmds(ESqlStatementType.sstmssqlexecuteas, TBaseType.rrw_exec,"as","caller"," "," "," "," ");
2376    addmssqlcmds(ESqlStatementType.sstmssqlexecuteas, TBaseType.rrw_exec,"as","login"," "," "," "," ");
2377    addmssqlcmds(ESqlStatementType.sstmssqlexecuteas, TBaseType.rrw_exec,"as","user"," "," "," "," ");
2378    addmssqlcmds(ESqlStatementType.sstmssqlexec, TBaseType.rrw_execute, " "," "," "," "," "," ");
2379    addmssqlcmds(ESqlStatementType.sstmssqlexecuteas, TBaseType.rrw_execute,"as","caller"," "," "," "," ");
2380    addmssqlcmds(ESqlStatementType.sstmssqlexecuteas, TBaseType.rrw_execute,"as","login"," "," "," "," ");
2381    addmssqlcmds(ESqlStatementType.sstmssqlexecuteas, TBaseType.rrw_execute,"as","user"," "," "," "," ");
2382//fetch
2383    addmssqlcmds(ESqlStatementType.sstmssqlfetch, TBaseType.rrw_fetch," "," "," "," "," "," ");
2384//go
2385    addmssqlcmds(ESqlStatementType.sstmssqlgo, TBaseType.rrw_go," "," "," "," "," "," ");
2386//goto
2387    addmssqlcmds(ESqlStatementType.sstmssqlgoto, TBaseType.rrw_goto," "," "," "," "," "," ");
2388//GRANT
2389    addmssqlcmds(ESqlStatementType.sstmssqlgrant, TBaseType.rrw_grant," "," "," "," "," "," ");
2390
2391//if
2392    addmssqlcmds(ESqlStatementType.sstmssqlif, TBaseType.rrw_if," "," "," "," "," "," ");
2393
2394//GRANT
2395    addmssqlcmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert," "," "," "," "," "," ");
2396    addmssqlcmds(ESqlStatementType.sstmssqlinsertbulk, TBaseType.rrw_insert,"bulk"," "," "," "," "," ");
2397//KILL
2398    addmssqlcmds(ESqlStatementType.sstmssqlkill, TBaseType.rrw_kill," "," "," "," "," "," ");
2399//KILL
2400    addmssqlcmds(ESqlStatementType.sstmssqlkill, TBaseType.rrw_kill," "," "," "," "," "," ");
2401    addmssqlcmds(ESqlStatementType.sstmssqlkillquerynotificationsubscription, TBaseType.rrw_kill,"kill", "query", "notification", "subscription"," "," ");
2402    addmssqlcmds(ESqlStatementType.sstmssqlkillstats, TBaseType.rrw_kill,"stats"," "," "," "," "," ");
2403
2404//
2405 addmssqlcmds(ESqlStatementType.sstsybaselocktable,TBaseType.rw_locktable,"table"," "," "," "," "," ");
2406//MOVE CONVERSATION
2407    addmssqlcmds(ESqlStatementType.sstmssqlmoveconversation, TBaseType.rrw_move,"conversation"," "," "," "," "," ");
2408//merge
2409    addmssqlcmds(ESqlStatementType.sstmerge, TBaseType.rrw_merge," "," "," "," "," "," ");
2410//open
2411    addmssqlcmds(ESqlStatementType.sstmssqlopen, TBaseType.rrw_open," "," "," "," "," "," ");
2412    addmssqlcmds(ESqlStatementType.sstmssqlopenmasterkey, TBaseType.rrw_open,"master", "key"," "," "," "," ");
2413    addmssqlcmds(ESqlStatementType.sstmssqlopensymmetrickey, TBaseType.rrw_open,"symmetric", "key"," "," "," "," ");
2414//PRINT
2415    addmssqlcmds(ESqlStatementType.sstmssqlprint, TBaseType.rrw_print," "," "," "," "," "," ");
2416//RAISERROR
2417    addmssqlcmds(ESqlStatementType.sstmssqlraiserror, TBaseType.rrw_raiserror," "," "," "," "," "," ");
2418//READTEXT
2419    addmssqlcmds(ESqlStatementType.sstmssqlreadtext, TBaseType.rrw_readtext," "," "," "," "," "," ");
2420//RECEIVE
2421    addmssqlcmds(ESqlStatementType.sstmssqlreceive, TBaseType.rrw_receive," "," "," "," "," "," ");
2422//RECONFIGURE
2423    addmssqlcmds(ESqlStatementType.sstmssqlreconfigure, TBaseType.rrw_reconfigure," "," "," "," "," "," ");
2424//RESTORE
2425    addmssqlcmds(ESqlStatementType.sstmssqlrestoredatabase, TBaseType.rrw_restore,"database"," "," "," "," "," ");
2426    addmssqlcmds(ESqlStatementType.sstmssqlrestorefilelistonly, TBaseType.rrw_restore,"filelistonly"," "," "," "," "," ");
2427    addmssqlcmds(ESqlStatementType.sstmssqlrestoreheaderonly, TBaseType.rrw_restore,"headeronly"," "," "," "," "," ");
2428    addmssqlcmds(ESqlStatementType.sstmssqlrestorelabelonly, TBaseType.rrw_restore,"labelonly"," "," "," "," "," ");
2429    addmssqlcmds(ESqlStatementType.sstmssqlrestorelog, TBaseType.rrw_restore,"log"," "," "," "," "," ");
2430    addmssqlcmds(ESqlStatementType.sstmssqlrestoremasterkey, TBaseType.rrw_restore,"master","key"," "," "," "," ");
2431    addmssqlcmds(ESqlStatementType.sstmssqlrestorerewindonly, TBaseType.rrw_restore,"rewindonly"," "," "," "," "," ");
2432    addmssqlcmds(ESqlStatementType.sstmssqlrestoreservicemasterkey, TBaseType.rrw_restore,"service","master","key"," "," "," ");
2433    addmssqlcmds(ESqlStatementType.sstmssqlrestoreverifyonly, TBaseType.rrw_restore,"verifyonly"," "," "," "," "," ");
2434//RETURN
2435    addmssqlcmds(ESqlStatementType.sstmssqlreturn, TBaseType.rrw_return," "," "," "," "," "," ");
2436//REVERT
2437    addmssqlcmds(ESqlStatementType.sstmssqlrevert, TBaseType.rrw_revert," "," "," "," "," "," ");
2438//REVOKE
2439    addmssqlcmds(ESqlStatementType.sstmssqlrevoke, TBaseType.rrw_revoke," "," "," "," "," "," ");
2440//ROLLBACK
2441    addmssqlcmds(ESqlStatementType.sstmssqlrollback, TBaseType.rrw_rollback," "," "," "," "," "," ");
2442    addmssqlcmds(ESqlStatementType.sstmssqlrollback, TBaseType.rrw_rollback,"tran"," "," "," "," "," ");
2443    addmssqlcmds(ESqlStatementType.sstmssqlrollback, TBaseType.rrw_rollback,"transaction"," "," "," "," "," ");
2444    addmssqlcmds(ESqlStatementType.sstmssqlrollback, TBaseType.rrw_rollback,"work"," "," "," "," "," ");
2445//SAVE
2446    addmssqlcmds(ESqlStatementType.sstmssqlsavetran, TBaseType.rrw_save," "," "," "," "," "," ");
2447    addmssqlcmds(ESqlStatementType.sstmssqlsavetran, TBaseType.rrw_save,"tran"," "," "," "," "," ");
2448    addmssqlcmds(ESqlStatementType.sstmssqlsavetran, TBaseType.rrw_save,"transaction"," "," "," "," "," ");
2449//SELECT
2450    addmssqlcmds(ESqlStatementType.sstselect, TBaseType.rrw_select," "," "," "," "," "," ");
2451//SEND ON CONVERSATION
2452    addmssqlcmds(ESqlStatementType.sstmssqlsendonconversation, TBaseType.rrw_send,"on","conversation"," "," "," "," ");
2453//SET
2454    addmssqlcmds(ESqlStatementType.sstmssqlset, TBaseType.rrw_set," "," "," "," "," "," ");
2455//SET rowcount
2456    addmssqlcmds(ESqlStatementType.sstmssqlsetrowcount, TBaseType.rrw_set,"rowcount"," "," "," "," "," ");
2457//SET
2458    addmssqlcmds(ESqlStatementType.sstmssqlsetuser,TBaseType.rrw_setuser," "," "," "," "," "," ");
2459//SHUTDOWN
2460    addmssqlcmds(ESqlStatementType.sstmssqlshutdown, TBaseType.rrw_shutdown," "," "," "," "," "," ");
2461//SIGN
2462//    addmssqlcmds(ESqlStatementType.sstmssqlsign, rrw_sign," "," "," "," "," "," ");
2463
2464//throw
2465    addmssqlcmds(ESqlStatementType.sstmssqlthrow, TBaseType.rrw_sqlserver_throw," "," "," "," "," "," ");
2466
2467//TRUNCATE TABLE
2468    addmssqlcmds(ESqlStatementType.sstmssqltruncatetable, TBaseType.rrw_truncate,"table"," "," "," "," "," ");
2469//UPDATE
2470    addmssqlcmds(ESqlStatementType.sstupdate, TBaseType.rrw_update," "," "," "," "," "," ");
2471//UPDATE STATISTICS
2472    addmssqlcmds(ESqlStatementType.sstmssqlupdatestatistics, TBaseType.rrw_update,"statistics"," "," "," "," "," ");
2473//UPDATETEXT
2474    addmssqlcmds(ESqlStatementType.sstmssqlupdatetext, TBaseType.rrw_updatetext," "," "," "," "," "," ");
2475//USE
2476    addmssqlcmds(ESqlStatementType.sstmssqluse, TBaseType.rrw_use," "," "," "," "," "," ");
2477//WAITFOR
2478    addmssqlcmds(ESqlStatementType.sstmssqlwaitfor, TBaseType.rrw_waitfor," "," "," "," "," "," ");
2479//WHILE
2480    addmssqlcmds(ESqlStatementType.sstmssqlwhile, TBaseType.rrw_while," "," "," "," "," "," ");
2481//WITH, don't recongize here, let isMssqlSql do it
2482// AddMssqlCmds(ESqlStatementType.sstMssqlCTE,rrw_WITH,' ');
2483//WITH XMLNAMESPACES
2484  //  addmssqlcmds(ESqlStatementType.sstmssqlwithxmlnamespaces, TBaseType.rrw_with,"xmlnamespaces"," "," "," "," "," ");
2485//WRITETEXT
2486    addmssqlcmds(ESqlStatementType.sstmssqlwritetext, TBaseType.rrw_writetext," "," "," "," "," "," ");
2487
2488}
2489
2490void initdb2cmds(){
2491// cmd must be sort alphabetically
2492    adddb2cmds(ESqlStatementType.sstdb2allocatecursor, TBaseType.rrw_allocate,"cursor"," "," "," "," "," ");
2493    adddb2cmds(ESqlStatementType.sstdb2alterbufferpool, TBaseType.rrw_alter,"bufferpool"," "," "," "," "," ");
2494    adddb2cmds(ESqlStatementType.sstdb2alterdatabasepartitiongroup, TBaseType.rrw_alter,"database", "partition", "group"," "," "," ");
2495    adddb2cmds(ESqlStatementType.sstdb2alterfunction, TBaseType.rrw_alter,"function"," "," "," "," "," ");
2496    adddb2cmds(ESqlStatementType.sstdb2altermethod, TBaseType.rrw_alter,"method"," "," "," "," "," ");
2497    adddb2cmds(ESqlStatementType.sstdb2alternickname, TBaseType.rrw_alter,"nickname"," "," "," "," "," ");
2498    adddb2cmds(ESqlStatementType.sstdb2alterprocedure, TBaseType.rrw_alter,"procedure"," "," "," "," "," ");
2499    adddb2cmds(ESqlStatementType.sstdb2altersequence, TBaseType.rrw_alter,"sequence"," "," "," "," "," ");
2500    adddb2cmds(ESqlStatementType.sstdb2alterserver, TBaseType.rrw_alter,"server"," "," "," "," "," ");
2501    adddb2cmds(ESqlStatementType.sstaltertable, TBaseType.rrw_alter,"table"," "," "," "," "," ");
2502    adddb2cmds(ESqlStatementType.sstdb2altertablespace, TBaseType.rrw_alter,"tablespace"," "," "," "," "," ");
2503    adddb2cmds(ESqlStatementType.sstdb2altertype, TBaseType.rrw_alter,"type"," "," "," "," "," ");
2504    adddb2cmds(ESqlStatementType.sstdb2alterusermapping, TBaseType.rrw_alter,"user","mapping"," "," "," "," ");
2505    adddb2cmds(ESqlStatementType.sstdb2alterview, TBaseType.rrw_alter,"view"," "," "," "," "," ");
2506    adddb2cmds(ESqlStatementType.sstdb2alterwrapper, TBaseType.rrw_alter,"wrapper"," "," "," "," "," ");
2507    adddb2cmds(ESqlStatementType.sstdb2associatelocators, TBaseType.rrw_associate,"locators"," "," "," "," "," ");
2508    adddb2cmds(ESqlStatementType.sstdb2begindeclaresection, TBaseType.rrw_begin,"declare", "section"," "," "," "," ");
2509    adddb2cmds(ESqlStatementType.sstdb2call, TBaseType.rrw_call," "," "," "," "," "," ");
2510    adddb2cmds(ESqlStatementType.sstdb2case, TBaseType.rrw_case," "," "," "," "," "," ");
2511    adddb2cmds(ESqlStatementType.sstdb2close, TBaseType.rrw_close," "," "," "," "," "," ");
2512    adddb2cmds(ESqlStatementType.sstdb2comment, TBaseType.rrw_comment," "," "," "," "," "," ");
2513    adddb2cmds(ESqlStatementType.sstdb2commit, TBaseType.rrw_commit," "," "," "," "," "," ");
2514    adddb2cmds(ESqlStatementType.sstdb2connect, TBaseType.rrw_connect," "," "," "," "," "," ");
2515    adddb2cmds(ESqlStatementType.sstdb2createalias, TBaseType.rrw_create,"alias"," "," "," "," "," ");
2516    adddb2cmds(ESqlStatementType.sstcreateauditpolicy, TBaseType.rrw_create,"audit","policy"," "," "," "," ");
2517    adddb2cmds(ESqlStatementType.sstdb2createbufferpool, TBaseType.rrw_create,"bufferpool"," "," "," "," "," ");
2518    adddb2cmds(ESqlStatementType.sstcreatedatabase, TBaseType.rrw_create,"database", " ", " "," "," "," ");
2519    adddb2cmds(ESqlStatementType.sstdb2createdatabasepartitiongroup, TBaseType.rrw_create,"database", "partition", "group"," "," "," ");
2520    adddb2cmds(ESqlStatementType.sstdb2createdistincttype, TBaseType.rrw_create,"distinct", "type"," "," "," "," ");
2521    adddb2cmds(ESqlStatementType.sstdb2createeventmonitor, TBaseType.rrw_create,"eventmonitor"," "," "," "," "," ");
2522    adddb2cmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create,"function"," "," "," "," "," ");
2523    adddb2cmds(ESqlStatementType.sstdb2createfunctionmapping, TBaseType.rrw_create,"function", "mapping"," "," "," "," ");
2524    adddb2cmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"global","temporary","table"," "," "," ");
2525    adddb2cmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"index"," "," "," "," "," ");
2526    adddb2cmds(ESqlStatementType.sstdb2createindexextension, TBaseType.rrw_create,"index", "extension"," "," "," "," ");
2527    adddb2cmds(ESqlStatementType.sstcreateTablespace, TBaseType.rrw_create,"large","tablespace"," "," "," "," ");
2528    adddb2cmds(ESqlStatementType.sstdb2createmethod, TBaseType.rrw_create,"method"," "," "," "," "," ");
2529    adddb2cmds(ESqlStatementType.sstdb2createnickname, TBaseType.rrw_create,"nickname"," "," "," "," "," ");
2530    adddb2cmds(ESqlStatementType.sstdb2createalias, TBaseType.rrw_create,"or","replace","alias"," "," "," ");
2531    adddb2cmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create,"or","replace","function"," "," "," ");
2532    adddb2cmds(ESqlStatementType.sstcreateprocedure, TBaseType.rrw_create,"or","replace","procedure"," "," "," ");
2533    adddb2cmds(ESqlStatementType.sstdb2createalias, TBaseType.rrw_create,"or","replace","public","alias"," "," ");
2534    adddb2cmds(ESqlStatementType.sstdb2createtrigger, TBaseType.rrw_create,"or","replace","trigger"," "," "," ");
2535    adddb2cmds(ESqlStatementType.sstdb2createvariable, TBaseType.rrw_create,"or","replace","variable"," "," "," ");
2536    adddb2cmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,"or","replace","view"," "," "," ");
2537    adddb2cmds(ESqlStatementType.sstcreateprocedure, TBaseType.rrw_create,"procedure"," "," "," "," "," ");
2538    adddb2cmds(ESqlStatementType.sstdb2createalias, TBaseType.rrw_create,"public","alias"," "," "," "," ");
2539    adddb2cmds(ESqlStatementType.sstcreatesynonym, TBaseType.rrw_create,"public","synonym"," "," "," "," ");
2540    adddb2cmds(ESqlStatementType.sstcreaterole, TBaseType.rrw_create,"role"," "," "," "," "," ");
2541    adddb2cmds(ESqlStatementType.sstdb2createschema, TBaseType.rrw_create,"schema"," "," "," "," "," ");
2542    adddb2cmds(ESqlStatementType.sstdb2createsequence, TBaseType.rrw_create,"sequence"," "," "," "," "," ");
2543    adddb2cmds(ESqlStatementType.sstdb2createserver, TBaseType.rrw_create,"server"," "," "," "," "," ");
2544    adddb2cmds(ESqlStatementType.sstdb2createstogroup, TBaseType.rrw_create,"stogroup"," "," "," "," "," ");
2545    adddb2cmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"summary","table"," "," "," "," ");
2546    adddb2cmds(ESqlStatementType.sstcreatesynonym, TBaseType.rrw_create,"synonym"," "," "," "," "," ");
2547    adddb2cmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"table"," "," "," "," "," ");
2548    adddb2cmds(ESqlStatementType.sstcreateTablespace, TBaseType.rrw_create,"tablespace"," "," "," "," "," ");
2549    adddb2cmds(ESqlStatementType.sstdb2createtransform, TBaseType.rrw_create,"transform"," "," "," "," "," ");
2550    adddb2cmds(ESqlStatementType.sstdb2createtrigger, TBaseType.rrw_create,"trigger"," "," "," "," "," ");
2551    adddb2cmds(ESqlStatementType.sstdb2createtype, TBaseType.rrw_create,"type"," "," "," "," "," ");
2552    adddb2cmds(ESqlStatementType.sstdb2createtypemapping, TBaseType.rrw_create,"type", "mapping"," "," "," "," ");
2553    adddb2cmds(ESqlStatementType.sstdb2createusermapping, TBaseType.rrw_create,"user", "mapping"," "," "," "," ");
2554    adddb2cmds(ESqlStatementType.sstdb2createvariable, TBaseType.rrw_create,"variable"," "," "," "," "," ");
2555    adddb2cmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create,"view"," "," "," "," "," ");
2556    adddb2cmds(ESqlStatementType.sstdb2createwrapper, TBaseType.rrw_create,"wrapper"," "," "," "," "," ");
2557    adddb2cmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create,"*","index"," "," "," "," ");
2558    adddb2cmds(ESqlStatementType.sstdb2declareglobaltemporarytable, TBaseType.rrw_declare, "global", "temporary", "table"," "," "," ");
2559    adddb2cmds(ESqlStatementType.sstdb2declarecursor, TBaseType.rrw_declare,"*","cursor"," "," "," "," ");
2560    adddb2cmds(ESqlStatementType.sstdelete, TBaseType.rrw_delete," "," "," "," "," "," ");
2561    adddb2cmds(ESqlStatementType.sstdb2describe, TBaseType.rrw_describe," "," "," "," "," "," ");
2562    adddb2cmds(ESqlStatementType.sstdb2disconnect, TBaseType.rrw_disconnect," "," "," "," "," "," ");
2563    adddb2cmds(ESqlStatementType.sstdb2drop, TBaseType.rrw_drop," "," "," "," "," "," ");
2564    adddb2cmds(ESqlStatementType.sstdropindex, TBaseType.rrw_drop,"index"," "," "," "," "," ");
2565    adddb2cmds(ESqlStatementType.sstdroptable, TBaseType.rrw_drop,"table"," "," "," "," "," ");
2566    adddb2cmds(ESqlStatementType.sstdropview, TBaseType.rrw_drop,"view"," "," "," "," "," ");
2567    adddb2cmds(ESqlStatementType.sstdb2enddeclaresection, TBaseType.rrw_end,"declare","section"," "," "," "," ");
2568    adddb2cmds(ESqlStatementType.sstdb2execute, TBaseType.rrw_execute," "," "," "," "," "," ");
2569    adddb2cmds(ESqlStatementType.sstdb2executeimmediate, TBaseType.rrw_execute,"immediate"," "," "," "," "," ");
2570    adddb2cmds(ESqlStatementType.sstdb2explain, TBaseType.rrw_explain," "," "," "," "," "," ");
2571    adddb2cmds(ESqlStatementType.sstdb2fetch, TBaseType.rrw_fetch," "," "," "," "," "," ");
2572    adddb2cmds(ESqlStatementType.sstdb2flusheventmonitor, TBaseType.rrw_flush, "event", "monitor"," "," "," "," ");
2573    adddb2cmds(ESqlStatementType.sstdb2flushpackagecache, TBaseType.rrw_flush,"package", "cache"," "," "," "," ");
2574    adddb2cmds(ESqlStatementType.sstdb2for, TBaseType.rrw_for," "," "," "," "," "," ");
2575    adddb2cmds(ESqlStatementType.sstdb2freelocator, TBaseType.rrw_free,"locator"," "," "," "," "," ");
2576    adddb2cmds(ESqlStatementType.sstgetdiagnostics, TBaseType.rrw_get,"diagnostics"," "," "," "," "," ");
2577    adddb2cmds(ESqlStatementType.sstdb2goto, TBaseType.rrw_goto," "," "," "," "," "," ");
2578    adddb2cmds(ESqlStatementType.sstdb2grant, TBaseType.rrw_grant," "," "," "," "," "," ");
2579    adddb2cmds(ESqlStatementType.sstdb2if, TBaseType.rrw_if," "," "," "," "," "," ");
2580    adddb2cmds(ESqlStatementType.sstdb2include, TBaseType.rrw_include," "," "," "," "," "," ");
2581    adddb2cmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert," "," "," "," "," "," ");
2582    adddb2cmds(ESqlStatementType.sstdb2iterate, TBaseType.rrw_iterate," "," "," "," "," "," ");
2583    adddb2cmds(ESqlStatementType.sstdb2labelOn, TBaseType.rrw_db2_label,"on"," "," "," "," "," ");
2584    adddb2cmds(ESqlStatementType.sstdb2leave, TBaseType.rrw_leave," "," "," "," "," "," ");
2585    adddb2cmds(ESqlStatementType.sstdb2locktable, TBaseType.rrw_lock,"table"," "," "," "," "," ");
2586    adddb2cmds(ESqlStatementType.sstdb2loop, TBaseType.rrw_loop," "," "," "," "," "," ");
2587    adddb2cmds(ESqlStatementType.sstmerge, TBaseType.rrw_merge," "," "," "," "," "," ");
2588    adddb2cmds(ESqlStatementType.sstdb2open, TBaseType.rrw_open," "," "," "," "," "," ");
2589    adddb2cmds(ESqlStatementType.sstdb2prepare, TBaseType.rrw_prepare," "," "," "," "," "," ");
2590    adddb2cmds(ESqlStatementType.sstdb2refreshtable, TBaseType.rrw_refresh,"table"," "," "," "," "," ");
2591    adddb2cmds(ESqlStatementType.sstdb2release, TBaseType.rrw_release," "," "," "," "," "," ");
2592    adddb2cmds(ESqlStatementType.sstdb2releasesavepoint, TBaseType.rrw_release,"savepoint"," "," "," "," "," ");
2593    adddb2cmds(ESqlStatementType.sstdb2rename, TBaseType.rrw_rename," "," "," "," "," "," ");
2594    adddb2cmds(ESqlStatementType.sstdb2renametablespace, TBaseType.rrw_rename,"tablespace"," "," "," "," "," ");
2595    adddb2cmds(ESqlStatementType.sstdb2repeat, TBaseType.rrw_repeat," "," "," "," "," "," ");
2596    adddb2cmds(ESqlStatementType.sstdb2resignal, TBaseType.rrw_resignal," "," "," "," "," "," ");
2597    adddb2cmds(ESqlStatementType.sstdb2return, TBaseType.rrw_return," "," "," "," "," "," ");
2598    adddb2cmds(ESqlStatementType.sstdb2revoke, TBaseType.rrw_revoke," "," "," "," "," "," ");
2599    adddb2cmds(ESqlStatementType.sstdb2rollback, TBaseType.rrw_rollback," "," "," "," "," "," ");
2600    adddb2cmds(ESqlStatementType.sstRunStats, TBaseType.rrw_db2_runstats," "," "," "," "," "," ");
2601    adddb2cmds(ESqlStatementType.sstdb2savepoint, TBaseType.rrw_savepoint," "," "," "," "," "," ");
2602    adddb2cmds(ESqlStatementType.sstselect, TBaseType.rrw_select," "," "," "," "," "," ");
2603    adddb2cmds(ESqlStatementType.sstdb2setconnection, TBaseType.rrw_set,"connection"," "," "," "," "," ");
2604    adddb2cmds(ESqlStatementType.sstdb2set, TBaseType.rrw_set," "," "," "," "," "," ");
2605    adddb2cmds(ESqlStatementType.sstdb2setconnection, TBaseType.rrw_set,"connection"," "," "," "," "," ");
2606    adddb2cmds(ESqlStatementType.sstdb2setcurrentdefaulttransformgroup, TBaseType.rrw_set,"current default transform group"," "," "," "," "," ");
2607    adddb2cmds(ESqlStatementType.sstdb2setcurrentdegree, TBaseType.rrw_set,"current", "degree"," "," "," "," ");
2608    adddb2cmds(ESqlStatementType.sstdb2setcurrentexplainmode, TBaseType.rrw_set,"current", "explain", "mode"," "," "," ");
2609    adddb2cmds(ESqlStatementType.sstdb2setcurrentexplainsnapshot, TBaseType.rrw_set,"current", "explain", "snapshot"," "," "," ");
2610    adddb2cmds(ESqlStatementType.sstdb2setcurrentisolation, TBaseType.rrw_set,"current", "isolation"," "," "," "," ");
2611    adddb2cmds(ESqlStatementType.sstdb2setcurrentlocktimeout, TBaseType.rrw_set,"current", "lock", "timeout"," "," "," ");
2612    adddb2cmds(ESqlStatementType.sstdb2setcurrentmaintainedtabletypesforoptimization, TBaseType.rrw_set,"current", "maintained", "table", "types"," "," ");
2613    adddb2cmds(ESqlStatementType.sstdb2setcurrentpackagepath, TBaseType.rrw_set,"current", "package", "path"," "," "," ");
2614    adddb2cmds(ESqlStatementType.sstdb2setcurrentpackageset, TBaseType.rrw_set,"current", "packageset"," "," "," "," ");
2615    adddb2cmds(ESqlStatementType.sstdb2setcurrentqueryoptimization, TBaseType.rrw_set,"current", "query", "optimization"," "," "," ");
2616    adddb2cmds(ESqlStatementType.sstdb2setcurrentrefreshage, TBaseType.rrw_set,"current", "refresh", "age"," "," "," ");
2617    adddb2cmds(ESqlStatementType.sstdb2setschema, TBaseType.rrw_set,"current","schema"," "," "," "," ");
2618    adddb2cmds(ESqlStatementType.sstdb2setencryptionpassword, TBaseType.rrw_set,"encryption", "password"," "," "," "," ");
2619    adddb2cmds(ESqlStatementType.sstdb2seteventmonitorstate, TBaseType.rrw_set,"event", "monitor", "state"," "," "," ");
2620    adddb2cmds(ESqlStatementType.sstdb2setintegrity, TBaseType.rrw_set,"integrity"," "," "," "," "," ");
2621    adddb2cmds(ESqlStatementType.sstdb2setpassthru, TBaseType.rrw_set,"passthru"," "," "," "," "," ");
2622    adddb2cmds(ESqlStatementType.sstdb2setpath, TBaseType.rrw_set,"path"," "," "," "," "," ");
2623    adddb2cmds(ESqlStatementType.sstdb2setschema, TBaseType.rrw_set,"schema"," "," "," "," "," ");
2624    adddb2cmds(ESqlStatementType.sstdb2setserveroption, TBaseType.rrw_set,"server", "option"," "," "," "," ");
2625    adddb2cmds(ESqlStatementType.sstdb2setsessionauthorization, TBaseType.rrw_set,"session", "authorization"," "," "," "," ");
2626    adddb2cmds(ESqlStatementType.sstdb2signal, TBaseType.rrw_signal," "," "," "," "," "," ");
2627    adddb2cmds(ESqlStatementType.sstdb2terminate, TBaseType.rrw_terminate," "," "," "," "," "," ");
2628//TRUNCATE TABLE
2629    adddb2cmds(ESqlStatementType.ssttruncatetable, TBaseType.rrw_truncate," "," "," "," "," "," ");
2630
2631    adddb2cmds(ESqlStatementType.sstupdate, TBaseType.rrw_update," "," "," "," "," "," ");
2632    adddb2cmds(ESqlStatementType.sstdb2updateCommand, TBaseType.rrw_update,"command"," "," "," "," "," ");
2633// AddDB2Cmds(sstDB2VALUES,rrw_VALUES);
2634// AddDB2Cmds(sstDB2WHENEVER,rrw_WHENEVER);
2635    adddb2cmds(ESqlStatementType.sstdb2while, TBaseType.rrw_while," "," "," "," "," "," ");
2636
2637}
2638
2639void initnetezzacmds(){
2640    addnetezzacmds(ESqlStatementType.sstAlterSchema, TBaseType.rrw_alter, "schema", " ", " ", " ", " ", " ");
2641    addnetezzacmds(ESqlStatementType.sstnetezzaAlterDatabase, TBaseType.rrw_alter, "database", " ", " ", " ", " ", " ");
2642    addnetezzacmds(ESqlStatementType.sstnetezzaAlterGroup, TBaseType.rrw_alter, "group", " ", " ", " ", " ", " ");
2643    addnetezzacmds(ESqlStatementType.sstnetezzaAlterHistoryConfiguration, TBaseType.rrw_alter, "history", " ", " ", " ", " ", " ");
2644    addnetezzacmds(ESqlStatementType.sstnetezzaAlterSequence, TBaseType.rrw_alter, "sequence", " ", " ", " ", " ", " ");
2645    addnetezzacmds(ESqlStatementType.sstaltersession, TBaseType.rrw_alter, "session", " ", " ", " ", " ", " ");
2646    addnetezzacmds(ESqlStatementType.sstAlterSynonym, TBaseType.rrw_alter, "synonym", " ", " ", " ", " ", " ");
2647    addnetezzacmds(ESqlStatementType.sstnetezzaAlterTable, TBaseType.rrw_alter, "table", " ", " ", " ", " ", " ");
2648    addnetezzacmds(ESqlStatementType.sstnetezzaAlterUser, TBaseType.rrw_alter, "user", " ", " ", " ", " ", " ");
2649    addnetezzacmds(ESqlStatementType.sstnetezzaAlterView, TBaseType.rrw_alter, "view", " ", " ", " ", " ", " ");
2650    addnetezzacmds(ESqlStatementType.sstnetezzaAlterView, TBaseType.rrw_alter, "views", " ", " ", " ", " ", " ");
2651    addnetezzacmds(ESqlStatementType.sstnetezzaBegin, TBaseType.rrw_begin, " ", " ", " ", " ", " ", " ");
2652    addnetezzacmds(ESqlStatementType.sstcall, TBaseType.rrw_call, " ", " ", " ", " ", " ", " ");
2653    addnetezzacmds(ESqlStatementType.sstnetezzaComment, TBaseType.rrw_comment, " ", " ", " ", " ", " ", " ");
2654    addnetezzacmds(ESqlStatementType.sstnetezzaCommit, TBaseType.rrw_commit, " ", " ", " ", " ", " ", " ");
2655    addnetezzacmds(ESqlStatementType.sstnetezzaCopy, TBaseType.rrw_netezza_copy, " ", " ", " ", " ", " ", " ");
2656    addnetezzacmds(ESqlStatementType.sstcreatedatabase, TBaseType.rrw_create, "database", " ", " ", " ", " ", " ");
2657    addnetezzacmds(ESqlStatementType.sstnetezzaCreateExternalTable, TBaseType.rrw_create, "external", "table", " ", " ", " ", " ");
2658    addnetezzacmds(ESqlStatementType.sstnetezzaCreateGruop, TBaseType.rrw_create, "group", " ", " ", " ", " ", " ");
2659    addnetezzacmds(ESqlStatementType.sstnetezzaCreateHistoryConfiguration, TBaseType.rrw_create, "history", "configuration", " ", " ", " ", " ");
2660    addnetezzacmds(ESqlStatementType.sstcreatematerializedview, TBaseType.rrw_create, "materialized", "view", " ", " ", " ", " ");
2661    addnetezzacmds(ESqlStatementType.sstcreatematerializedview, TBaseType.rrw_create, "or", "replace", "materialized", "view", " ", " ");
2662    addnetezzacmds(ESqlStatementType.sstcreateprocedure, TBaseType.rrw_create, "or", "replace", "procedure", " ", " ", " ");
2663    addnetezzacmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create, "or", "replace", "view", " ", " ", " ");
2664    addnetezzacmds(ESqlStatementType.sstcreateprocedure, TBaseType.rrw_create, "procedure", " ", " ", " ", " ", " ");
2665    addnetezzacmds(ESqlStatementType.sstcreatesequence, TBaseType.rrw_create, "sequence", " ", " ", " ", " ", " ");
2666    addnetezzacmds(ESqlStatementType.sstcreatesynonym, TBaseType.rrw_create, "synonym", " ", " ", " ", " ", " ");
2667    addnetezzacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "table", " ", " ", " ", " ", " ");
2668    addnetezzacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "temp", "table", " ", " ", " ", " ");
2669    addnetezzacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "temporary", "table", " ", " ", " ", " ");
2670    addnetezzacmds(ESqlStatementType.sstnetezzaCreateUser, TBaseType.rrw_create, "user", " ", " ", " ", " ", " ");
2671    addnetezzacmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create, "view", " ", " ", " ", " ", " ");
2672//    addnetezzacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "volatile", "table", " ", " ", " ", " ");
2673    addnetezzacmds(ESqlStatementType.sstdelete, TBaseType.rrw_delete , " ", " ", " ", " ", " ", " ");
2674    addnetezzacmds(ESqlStatementType.sstnetezzaDropConnection, TBaseType.rrw_drop, "connection", " ", " ", " ", " ", " ");
2675    addnetezzacmds(ESqlStatementType.sstdropdatabase, TBaseType.rrw_drop, "database", " ", " ", " ", " ", " ");
2676    addnetezzacmds(ESqlStatementType.sstnetezzaDropGroup, TBaseType.rrw_drop, "group", " ", " ", " ", " ", " ");
2677    addnetezzacmds(ESqlStatementType.sstnetezzaDropHistoryConfiguration, TBaseType.rrw_drop, "history", "configuration", " ", " ", " ", " ");
2678    addnetezzacmds(ESqlStatementType.sstdropprocedure, TBaseType.rrw_drop, "procedure", " ", " ", " ", " ", " ");
2679    addnetezzacmds(ESqlStatementType.sstnetezzaDropSchema, TBaseType.rrw_drop, "schema", " ", " ", " ", " ", " ");
2680    addnetezzacmds(ESqlStatementType.sstnetezzaDropSequence, TBaseType.rrw_drop, "sequence", " ", " ", " ", " ", " ");
2681    addnetezzacmds(ESqlStatementType.sstnetezzaDropSession, TBaseType.rrw_drop, "session", " ", " ", " ", " ", " ");
2682    addnetezzacmds(ESqlStatementType.sstdropsynonym, TBaseType.rrw_drop, "synonym", " ", " ", " ", " ", " ");
2683    addnetezzacmds(ESqlStatementType.sstnetezzaDropTable, TBaseType.rrw_drop, "table", " ", " ", " ", " ", " ");
2684    addnetezzacmds(ESqlStatementType.sstnetezzaDropUser, TBaseType.rrw_drop, "user", " ", " ", " ", " ", " ");
2685    addnetezzacmds(ESqlStatementType.sstnetezzaDropView, TBaseType.rrw_drop, "view", " ", " ", " ", " ", " ");
2686    addnetezzacmds(ESqlStatementType.sstexecutestmt, TBaseType.rrw_exec, " ", " ", " ", " ", " ", " ");
2687    addnetezzacmds(ESqlStatementType.sstexecutestmt, TBaseType.rrw_execute, " ", " ", " ", " ", " ", " ");
2688    addnetezzacmds(ESqlStatementType.sstExplain, TBaseType.rrw_explain, " ", " ", " ", " ", " ", " ");
2689    addnetezzacmds(ESqlStatementType.sstnetezzaGenerateStatistics, TBaseType.rrw_netezza_generate, "express", "statistics", " ", " ", " ", " ");
2690    addnetezzacmds(ESqlStatementType.sstnetezzaGenerateStatistics, TBaseType.rrw_netezza_generate, "statistics", " ", " ", " ", " ", " ");
2691    addnetezzacmds(ESqlStatementType.sstnetezzaGrant, TBaseType.rrw_grant, " ", " ", " ", " ", " ", " ");
2692    addnetezzacmds(ESqlStatementType.sstnetezzaGroomTable, TBaseType.rrw_netezza_groom, "table", " ", " ", " ", " ", " ");
2693    addnetezzacmds(ESqlStatementType.sstlocktable, TBaseType.rrw_lock, "table", " ", " ", " ", " ", " ");
2694    addnetezzacmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert, " ", " ", " ", " ", " ", " ");
2695    addnetezzacmds(ESqlStatementType.sstmerge, TBaseType.rrw_merge, " ", " ", " ", " ", " ", " ");
2696    addnetezzacmds(ESqlStatementType.sstnetezzaReset, TBaseType.rrw_reset, " ", " ", " ", " ", " ", " ");
2697    addnetezzacmds(ESqlStatementType.sstnetezzaRevoke, TBaseType.rrw_revoke, " ", " ", " ", " ", " ", " ");
2698    addnetezzacmds(ESqlStatementType.sstnetezzaRollback, TBaseType.rrw_rollback, " ", " ", " ", " ", " ", " ");
2699    addnetezzacmds(ESqlStatementType.sstselect, TBaseType.rrw_select, " ", " ", " ", " ", " ", " ");
2700    addnetezzacmds(ESqlStatementType.sstnetezzaSet, TBaseType.rrw_set, " ", " ", " ", " ", " ", " ");
2701    addnetezzacmds(ESqlStatementType.sstSetCatalog, TBaseType.rrw_set, "catalog", " ", " ", " ", " ", " ");
2702    addnetezzacmds(ESqlStatementType.sstSetSchema, TBaseType.rrw_set, "schema", " ", " ", " ", " ", " ");
2703    addnetezzacmds(ESqlStatementType.sstnetezzaShow, TBaseType.rrw_show, " ", " ", " ", " ", " ", " ");
2704    addnetezzacmds(ESqlStatementType.sstTruncate, TBaseType.rrw_truncate, " ", " ", " ", " ", " ", " ");
2705    addnetezzacmds(ESqlStatementType.sstupdate, TBaseType.rrw_update, " ", " ", " ", " ", " ", " ");
2706}
2707    void initgaussdbcmds(){
2708// cmd must be sorted alphabetically
2709        addgaussdbcmds(ESqlStatementType.sstpostgresqlabort, TBaseType.rrw_abort, " ", " ", " ", " ", " ", " ");
2710        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterAggregate, TBaseType.rrw_alter, "aggregate", " ", " ", " ", " ", " ");
2711        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterCollation, TBaseType.rrw_alter, "collation", " ", " ", " ", " ", " ");
2712        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterConversion, TBaseType.rrw_alter, "conversion", " ", " ", " ", " ", " ");
2713        addgaussdbcmds(ESqlStatementType.sstpostgresqlalterdatabase, TBaseType.rrw_alter, "database", " ", " ", " ", " ", " ");
2714        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterDefaultPrivileges, TBaseType.rrw_alter, "default", "privileges", " ", " ", " ", " ");
2715        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterDomain, TBaseType.rrw_alter, "domain", " ", " ", " ", " ", " ");
2716        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterEventTrigger, TBaseType.rrw_alter, "event", "trigger", " ", " ", " ", " ");
2717        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterExtension, TBaseType.rrw_alter, "extension", " ", " ", " ", " ", " ");
2718        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterForeignDataWrapper, TBaseType.rrw_alter, "foreign", "data", "wrapper", " ", " ", " ");
2719        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterForeignTable, TBaseType.rrw_alter, "foreign", "Table", " ", " ", " ", " ");
2720
2721        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterfunction, TBaseType.rrw_alter, "function", " ", " ", " ", " ", " ");
2722        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterGroup, TBaseType.rrw_alter, "group", " ", " ", " ", " ", " ");
2723        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterIndex, TBaseType.rrw_alter, "index", " ", " ", " ", " ", " ");
2724        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterLanguage, TBaseType.rrw_alter, "language", " ", " ", " ", " ", " ");
2725        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterLargeObject, TBaseType.rrw_alter, "large", "object", " ", " ", " ", " ");
2726        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterMaterializedView, TBaseType.rrw_alter, "materialized", "view", " ", " ", " ", " ");
2727        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterOperator, TBaseType.rrw_alter, "operator", " ", " ", " ", " ", " ");
2728        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterOperatorClass, TBaseType.rrw_alter, "operator", "class", " ", " ", " ", " ");
2729        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterOperatorFamily, TBaseType.rrw_alter, "operator", "family", " ", " ", " ", " ");
2730        addgaussdbcmds(ESqlStatementType.sstAlterPackage, TBaseType.rrw_alter, "package", " ", " ", " ", " ", " ");
2731        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterPolicy, TBaseType.rrw_alter, "policy", " ", " ", " ", " ", " ");
2732        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterLanguage, TBaseType.rrw_alter, "procedural", "language", " ", " ", " ", " ");
2733        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterProcedure, TBaseType.rrw_alter, "procedure", " ", " ", " ", " ", " ");
2734        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterPublication, TBaseType.rrw_alter, "publication", " ", " ", " ", " ", " ");
2735        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterRole, TBaseType.rrw_alter, "role", " ", " ", " ", " ", " ");
2736        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterRoutine, TBaseType.rrw_alter, "routine", " ", " ", " ", " ", " ");
2737        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterRule, TBaseType.rrw_alter, "rule", " ", " ", " ", " ", " ");
2738        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterSchema, TBaseType.rrw_alter, "schema", " ", " ", " ", " ", " ");
2739        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterSequence, TBaseType.rrw_alter, "sequence", " ", " ", " ", " ", " ");
2740        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterServer, TBaseType.rrw_alter, "server", " ", " ", " ", " ", " ");
2741        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterStatistics, TBaseType.rrw_alter, "statistics", " ", " ", " ", " ", " ");
2742        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterSubscription, TBaseType.rrw_alter, "subscription", " ", " ", " ", " ", " ");
2743        addgaussdbcmds(ESqlStatementType.sstAlterSynonym, TBaseType.rrw_alter, "synonym", " ", " ", " ", " ", " ");
2744        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterSystem, TBaseType.rrw_alter, "system", " ", " ", " ", " ", " ");
2745
2746        addgaussdbcmds(ESqlStatementType.sstaltertable, TBaseType.rrw_alter, "table", " ", " ", " ", " ", " ");
2747        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterTablespace, TBaseType.rrw_alter, "tablespace", " ", " ", " ", " ", " ");
2748
2749        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterTextSearchConfiguration, TBaseType.rrw_alter, "text", "search", "configuration", " ", " ", " ");
2750        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterTextSearchDictionary, TBaseType.rrw_alter, "text", "search", "dictionary", " ", " ", " ");
2751        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterTextSearchParser, TBaseType.rrw_alter, "text", "search", "parser", " ", " ", " ");
2752        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterTextSearchTemplate, TBaseType.rrw_alter, "text", "search", "template", " ", " ", " ");
2753        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterTrigger, TBaseType.rrw_alter, "trigger", " ", " ", " ", " ", " ");
2754        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterType, TBaseType.rrw_alter, "type", " ", " ", " ", " ", " ");
2755        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterUser, TBaseType.rrw_alter, "user", " ", " ", " ", " ", " ");
2756        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterUserMapping, TBaseType.rrw_alter, "user", "mapping", " ", " ", " ", " ");
2757        addgaussdbcmds(ESqlStatementType.sstpostgresqlAlterView, TBaseType.rrw_alter, "view", " ", " ", " ", " ", " ");
2758        addgaussdbcmds(ESqlStatementType.sstpostgresqlAnalyze, TBaseType.rrw_analyze, " ", " ", " ", " ", " ", " ");
2759
2760        // begin is recognized in isgaussdb() method.
2761      //  addgaussdbcmds(ESqlStatementType.sstpostgresqlBegin, TBaseType.rrw_begin, " ", " ", " ", " ", " ", " ");
2762
2763        addgaussdbcmds(ESqlStatementType.sstcall, TBaseType.rrw_call, " ", " ", " ", " ", " ", " ");
2764
2765        addgaussdbcmds(ESqlStatementType.sstpostgresqlCheckpoint, TBaseType.rrw_checkpoint, " ", " ", " ", " ", " ", " ");
2766        addgaussdbcmds(ESqlStatementType.sstpostgresqlClose, TBaseType.rrw_close, " ", " ", " ", " ", " ", " ");
2767
2768        addgaussdbcmds(ESqlStatementType.sstpostgresqlCluster, TBaseType.rrw_postgresql_cluster, " ", " ", " ", " ", " ", " ");
2769
2770        addgaussdbcmds(ESqlStatementType.sstpostgresqlComment, TBaseType.rrw_comment, " ", " ", " ", " ", " ", " ");
2771
2772        addgaussdbcmds(ESqlStatementType.sstpostgresqlCommit, TBaseType.rrw_commit, " ", " ", " ", " ", " ", " ");
2773        addgaussdbcmds(ESqlStatementType.sstpostgresqlCommitPrepared, TBaseType.rrw_commit, "prepared", " ", " ", " ", " ", " ");
2774        addgaussdbcmds(ESqlStatementType.sstpostgresqlCopy, TBaseType.rrw_postgresql_copy, " ", " ", " ", " ", " ", " ");
2775
2776        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateAccessMethod, TBaseType.rrw_create, "access", "method", " ", " ", " ", " ");
2777        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateAggregate, TBaseType.rrw_create, "aggregate", " ", " ", " ", " ", " ");
2778        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateAssertion, TBaseType.rrw_create, "assertion", " ", " ", " ", " ", " ");
2779        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateCast, TBaseType.rrw_create, "cast", " ", " ", " ", " ", " ");
2780        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateCollation, TBaseType.rrw_create, "collation", " ", " ", " ", " ", " ");
2781
2782        addgaussdbcmds(ESqlStatementType.sstcreatetrigger, TBaseType.rrw_create, "constraint", "trigger", " ", " ", " ", " ");
2783
2784        addgaussdbcmds(ESqlStatementType.sstpostgresqlConversion, TBaseType.rrw_create, "conversion", " ", " ", " ", " ", " ");
2785        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateDatabase, TBaseType.rrw_create, "database", " ", " ", " ", " ", " ");
2786        addgaussdbcmds(ESqlStatementType.sstpostgresqlConversion, TBaseType.rrw_create, "default", "conversion", " ", " ", " ", " ");
2787        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateDomain, TBaseType.rrw_create, "domain", " ", " ", " ", " ", " ");
2788        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateEventTrigger, TBaseType.rrw_create, "event", "trigger", " ", " ", " ", " ");
2789        addgaussdbcmds(ESqlStatementType.sstcreateExtension, TBaseType.rrw_create, "extension", " ", " ", " ", " ", " ");
2790
2791        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateForeignDataWrapper, TBaseType.rrw_create, "foreign", "data", "wrapper", " ", " ", " ");
2792        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateForeignTable, TBaseType.rrw_create, "foreign", "table", " ", " ", " ", " ");
2793        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateFunction, TBaseType.rrw_create, "function", " ", " ", " ", " ", " ");
2794
2795        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateIndex, TBaseType.rrw_create, "global", "index", " ", " ", " ", " ");
2796
2797        addgaussdbcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "global", "temp", "table", " ", " ", " ");
2798        addgaussdbcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "global", "temporary", "table", " ", " ", " ");
2799        addgaussdbcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "global", "unlocked", "table", " ", " ", " ");
2800        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateIndex, TBaseType.rrw_create, "global", "unique", "index", " ", " ", " ");
2801
2802        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateGroup, TBaseType.rrw_create, "group", " ", " ", " ", " ", " ");
2803
2804        addgaussdbcmds(ESqlStatementType.sstcreatematerializedview, TBaseType.rrw_create, "incremental", "materialized", "view", " ", " ", " ");
2805
2806        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateIndex, TBaseType.rrw_create, "index", " ", " ", " ", " ", " ");
2807        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateLanguage, TBaseType.rrw_create, "language", " ", " ", " ", " ", " ");
2808
2809        addgaussdbcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "local", "temp", "table", " ", " ", " ");
2810        addgaussdbcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "local", "temporary", "table", " ", " ", " ");
2811        addgaussdbcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "local", "unlocked", "table", " ", " ", " ");
2812
2813        addgaussdbcmds(ESqlStatementType.sstcreatematerializedview, TBaseType.rrw_create, "materialized", "view", " ", " ", " ", " ");
2814
2815        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateOperator, TBaseType.rrw_create, "operator", " ", " ", " ", " ", " ");
2816        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateOperatorClass, TBaseType.rrw_create, "operator", "class", " ", " ", " ", " ");
2817        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateOperatorFimaly, TBaseType.rrw_create, "operator", "family", " ", " ", " ", " ");
2818
2819        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateFunction, TBaseType.rrw_create, "or", "replace", "function", " ", " ", " ");
2820        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateLanguage, TBaseType.rrw_create, "or", "replace", "language", " ", " ", " ");
2821
2822        addgaussdbcmds(ESqlStatementType.sstplsql_createpackage, TBaseType.rrw_create,"or","replace","package"," "," "," ");
2823        addgaussdbcmds(ESqlStatementType.sstoraclecreatepackagebody, TBaseType.rrw_create,"or","replace","package","body"," "," ");
2824
2825
2826        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateLanguage, TBaseType.rrw_create, "or", "replace", "procedural", "language", " ", " ");
2827        addgaussdbcmds(ESqlStatementType.sstcreateprocedure, TBaseType.rrw_create, "or", "replace", "procedure", " ", " ", " ");
2828        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateRole, TBaseType.rrw_create, "or", "replace", "role ", " ", " ", " ");
2829        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateRule, TBaseType.rrw_create, "or", "replace", "rule ", " ", " ", " ");
2830        addgaussdbcmds(ESqlStatementType.sstcreatesynonym, TBaseType.rrw_create,"or","replace","synonym"," "," "," ");
2831
2832        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateView, TBaseType.rrw_create, "or", "replace", "temp", "view", " ", " ");
2833        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateView, TBaseType.rrw_create, "or", "replace", "temporary", "view", " ", " ");
2834        addgaussdbcmds(ESqlStatementType.sstcreatetrigger, TBaseType.rrw_create, "or", "replace", "trigger", " ", " ", " ");
2835        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateLanguage, TBaseType.rrw_create, "or", "replace", "trusted", "language", " ", " ");
2836        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateLanguage, TBaseType.rrw_create, "or", "replace", "trusted", "procedural", "language", " ");
2837        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateView, TBaseType.rrw_create, "or", "replace", "view", " ", " ", " ");
2838
2839        addgaussdbcmds(ESqlStatementType.sstplsql_createpackage, TBaseType.rrw_create,"package"," "," "," "," "," ");
2840        addgaussdbcmds(ESqlStatementType.sstoraclecreatepackagebody, TBaseType.rrw_create,"package","body"," "," "," "," ");
2841
2842        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreatePolicy, TBaseType.rrw_create, "policy", " ", " ", " ", " ", " ");
2843        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateLanguage, TBaseType.rrw_create, "procedural", "language", " ", " ", " ", " ");
2844        addgaussdbcmds(ESqlStatementType.sstcreateprocedure, TBaseType.rrw_create, "procedure", " ", " ", " ", " ", " ");
2845        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreatePublication, TBaseType.rrw_create, "publication", " ", " ", " ", " ", " ");
2846
2847        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateRole, TBaseType.rrw_create, "role", " ", " ", " ", " ", " ");
2848        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateRule, TBaseType.rrw_create, "rule", " ", " ", " ", " ", " ");
2849
2850
2851        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateSchema, TBaseType.rrw_create, "schema", " ", " ", " ", " ", " ");
2852
2853        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateSequence, TBaseType.rrw_create, "sequence", " ", " ", " ", " ", " ");
2854
2855
2856        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateServer, TBaseType.rrw_create, "server", " ", " ", " ", " ", " ");
2857        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateStatistics, TBaseType.rrw_create, "statistics", " ", " ", " ", " ", " ");
2858        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateSubscription, TBaseType.rrw_create, "subscription", " ", " ", " ", " ", " ");
2859        addgaussdbcmds(ESqlStatementType.sstcreatesynonym, TBaseType.rrw_create,"synonym"," "," "," "," "," ");
2860
2861        addgaussdbcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "table", " ", " ", " ", " ", " ");
2862
2863        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateTablespace, TBaseType.rrw_create, "tablespace", " ", " ", " ", " ", " ");
2864
2865        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateSequence, TBaseType.rrw_create, "temp", "sequence", " ", " ", " ", " ");
2866        addgaussdbcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "temp", "table", " ", " ", " ", " ");
2867        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateView, TBaseType.rrw_create, "temp", "view", " ", " ", " ", " ");
2868        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateSequence, TBaseType.rrw_create, "temporary", "sequence", " ", " ", " ", " ");
2869        addgaussdbcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "temporary", "table", " ", " ", " ", " ");
2870        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateView, TBaseType.rrw_create, "temporary", "view", " ", " ", " ", " ");
2871
2872        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateTextSearchConfiguration, TBaseType.rrw_create, "text", "search", "configuration", " ", " ", " ");
2873        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateTextSearchDictionary, TBaseType.rrw_create, "text", "search", "dictionary", " ", " ", " ");
2874        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateTextSearchParser, TBaseType.rrw_create, "text", "search", "parser", " ", " ", " ");
2875        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateTextSearchTemplate, TBaseType.rrw_create, "text", "search", "template", " ", " ", " ");
2876
2877        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateTransform, TBaseType.rrw_create, "transform", " ", " ", " ", " ", " ");
2878        addgaussdbcmds(ESqlStatementType.sstcreatetrigger, TBaseType.rrw_create, "trigger", " ", " ", " ", " ", " ");
2879
2880        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateLanguage, TBaseType.rrw_create, "trusted", "language", " ", " ", " ", " ");
2881        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateLanguage, TBaseType.rrw_create, "trusted", "procedural", "language", " ", " ", " ");
2882
2883        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateType, TBaseType.rrw_create, "type", " ", " ", " ", " ", " ");
2884
2885        addgaussdbcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "unlocked", "table", " ", " ", " ", " ");
2886        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateSequence, TBaseType.rrw_create, "unlogged", "sequence", " ", " ", " ", " ");
2887        addgaussdbcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "unlogged", "table", " ", " ", " ", " ");
2888
2889        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateUser, TBaseType.rrw_create, "user", " ", " ", " ", " ", " ");
2890
2891        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateUserMapping, TBaseType.rrw_create, "user", "mapping", " ", " ", " ", " ");
2892
2893        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateView, TBaseType.rrw_create, "view", " ", " ", " ", " ", " ");
2894
2895        addgaussdbcmds(ESqlStatementType.sstpostgresqlCreateIndex, TBaseType.rrw_create, "unique", "index", " ", " ", " ", " ");
2896
2897
2898        addgaussdbcmds(ESqlStatementType.sstpostgresqlDeallocate, TBaseType.rrw_deallocate, " ", " ", " ", " ", " ", " ");
2899
2900        addgaussdbcmds(ESqlStatementType.sstpostgresqlDeclare, TBaseType.rrw_declare, " ", " ", " ", " ", " ", " ");
2901
2902        addgaussdbcmds(ESqlStatementType.sstdelete, TBaseType.rrw_delete, " ", " ", " ", " ", " ", " ");
2903
2904        addgaussdbcmds(ESqlStatementType.sstpostgresqlDiscard, TBaseType.rrw_postgresql_discard, " ", " ", " ", " ", " ", " ");
2905
2906        addgaussdbcmds(ESqlStatementType.sstpostgresqlDo, TBaseType.rrw_do, " ", " ", " ", " ", " ", " ");
2907
2908        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropAccessMethod, TBaseType.rrw_drop, "access", "method", " ", " ", " ", " ");
2909        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropAggregate, TBaseType.rrw_drop, "aggregate", " ", " ", " ", " ", " ");
2910        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropAssertion, TBaseType.rrw_drop, "assertion", " ", " ", " ", " ", " ");
2911
2912        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropCast, TBaseType.rrw_drop, "cast", " ", " ", " ", " ", " ");
2913
2914        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropCollation, TBaseType.rrw_drop, "collation", " ", " ", " ", " ", " ");
2915
2916        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropConversion, TBaseType.rrw_drop, "conversion", " ", " ", " ", " ", " ");
2917
2918        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropDatabase, TBaseType.rrw_drop, "database", " ", " ", " ", " ", " ");
2919
2920        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropDomain, TBaseType.rrw_drop, "domain", " ", " ", " ", " ", " ");
2921        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropEventTrigger, TBaseType.rrw_drop, "event", "trigger", " ", " ", " ", " ");
2922        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropExtension, TBaseType.rrw_drop, "extension", " ", " ", " ", " ", " ");
2923
2924        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropForeignDataWrapper, TBaseType.rrw_drop, "foreign", "data", "wrapper", " ", " ", " ");
2925
2926        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropForeignTable, TBaseType.rrw_drop, "foreign", "table", " ", " ", " ", " ");
2927
2928        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropFunction, TBaseType.rrw_drop, "function", " ", " ", " ", " ", " ");
2929
2930        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropGroup, TBaseType.rrw_drop, "group", " ", " ", " ", " ", " ");
2931
2932        addgaussdbcmds(ESqlStatementType.sstdropindex, TBaseType.rrw_drop, "index", " ", " ", " ", " ", " ");
2933
2934        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropLanguage, TBaseType.rrw_drop, "language", " ", " ", " ", " ", " ");
2935
2936        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropMaterializedView, TBaseType.rrw_drop, "materialized", "view", " ", " ", " ", " ");
2937
2938        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropOperator, TBaseType.rrw_drop, "operator", " ", " ", " ", " ", " ");
2939        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropOperatorClass, TBaseType.rrw_drop, "operator", "class", " ", " ", " ", " ");
2940        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropOperatorFamily, TBaseType.rrw_drop, "operator", "family ", " ", " ", " ", " ");
2941
2942        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropOwned, TBaseType.rrw_drop, "owned", " ", " ", " ", " ", " ");
2943        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropPolicy, TBaseType.rrw_drop, "policy", " ", " ", " ", " ", " ");
2944        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropLanguage, TBaseType.rrw_drop, "procedural", "language", " ", " ", " ", " ");
2945        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropProcedure, TBaseType.rrw_drop, "procedure", " ", " ", " ", " ", " ");
2946        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropPublication, TBaseType.rrw_drop, "publication", " ", " ", " ", " ", " ");
2947
2948        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropRole, TBaseType.rrw_drop, "role", " ", " ", " ", " ", " ");
2949        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropRoutine, TBaseType.rrw_drop, "routine", " ", " ", " ", " ", " ");
2950        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropRule, TBaseType.rrw_drop, "rule", " ", " ", " ", " ", " ");
2951        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropSchema, TBaseType.rrw_drop, "schema", " ", " ", " ", " ", " ");
2952        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropSequence, TBaseType.rrw_drop, "sequence", " ", " ", " ", " ", " ");
2953        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropServer, TBaseType.rrw_drop, "server", " ", " ", " ", " ", " ");
2954        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropStatistics, TBaseType.rrw_drop, "statistics", " ", " ", " ", " ", " ");
2955        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropSubscription, TBaseType.rrw_drop, "subscription", " ", " ", " ", " ", " ");
2956        addgaussdbcmds(ESqlStatementType.sstdropsynonym, TBaseType.rrw_drop,"synonym"," "," "," "," "," ");
2957        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropTable, TBaseType.rrw_drop, "table", " ", " ", " ", " ", " ");
2958        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropTablespace, TBaseType.rrw_drop, "tablespace", " ", " ", " ", " ", " ");
2959
2960        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropTextSearchConfiguration, TBaseType.rrw_drop, "text", "search", "configuration", " ", " ", " ");
2961        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropTextSearchDictionary, TBaseType.rrw_drop, "text", "search", "dictionary", " ", " ", " ");
2962        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropTextSearchParser, TBaseType.rrw_drop, "text", "search", "parser", " ", " ", " ");
2963        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropTextSearchTemplate, TBaseType.rrw_drop, "text", "search", "template", " ", " ", " ");
2964        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropTransform, TBaseType.rrw_drop, "transform", " ", " ", " ", " ", " ");
2965        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropTrigger, TBaseType.rrw_drop, "trigger", " ", " ", " ", " ", " ");
2966        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropType, TBaseType.rrw_drop, "type", " ", " ", " ", " ", " ");
2967        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropUser, TBaseType.rrw_drop, "user", " ", " ", " ", " ", " ");
2968        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropUserMapping, TBaseType.rrw_drop, "user", "mapping", " ", " ", " ", " ");
2969        addgaussdbcmds(ESqlStatementType.sstpostgresqlDropView, TBaseType.rrw_drop, "view", " ", " ", " ", " ", " ");
2970
2971        addgaussdbcmds(ESqlStatementType.sstpostgresqlEnd, TBaseType.rrw_end, " ", " ", " ", " ", " ", " ");
2972
2973        addgaussdbcmds(ESqlStatementType.sstpostgresqlExecute, TBaseType.rrw_execute, " ", " ", " ", " ", " ", " ");
2974
2975        addgaussdbcmds(ESqlStatementType.sstpostgresqlExplain, TBaseType.rrw_explain, " ", " ", " ", " ", " ", " ");
2976
2977        addgaussdbcmds(ESqlStatementType.sstFetchFrom, TBaseType.rrw_fetch, " ", " ", " ", " ", " ", " ");
2978
2979        addgaussdbcmds(ESqlStatementType.sstpostgresqlGrant, TBaseType.rrw_grant, " ", " ", " ", " ", " ", " ");
2980        addgaussdbcmds(ESqlStatementType.sstPostgresqlImport, TBaseType.rrw_postgresql_import, "foreign", "schema", " ", " ", " ", " ");
2981        addgaussdbcmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert, " ", " ", " ", " ", " ", " ");
2982
2983        addgaussdbcmds(ESqlStatementType.sstpostgresqlListen, TBaseType.rrw_postgresql_listen, " ", " ", " ", " ", " ", " ");
2984
2985        addgaussdbcmds(ESqlStatementType.sstpostgresqlLoad, TBaseType.rrw_load, " ", " ", " ", " ", " ", " ");
2986
2987        addgaussdbcmds(ESqlStatementType.sstpostgresqlLock, TBaseType.rrw_lock, " ", " ", " ", " ", " ", " ");
2988        addgaussdbcmds(ESqlStatementType.sstmerge, TBaseType.rrw_merge," "," "," "," "," "," ");
2989
2990        addgaussdbcmds(ESqlStatementType.sstpostgresqlMove, TBaseType.rrw_move, " ", " ", " ", " ", " ", " ");
2991
2992        addgaussdbcmds(ESqlStatementType.sstpostgresqlNotify, TBaseType.rrw_postgresql_notify, " ", " ", " ", " ", " ", " ");
2993
2994        addgaussdbcmds(ESqlStatementType.sstPostgresqlBlock, TBaseType.rrw_plpgsql_function_delimiter, " ", " ", " ", " ", " ", " ");
2995
2996
2997        addgaussdbcmds(ESqlStatementType.sstpostgresqlPrepare, TBaseType.rrw_prepare, " ", " ", " ", " ", " ", " ");
2998
2999        addgaussdbcmds(ESqlStatementType.sstpostgresqlPrepareTransaction, TBaseType.rrw_prepare, "transaction", " ", " ", " ", " ", " ");
3000
3001        addgaussdbcmds(ESqlStatementType.sstpostgresqlReassignOwned, TBaseType.rrw_postgresql_reassign, "owned", " ", " ", " ", " ", " ");
3002
3003        addgaussdbcmds(ESqlStatementType.sstpostgresqlRefreshMaterializedView, TBaseType.rrw_refresh, "incremental","materialized", "view",  " ", " ", " ");
3004        addgaussdbcmds(ESqlStatementType.sstpostgresqlRefreshMaterializedView, TBaseType.rrw_refresh, "materialized", "view", " ", " ", " ", " ");
3005
3006        addgaussdbcmds(ESqlStatementType.sstReindex, TBaseType.rrw_postgresql_reindex, " ", " ", " ", " ", " ", " ");
3007
3008        addgaussdbcmds(ESqlStatementType.sstpostgresqlReleaseSavepoint, TBaseType.rrw_release, " ", " ", " ", " ", " ", " ");
3009        addgaussdbcmds(ESqlStatementType.sstpostgresqlReleaseSavepoint, TBaseType.rrw_release, "savepoint", " ", " ", " ", " ", " ");
3010
3011        addgaussdbcmds(ESqlStatementType.sstpostgresqlReset, TBaseType.rrw_reset, " ", " ", " ", " ", " ", " ");
3012
3013        addgaussdbcmds(ESqlStatementType.sstpostgresqlRevoke, TBaseType.rrw_revoke, " ", " ", " ", " ", " ", " ");
3014
3015        addgaussdbcmds(ESqlStatementType.sstpostgresqlRollback, TBaseType.rrw_rollback, " ", " ", " ", " ", " ", " ");
3016        addgaussdbcmds(ESqlStatementType.sstpostgresqlRollbackPrepared, TBaseType.rrw_rollback, "prepared", " ", " ", " ", " ", " ");
3017        addgaussdbcmds(ESqlStatementType.sstpostgresqlRollbackToSavepoint, TBaseType.rrw_rollback, "to", "savepoint", " ", " ", " ", " ");
3018        addgaussdbcmds(ESqlStatementType.sstsavepoint, TBaseType.rrw_savepoint, " ", " ", " ", " ", " ", " ");
3019
3020        addgaussdbcmds(ESqlStatementType.sstpostgresqlSecurityLabel, TBaseType.rrw_postgresql_security, "label", " ", " ", " ", " ", " ");
3021
3022
3023        addgaussdbcmds(ESqlStatementType.sstselect, TBaseType.rrw_select, " ", " ", " ", " ", " ", " ");
3024
3025        addgaussdbcmds(ESqlStatementType.sstpostgresqlSet, TBaseType.rrw_set, " ", " ", " ", " ", " ", " ");
3026
3027        addgaussdbcmds(ESqlStatementType.sstpostgresqlSetConstraints, TBaseType.rrw_set, "constraints", " ", " ", " ", " ", " ");
3028        addgaussdbcmds(ESqlStatementType.sstpostgresqlSetRole, TBaseType.rrw_set, "local", "role", " ", " ", " ", " ");
3029        addgaussdbcmds(ESqlStatementType.sstpostgresqlSetSessionAuthorization, TBaseType.rrw_set, "local", "session", "authorization", " ", " ", " ");
3030        addgaussdbcmds(ESqlStatementType.sstpostgresqlSetRole, TBaseType.rrw_set, "role", " ", " ", " ", " ", " ");
3031        addgaussdbcmds(ESqlStatementType.sstpostgresqlSetSearchPath, TBaseType.rrw_set, "search_path", " ", " ", " ", " ", " ");
3032        addgaussdbcmds(ESqlStatementType.sstpostgresqlSetSessionAuthorization, TBaseType.rrw_set, "session", "authorization", " ", " ", " ", " ");
3033        addgaussdbcmds(ESqlStatementType.sstpostgresqlSetTransaction, TBaseType.rrw_set, "session", "characteristics", "as", "transaction", " ", " ");
3034        addgaussdbcmds(ESqlStatementType.sstpostgresqlSetRole, TBaseType.rrw_set, "session", "role", " ", " ", " ", " ");
3035        addgaussdbcmds(ESqlStatementType.sstpostgresqlSetSessionAuthorization, TBaseType.rrw_set, "session", "session", "authorization", " ", " ", " ");
3036
3037        addgaussdbcmds(ESqlStatementType.sstpostgresqlSetTransaction, TBaseType.rrw_set, "transaction", " ", " ", " ", " ", " ");
3038        addgaussdbcmds(ESqlStatementType.sstpostgresqlShow, TBaseType.rrw_show, " ", " ", " ", " ", " ", " ");
3039        addgaussdbcmds(ESqlStatementType.sstpostgresqlShowSearchPath, TBaseType.rrw_show, "search_path", " ", " ", " ", " ", " ");
3040        // addgaussdbcmds(ESqlStatementType.sstpostgresqlStartTransaction, TBaseType.rrw_start, "transaction", " ", " ", " ", " ", " ");
3041        addgaussdbcmds(ESqlStatementType.sstPostgresqlTable, TBaseType.rrw_table, " ", " ", " ", " ", " ", " ");
3042        addgaussdbcmds(ESqlStatementType.sstStartTransaction, TBaseType.rrw_start, "transaction", " ", " ", " ", " ", " ");
3043        addgaussdbcmds(ESqlStatementType.sstpostgresqlTruncate, TBaseType.rrw_truncate, " ", " ", " ", " ", " ", " ");
3044
3045        addgaussdbcmds(ESqlStatementType.sstpostgresqlUnlisten, TBaseType.rrw_postgresql_unlisten, " ", " ", " ", " ", " ", " ");
3046
3047        addgaussdbcmds(ESqlStatementType.sstupdate, TBaseType.rrw_update, " ", " ", " ", " ", " ", " ");
3048        addgaussdbcmds(ESqlStatementType.sstVacuum, TBaseType.rrw_postgresql_vacuum, " ", " ", " ", " ", " ", " ");
3049        addgaussdbcmds(ESqlStatementType.sstValues, TBaseType.rrw_values, " ", " ", " ", " ", " ", " ");
3050
3051    }
3052
3053    void initpostgresqlcmds(){
3054// cmd must be sorted alphabetically
3055        addpostgresqlcmds(ESqlStatementType.sstpostgresqlabort, TBaseType.rrw_abort, " ", " ", " ", " ", " ", " ");
3056        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterAggregate, TBaseType.rrw_alter, "aggregate", " ", " ", " ", " ", " ");
3057        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterCollation, TBaseType.rrw_alter, "collation", " ", " ", " ", " ", " ");
3058        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterConversion, TBaseType.rrw_alter, "conversion", " ", " ", " ", " ", " ");
3059        addpostgresqlcmds(ESqlStatementType.sstpostgresqlalterdatabase, TBaseType.rrw_alter, "database", " ", " ", " ", " ", " ");
3060        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterDefaultPrivileges, TBaseType.rrw_alter, "default", "privileges", " ", " ", " ", " ");
3061        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterDomain, TBaseType.rrw_alter, "domain", " ", " ", " ", " ", " ");
3062        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterEventTrigger, TBaseType.rrw_alter, "event", "trigger", " ", " ", " ", " ");
3063        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterExtension, TBaseType.rrw_alter, "extension", " ", " ", " ", " ", " ");
3064        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterForeignDataWrapper, TBaseType.rrw_alter, "foreign", "data", "wrapper", " ", " ", " ");
3065        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterForeignTable, TBaseType.rrw_alter, "foreign", "Table", " ", " ", " ", " ");
3066
3067        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterfunction, TBaseType.rrw_alter, "function", " ", " ", " ", " ", " ");
3068        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterGroup, TBaseType.rrw_alter, "group", " ", " ", " ", " ", " ");
3069        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterIndex, TBaseType.rrw_alter, "index", " ", " ", " ", " ", " ");
3070        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterLanguage, TBaseType.rrw_alter, "language", " ", " ", " ", " ", " ");
3071        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterLargeObject, TBaseType.rrw_alter, "large", "object", " ", " ", " ", " ");
3072        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterMaterializedView, TBaseType.rrw_alter, "materialized", "view", " ", " ", " ", " ");
3073        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterOperator, TBaseType.rrw_alter, "operator", " ", " ", " ", " ", " ");
3074        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterOperatorClass, TBaseType.rrw_alter, "operator", "class", " ", " ", " ", " ");
3075        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterOperatorFamily, TBaseType.rrw_alter, "operator", "family", " ", " ", " ", " ");
3076        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterPolicy, TBaseType.rrw_alter, "policy", " ", " ", " ", " ", " ");
3077        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterLanguage, TBaseType.rrw_alter, "procedural", "language", " ", " ", " ", " ");
3078        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterProcedure, TBaseType.rrw_alter, "procedure", " ", " ", " ", " ", " ");
3079        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterPublication, TBaseType.rrw_alter, "publication", " ", " ", " ", " ", " ");
3080        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterRole, TBaseType.rrw_alter, "role", " ", " ", " ", " ", " ");
3081        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterRoutine, TBaseType.rrw_alter, "routine", " ", " ", " ", " ", " ");
3082        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterRule, TBaseType.rrw_alter, "rule", " ", " ", " ", " ", " ");
3083        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterSchema, TBaseType.rrw_alter, "schema", " ", " ", " ", " ", " ");
3084        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterSequence, TBaseType.rrw_alter, "sequence", " ", " ", " ", " ", " ");
3085        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterServer, TBaseType.rrw_alter, "server", " ", " ", " ", " ", " ");
3086        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterStatistics, TBaseType.rrw_alter, "statistics", " ", " ", " ", " ", " ");
3087        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterSubscription, TBaseType.rrw_alter, "subscription", " ", " ", " ", " ", " ");
3088        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterSystem, TBaseType.rrw_alter, "system", " ", " ", " ", " ", " ");
3089
3090        addpostgresqlcmds(ESqlStatementType.sstaltertable, TBaseType.rrw_alter, "table", " ", " ", " ", " ", " ");
3091        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterTablespace, TBaseType.rrw_alter, "tablespace", " ", " ", " ", " ", " ");
3092
3093        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterTextSearchConfiguration, TBaseType.rrw_alter, "text", "search", "configuration", " ", " ", " ");
3094        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterTextSearchDictionary, TBaseType.rrw_alter, "text", "search", "dictionary", " ", " ", " ");
3095        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterTextSearchParser, TBaseType.rrw_alter, "text", "search", "parser", " ", " ", " ");
3096        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterTextSearchTemplate, TBaseType.rrw_alter, "text", "search", "template", " ", " ", " ");
3097        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterTrigger, TBaseType.rrw_alter, "trigger", " ", " ", " ", " ", " ");
3098        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterType, TBaseType.rrw_alter, "type", " ", " ", " ", " ", " ");
3099        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterUser, TBaseType.rrw_alter, "user", " ", " ", " ", " ", " ");
3100        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterUserMapping, TBaseType.rrw_alter, "user", "mapping", " ", " ", " ", " ");
3101        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAlterView, TBaseType.rrw_alter, "view", " ", " ", " ", " ", " ");
3102        addpostgresqlcmds(ESqlStatementType.sstpostgresqlAnalyze, TBaseType.rrw_analyze, " ", " ", " ", " ", " ", " ");
3103
3104        addpostgresqlcmds(ESqlStatementType.sstpostgresqlBegin, TBaseType.rrw_begin, " ", " ", " ", " ", " ", " ");
3105
3106        addpostgresqlcmds(ESqlStatementType.sstcall, TBaseType.rrw_call, " ", " ", " ", " ", " ", " ");
3107
3108        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCheckpoint, TBaseType.rrw_checkpoint, " ", " ", " ", " ", " ", " ");
3109        addpostgresqlcmds(ESqlStatementType.sstpostgresqlClose, TBaseType.rrw_close, " ", " ", " ", " ", " ", " ");
3110
3111        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCluster, TBaseType.rrw_postgresql_cluster, " ", " ", " ", " ", " ", " ");
3112
3113        addpostgresqlcmds(ESqlStatementType.sstpostgresqlComment, TBaseType.rrw_comment, " ", " ", " ", " ", " ", " ");
3114
3115        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCommit, TBaseType.rrw_commit, " ", " ", " ", " ", " ", " ");
3116        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCommitPrepared, TBaseType.rrw_commit, "prepared", " ", " ", " ", " ", " ");
3117        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCopy, TBaseType.rrw_postgresql_copy, " ", " ", " ", " ", " ", " ");
3118
3119        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateAccessMethod, TBaseType.rrw_create, "access", "method", " ", " ", " ", " ");
3120        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateAggregate, TBaseType.rrw_create, "aggregate", " ", " ", " ", " ", " ");
3121        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateAssertion, TBaseType.rrw_create, "assertion", " ", " ", " ", " ", " ");
3122        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateCast, TBaseType.rrw_create, "cast", " ", " ", " ", " ", " ");
3123        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateCollation, TBaseType.rrw_create, "collation", " ", " ", " ", " ", " ");
3124
3125        addpostgresqlcmds(ESqlStatementType.sstcreatetrigger, TBaseType.rrw_create, "constraint", "trigger", " ", " ", " ", " ");
3126
3127        addpostgresqlcmds(ESqlStatementType.sstpostgresqlConversion, TBaseType.rrw_create, "conversion", " ", " ", " ", " ", " ");
3128        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateDatabase, TBaseType.rrw_create, "database", " ", " ", " ", " ", " ");
3129        addpostgresqlcmds(ESqlStatementType.sstpostgresqlConversion, TBaseType.rrw_create, "default", "conversion", " ", " ", " ", " ");
3130        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateDomain, TBaseType.rrw_create, "domain", " ", " ", " ", " ", " ");
3131        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateEventTrigger, TBaseType.rrw_create, "event", "trigger", " ", " ", " ", " ");
3132        addpostgresqlcmds(ESqlStatementType.sstcreateExtension, TBaseType.rrw_create, "extension", " ", " ", " ", " ", " ");
3133
3134        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateForeignDataWrapper, TBaseType.rrw_create, "foreign", "data", "wrapper", " ", " ", " ");
3135        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateForeignTable, TBaseType.rrw_create, "foreign", "table", " ", " ", " ", " ");
3136        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateFunction, TBaseType.rrw_create, "function", " ", " ", " ", " ", " ");
3137
3138        addpostgresqlcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "global", "temp", "table", " ", " ", " ");
3139        addpostgresqlcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "global", "temporary", "table", " ", " ", " ");
3140        addpostgresqlcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "global", "unlocked", "table", " ", " ", " ");
3141
3142        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateGroup, TBaseType.rrw_create, "group", " ", " ", " ", " ", " ");
3143
3144
3145        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateIndex, TBaseType.rrw_create, "index", " ", " ", " ", " ", " ");
3146        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateLanguage, TBaseType.rrw_create, "language", " ", " ", " ", " ", " ");
3147
3148        addpostgresqlcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "local", "temp", "table", " ", " ", " ");
3149        addpostgresqlcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "local", "temporary", "table", " ", " ", " ");
3150        addpostgresqlcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "local", "unlocked", "table", " ", " ", " ");
3151
3152        addpostgresqlcmds(ESqlStatementType.sstcreatematerializedview, TBaseType.rrw_create, "materialized", "view", " ", " ", " ", " ");
3153
3154        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateOperator, TBaseType.rrw_create, "operator", " ", " ", " ", " ", " ");
3155        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateOperatorClass, TBaseType.rrw_create, "operator", "class", " ", " ", " ", " ");
3156        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateOperatorFimaly, TBaseType.rrw_create, "operator", "family", " ", " ", " ", " ");
3157
3158        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateFunction, TBaseType.rrw_create, "or", "replace", "function", " ", " ", " ");
3159        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateLanguage, TBaseType.rrw_create, "or", "replace", "language", " ", " ", " ");
3160        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateLanguage, TBaseType.rrw_create, "or", "replace", "procedural", "language", " ", " ");
3161        addpostgresqlcmds(ESqlStatementType.sstcreateprocedure, TBaseType.rrw_create, "or", "replace", "procedure", " ", " ", " ");
3162        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateRole, TBaseType.rrw_create, "or", "replace", "role ", " ", " ", " ");
3163        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateRule, TBaseType.rrw_create, "or", "replace", "rule ", " ", " ", " ");
3164        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateView, TBaseType.rrw_create, "or", "replace", "temp", "view", " ", " ");
3165        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateView, TBaseType.rrw_create, "or", "replace", "temporary", "view", " ", " ");
3166        addpostgresqlcmds(ESqlStatementType.sstcreatetrigger, TBaseType.rrw_create, "or", "replace", "trigger", " ", " ", " ");
3167        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateLanguage, TBaseType.rrw_create, "or", "replace", "trusted", "language", " ", " ");
3168        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateLanguage, TBaseType.rrw_create, "or", "replace", "trusted", "procedural", "language", " ");
3169        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateView, TBaseType.rrw_create, "or", "replace", "view", " ", " ", " ");
3170        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreatePolicy, TBaseType.rrw_create, "policy", " ", " ", " ", " ", " ");
3171        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateLanguage, TBaseType.rrw_create, "procedural", "language", " ", " ", " ", " ");
3172        addpostgresqlcmds(ESqlStatementType.sstcreateprocedure, TBaseType.rrw_create, "procedure", " ", " ", " ", " ", " ");
3173        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreatePublication, TBaseType.rrw_create, "publication", " ", " ", " ", " ", " ");
3174
3175        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateView, TBaseType.rrw_create, "recursive", "view", " ", " ", " ", " ");
3176
3177        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateRole, TBaseType.rrw_create, "role", " ", " ", " ", " ", " ");
3178        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateRule, TBaseType.rrw_create, "rule", " ", " ", " ", " ", " ");
3179
3180
3181        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateSchema, TBaseType.rrw_create, "schema", " ", " ", " ", " ", " ");
3182
3183        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateSequence, TBaseType.rrw_create, "sequence", " ", " ", " ", " ", " ");
3184
3185
3186        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateServer, TBaseType.rrw_create, "server", " ", " ", " ", " ", " ");
3187        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateStatistics, TBaseType.rrw_create, "statistics", " ", " ", " ", " ", " ");
3188        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateSubscription, TBaseType.rrw_create, "subscription", " ", " ", " ", " ", " ");
3189
3190        addpostgresqlcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "table", " ", " ", " ", " ", " ");
3191
3192        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateTablespace, TBaseType.rrw_create, "tablespace", " ", " ", " ", " ", " ");
3193
3194        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateSequence, TBaseType.rrw_create, "temp", "sequence", " ", " ", " ", " ");
3195        addpostgresqlcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "temp", "table", " ", " ", " ", " ");
3196        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateView, TBaseType.rrw_create, "temp", "view", " ", " ", " ", " ");
3197        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateSequence, TBaseType.rrw_create, "temporary", "sequence", " ", " ", " ", " ");
3198        addpostgresqlcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "temporary", "table", " ", " ", " ", " ");
3199        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateView, TBaseType.rrw_create, "temporary", "view", " ", " ", " ", " ");
3200
3201        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateTextSearchConfiguration, TBaseType.rrw_create, "text", "search", "configuration", " ", " ", " ");
3202        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateTextSearchDictionary, TBaseType.rrw_create, "text", "search", "dictionary", " ", " ", " ");
3203        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateTextSearchParser, TBaseType.rrw_create, "text", "search", "parser", " ", " ", " ");
3204        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateTextSearchTemplate, TBaseType.rrw_create, "text", "search", "template", " ", " ", " ");
3205
3206        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateTransform, TBaseType.rrw_create, "transform", " ", " ", " ", " ", " ");
3207        addpostgresqlcmds(ESqlStatementType.sstcreatetrigger, TBaseType.rrw_create, "trigger", " ", " ", " ", " ", " ");
3208
3209        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateLanguage, TBaseType.rrw_create, "trusted", "language", " ", " ", " ", " ");
3210        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateLanguage, TBaseType.rrw_create, "trusted", "procedural", "language", " ", " ", " ");
3211
3212        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateType, TBaseType.rrw_create, "type", " ", " ", " ", " ", " ");
3213
3214        addpostgresqlcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "unlocked", "table", " ", " ", " ", " ");
3215        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateSequence, TBaseType.rrw_create, "unlogged", "sequence", " ", " ", " ", " ");
3216        addpostgresqlcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "unlogged", "table", " ", " ", " ", " ");
3217
3218        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateUser, TBaseType.rrw_create, "user", " ", " ", " ", " ", " ");
3219
3220        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateUserMapping, TBaseType.rrw_create, "user", "mapping", " ", " ", " ", " ");
3221
3222        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateView, TBaseType.rrw_create, "view", " ", " ", " ", " ", " ");
3223
3224        addpostgresqlcmds(ESqlStatementType.sstpostgresqlCreateIndex, TBaseType.rrw_create, "unique", "index", " ", " ", " ", " ");
3225
3226
3227        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDeallocate, TBaseType.rrw_deallocate, " ", " ", " ", " ", " ", " ");
3228
3229        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDeclare, TBaseType.rrw_declare, " ", " ", " ", " ", " ", " ");
3230
3231        addpostgresqlcmds(ESqlStatementType.sstdelete, TBaseType.rrw_delete, " ", " ", " ", " ", " ", " ");
3232
3233        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDiscard, TBaseType.rrw_postgresql_discard, " ", " ", " ", " ", " ", " ");
3234
3235        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDo, TBaseType.rrw_do, " ", " ", " ", " ", " ", " ");
3236
3237        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropAccessMethod, TBaseType.rrw_drop, "access", "method", " ", " ", " ", " ");
3238        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropAggregate, TBaseType.rrw_drop, "aggregate", " ", " ", " ", " ", " ");
3239        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropAssertion, TBaseType.rrw_drop, "assertion", " ", " ", " ", " ", " ");
3240
3241        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropCast, TBaseType.rrw_drop, "cast", " ", " ", " ", " ", " ");
3242
3243        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropCollation, TBaseType.rrw_drop, "collation", " ", " ", " ", " ", " ");
3244
3245        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropConversion, TBaseType.rrw_drop, "conversion", " ", " ", " ", " ", " ");
3246
3247        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropDatabase, TBaseType.rrw_drop, "database", " ", " ", " ", " ", " ");
3248
3249        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropDomain, TBaseType.rrw_drop, "domain", " ", " ", " ", " ", " ");
3250        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropEventTrigger, TBaseType.rrw_drop, "event", "trigger", " ", " ", " ", " ");
3251        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropExtension, TBaseType.rrw_drop, "extension", " ", " ", " ", " ", " ");
3252
3253        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropTable, TBaseType.rrw_drop, "external", "table", " ", " ", " ", " ");
3254
3255        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropForeignDataWrapper, TBaseType.rrw_drop, "foreign", "data", "wrapper", " ", " ", " ");
3256
3257        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropForeignTable, TBaseType.rrw_drop, "foreign", "table", " ", " ", " ", " ");
3258
3259        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropFunction, TBaseType.rrw_drop, "function", " ", " ", " ", " ", " ");
3260
3261        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropGroup, TBaseType.rrw_drop, "group", " ", " ", " ", " ", " ");
3262
3263        addpostgresqlcmds(ESqlStatementType.sstdropindex, TBaseType.rrw_drop, "index", " ", " ", " ", " ", " ");
3264
3265        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropLanguage, TBaseType.rrw_drop, "language", " ", " ", " ", " ", " ");
3266
3267        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropMaterializedView, TBaseType.rrw_drop, "materialized", "view", " ", " ", " ", " ");
3268
3269        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropOperator, TBaseType.rrw_drop, "operator", " ", " ", " ", " ", " ");
3270        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropOperatorClass, TBaseType.rrw_drop, "operator", "class", " ", " ", " ", " ");
3271        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropOperatorFamily, TBaseType.rrw_drop, "operator", "family ", " ", " ", " ", " ");
3272
3273        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropOwned, TBaseType.rrw_drop, "owned", " ", " ", " ", " ", " ");
3274        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropPolicy, TBaseType.rrw_drop, "policy", " ", " ", " ", " ", " ");
3275        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropLanguage, TBaseType.rrw_drop, "procedural", "language", " ", " ", " ", " ");
3276        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropProcedure, TBaseType.rrw_drop, "procedure", " ", " ", " ", " ", " ");
3277        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropPublication, TBaseType.rrw_drop, "publication", " ", " ", " ", " ", " ");
3278
3279        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropRole, TBaseType.rrw_drop, "role", " ", " ", " ", " ", " ");
3280        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropRoutine, TBaseType.rrw_drop, "routine", " ", " ", " ", " ", " ");
3281        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropRule, TBaseType.rrw_drop, "rule", " ", " ", " ", " ", " ");
3282        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropSchema, TBaseType.rrw_drop, "schema", " ", " ", " ", " ", " ");
3283        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropSequence, TBaseType.rrw_drop, "sequence", " ", " ", " ", " ", " ");
3284        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropServer, TBaseType.rrw_drop, "server", " ", " ", " ", " ", " ");
3285        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropStatistics, TBaseType.rrw_drop, "statistics", " ", " ", " ", " ", " ");
3286        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropSubscription, TBaseType.rrw_drop, "subscription", " ", " ", " ", " ", " ");
3287        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropTable, TBaseType.rrw_drop, "table", " ", " ", " ", " ", " ");
3288        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropTablespace, TBaseType.rrw_drop, "tablespace", " ", " ", " ", " ", " ");
3289
3290        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropTextSearchConfiguration, TBaseType.rrw_drop, "text", "search", "configuration", " ", " ", " ");
3291        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropTextSearchDictionary, TBaseType.rrw_drop, "text", "search", "dictionary", " ", " ", " ");
3292        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropTextSearchParser, TBaseType.rrw_drop, "text", "search", "parser", " ", " ", " ");
3293        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropTextSearchTemplate, TBaseType.rrw_drop, "text", "search", "template", " ", " ", " ");
3294        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropTransform, TBaseType.rrw_drop, "transform", " ", " ", " ", " ", " ");
3295        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropTrigger, TBaseType.rrw_drop, "trigger", " ", " ", " ", " ", " ");
3296        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropType, TBaseType.rrw_drop, "type", " ", " ", " ", " ", " ");
3297        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropUser, TBaseType.rrw_drop, "user", " ", " ", " ", " ", " ");
3298        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropUserMapping, TBaseType.rrw_drop, "user", "mapping", " ", " ", " ", " ");
3299        addpostgresqlcmds(ESqlStatementType.sstpostgresqlDropView, TBaseType.rrw_drop, "view", " ", " ", " ", " ", " ");
3300
3301        addpostgresqlcmds(ESqlStatementType.sstpostgresqlEnd, TBaseType.rrw_end, " ", " ", " ", " ", " ", " ");
3302
3303        addpostgresqlcmds(ESqlStatementType.sstpostgresqlExecute, TBaseType.rrw_execute, " ", " ", " ", " ", " ", " ");
3304
3305        addpostgresqlcmds(ESqlStatementType.sstpostgresqlExplain, TBaseType.rrw_explain, " ", " ", " ", " ", " ", " ");
3306
3307        addpostgresqlcmds(ESqlStatementType.sstFetchFrom, TBaseType.rrw_fetch, " ", " ", " ", " ", " ", " ");
3308
3309        addpostgresqlcmds(ESqlStatementType.sstpostgresqlGrant, TBaseType.rrw_grant, " ", " ", " ", " ", " ", " ");
3310        addpostgresqlcmds(ESqlStatementType.sstPostgresqlImport, TBaseType.rrw_postgresql_import, "foreign", "schema", " ", " ", " ", " ");
3311        addpostgresqlcmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert, " ", " ", " ", " ", " ", " ");
3312
3313        addpostgresqlcmds(ESqlStatementType.sstpostgresqlListen, TBaseType.rrw_postgresql_listen, " ", " ", " ", " ", " ", " ");
3314
3315        addpostgresqlcmds(ESqlStatementType.sstpostgresqlLoad, TBaseType.rrw_load, " ", " ", " ", " ", " ", " ");
3316
3317        addpostgresqlcmds(ESqlStatementType.sstpostgresqlLock, TBaseType.rrw_lock, " ", " ", " ", " ", " ", " ");
3318
3319        addpostgresqlcmds(ESqlStatementType.sstmerge, TBaseType.rrw_merge," "," "," "," "," "," ");
3320
3321        addpostgresqlcmds(ESqlStatementType.sstpostgresqlMove, TBaseType.rrw_move, " ", " ", " ", " ", " ", " ");
3322
3323        addpostgresqlcmds(ESqlStatementType.sstpostgresqlNotify, TBaseType.rrw_postgresql_notify, " ", " ", " ", " ", " ", " ");
3324
3325        addpostgresqlcmds(ESqlStatementType.sstPostgresqlBlock, TBaseType.rrw_plpgsql_function_delimiter, " ", " ", " ", " ", " ", " ");
3326
3327
3328        addpostgresqlcmds(ESqlStatementType.sstpostgresqlPrepare, TBaseType.rrw_prepare, " ", " ", " ", " ", " ", " ");
3329
3330        addpostgresqlcmds(ESqlStatementType.sstpostgresqlPrepareTransaction, TBaseType.rrw_prepare, "transaction", " ", " ", " ", " ", " ");
3331
3332        addpostgresqlcmds(ESqlStatementType.sstpostgresqlReassignOwned, TBaseType.rrw_postgresql_reassign, "owned", " ", " ", " ", " ", " ");
3333
3334        addpostgresqlcmds(ESqlStatementType.sstpostgresqlRefreshMaterializedView, TBaseType.rrw_refresh, "materialized", "view", " ", " ", " ", " ");
3335
3336        addpostgresqlcmds(ESqlStatementType.sstReindex, TBaseType.rrw_postgresql_reindex, " ", " ", " ", " ", " ", " ");
3337
3338        addpostgresqlcmds(ESqlStatementType.sstpostgresqlReleaseSavepoint, TBaseType.rrw_release, " ", " ", " ", " ", " ", " ");
3339        addpostgresqlcmds(ESqlStatementType.sstpostgresqlReleaseSavepoint, TBaseType.rrw_release, "savepoint", " ", " ", " ", " ", " ");
3340
3341        addpostgresqlcmds(ESqlStatementType.sstpostgresqlReset, TBaseType.rrw_reset, " ", " ", " ", " ", " ", " ");
3342
3343        addpostgresqlcmds(ESqlStatementType.sstpostgresqlRevoke, TBaseType.rrw_revoke, " ", " ", " ", " ", " ", " ");
3344
3345        addpostgresqlcmds(ESqlStatementType.sstpostgresqlRollback, TBaseType.rrw_rollback, " ", " ", " ", " ", " ", " ");
3346        addpostgresqlcmds(ESqlStatementType.sstpostgresqlRollbackPrepared, TBaseType.rrw_rollback, "prepared", " ", " ", " ", " ", " ");
3347        addpostgresqlcmds(ESqlStatementType.sstpostgresqlRollbackToSavepoint, TBaseType.rrw_rollback, "to", "savepoint", " ", " ", " ", " ");
3348        addpostgresqlcmds(ESqlStatementType.sstpostgresqlSavepoint, TBaseType.rrw_savepoint, " ", " ", " ", " ", " ", " ");
3349
3350        addpostgresqlcmds(ESqlStatementType.sstpostgresqlSecurityLabel, TBaseType.rrw_postgresql_security, "label", " ", " ", " ", " ", " ");
3351
3352
3353        addpostgresqlcmds(ESqlStatementType.sstselect, TBaseType.rrw_select, " ", " ", " ", " ", " ", " ");
3354
3355        addpostgresqlcmds(ESqlStatementType.sstpostgresqlSet, TBaseType.rrw_set, " ", " ", " ", " ", " ", " ");
3356
3357        addpostgresqlcmds(ESqlStatementType.sstpostgresqlSetConstraints, TBaseType.rrw_set, "constraints", " ", " ", " ", " ", " ");
3358        addpostgresqlcmds(ESqlStatementType.sstpostgresqlSetRole, TBaseType.rrw_set, "local", "role", " ", " ", " ", " ");
3359        addpostgresqlcmds(ESqlStatementType.sstpostgresqlSetSessionAuthorization, TBaseType.rrw_set, "local", "session", "authorization", " ", " ", " ");
3360        addpostgresqlcmds(ESqlStatementType.sstpostgresqlSetRole, TBaseType.rrw_set, "role", " ", " ", " ", " ", " ");
3361        addpostgresqlcmds(ESqlStatementType.sstpostgresqlSetSearchPath, TBaseType.rrw_set, "search_path", " ", " ", " ", " ", " ");
3362        addpostgresqlcmds(ESqlStatementType.sstpostgresqlSetSessionAuthorization, TBaseType.rrw_set, "session", "authorization", " ", " ", " ", " ");
3363        addpostgresqlcmds(ESqlStatementType.sstpostgresqlSetTransaction, TBaseType.rrw_set, "session", "characteristics", "as", "transaction", " ", " ");
3364        addpostgresqlcmds(ESqlStatementType.sstpostgresqlSetRole, TBaseType.rrw_set, "session", "role", " ", " ", " ", " ");
3365        addpostgresqlcmds(ESqlStatementType.sstpostgresqlSetSessionAuthorization, TBaseType.rrw_set, "session", "session", "authorization", " ", " ", " ");
3366
3367        addpostgresqlcmds(ESqlStatementType.sstpostgresqlSetTransaction, TBaseType.rrw_set, "transaction", " ", " ", " ", " ", " ");
3368        addpostgresqlcmds(ESqlStatementType.sstpostgresqlShow, TBaseType.rrw_show, " ", " ", " ", " ", " ", " ");
3369        addpostgresqlcmds(ESqlStatementType.sstpostgresqlShowSearchPath, TBaseType.rrw_show, "search_path", " ", " ", " ", " ", " ");
3370       // addpostgresqlcmds(ESqlStatementType.sstpostgresqlStartTransaction, TBaseType.rrw_start, "transaction", " ", " ", " ", " ", " ");
3371        addpostgresqlcmds(ESqlStatementType.sstPostgresqlTable, TBaseType.rrw_table, " ", " ", " ", " ", " ", " ");
3372        addpostgresqlcmds(ESqlStatementType.sstStartTransaction, TBaseType.rrw_start, "transaction", " ", " ", " ", " ", " ");
3373        addpostgresqlcmds(ESqlStatementType.sstpostgresqlTruncate, TBaseType.rrw_truncate, " ", " ", " ", " ", " ", " ");
3374
3375        addpostgresqlcmds(ESqlStatementType.sstpostgresqlUnlisten, TBaseType.rrw_postgresql_unlisten, " ", " ", " ", " ", " ", " ");
3376
3377        addpostgresqlcmds(ESqlStatementType.sstupdate, TBaseType.rrw_update, " ", " ", " ", " ", " ", " ");
3378        addpostgresqlcmds(ESqlStatementType.sstVacuum, TBaseType.rrw_postgresql_vacuum, " ", " ", " ", " ", " ", " ");
3379        addpostgresqlcmds(ESqlStatementType.sstValues, TBaseType.rrw_values, " ", " ", " ", " ", " ", " ");
3380
3381    }
3382
3383    void initbigquerycmds() {
3384// cmd must be sorted alphabetically
3385        addbigquerycmds(ESqlStatementType.sstalterview, TBaseType.rrw_alter, "view", " ", " ", " ", " ", " ");
3386        addbigquerycmds(ESqlStatementType.sstaltertable, TBaseType.rrw_alter, "table", " ", " ", " ", " ", " ");
3387
3388        addbigquerycmds(ESqlStatementType.sstBegin, TBaseType.rrw_begin, " ", " ", " ", " ", " ", " ");
3389        addbigquerycmds(ESqlStatementType.sstbegintran, TBaseType.rrw_begin, "transaction", " ", " ", " ", " ", " ");
3390
3391        addbigquerycmds(ESqlStatementType.sstcall, TBaseType.rrw_call, " ", " ", " ", " ", " ", " ");
3392        addbigquerycmds(ESqlStatementType.sst_casestmt, TBaseType.rrw_case, " ", " ", " ", " ", " ", " ");
3393        addbigquerycmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "external", "table", " ", " ", " ", " ");
3394        addbigquerycmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create, "function", " ", " ", " ", " ", " ");
3395        addbigquerycmds(ESqlStatementType.sstcreatematerializedview, TBaseType.rrw_create, "materialized", "view", " ", " ", " ", " ");
3396        addbigquerycmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "or", "replace", "external", "table", " ", " ");
3397        addbigquerycmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "or", "replace", "temporary", "table", " ", " ");
3398        addbigquerycmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create, "or", "replace", "function", " ", " ", " ");
3399        addbigquerycmds(ESqlStatementType.sstcreatematerializedview, TBaseType.rrw_create, "or", "replace", "materialized", "view", " ", " ");
3400        addbigquerycmds(ESqlStatementType.sstcreateprocedure, TBaseType.rrw_create, "or", "replace", "procedure", " ", " ", " ");
3401        addbigquerycmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "or", "replace", "table", " ", " ", " ");
3402        addbigquerycmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create, "or", "replace", "table", "function", " ", " ");
3403        addbigquerycmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create, "or", "replace", "temp", "function", " ", " ");
3404        addbigquerycmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "or", "replace", "temp", "table", " ", " ");
3405        addbigquerycmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create, "or", "replace", "temporary", "function", " ", " ");
3406        addbigquerycmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create, "or", "replace", "view", " ", " ", " ");
3407        addbigquerycmds(ESqlStatementType.sstcreateprocedure, TBaseType.rrw_create, "procedure", " ", " ", " ", " ", " ");
3408        addbigquerycmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "table", " ", " ", " ", " ", " ");
3409        addbigquerycmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create, "table", "function", " ", " ", " ", " ");
3410        addbigquerycmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create, "temp", "function", " ", " ", " ", " ");
3411        addbigquerycmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "temp", "table", " ", " ", " ", " ");
3412        addbigquerycmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create, "temporary", "function", " ", " ", " ", " ");
3413        addbigquerycmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "temporary", "table", " ", " ", " ", " ");
3414        addbigquerycmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "snapshot", "table", " ", " ", " ", " ");
3415        addbigquerycmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create, "view", " ", " ", " ", " ", " ");
3416        addbigquerycmds(ESqlStatementType.sstBigQueryDeclare, TBaseType.rrw_declare," "," "," "," "," "," ");
3417        addbigquerycmds(ESqlStatementType.sstdelete, TBaseType.rrw_delete, " ", " ", " ", " ", " ", " ");
3418        addbigquerycmds(ESqlStatementType.sstDropRowAccessPolicy, TBaseType.rrw_drop, "all","row", "access", "policies", " ", " ");
3419        addbigquerycmds(ESqlStatementType.sstDropAssignment, TBaseType.rrw_drop, "assignment", " ", " ", " ", " ", " ");
3420        addbigquerycmds(ESqlStatementType.sstdroptable, TBaseType.rrw_drop, "external", "table", " ", " ", " ", " ");
3421        addbigquerycmds(ESqlStatementType.sstdropfunction, TBaseType.rrw_drop, "function", " ", " ", " ", " ", " ");
3422        addbigquerycmds(ESqlStatementType.sstDropMaterializedView, TBaseType.rrw_drop, "materialized", "view", " ", " ", " ", " ");
3423        addbigquerycmds(ESqlStatementType.sstdropprocedure, TBaseType.rrw_drop, "procedure", " ", " ", " ", " ", " ");
3424        addbigquerycmds(ESqlStatementType.sstDropReservation, TBaseType.rrw_drop, "reservation", " ", " ", " ", " ", " ");
3425        addbigquerycmds(ESqlStatementType.sstDropRowAccessPolicy, TBaseType.rrw_drop, "row", "access", "policy", " ", " ", " ");
3426        addbigquerycmds(ESqlStatementType.sstdroptable, TBaseType.rrw_drop, "table", " ", " ", " ", " ", " ");
3427        addbigquerycmds(ESqlStatementType.sstDropTableFunction, TBaseType.rrw_drop, "table", "function", " ", " ", " ", " ");
3428        addbigquerycmds(ESqlStatementType.sstdropschema, TBaseType.rrw_drop, "schema", " ", " ", " ", " ", " ");
3429        addbigquerycmds(ESqlStatementType.sstDropSnapshotTable, TBaseType.rrw_drop, "snapshot", "table", " ", " ", " ", " ");
3430        addbigquerycmds(ESqlStatementType.sstdropview, TBaseType.rrw_drop, "view", " ", " ", " ", " ", " ");
3431
3432        addbigquerycmds(ESqlStatementType.sstExecute, TBaseType.rrw_execute,  "immediate"," "," "," "," "," ");
3433
3434        addbigquerycmds(ESqlStatementType.sstBigQueryExportData, TBaseType.rrw_bigquery_export, "data", " ", " ", " ", " ", " ");
3435        addbigquerycmds(ESqlStatementType.sstForStmt, TBaseType.rrw_for, " ", " ", " ", " ", " ", " ");
3436        addbigquerycmds(ESqlStatementType.sst_ifstmt, TBaseType.rrw_if, " ", " ", " ", " ", " ", " ");
3437        addbigquerycmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert, " ", " ", " ", " ", " ", " ");
3438        addbigquerycmds(ESqlStatementType.sst_loopstmt, TBaseType.rrw_loop, " ", " ", " ", " ", " ", " ");
3439        addbigquerycmds(ESqlStatementType.sstmerge, TBaseType.rrw_merge, " ", " ", " ", " ", " ", " ");
3440        addbigquerycmds(ESqlStatementType.sstRepeat, TBaseType.rrw_repeat, " ", " ", " ", " ", " ", " ");
3441        addbigquerycmds(ESqlStatementType.sstselect, TBaseType.rrw_select, " ", " ", " ", " ", " ", " ");
3442        addbigquerycmds(ESqlStatementType.sstset, TBaseType.rrw_set, " ", " ", " ", " ", " ", " ");
3443        addbigquerycmds(ESqlStatementType.sstTruncate, TBaseType.rrw_truncate, " ", " ", " ", " ", " ", " ");
3444        addbigquerycmds(ESqlStatementType.sstupdate, TBaseType.rrw_update, " ", " ", " ", " ", " ", " ");
3445        addbigquerycmds(ESqlStatementType.sstWhilestmt, TBaseType.rrw_while, " ", " ", " ", " ", " ", " ");
3446    }
3447
3448void initsnowflakecmds(){
3449// cmd must be sorted alphabetically
3450    addsnowflakecmds(ESqlStatementType.sstAlterAccount, TBaseType.rrw_alter, "account", " ", " ", " ", " ", " ");
3451    addsnowflakecmds(ESqlStatementType.sstalterdatabase, TBaseType.rrw_alter, "database", " ", " ", " ", " ", " ");
3452    addsnowflakecmds(ESqlStatementType.sstaltertable, TBaseType.rrw_alter, "external", "table", " ", " ", " ", " ");
3453    addsnowflakecmds(ESqlStatementType.sstAlterFileFormat, TBaseType.rrw_alter, "file", "format", " ", " ", " ", " ");
3454    addsnowflakecmds(ESqlStatementType.sstalterfunction, TBaseType.rrw_alter, "function", " ", " ", " ", " ", " ");
3455    addsnowflakecmds(ESqlStatementType.sstAlterMaterializedView, TBaseType.rrw_alter,"materialized","view"," "," "," "," ");
3456    addsnowflakecmds(ESqlStatementType.sstAlterNetworkPolicy, TBaseType.rrw_alter, "network", "policy", " ", " ", " ", " ");
3457    addsnowflakecmds(ESqlStatementType.sstAlterPipe, TBaseType.rrw_alter, "pipe", " ", " ", " ", " ", " ");
3458    addsnowflakecmds(ESqlStatementType.sstAlterResourceMonitor, TBaseType.rrw_alter, "resource", "monitor", " ", " ", " ", " ");
3459    addsnowflakecmds(ESqlStatementType.sstAlterRole, TBaseType.rrw_alter, "role", " ", " ", " ", " ", " ");
3460    addsnowflakecmds(ESqlStatementType.sstAlterTask, TBaseType.rrw_alter, "task", " ", " ", " ", " ", " ");
3461    addsnowflakecmds(ESqlStatementType.sstAlterSchema, TBaseType.rrw_alter, "schema", " ", " ", " ", " ", " ");
3462    addsnowflakecmds(ESqlStatementType.sstaltersession, TBaseType.rrw_alter, "session", " ", " ", " ", " ", " ");
3463    addsnowflakecmds(ESqlStatementType.sstaltersequence, TBaseType.rrw_alter, "sequence", " ", " ", " ", " ", " ");
3464    addsnowflakecmds(ESqlStatementType.sstAlterShare, TBaseType.rrw_alter, "share", " ", " ", " ", " ", " ");
3465    addsnowflakecmds(ESqlStatementType.sstAlterStage, TBaseType.rrw_alter, "stage", " ", " ", " ", " ", " ");
3466    addsnowflakecmds(ESqlStatementType.sstaltertable, TBaseType.rrw_alter, "table", " ", " ", " ", " ", " ");
3467    addsnowflakecmds(ESqlStatementType.sstalteruser, TBaseType.rrw_alter, "user", " ", " ", " ", " ", " ");
3468    addsnowflakecmds(ESqlStatementType.sstalterview, TBaseType.rrw_alter, "view", " ", " ", " ", " ", " ");
3469    addsnowflakecmds(ESqlStatementType.sstAlterWarehouse, TBaseType.rrw_alter, "warehouse", " ", " ", " ", " ", " ");
3470
3471    addsnowflakecmds(ESqlStatementType.sstBegin, TBaseType.rrw_begin, " ", " ", " ", " ", " ", " ");
3472    addsnowflakecmds(ESqlStatementType.sstbegintran, TBaseType.rrw_snowflake_begin_transaction, " ", " ", " ", " ", " ", " ");
3473
3474    addsnowflakecmds(ESqlStatementType.sstbegintran, TBaseType.rrw_begin, "work", " ", " ", " ", " ", " ");
3475    addsnowflakecmds(ESqlStatementType.sstbegintran, TBaseType.rrw_begin, "transaction", " ", " ", " ", " ", " ");
3476
3477    addsnowflakecmds(ESqlStatementType.sstcall, TBaseType.rrw_call, " ", " ", " ", " ", " ", " ");
3478    addsnowflakecmds(ESqlStatementType.sstcomment, TBaseType.rrw_comment, " ", " ", " ", " ", " ", " ");
3479
3480    addsnowflakecmds(ESqlStatementType.sstcommit, TBaseType.rrw_commit, " ", " ", " ", " ", " ", " ");
3481    addsnowflakecmds(ESqlStatementType.sstCopyInto, TBaseType.rrw_snowflake_copy, "into", " ", " ", " ", " ", " ");
3482
3483    addsnowflakecmds(ESqlStatementType.sstcreatedatabase, TBaseType.rrw_create, "database", " ", " ", " ", " ", " ");
3484    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "dynamic", "table", " ", " ", " ", " ");
3485    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "external", "table", " ", " ", " ", " ");
3486    addsnowflakecmds(ESqlStatementType.sstCreateFileFormat, TBaseType.rrw_create, "file", "format", " ", " ", " ", " ");
3487    addsnowflakecmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create, "function", " ", " ", " ", " ", " ");
3488    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "global", "table", " ", " ", " ", " ");
3489    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "global", "temp", "table", " ", " ", " ");
3490    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "global", "temporary", "table", " ", " ", " ");
3491    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "hybrid", "table", " ", " ", " ", " ");
3492    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "local", "table", " ", " ", " ", " ");
3493    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "local", "temp", "table", " ", " ", " ");
3494    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "local", "temporary", "table", " ", " ", " ");
3495    addsnowflakecmds(ESqlStatementType.sstcreatematerializedview, TBaseType.rrw_create,"materialized","view"," "," "," "," ");
3496    addsnowflakecmds(ESqlStatementType.sstCreateNetworkPolicy, TBaseType.rrw_create, "network", "policy", " ", " ", " ", " ");
3497    addsnowflakecmds(ESqlStatementType.sstCreatePipe, TBaseType.rrw_create, "or", "replace", "pipe", " ", " ", " ");
3498    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "or", "replace", "external", "table", " ", " ");
3499    addsnowflakecmds(ESqlStatementType.sstcreatedatabase, TBaseType.rrw_create, "or", "replace", "database", " ", " ", " ");
3500    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "or", "replace", "dynamic", "table", " ", " ");
3501    addsnowflakecmds(ESqlStatementType.sstCreateFileFormat, TBaseType.rrw_create, "or", "replace", "file", "format", " ", " ");
3502    addsnowflakecmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create, "or", "replace", "function", " ", " ", " ");
3503    addsnowflakecmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create, "or", "replace", "force", "view", " ", " ");
3504    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "or", "replace", "global","temporary", "table",  " ");
3505    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "or", "replace", "hybrid", "table", " ", " ");
3506    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "or", "replace", "local","temporary", "table",  " ");
3507    addsnowflakecmds(ESqlStatementType.sstcreatematerializedview, TBaseType.rrw_create,"or", "replace","materialized","view"," "," ");
3508    addsnowflakecmds(ESqlStatementType.sstCreateNetworkPolicy, TBaseType.rrw_create, "or", "replace", "network", "policy", " ", " ");
3509    addsnowflakecmds(ESqlStatementType.sstcreateprocedure, TBaseType.rrw_create,"or", "replace", "procedure", " ", " ", " ");
3510    addsnowflakecmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create, "or", "replace", "recursive", "view", " ", " ");
3511
3512    addsnowflakecmds(ESqlStatementType.sstCreateResourceMonitor, TBaseType.rrw_create, "or", "replace","resource", "monitor",  " ", " ");
3513    addsnowflakecmds(ESqlStatementType.sstcreaterole,             TBaseType.rrw_create, "or", "replace","role",  " ", " ", " ");
3514    addsnowflakecmds(ESqlStatementType.sstcreateschema, TBaseType.rrw_create, "or", "replace","schema", " ", " ", " ");
3515    addsnowflakecmds(ESqlStatementType.sstcreatematerializedview, TBaseType.rrw_create,"or", "replace","secure","materialized","view"," ");
3516    addsnowflakecmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create, "or", "replace", "secure", "view", " ", " ");
3517    addsnowflakecmds(ESqlStatementType.sstcreatesequence, TBaseType.rrw_create, "or", "replace","sequence", " ", " ", " ");
3518    addsnowflakecmds(ESqlStatementType.sstCreateShare, TBaseType.rrw_create, "or", "replace","share", " ", " ", " ");
3519    addsnowflakecmds(ESqlStatementType.sstCreateStage, TBaseType.rrw_create, "or", "replace","stage", " ", " ", " ");
3520    addsnowflakecmds(ESqlStatementType.sstCreateStream, TBaseType.rrw_create, "or", "replace","stream", " ", " ", " ");
3521    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "or", "replace", "table", " ", " ", " ");
3522    addsnowflakecmds(ESqlStatementType.sstCreateTask, TBaseType.rrw_create, "or", "replace", "task", " ", " ", " ");
3523    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "or", "replace", "temp", "table", " ", " ");
3524    addsnowflakecmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create, "or", "replace", "temp", "view", " ", " ");
3525    addsnowflakecmds(ESqlStatementType.sstCreateStage, TBaseType.rrw_create, "or", "replace","temporary", "stage", " ", " ");
3526    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "or", "replace", "temporary", "table", " ", " ");
3527    addsnowflakecmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create, "or", "replace", "temporary", "view", " ", " ");
3528    addsnowflakecmds(ESqlStatementType.sstcreatedatabase, TBaseType.rrw_create, "or", "replace", "transient", "database", " ", " ");
3529    addsnowflakecmds(ESqlStatementType.sstcreateschema, TBaseType.rrw_create, "or", "replace", "transient", "schema", " ", " ");
3530    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "or", "replace", "transient", "table", " ", " ");
3531    addsnowflakecmds(ESqlStatementType.sstcreateuser, TBaseType.rrw_create, "or", "replace","user", " ", " ", " ");
3532    addsnowflakecmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create, "or", "replace", "view", " ", " ", " ");
3533    addsnowflakecmds(ESqlStatementType.sstCreateWarehouse, TBaseType.rrw_create, "or", "replace", "warehouse", " ", " ", " ");
3534    addsnowflakecmds(ESqlStatementType.sstCreatePipe, TBaseType.rrw_create, "pipe", " ", " ", " ", " ", " ");
3535    addsnowflakecmds(ESqlStatementType.sstcreateprocedure, TBaseType.rrw_create, "procedure", " ", " ", " ", " ", " ");
3536    addsnowflakecmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create, "recursive", "view", " ", " ", " ", " ");
3537    addsnowflakecmds(ESqlStatementType.sstCreateResourceMonitor, TBaseType.rrw_create, "resource", "monitor", " ", " ", " ", " ");
3538    addsnowflakecmds(ESqlStatementType.sstcreaterole, TBaseType.rrw_create, "role", " ", " ", " ", " ", " ");
3539    addsnowflakecmds(ESqlStatementType.sstcreateschema, TBaseType.rrw_create, "schema", " ", " ", " ", " ", " ");
3540    addsnowflakecmds(ESqlStatementType.sstcreatematerializedview, TBaseType.rrw_create,"secure","materialized","view"," "," "," ");
3541    addsnowflakecmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create, "secure", "view", " ", " ", " ", " ");
3542    addsnowflakecmds(ESqlStatementType.sstcreatesequence, TBaseType.rrw_create, "sequence", " ", " ", " ", " ", " ");
3543    addsnowflakecmds(ESqlStatementType.sstCreateShare, TBaseType.rrw_create, "share", " ", " ", " ", " ", " ");
3544    addsnowflakecmds(ESqlStatementType.sstCreateStage, TBaseType.rrw_create, "stage", " ", " ", " ", " ", " ");
3545    addsnowflakecmds(ESqlStatementType.sstCreateStream, TBaseType.rrw_create, "stream", " ", " ", " ", " ", " ");
3546    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "table", " ", " ", " ", " ", " ");
3547    addsnowflakecmds(ESqlStatementType.sstCreateTask, TBaseType.rrw_create, "task", " ", " ", " ", " ", " ");
3548    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "temp", "table", " ", " ", " ", " ");
3549    addsnowflakecmds(ESqlStatementType.sstCreateStage, TBaseType.rrw_create,"temporary", "stage", " ", " ", " ", " ");
3550    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "temporary", "table", " ", " ", " ", " ");
3551    addsnowflakecmds(ESqlStatementType.sstcreatedatabase, TBaseType.rrw_create, "transient", "database", " ", " ", " ", " ");
3552    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "transient", "dynamic", "table", " ", " ", " ");
3553    addsnowflakecmds(ESqlStatementType.sstcreateschema, TBaseType.rrw_create, "transient","schema", " ", " ", " ", " ");
3554    addsnowflakecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "transient", "table", " ", " "," "," ");
3555    addsnowflakecmds(ESqlStatementType.sstcreateuser, TBaseType.rrw_create, "user", " ", " ", " ", " ", " ");
3556    addsnowflakecmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create, "view", " ", " ", " ", " ", " ");
3557    addsnowflakecmds(ESqlStatementType.sstCreateWarehouse, TBaseType.rrw_create, "warehouse", " ", " ", " ", " ", " ");
3558
3559    addsnowflakecmds(ESqlStatementType.sstdelete, TBaseType.rrw_delete, " ", " ", " ", " ", " ", " ");
3560
3561    addsnowflakecmds(ESqlStatementType.sstDescFileFormat, TBaseType.rrw_snowflake_desc, "file", "format", " ", " ", " ", " ");
3562    addsnowflakecmds(ESqlStatementType.sstDescFunction, TBaseType.rrw_snowflake_desc, "function", " ", " ", " ", " ", " ");
3563    addsnowflakecmds(ESqlStatementType.sstDescNetworkPolicy, TBaseType.rrw_snowflake_desc, "network", "policy", " ", " ", " ", " ");
3564    addsnowflakecmds(ESqlStatementType.sstDescPipe, TBaseType.rrw_snowflake_desc, "pipe", " ", " ", " ", " ", " ");
3565    addsnowflakecmds(ESqlStatementType.sstDescResult, TBaseType.rrw_snowflake_desc, "result", " ", " ", " ", " ", " ");
3566    addsnowflakecmds(ESqlStatementType.sstDescShare, TBaseType.rrw_snowflake_desc, "share", " ", " ", " ", " ", " ");
3567    addsnowflakecmds(ESqlStatementType.sstDescStage, TBaseType.rrw_snowflake_desc, "stage", " ", " ", " ", " ", " ");
3568    addsnowflakecmds(ESqlStatementType.sstDescStorage, TBaseType.rrw_snowflake_desc, "storage", " ", " ", " ", " ", " ");
3569    addsnowflakecmds(ESqlStatementType.sstDescTable, TBaseType.rrw_snowflake_desc, "table", " ", " ", " ", " ", " ");
3570    addsnowflakecmds(ESqlStatementType.sstDescUser, TBaseType.rrw_snowflake_desc, "user", " ", " ", " ", " ", " ");
3571    addsnowflakecmds(ESqlStatementType.sstDescView, TBaseType.rrw_snowflake_desc, "view", " ", " ", " ", " ", " ");
3572
3573    addsnowflakecmds(ESqlStatementType.sstDescFileFormat, TBaseType.rrw_describe, "file", "format", " ", " ", " ", " ");
3574    addsnowflakecmds(ESqlStatementType.sstDescFunction, TBaseType.rrw_describe, "function", " ", " ", " ", " ", " ");
3575    addsnowflakecmds(ESqlStatementType.sstDescNetworkPolicy, TBaseType.rrw_describe, "network", "policy", " ", " ", " ", " ");
3576    addsnowflakecmds(ESqlStatementType.sstDescPipe, TBaseType.rrw_describe, "pipe", " ", " ", " ", " ", " ");
3577    addsnowflakecmds(ESqlStatementType.sstDescResult, TBaseType.rrw_describe, "result", " ", " ", " ", " ", " ");
3578    addsnowflakecmds(ESqlStatementType.sstDescShare, TBaseType.rrw_describe, "share", " ", " ", " ", " ", " ");
3579    addsnowflakecmds(ESqlStatementType.sstDescStage, TBaseType.rrw_describe, "stage", " ", " ", " ", " ", " ");
3580    addsnowflakecmds(ESqlStatementType.sstDescStorage, TBaseType.rrw_describe, "storage", " ", " ", " ", " ", " ");
3581    addsnowflakecmds(ESqlStatementType.sstDescTable, TBaseType.rrw_describe, "table", " ", " ", " ", " ", " ");
3582    addsnowflakecmds(ESqlStatementType.sstDescUser, TBaseType.rrw_describe, "user", " ", " ", " ", " ", " ");
3583    addsnowflakecmds(ESqlStatementType.sstDescView, TBaseType.rrw_describe, "view", " ", " ", " ", " ", " ");
3584
3585    addsnowflakecmds(ESqlStatementType.sstdropdatabase, TBaseType.rrw_drop, "database", " ", " ", " ", " ", " ");
3586    addsnowflakecmds(ESqlStatementType.sstDropFileFormat, TBaseType.rrw_drop, "file", "format", " ", " ", " ", " ");
3587    addsnowflakecmds(ESqlStatementType.sstdropfunction, TBaseType.rrw_drop, "function", " ", " ", " ", " ", " ");
3588    addsnowflakecmds(ESqlStatementType.sstDropMaterializedView, TBaseType.rrw_drop, "materialized", "view", " ", " ", " ", " ");
3589    addsnowflakecmds(ESqlStatementType.sstDropNetworkPolicy, TBaseType.rrw_drop, "network", "policy", " ", " ", " ", " ");
3590    addsnowflakecmds(ESqlStatementType.sstDropPipe, TBaseType.rrw_drop, "pipe", " ", " ", " ", " ", " ");
3591    addsnowflakecmds(ESqlStatementType.sstdropprocedure, TBaseType.rrw_drop, "procedure", " ", " ", " ", " ", " ");
3592    addsnowflakecmds(ESqlStatementType.sstDropResourceMonitor, TBaseType.rrw_drop, "resource", "monitor", " ", " ", " ", " ");
3593    addsnowflakecmds(ESqlStatementType.sstdroprole, TBaseType.rrw_drop, "role", " ", " ", " ", " ", " ");
3594    addsnowflakecmds(ESqlStatementType.sstdropschema, TBaseType.rrw_drop, "schema", " ", " ", " ", " ", " ");
3595    addsnowflakecmds(ESqlStatementType.sstDropShare, TBaseType.rrw_drop, "share", " ", " ", " ", " ", " ");
3596    addsnowflakecmds(ESqlStatementType.sstDropStage, TBaseType.rrw_drop, "stage", " ", " ", " ", " ", " ");
3597    addsnowflakecmds(ESqlStatementType.sstDropStream, TBaseType.rrw_drop, "stream", " ", " ", " ", " ", " ");
3598    addsnowflakecmds(ESqlStatementType.sstDropStreamlit, TBaseType.rrw_drop, "streamlit", " ", " ", " ", " ", " ");
3599    addsnowflakecmds(ESqlStatementType.sstdroptable, TBaseType.rrw_drop, "table", " ", " ", " ", " ", " ");
3600
3601    addsnowflakecmds(ESqlStatementType.sstdropuser, TBaseType.rrw_drop, "user", " ", " ", " ", " ", " ");
3602    addsnowflakecmds(ESqlStatementType.sstdropview, TBaseType.rrw_drop, "view", " ", " ", " ", " ", " ");
3603    addsnowflakecmds(ESqlStatementType.sstDropWarehouse, TBaseType.rrw_drop, "warehouse", " ", " ", " ", " ", " ");
3604
3605    addsnowflakecmds(ESqlStatementType.sstExecute, TBaseType.rrw_execute,  "immediate"," "," "," "," "," ");
3606
3607    addsnowflakecmds(ESqlStatementType.sstGet, TBaseType.rrw_get, " ", " ", " ", " ", " ", " ");
3608
3609    addsnowflakecmds(ESqlStatementType.sstGrant, TBaseType.rrw_grant, " ", " ", " ", " ", " ", " ");
3610
3611    addsnowflakecmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert, " ", " ", " ", " ", " ", " ");
3612
3613    addsnowflakecmds(ESqlStatementType.sstList, TBaseType.rrw_snowflake_list, " ", " ", " ", " ", " ", " ");
3614    addsnowflakecmds(ESqlStatementType.sstList, TBaseType.rrw_snowflake_ls, " ", " ", " ", " ", " ", " ");
3615
3616    addsnowflakecmds(ESqlStatementType.sstmerge, TBaseType.rrw_merge, " ", " ", " ", " ", " ", " ");
3617
3618    addsnowflakecmds(ESqlStatementType.sstSnowflakePseudoExprStmt, TBaseType.rrw_snowflake_pseudo_stmt_sign, " ", " ", " ", " ", " ", " ");
3619    addsnowflakecmds(ESqlStatementType.sstPut, TBaseType.rrw_snowflake_put, " ", " ", " ", " ", " ", " ");
3620
3621    addsnowflakecmds(ESqlStatementType.sstRemove, TBaseType.rrw_snowflake_remove, " ", " ", " ", " ", " ", " ");
3622
3623    addsnowflakecmds(ESqlStatementType.sstRevoke, TBaseType.rrw_revoke, " ", " ", " ", " ", " ", " ");
3624    addsnowflakecmds(ESqlStatementType.sstRemove, TBaseType.rrw_snowflake_rm, " ", " ", " ", " ", " ", " ");
3625    addsnowflakecmds(ESqlStatementType.sstrollback, TBaseType.rrw_rollback, " ", " ", " ", " ", " ", " ");
3626
3627
3628    addsnowflakecmds(ESqlStatementType.sstselect, TBaseType.rrw_select, " ", " ", " ", " ", " ", " ");
3629
3630    addsnowflakecmds(ESqlStatementType.sstset, TBaseType.rrw_set, " ", " ", " ", " ", " ", " ");
3631
3632    addsnowflakecmds(ESqlStatementType.sstShowColumns, TBaseType.rrw_show, "columns", " ", " ", " ", " ", " ");
3633    addsnowflakecmds(ESqlStatementType.sstShowDatabases, TBaseType.rrw_show, "databases", " ", " ", " ", " ", " ");
3634    addsnowflakecmds(ESqlStatementType.sstShowFileFormats, TBaseType.rrw_show, "file", "formats", " ", " ", " ", " ");
3635    addsnowflakecmds(ESqlStatementType.sstShowFunctions, TBaseType.rrw_show, "functions", " ", " ", " ", " ", " ");
3636    addsnowflakecmds(ESqlStatementType.sstShowGrants, TBaseType.rrw_show, "grants", " ", " ", " ", " ", " ");
3637    addsnowflakecmds(ESqlStatementType.sstShowLocks, TBaseType.rrw_show, "locks", " ", " ", " ", " ", " ");
3638    addsnowflakecmds(ESqlStatementType.sstShowNetworkPolicies, TBaseType.rrw_show, "network", "policies", " ", " ", " ", " ");
3639    addsnowflakecmds(ESqlStatementType.sstShowObjects, TBaseType.rrw_show, "objects", " ", " ", " ", " ", " ");
3640    addsnowflakecmds(ESqlStatementType.sstShowParameters, TBaseType.rrw_show, "parameters", " ", " ", " ", " ", " ");
3641    addsnowflakecmds(ESqlStatementType.sstShowPipes, TBaseType.rrw_show, "pipes", " ", " ", " ", " ", " ");
3642    addsnowflakecmds(ESqlStatementType.sstShowProcedures, TBaseType.rrw_show, "procedures", " ", " ", " ", " ", " ");
3643    addsnowflakecmds(ESqlStatementType.sstShowResourceMonitors, TBaseType.rrw_show, "resource", "monitors", " ", " ", " ", " ");
3644    addsnowflakecmds(ESqlStatementType.sstShowRoles, TBaseType.rrw_show, "roles", " ", " ", " ", " ", " ");
3645    addsnowflakecmds(ESqlStatementType.sstShowSchemas, TBaseType.rrw_show, "schemas", " ", " ", " ", " ", " ");
3646    addsnowflakecmds(ESqlStatementType.sstShowSequences, TBaseType.rrw_show, "sequences", " ", " ", " ", " ", " ");
3647    addsnowflakecmds(ESqlStatementType.sstShowShares, TBaseType.rrw_show, "shares", " ", " ", " ", " ", " ");
3648    addsnowflakecmds(ESqlStatementType.sstShowStages, TBaseType.rrw_show, "stages", " ", " ", " ", " ", " ");
3649    addsnowflakecmds(ESqlStatementType.sstShowStreams, TBaseType.rrw_show, "streams", " ", " ", " ", " ", " ");
3650    addsnowflakecmds(ESqlStatementType.sstShowTables, TBaseType.rrw_show, "tables", " ", " ", " ", " ", " ");
3651    addsnowflakecmds(ESqlStatementType.sstShowTasks, TBaseType.rrw_show, "tasks", " ", " ", " ", " ", " ");
3652    addsnowflakecmds(ESqlStatementType.sstShowDatabases, TBaseType.rrw_show, "terse", "databases", " ", " ", " ", " ");
3653    addsnowflakecmds(ESqlStatementType.sstShowStreams, TBaseType.rrw_show, "terse", "streams", " ", " ", " ", " ");
3654    addsnowflakecmds(ESqlStatementType.sstShowTasks, TBaseType.rrw_show, "terse", "tasks", " ", " ", " ", " ");
3655    addsnowflakecmds(ESqlStatementType.sstShowTransactions, TBaseType.rrw_show, "transactions", " ", " ", " ", " ", " ");
3656    addsnowflakecmds(ESqlStatementType.sstShowUserFunctions, TBaseType.rrw_show, "user", "functions", " ", " ", " ", " ");
3657    addsnowflakecmds(ESqlStatementType.sstShowUsers, TBaseType.rrw_show, "users", " ", " ", " ", " ", " ");
3658    addsnowflakecmds(ESqlStatementType.sstShowVariables, TBaseType.rrw_show, "variables", " ", " ", " ", " ", " ");
3659    addsnowflakecmds(ESqlStatementType.sstShowViews, TBaseType.rrw_show, "views", " ", " ", " ", " ", " ");
3660    addsnowflakecmds(ESqlStatementType.sstShowWarehouses, TBaseType.rrw_show, "warehouses", " ", " ", " ", " ", " ");
3661    addsnowflakecmds(ESqlStatementType.sstbegintran, TBaseType.rrw_start, "transaction", " ", " ", " ", " ", " ");
3662    addsnowflakecmds(ESqlStatementType.sstpostgresqlTruncate, TBaseType.rrw_truncate, " ", " ", " ", " ", " ", " ");
3663
3664    addsnowflakecmds(ESqlStatementType.sstUndropDatabase, TBaseType.rrw_snowflake_undrop, "database", " ", " ", " ", " ", " ");
3665    addsnowflakecmds(ESqlStatementType.sstUndropSchema, TBaseType.rrw_snowflake_undrop, "schema", " ", " ", " ", " ", " ");
3666    addsnowflakecmds(ESqlStatementType.sstUndropTable, TBaseType.rrw_snowflake_undrop, "table", " ", " ", " ", " ", " ");
3667
3668    addsnowflakecmds(ESqlStatementType.sstunset, TBaseType.rrw_snowflake_unset, " ", " ", " ", " ", " ", " ");
3669    addsnowflakecmds(ESqlStatementType.sstupdate, TBaseType.rrw_update, " ", " ", " ", " ", " ", " ");
3670    addsnowflakecmds(ESqlStatementType.sstUse, TBaseType.rrw_use, " ", " ", " ", " ", " ", " ");
3671    addsnowflakecmds(ESqlStatementType.sstUseSecondaryRoles, TBaseType.rrw_use, "secondary", "roles", " ", " ", " ", " ");
3672}
3673
3674void initredshiftcmds() {
3675// cmd must be sorted alphabetically
3676    addredshiftcmds(ESqlStatementType.sstredshiftAbort, TBaseType.rrw_abort, " ", " ", " ", " ", " ", " ");
3677    addredshiftcmds(ESqlStatementType.sstredshiftAbort, TBaseType.rrw_abort, "transaction", " ", " ", " ", " ", " ");
3678    addredshiftcmds(ESqlStatementType.sstredshiftAbort, TBaseType.rrw_abort, "work", " ", " ", " ", " ", " ");
3679    addredshiftcmds(ESqlStatementType.sstalterdatabase, TBaseType.rrw_alter, "database", " ", " ", " ", " ", " ");
3680    addredshiftcmds(ESqlStatementType.sstredshiftAlterGroup, TBaseType.rrw_alter, "group", " ", " ", " ", " ", " ");
3681    addredshiftcmds(ESqlStatementType.sstredshiftAlterSchema, TBaseType.rrw_alter, "schema", " ", " ", " ", " ", " ");
3682    addredshiftcmds(ESqlStatementType.sstaltertable, TBaseType.rrw_alter, "table", " ", " ", " ", " ", " ");
3683    addredshiftcmds(ESqlStatementType.sstredshiftAlterUser, TBaseType.rrw_alter, "user", " ", " ", " ", " ", " ");
3684    addredshiftcmds(ESqlStatementType.sstredshiftAnalyze, TBaseType.rrw_analyze, " ", " ", " ", " ", " ", " ");
3685    addredshiftcmds(ESqlStatementType.sstredshiftAnalyzeCompression, TBaseType.rrw_analyze, "Compression", " ", " ", " ", " ", " ");
3686    addredshiftcmds(ESqlStatementType.sstredshiftBegin, TBaseType.rrw_begin, " ", " ", " ", " ", " ", " ");
3687    addredshiftcmds(ESqlStatementType.sstredshiftCancel, TBaseType.rrw_redshift_cancel, " ", " ", " ", " ", " ", " ");
3688    addredshiftcmds(ESqlStatementType.sstcall, TBaseType.rrw_call, " ", " ", " ", " ", " ", " ");
3689
3690    addredshiftcmds(ESqlStatementType.sstredshiftClose, TBaseType.rrw_close, " ", " ", " ", " ", " ", " ");
3691    addredshiftcmds(ESqlStatementType.sstredshiftComment, TBaseType.rrw_comment, "on", " ", " ", " ", " ", " ");
3692    addredshiftcmds(ESqlStatementType.sstredshiftCommit, TBaseType.rrw_commit, " ", " ", " ", " ", " ", " ");
3693    addredshiftcmds(ESqlStatementType.sstredshiftCopy, TBaseType.rrw_redshift_copy, " ", " ", " ", " ", " ", " ");
3694    addredshiftcmds(ESqlStatementType.sstredshiftCreateSchema, TBaseType.rrw_create, "external", "schema", " ", " ", " ", " ");
3695    addredshiftcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "external", "table", " ", " ", " ", " ");
3696    addredshiftcmds(ESqlStatementType.sstcreatedatabase, TBaseType.rrw_create, "database", " ", " ", " ", " ", " ");
3697    addredshiftcmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create, "function", " ", " ", " ", " ", " ");
3698    addredshiftcmds(ESqlStatementType.sstredshiftCreateGroup, TBaseType.rrw_create, "group", " ", " ", " ", " ", " ");
3699    addredshiftcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "local", "table", " ", " ", " ", " ");
3700    addredshiftcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "local","temp", "table", " ", " ", " ");
3701    addredshiftcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "local","temporary", "table", " ", " ", " ");
3702    addredshiftcmds(ESqlStatementType.sstcreatematerializedview, TBaseType.rrw_create,"materialized","view"," "," "," "," ");
3703    addredshiftcmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create, "or", "replace","function", " ", " ", " ");
3704    addredshiftcmds(ESqlStatementType.sstcreatematerializedview, TBaseType.rrw_create,"or", "replace","materialized","view"," "," ");
3705    addredshiftcmds(ESqlStatementType.sstcreateprocedure, TBaseType.rrw_create, "or", "replace","procedure", " ", " ", " ");
3706    addredshiftcmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create, "or", "replace", "view", " ", " ", " ");
3707    addredshiftcmds(ESqlStatementType.sstcreateprocedure, TBaseType.rrw_create, "procedure", " ", " ", " ", " ", " ");
3708    addredshiftcmds(ESqlStatementType.sstredshiftCreateSchema, TBaseType.rrw_create, "schema", " ", " ", " ", " ", " ");
3709    addredshiftcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "table", " ", " ", " ", " ", " ");
3710    addredshiftcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "temp", "table", " ", " ", " ", " ");
3711    addredshiftcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "temporary", "table", " ", " ", " ", " ");
3712    addredshiftcmds(ESqlStatementType.sstredshiftCreateUser, TBaseType.rrw_create, "user", " ", " ", " ", " ", " ");
3713    addredshiftcmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create, "view", " ", " ", " ", " ", " ");
3714    addredshiftcmds(ESqlStatementType.sstredshiftDeallocate, TBaseType.rrw_deallocate, " ", " ", " ", " ", " ", " ");
3715    addredshiftcmds(ESqlStatementType.sstredshiftDeclare, TBaseType.rrw_declare, " ", " ", " ", " ", " ", " ");
3716    addredshiftcmds(ESqlStatementType.sstdelete, TBaseType.rrw_delete, " ", " ", " ", " ", " ", " ");
3717    addredshiftcmds(ESqlStatementType.sstredshiftDropDatabase, TBaseType.rrw_drop, "database", " ", " ", " ", " ", " ");
3718    addredshiftcmds(ESqlStatementType.sstredshiftDropGroup, TBaseType.rrw_drop, "group", " ", " ", " ", " ", " ");
3719    addredshiftcmds(ESqlStatementType.sstredshiftDropSchema, TBaseType.rrw_drop, "schema", " ", " ", " ", " ", " ");
3720    addredshiftcmds(ESqlStatementType.sstdroptable, TBaseType.rrw_drop, "table", " ", " ", " ", " ", " ");
3721    addredshiftcmds(ESqlStatementType.sstredshiftDropUser, TBaseType.rrw_drop, "user", " ", " ", " ", " ", " ");
3722    addredshiftcmds(ESqlStatementType.sstdropview, TBaseType.rrw_drop, "view", " ", " ", " ", " ", " ");
3723    addredshiftcmds(ESqlStatementType.sstredshiftEnd, TBaseType.rrw_end, " ", " ", " ", " ", " ", " ");
3724    addredshiftcmds(ESqlStatementType.sstExecutePreparedStmt, TBaseType.rrw_execute, " ", " ", " ", " ", " ", " ");
3725    addredshiftcmds(ESqlStatementType.sstExplain, TBaseType.rrw_explain, " ", " ", " ", " ", " ", " ");
3726    addredshiftcmds(ESqlStatementType.sstFetchFrom, TBaseType.rrw_fetch, " ", " ", " ", " ", " ", " ");
3727    addredshiftcmds(ESqlStatementType.sstGrant, TBaseType.rrw_grant, " ", " ", " ", " ", " ", " ");
3728    addredshiftcmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert, "into", " ", " ", " ", " ", " ");
3729    addredshiftcmds(ESqlStatementType.sstredshiftLock, TBaseType.rrw_lock, " ", " ", " ", " ", " ", " ");
3730    addredshiftcmds(ESqlStatementType.sstmerge, TBaseType.rrw_merge," "," "," "," "," "," ");
3731
3732    addredshiftcmds(ESqlStatementType.sstredshiftPrepare, TBaseType.rrw_prepare, " ", " ", " ", " ", " ", " ");
3733    addredshiftcmds(ESqlStatementType.sstredshiftReset, TBaseType.rrw_reset, " ", " ", " ", " ", " ", " ");
3734    addredshiftcmds(ESqlStatementType.sstRevoke, TBaseType.rrw_revoke, " ", " ", " ", " ", " ", " ");
3735    addredshiftcmds(ESqlStatementType.sstredshiftRollback, TBaseType.rrw_rollback, " ", " ", " ", " ", " ", " ");
3736    addredshiftcmds(ESqlStatementType.sstselect, TBaseType.rrw_select, " ", " ", " ", " ", " ", " ");
3737    addredshiftcmds(ESqlStatementType.sstredshiftSet, TBaseType.rrw_set, " ", " ", " ", " ", " ", " ");
3738    addredshiftcmds(ESqlStatementType.sstredshiftSetSessionAuthorization, TBaseType.rrw_set, "Authorization", " ", " ", " ", " ", " ");
3739    addredshiftcmds(ESqlStatementType.sstredshiftSetSessionCharacteristics, TBaseType.rrw_set, "Characteristics", " ", " ", " ", " ", " ");
3740    addredshiftcmds(ESqlStatementType.sstredshiftSetSessionAuthorization, TBaseType.rrw_set, "local", "Authorization", " ", " ", " ", " ");
3741    addredshiftcmds(ESqlStatementType.sstredshiftShow, TBaseType.rrw_show, " ", " ", " ", " ", " ", " ");
3742    addredshiftcmds(ESqlStatementType.sstStartTransaction, TBaseType.rrw_start, "Transaction", " ", " ", " ", " ", " ");
3743    addredshiftcmds(ESqlStatementType.sstTruncate, TBaseType.rrw_truncate, " ", " ", " ", " ", " ", " ");
3744    addredshiftcmds(ESqlStatementType.sstredshiftUnload, TBaseType.rrw_redshift_unload, " ", " ", " ", " ", " ", " ");
3745    addredshiftcmds(ESqlStatementType.sstupdate, TBaseType.rrw_update, " ", " ", " ", " ", " ", " ");
3746    addredshiftcmds(ESqlStatementType.sstredshiftVacuum, TBaseType.rrw_redshift_vacuum, " ", " ", " ", " ", " ", " ");
3747}
3748
3749void initgreenplumcmds(){
3750// cmd must be sorted alphabetically
3751    addgreenplumcmds(ESqlStatementType.sstpostgresqlabort, TBaseType.rrw_abort, " ", " ", " ", " ", " ", " ");
3752    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterAggregate, TBaseType.rrw_alter, "aggregate", " ", " ", " ", " ", " ");
3753    //addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterCollation, TBaseType.rrw_alter, "collation", " ", " ", " ", " ", " ");
3754    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterConversion, TBaseType.rrw_alter, "conversion", " ", " ", " ", " ", " ");
3755    addgreenplumcmds(ESqlStatementType.sstpostgresqlalterdatabase, TBaseType.rrw_alter, "database", " ", " ", " ", " ", " ");
3756    //addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterDefaultPrivileges, TBaseType.rrw_alter, "default", "privileges", " ", " ", " ", " ");
3757    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterDomain, TBaseType.rrw_alter, "domain", " ", " ", " ", " ", " ");
3758
3759    addgreenplumcmds(ESqlStatementType.sstgreenplumAlterExternalTable, TBaseType.rrw_alter, "external", "table", " ", " ", " ", " ");
3760    addgreenplumcmds(ESqlStatementType.sstgreenplumAlterFilespace, TBaseType.rrw_alter, "filespace", " ", " ", " ", " ", " ");
3761
3762//    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterEventTrigger, TBaseType.rrw_alter, "event", "trigger", " ", " ", " ", " ");
3763//    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterExtension, TBaseType.rrw_alter, "extension", " ", " ", " ", " ", " ");
3764//    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterForeignDataWrapper, TBaseType.rrw_alter, "foreign", "data", "wrapper", " ", " ", " ");
3765//    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterForeignTable, TBaseType.rrw_alter, "foreign", "Table", " ", " ", " ", " ");
3766
3767    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterfunction, TBaseType.rrw_alter, "function", " ", " ", " ", " ", " ");
3768    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterGroup, TBaseType.rrw_alter, "group", " ", " ", " ", " ", " ");
3769    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterIndex, TBaseType.rrw_alter, "index", " ", " ", " ", " ", " ");
3770    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterLanguage, TBaseType.rrw_alter, "language", " ", " ", " ", " ", " ");
3771//    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterLargeObject, TBaseType.rrw_alter, "large", "object", " ", " ", " ", " ");
3772    //addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterMaterializedView, TBaseType.rrw_alter, "materialized", "view", " ", " ", " ", " ");
3773    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterOperator, TBaseType.rrw_alter, "operator", " ", " ", " ", " ", " ");
3774    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterOperatorClass, TBaseType.rrw_alter, "operator", "class", " ", " ", " ", " ");
3775    //addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterOperatorFamily, TBaseType.rrw_alter, "operator", "family", " ", " ", " ", " ");
3776    //addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterLanguage, TBaseType.rrw_alter, "procedural", "language", " ", " ", " ", " ");
3777    addgreenplumcmds(ESqlStatementType.sstgreenplumAlterProtocol, TBaseType.rrw_alter, "protocol", " ", " ", " ", " ", " ");
3778    addgreenplumcmds(ESqlStatementType.sstgreenplumAlterResourceQueue, TBaseType.rrw_alter, "resource", "queue", " ", " ", " ", " ");
3779    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterRole, TBaseType.rrw_alter, "role", " ", " ", " ", " ", " ");
3780    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterSchema, TBaseType.rrw_alter, "schema", " ", " ", " ", " ", " ");
3781    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterSequence, TBaseType.rrw_alter, "sequence", " ", " ", " ", " ", " ");
3782    //addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterServer, TBaseType.rrw_alter, "server", " ", " ", " ", " ", " ");
3783    addgreenplumcmds(ESqlStatementType.sstaltertable, TBaseType.rrw_alter, "table", " ", " ", " ", " ", " ");
3784    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterTablespace, TBaseType.rrw_alter, "tablespace", " ", " ", " ", " ", " ");
3785
3786//    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterTextSearchConfiguration, TBaseType.rrw_alter, "text", "search", "configuration", " ", " ", " ");
3787//    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterTextSearchDictionary, TBaseType.rrw_alter, "text", "search", "dictionary", " ", " ", " ");
3788//    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterTextSearchParser, TBaseType.rrw_alter, "text", "search", "parser", " ", " ", " ");
3789//    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterTextSearchTemplate, TBaseType.rrw_alter, "text", "search", "template", " ", " ", " ");
3790    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterTrigger, TBaseType.rrw_alter, "trigger", " ", " ", " ", " ", " ");
3791
3792    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterType, TBaseType.rrw_alter, "type", " ", " ", " ", " ", " ");
3793    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterUser, TBaseType.rrw_alter, "user", " ", " ", " ", " ", " ");
3794//    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterUserMapping, TBaseType.rrw_alter, "user", "mapping", " ", " ", " ", " ");
3795//    addgreenplumcmds(ESqlStatementType.sstpostgresqlAlterView, TBaseType.rrw_alter, "view", " ", " ", " ", " ", " ");
3796    addgreenplumcmds(ESqlStatementType.sstpostgresqlAnalyze, TBaseType.rrw_greenplum_analyse, " ", " ", " ", " ", " ", " ");
3797    addgreenplumcmds(ESqlStatementType.sstpostgresqlAnalyze, TBaseType.rrw_analyze, " ", " ", " ", " ", " ", " ");
3798
3799    addgreenplumcmds(ESqlStatementType.sstpostgresqlBegin, TBaseType.rrw_begin, " ", " ", " ", " ", " ", " ");
3800    addgreenplumcmds(ESqlStatementType.sstcall, TBaseType.rrw_call, " ", " ", " ", " ", " ", " ");
3801
3802    addgreenplumcmds(ESqlStatementType.sstpostgresqlCheckpoint, TBaseType.rrw_checkpoint, " ", " ", " ", " ", " ", " ");
3803    addgreenplumcmds(ESqlStatementType.sstpostgresqlClose, TBaseType.rrw_close, " ", " ", " ", " ", " ", " ");
3804
3805    addgreenplumcmds(ESqlStatementType.sstpostgresqlCluster, TBaseType.rrw_greenplum_cluster, " ", " ", " ", " ", " ", " ");
3806
3807    addgreenplumcmds(ESqlStatementType.sstpostgresqlComment, TBaseType.rrw_comment, "on", " ", " ", " ", " ", " ");
3808
3809    addgreenplumcmds(ESqlStatementType.sstpostgresqlCommit, TBaseType.rrw_commit, " ", " ", " ", " ", " ", " ");
3810    //addgreenplumcmds(ESqlStatementType.sstpostgresqlCommitPrepared, TBaseType.rrw_commit, "prepared", " ", " ", " ", " ", " ");
3811    addgreenplumcmds(ESqlStatementType.sstpostgresqlCopy, TBaseType.rrw_greenplum_copy, " ", " ", " ", " ", " ", " ");
3812
3813    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateAggregate, TBaseType.rrw_create, "aggregate", " ", " ", " ", " ", " ");
3814    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateCast, TBaseType.rrw_create, "cast", " ", " ", " ", " ", " ");
3815
3816    //addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateCollation, TBaseType.rrw_create, "collation", " ", " ", " ", " ", " ");
3817
3818    addgreenplumcmds(ESqlStatementType.sstcreatetrigger, TBaseType.rrw_create, "constraint", "trigger", " ", " ", " ", " ");
3819
3820    addgreenplumcmds(ESqlStatementType.sstpostgresqlConversion, TBaseType.rrw_create, "conversion", " ", " ", " ", " ", " ");
3821    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateDatabase, TBaseType.rrw_create, "database", " ", " ", " ", " ", " ");
3822    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateDomain, TBaseType.rrw_create, "domain", " ", " ", " ", " ", " ");
3823    //addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateEventTrigger, TBaseType.rrw_create, "event", "trigger", " ", " ", " ", " ");
3824    addgreenplumcmds(ESqlStatementType.sstcreateExtension, TBaseType.rrw_create, "extension", " ", " ", " ", " ", " ");
3825
3826//    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateForeignDataWrapper, TBaseType.rrw_create, "foreign", "data", "wrapper", " ", " ", " ");
3827//    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateForeignTable, TBaseType.rrw_create, "foreign", "table", " ", " ", " ", " ");
3828    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateExternalTable, TBaseType.rrw_create, "external", "table", " ", " ", " ", " ");
3829    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateExternalTable, TBaseType.rrw_create, "external", "temp", "table", " ", " ", " ");
3830    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateExternalTable, TBaseType.rrw_create, "external", "temporary", "table", " ", " ", " ");
3831    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateExternalTable, TBaseType.rrw_create, "external", "web", "table", " ", " ", " ");
3832    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateExternalTable, TBaseType.rrw_create, "external", "web", "temp", "table", " ", " ");
3833    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateExternalTable, TBaseType.rrw_create, "external", "web", "temporary", "table", " ", " ");
3834    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateFilespace, TBaseType.rrw_create, "filespace", " ", " ", " ", " ", " ");
3835
3836    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateFunction, TBaseType.rrw_create, "function", " ", " ", " ", " ", " ");
3837
3838    addgreenplumcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "global", "temp", "table", " ", " ", " ");
3839    addgreenplumcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "global", "temporary", "table", " ", " ", " ");
3840    addgreenplumcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "global", "unlocked", "table", " ", " ", " ");
3841
3842    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateGroup, TBaseType.rrw_create, "group", " ", " ", " ", " ", " ");
3843
3844
3845    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateIndex, TBaseType.rrw_create, "index", " ", " ", " ", " ", " ");
3846    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateLanguage, TBaseType.rrw_create, "language", " ", " ", " ", " ", " ");
3847
3848    addgreenplumcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "local", "temp", "table", " ", " ", " ");
3849    addgreenplumcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "local", "temporary", "table", " ", " ", " ");
3850    addgreenplumcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "local", "unlocked", "table", " ", " ", " ");
3851
3852    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateMaterializedView, TBaseType.rrw_create, "materialized", "view", " ", " ", " ", " ");
3853
3854    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateOperator, TBaseType.rrw_create, "operator", " ", " ", " ", " ", " ");
3855//    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateOperatorClass, TBaseType.rrw_create, "operator", "class", " ", " ", " ", " ");
3856//    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateOperatorFimaly, TBaseType.rrw_create, "operator", "family", " ", " ", " ", " ");
3857
3858    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateExternalTable, TBaseType.rrw_create, "readable", "external", "table", " ", " ", " ");
3859    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateExternalTable, TBaseType.rrw_create, "readable", "external", "temp", "table", " ", " ");
3860    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateExternalTable, TBaseType.rrw_create, "readable", "external", "temporary", "table", " ", " ");
3861    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateExternalTable, TBaseType.rrw_create, "readable","external", "web", "table", " ", " ");
3862    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateExternalTable, TBaseType.rrw_create, "readable","external", "web", "temp", "table", " ");
3863    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateExternalTable, TBaseType.rrw_create, "readable","external", "web", "temporary", "table", " ");
3864    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateExternalTable, TBaseType.rrw_create, "writable", "external", "table", " ", " ", " ");
3865    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateExternalTable, TBaseType.rrw_create, "writable", "external", "temp", "table", " ", " ");
3866    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateExternalTable, TBaseType.rrw_create, "writable", "external", "temporary", "table", " ", " ");
3867    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateExternalTable, TBaseType.rrw_create, "writable","external", "web", "table", " ", " ");
3868    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateExternalTable, TBaseType.rrw_create, "writable","external", "web", "temp", "table", " ");
3869    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateExternalTable, TBaseType.rrw_create, "writable","external", "web", "temporary", "table", " ");
3870
3871    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateResourceQueue, TBaseType.rrw_create, "resource", "queue", " ", " ", " ", " ");
3872
3873    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateFunction, TBaseType.rrw_create, "or", "replace", "function", " ", " ", " ");
3874    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateLanguage, TBaseType.rrw_create, "or", "replace", "language", " ", " ", " ");
3875    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateRole, TBaseType.rrw_create, "or", "replace", "role ", " ", " ", " ");
3876    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateView, TBaseType.rrw_create, "or", "replace", "temp", "view", " ", " ");
3877    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateView, TBaseType.rrw_create, "or", "replace", "temporary", "view", " ", " ");
3878    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateLanguage, TBaseType.rrw_create, "or", "replace", "trusted", "language", " ", " ");
3879    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateView, TBaseType.rrw_create, "or", "replace", "view", " ", " ", " ");
3880
3881    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateRole, TBaseType.rrw_create, "role", " ", " ", " ", " ", " ");
3882    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateRule, TBaseType.rrw_create, "rule", " ", " ", " ", " ", " ");
3883
3884
3885    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateSchema, TBaseType.rrw_create, "schema", " ", " ", " ", " ", " ");
3886
3887    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateSequence, TBaseType.rrw_create, "sequence", " ", " ", " ", " ", " ");
3888
3889
3890    //addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateServer, TBaseType.rrw_create, "server", " ", " ", " ", " ", " ");
3891
3892    addgreenplumcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "table", " ", " ", " ", " ", " ");
3893
3894    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateTablespace, TBaseType.rrw_create, "tablespace", " ", " ", " ", " ", " ");
3895
3896    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateSequence, TBaseType.rrw_create, "temp", "sequence", " ", " ", " ", " ");
3897    addgreenplumcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "temp", "table", " ", " ", " ", " ");
3898    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateView, TBaseType.rrw_create, "temp", "view", " ", " ", " ", " ");
3899    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateSequence, TBaseType.rrw_create, "temporary", "sequence", " ", " ", " ", " ");
3900    addgreenplumcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "temporary", "table", " ", " ", " ", " ");
3901    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateView, TBaseType.rrw_create, "temporary", "view", " ", " ", " ", " ");
3902
3903//    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateTextSearchConfiguration, TBaseType.rrw_create, "text", "search", "configuration", " ", " ", " ");
3904//    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateTextSearchDictionary, TBaseType.rrw_create, "text", "search", "dictionary", " ", " ", " ");
3905//    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateTextSearchParser, TBaseType.rrw_create, "text", "search", "parser", " ", " ", " ");
3906//    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateTextSearchTemplate, TBaseType.rrw_create, "text", "search", "template", " ", " ", " ");
3907
3908    addgreenplumcmds(ESqlStatementType.sstcreatetrigger, TBaseType.rrw_create, "trigger", " ", " ", " ", " ", " ");
3909
3910    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateLanguage, TBaseType.rrw_create, "trusted", "language", " ", " ", " ", " ");
3911
3912    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateType, TBaseType.rrw_create, "type", " ", " ", " ", " ", " ");
3913
3914    addgreenplumcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "unlocked", "table", " ", " ", " ", " ");
3915
3916    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateUser, TBaseType.rrw_create, "user", " ", " ", " ", " ", " ");
3917
3918//    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateUserMapping, TBaseType.rrw_create, "user", "mapping", " ", " ", " ", " ");
3919
3920    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateView, TBaseType.rrw_create, "view", " ", " ", " ", " ", " ");
3921
3922    addgreenplumcmds(ESqlStatementType.sstpostgresqlCreateIndex, TBaseType.rrw_create, "unique", "index", " ", " ", " ", " ");
3923
3924    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateExternalTable, TBaseType.rrw_create, "writable", "external", "table", " ", " ", " ");
3925    addgreenplumcmds(ESqlStatementType.sstgreenplumCreateExternalTable, TBaseType.rrw_create, "writable", "external", "web", "table", " ", " ");
3926
3927    addgreenplumcmds(ESqlStatementType.sstpostgresqlDeallocate, TBaseType.rrw_deallocate, " ", " ", " ", " ", " ", " ");
3928
3929    addgreenplumcmds(ESqlStatementType.sstpostgresqlDeclare, TBaseType.rrw_declare, " ", " ", " ", " ", " ", " ");
3930
3931    addgreenplumcmds(ESqlStatementType.sstdelete, TBaseType.rrw_delete, " ", " ", " ", " ", " ", " ");
3932
3933//    addgreenplumcmds(ESqlStatementType.sstpostgresqlDiscard, TBaseType.rrw_discard, " ", " ", " ", " ", " ", " ");
3934    addgreenplumcmds(ESqlStatementType.sstpostgresqlDo, TBaseType.rrw_do, " ", " ", " ", " ", " ", " ");
3935
3936    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropAggregate, TBaseType.rrw_drop, "aggregate", " ", " ", " ", " ", " ");
3937
3938    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropCast, TBaseType.rrw_drop, "cast", " ", " ", " ", " ", " ");
3939
3940//    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropCollation, TBaseType.rrw_drop, "collation", " ", " ", " ", " ", " ");
3941
3942    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropConversion, TBaseType.rrw_drop, "conversion", " ", " ", " ", " ", " ");
3943
3944    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropDatabase, TBaseType.rrw_drop, "database", " ", " ", " ", " ", " ");
3945
3946    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropDomain, TBaseType.rrw_drop, "domain", " ", " ", " ", " ", " ");
3947
3948    addgreenplumcmds(ESqlStatementType.sstgreenplumDropExternalTable, TBaseType.rrw_drop, "external", "table", " ", " ", " ", " ");
3949
3950    addgreenplumcmds(ESqlStatementType.sstgreenplumDropExternalTable, TBaseType.rrw_drop, "external", "web", "table", " ", " ", " ");
3951
3952    addgreenplumcmds(ESqlStatementType.sstgreenplumDropFilespace, TBaseType.rrw_drop, "filespace", " ", " ", " ", " ", " ");
3953
3954//    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropExtension, TBaseType.rrw_drop, "extension", " ", " ", " ", " ", " ");
3955//    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropForeignDataWrapper, TBaseType.rrw_drop, "foreign", "data", "wrapper", " ", " ", " ");
3956//    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropForeignTable, TBaseType.rrw_drop, "foreign", "table", " ", " ", " ", " ");
3957
3958    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropFunction, TBaseType.rrw_drop, "function", " ", " ", " ", " ", " ");
3959
3960    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropGroup, TBaseType.rrw_drop, "group", " ", " ", " ", " ", " ");
3961
3962    addgreenplumcmds(ESqlStatementType.sstdropindex, TBaseType.rrw_drop, "index", " ", " ", " ", " ", " ");
3963
3964    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropLanguage, TBaseType.rrw_drop, "language", " ", " ", " ", " ", " ");
3965
3966    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropMaterializedView, TBaseType.rrw_drop, "materialized", "view", " ", " ", " ", " ");
3967
3968    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropOperator, TBaseType.rrw_drop, "operator", " ", " ", " ", " ", " ");
3969//    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropOperatorClass, TBaseType.rrw_drop, "operator", "class", " ", " ", " ", " ");
3970//    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropOperatorFamily, TBaseType.rrw_drop, "operator", "family ", " ", " ", " ", " ");
3971
3972    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropOwned, TBaseType.rrw_drop, "owned", " ", " ", " ", " ", " ");
3973
3974
3975    addgreenplumcmds(ESqlStatementType.sstgreenplumDropResourceQueue, TBaseType.rrw_drop, "resource", "queue", " ", " ", " ", " ");
3976    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropLanguage, TBaseType.rrw_drop, "procedural", "language", " ", " ", " ", " ");
3977
3978    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropRole, TBaseType.rrw_drop, "role", " ", " ", " ", " ", " ");
3979    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropRule, TBaseType.rrw_drop, "rule", " ", " ", " ", " ", " ");
3980    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropSchema, TBaseType.rrw_drop, "schema", " ", " ", " ", " ", " ");
3981    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropSequence, TBaseType.rrw_drop, "sequence", " ", " ", " ", " ", " ");
3982    //addgreenplumcmds(ESqlStatementType.sstpostgresqlDropServer, TBaseType.rrw_drop, "server", " ", " ", " ", " ", " ");
3983    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropTable, TBaseType.rrw_drop, "table", " ", " ", " ", " ", " ");
3984    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropTablespace, TBaseType.rrw_drop, "tablespace", " ", " ", " ", " ", " ");
3985
3986//    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropTextSearchConfiguration, TBaseType.rrw_drop, "text", "search", "configuration", " ", " ", " ");
3987//    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropTextSearchDictionary, TBaseType.rrw_drop, "text", "search", "dictionary", " ", " ", " ");
3988//    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropTextSearchParser, TBaseType.rrw_drop, "text", "search", "parser", " ", " ", " ");
3989//    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropTextSearchTemplate, TBaseType.rrw_drop, "text", "search", "template", " ", " ", " ");
3990
3991    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropTrigger, TBaseType.rrw_drop, "trigger", " ", " ", " ", " ", " ");
3992    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropType, TBaseType.rrw_drop, "type", " ", " ", " ", " ", " ");
3993    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropUser, TBaseType.rrw_drop, "user", " ", " ", " ", " ", " ");
3994    //addgreenplumcmds(ESqlStatementType.sstpostgresqlDropUserMapping, TBaseType.rrw_drop, "user", "mapping", " ", " ", " ", " ");
3995    addgreenplumcmds(ESqlStatementType.sstpostgresqlDropView, TBaseType.rrw_drop, "view", " ", " ", " ", " ", " ");
3996
3997    addgreenplumcmds(ESqlStatementType.sstpostgresqlEnd, TBaseType.rrw_end, " ", " ", " ", " ", " ", " ");
3998
3999    addgreenplumcmds(ESqlStatementType.sstpostgresqlExecute, TBaseType.rrw_execute, " ", " ", " ", " ", " ", " ");
4000
4001    addgreenplumcmds(ESqlStatementType.sstpostgresqlExplain, TBaseType.rrw_explain, " ", " ", " ", " ", " ", " ");
4002
4003    addgreenplumcmds(ESqlStatementType.sstFetchFrom, TBaseType.rrw_fetch, " ", " ", " ", " ", " ", " ");
4004
4005    addgreenplumcmds(ESqlStatementType.sstpostgresqlGrant, TBaseType.rrw_grant, " ", " ", " ", " ", " ", " ");
4006
4007    addgreenplumcmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert, " ", " ", " ", " ", " ", " ");
4008
4009//    addgreenplumcmds(ESqlStatementType.sstpostgresqlListen, TBaseType.rrw_listen, " ", " ", " ", " ", " ", " ");
4010
4011    addgreenplumcmds(ESqlStatementType.sstpostgresqlLoad, TBaseType.rrw_load, " ", " ", " ", " ", " ", " ");
4012
4013    addgreenplumcmds(ESqlStatementType.sstpostgresqlLock, TBaseType.rrw_lock, " ", " ", " ", " ", " ", " ");
4014
4015    addgreenplumcmds(ESqlStatementType.sstpostgresqlMove, TBaseType.rrw_move, " ", " ", " ", " ", " ", " ");
4016
4017    //addgreenplumcmds(ESqlStatementType.sstpostgresqlNotify, TBaseType.rrw_notify, " ", " ", " ", " ", " ", " ");
4018
4019    addgreenplumcmds(ESqlStatementType.sstpostgresqlPrepare, TBaseType.rrw_prepare, " ", " ", " ", " ", " ", " ");
4020
4021//    addgreenplumcmds(ESqlStatementType.sstpostgresqlPrepareTransaction, TBaseType.rrw_prepare, "transaction", " ", " ", " ", " ", " ");
4022
4023    addgreenplumcmds(ESqlStatementType.sstpostgresqlReassignOwned, TBaseType.rrw_greenplum_reassign, "owned", " ", " ", " ", " ", " ");
4024
4025    addgreenplumcmds(ESqlStatementType.sstpostgresqlRefreshMaterializedView, TBaseType.rrw_refresh, "materialized", "view", " ", " ", " ", " ");
4026
4027    addgreenplumcmds(ESqlStatementType.sstpostgresqlReindex, TBaseType.rrw_greenplum_reindex, " ", " ", " ", " ", " ", " ");
4028
4029    addgreenplumcmds(ESqlStatementType.sstpostgresqlReleaseSavepoint, TBaseType.rrw_release, " ", " ", " ", " ", " ", " ");
4030    addgreenplumcmds(ESqlStatementType.sstpostgresqlReleaseSavepoint, TBaseType.rrw_release, "savepoint", " ", " ", " ", " ", " ");
4031
4032    addgreenplumcmds(ESqlStatementType.sstpostgresqlReset, TBaseType.rrw_reset, " ", " ", " ", " ", " ", " ");
4033
4034    addgreenplumcmds(ESqlStatementType.sstpostgresqlRevoke, TBaseType.rrw_revoke, " ", " ", " ", " ", " ", " ");
4035
4036    addgreenplumcmds(ESqlStatementType.sstpostgresqlRollback, TBaseType.rrw_rollback, " ", " ", " ", " ", " ", " ");
4037//    addgreenplumcmds(ESqlStatementType.sstpostgresqlRollbackPrepared, TBaseType.rrw_rollback, "prepared", " ", " ", " ", " ", " ");
4038
4039    addgreenplumcmds(ESqlStatementType.sstpostgresqlSavepoint, TBaseType.rrw_savepoint, " ", " ", " ", " ", " ", " ");
4040
4041//    addgreenplumcmds(ESqlStatementType.sstpostgresqlSecurityLabel, TBaseType.rrw_security, "label", " ", " ", " ", " ", " ");
4042
4043    addgreenplumcmds(ESqlStatementType.sstselect, TBaseType.rrw_select, " ", " ", " ", " ", " ", " ");
4044
4045    addgreenplumcmds(ESqlStatementType.sstpostgresqlSet, TBaseType.rrw_set, " ", " ", " ", " ", " ", " ");
4046
4047//    addgreenplumcmds(ESqlStatementType.sstpostgresqlSetConstraints, TBaseType.rrw_set, "constraints", " ", " ", " ", " ", " ");
4048    addgreenplumcmds(ESqlStatementType.sstpostgresqlSetRole, TBaseType.rrw_set, "local", "role", " ", " ", " ", " ");
4049    addgreenplumcmds(ESqlStatementType.sstpostgresqlSetSessionAuthorization, TBaseType.rrw_set, "local", "session", "authorization", " ", " ", " ");
4050    addgreenplumcmds(ESqlStatementType.sstpostgresqlSetRole, TBaseType.rrw_set, "role", " ", " ", " ", " ", " ");
4051
4052    addgreenplumcmds(ESqlStatementType.sstpostgresqlSetSessionAuthorization, TBaseType.rrw_set, "session", "authorization", " ", " ", " ", " ");
4053    addgreenplumcmds(ESqlStatementType.sstpostgresqlSetTransaction, TBaseType.rrw_set, "session", "characteristics", "as", "transaction", " ", " ");
4054    addgreenplumcmds(ESqlStatementType.sstpostgresqlSetRole, TBaseType.rrw_set, "session", "role", " ", " ", " ", " ");
4055    addgreenplumcmds(ESqlStatementType.sstpostgresqlSetSessionAuthorization, TBaseType.rrw_set, "session", "session", "authorization", " ", " ", " ");
4056
4057    addgreenplumcmds(ESqlStatementType.sstpostgresqlSetTransaction, TBaseType.rrw_set, "transaction", " ", " ", " ", " ", " ");
4058
4059    addgreenplumcmds(ESqlStatementType.sstgreenplumShow, TBaseType.rrw_show, " ", " ", " ", " ", " ", " ");
4060
4061    addgreenplumcmds(ESqlStatementType.sstgreenplumStartTransaction, TBaseType.rrw_start, "transaction", " ", " ", " ", " ", " ");
4062
4063    addgreenplumcmds(ESqlStatementType.sstpostgresqlTruncate, TBaseType.rrw_truncate, " ", " ", " ", " ", " ", " ");
4064
4065    //addgreenplumcmds(ESqlStatementType.sstpostgresqlUnlisten, TBaseType.rrw_unlisten, " ", " ", " ", " ", " ", " ");
4066
4067    addgreenplumcmds(ESqlStatementType.sstupdate, TBaseType.rrw_update, " ", " ", " ", " ", " ", " ");
4068
4069    addgreenplumcmds(ESqlStatementType.sstgreenplumVacuum, TBaseType.rrw_greenplum_vacuum, " ", " ", " ", " ", " ", " ");
4070    addgreenplumcmds(ESqlStatementType.sstValues, TBaseType.rrw_values, " ", " ", " ", " ", " ", " ");
4071
4072}
4073
4074
4075void initoraclecmds(){
4076// cmd must be sort alphabetically
4077    addoraclecmds(ESqlStatementType.sstoraclealtercluster, TBaseType.rrw_alter,"cluster"," "," "," "," "," ");
4078    addoraclecmds(ESqlStatementType.sstoraclealterdatabase, TBaseType.rrw_alter,"database"," "," "," "," "," ");
4079    addoraclecmds(ESqlStatementType.sstoraclealterdimension, TBaseType.rrw_alter,"dimension"," "," "," "," "," ");
4080    addoraclecmds(ESqlStatementType.sstoraclealterdiskgroup, TBaseType.rrw_alter,"diskgroup"," "," "," "," "," ");
4081    addoraclecmds(ESqlStatementType.sstoraclealterfunction, TBaseType.rrw_alter,"function"," "," "," "," "," ");
4082    addoraclecmds(ESqlStatementType.sstoraclealterindex, TBaseType.rrw_alter,"index"," "," "," "," "," ");
4083    addoraclecmds(ESqlStatementType.sstoraclealterindextype, TBaseType.rrw_alter,"indextype"," "," "," "," "," ");
4084    addoraclecmds(ESqlStatementType.sstoraclealterjava, TBaseType.rrw_alter,"java"," "," "," "," "," ");
4085    addoraclecmds(ESqlStatementType.sstAlterMaterializedView, TBaseType.rrw_alter,"materialized","view"," "," "," "," ");
4086    addoraclecmds(ESqlStatementType.sstoraclealtermaterializedviewlog, TBaseType.rrw_alter,"materialized","view","log"," "," "," ");
4087    addoraclecmds(ESqlStatementType.sstoraclealteroperator, TBaseType.rrw_alter,"operator"," "," "," "," "," ");
4088    addoraclecmds(ESqlStatementType.sstoraclealteroutline, TBaseType.rrw_alter,"outline"," "," "," "," "," ");
4089    addoraclecmds(ESqlStatementType.sstoraclealterpackage, TBaseType.rrw_alter,"package"," "," "," "," "," ");
4090    addoraclecmds(ESqlStatementType.sstoraclealterprocedure, TBaseType.rrw_alter,"procedure"," "," "," "," "," ");
4091    addoraclecmds(ESqlStatementType.sstoraclealterprofile, TBaseType.rrw_alter,"profile"," "," "," "," "," ");
4092    addoraclecmds(ESqlStatementType.sstoraclealterresourcecost, TBaseType.rrw_alter,"resource","cost"," "," "," "," ");
4093    addoraclecmds(ESqlStatementType.sstoraclealterrole, TBaseType.rrw_alter,"role"," "," "," "," "," ");
4094    addoraclecmds(ESqlStatementType.sstoraclealterrollbacksegment, TBaseType.rrw_alter,"rollback","segment"," "," "," "," ");
4095    addoraclecmds(ESqlStatementType.sstoraclealtersequence, TBaseType.rrw_alter,"sequence"," "," "," "," "," ");
4096    addoraclecmds(ESqlStatementType.sstoraclealtersession, TBaseType.rrw_alter,"session"," "," "," "," "," ");
4097    addoraclecmds(ESqlStatementType.sstoraclealtersystem, TBaseType.rrw_alter,"system"," "," "," "," "," ");
4098    addoraclecmds(ESqlStatementType.sstaltertable, TBaseType.rrw_alter,"table"," "," "," "," "," ");
4099    addoraclecmds(ESqlStatementType.sstoraclealtertablespace, TBaseType.rrw_alter,"tablespace"," "," "," "," "," ");
4100    addoraclecmds(ESqlStatementType.sstaltertrigger, TBaseType.rrw_alter,"trigger"," "," "," "," "," ");
4101    addoraclecmds(ESqlStatementType.sstoraclealtertype, TBaseType.rrw_alter,"type"," "," "," "," "," ");
4102    addoraclecmds(ESqlStatementType.sstoraclealteruser, TBaseType.rrw_alter,"user"," "," "," "," "," ");
4103    addoraclecmds(ESqlStatementType.sstoraclealterview, TBaseType.rrw_alter,"view"," "," "," "," "," ");
4104    addoraclecmds(ESqlStatementType.sstoracleanalyze, TBaseType.rrw_analyze," "," "," "," "," "," ");
4105    addoraclecmds(ESqlStatementType.sstoracleassociatestatistics, TBaseType.rrw_associate,"statistics"," "," "," "," "," ");
4106    addoraclecmds(ESqlStatementType.sstoracleaudit, TBaseType.rrw_audit," "," "," "," "," "," ");
4107    addoraclecmds(ESqlStatementType.sstoraclecall, TBaseType.rrw_call," "," "," "," "," "," ");
4108    addoraclecmds(ESqlStatementType.sstCommentOn, TBaseType.rrw_comment," "," "," "," "," "," ");
4109    addoraclecmds(ESqlStatementType.sstoraclecommit, TBaseType.rrw_commit," "," "," "," "," "," ");
4110    addoraclecmds(ESqlStatementType.sstoraclecreatetablespace, TBaseType.rrw_create,"bigfile","tablespace"," "," "," "," ");
4111    addoraclecmds(ESqlStatementType.sstoraclecreateindex, TBaseType.rrw_create,"bitmap","index"," "," "," "," ");
4112    addoraclecmds(ESqlStatementType.sstoraclecreatecluster, TBaseType.rrw_create,"cluster"," "," "," "," "," ");
4113    addoraclecmds(ESqlStatementType.sstoraclecreatecontext, TBaseType.rrw_create,"context"," "," "," "," "," ");
4114    addoraclecmds(ESqlStatementType.sstoraclecreatecontrolfile, TBaseType.rrw_create,"controlfile"," "," "," "," "," ");
4115    addoraclecmds(ESqlStatementType.sstplsql_createfunction, TBaseType.rrw_create,"editionable","function"," "," "," "," ");
4116    addoraclecmds(ESqlStatementType.sstplsql_createpackage, TBaseType.rrw_create,"editionable","package"," "," "," "," ");
4117    addoraclecmds(ESqlStatementType.sstoraclecreatepackagebody, TBaseType.rrw_create,"editionable","package","body"," "," "," ");
4118    addoraclecmds(ESqlStatementType.sstplsql_createprocedure, TBaseType.rrw_create,"editionable","procedure"," "," "," "," ");
4119    addoraclecmds(ESqlStatementType.sstoraclecreateview, TBaseType.rrw_create,"editioning","view"," "," "," "," ");
4120    addoraclecmds(ESqlStatementType.sstoraclecreatedatabase, TBaseType.rrw_create,"database"," "," "," "," "," ");
4121    addoraclecmds(ESqlStatementType.sstoraclecreatedatabaselink, TBaseType.rrw_create,"database","link"," "," "," "," ");
4122    addoraclecmds(ESqlStatementType.sstoraclecreatedimension, TBaseType.rrw_create,"dimension"," "," "," "," "," ");
4123    addoraclecmds(ESqlStatementType.sstoraclecreatedirectory, TBaseType.rrw_create,"directory"," "," "," "," "," ");
4124    addoraclecmds(ESqlStatementType.sstoraclecreatediskgroup, TBaseType.rrw_create,"diskgroup"," "," "," "," "," ");
4125    addoraclecmds(ESqlStatementType.sstoraclecreateview, TBaseType.rrw_create,"force","view"," "," "," "," ");
4126    addoraclecmds(ESqlStatementType.sstplsql_createfunction, TBaseType.rrw_create,"function"," "," "," "," "," ");
4127    addoraclecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"global","temp","table"," "," "," ");
4128    addoraclecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"global","temporary","table"," "," "," ");
4129    addoraclecmds(ESqlStatementType.sstoraclecreateindex, TBaseType.rrw_create,"index"," "," "," "," "," ");
4130    addoraclecmds(ESqlStatementType.sstoraclecreateindextype, TBaseType.rrw_create,"indextype"," "," "," "," "," ");
4131    addoraclecmds(ESqlStatementType.sstoraclecreatejava, TBaseType.rrw_create,"java"," "," "," "," "," ");
4132    addoraclecmds(ESqlStatementType.sstoraclecreatelibrary, TBaseType.rrw_create,"library"," "," "," "," "," ");
4133    addoraclecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"local","temp","table"," "," "," ");
4134    addoraclecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"local","temporary","table"," "," "," ");
4135    addoraclecmds(ESqlStatementType.sstcreatematerializedview, TBaseType.rrw_create,"materialized","view"," "," "," "," ");
4136    addoraclecmds(ESqlStatementType.sstoraclecreatematerializedviewlog, TBaseType.rrw_create, "materialized","view","log"," "," "," ");
4137    addoraclecmds(ESqlStatementType.sstoraclecreateview, TBaseType.rrw_create,"noforce","view"," "," "," "," ");
4138    addoraclecmds(ESqlStatementType.sstplsql_createfunction, TBaseType.rrw_create,"noneditionable","function"," "," "," "," ");
4139    addoraclecmds(ESqlStatementType.sstplsql_createpackage, TBaseType.rrw_create,"noneditionable","package"," "," "," "," ");
4140    addoraclecmds(ESqlStatementType.sstoraclecreatepackagebody, TBaseType.rrw_create,"noneditionable","package","body"," "," "," ");
4141    addoraclecmds(ESqlStatementType.sstplsql_createprocedure, TBaseType.rrw_create,"noneditionable","procedure"," "," "," "," ");
4142    addoraclecmds(ESqlStatementType.sstoraclecreateoperator, TBaseType.rrw_create,"operator"," "," "," "," "," ");
4143    addoraclecmds(ESqlStatementType.sstoraclecreatecontext, TBaseType.rrw_create,"or","replace","context"," "," "," ");
4144    addoraclecmds(ESqlStatementType.sstoraclecreateview, TBaseType.rrw_create,"or","replace","editionable","editioning","view"," ");
4145    addoraclecmds(ESqlStatementType.sstplsql_createfunction, TBaseType.rrw_create,"or","replace","editionable","function"," "," ");
4146    addoraclecmds(ESqlStatementType.sstplsql_createpackage, TBaseType.rrw_create,"or","replace","editionable","package"," "," ");
4147    addoraclecmds(ESqlStatementType.sstoraclecreatepackagebody, TBaseType.rrw_create,"or","replace","editionable","package","body"," ");
4148    addoraclecmds(ESqlStatementType.sstplsql_createprocedure, TBaseType.rrw_create,"or","replace","editionable","procedure"," "," ");
4149    addoraclecmds(ESqlStatementType.sstplsql_createtrigger, TBaseType.rrw_create,"or","replace","editionable","trigger"," "," ");
4150    addoraclecmds(ESqlStatementType.sstoraclecreateview, TBaseType.rrw_create,"or","replace","editionable","view"," "," ");
4151    addoraclecmds(ESqlStatementType.sstoraclecreateview, TBaseType.rrw_create,"or","replace","editioning","view"," "," ");
4152    addoraclecmds(ESqlStatementType.sstoraclecreatedirectory, TBaseType.rrw_create,"or","replace","directory"," "," "," ");
4153    addoraclecmds(ESqlStatementType.sstoraclecreateview, TBaseType.rrw_create,"or","replace","force","view"," "," ");
4154    addoraclecmds(ESqlStatementType.sstoraclecreateview, TBaseType.rrw_create,"or","replace","force","editionable","view"," ");
4155    addoraclecmds(ESqlStatementType.sstoraclecreateview, TBaseType.rrw_create,"or","replace","force","editionable","editioning","view");
4156    addoraclecmds(ESqlStatementType.sstoraclecreateview, TBaseType.rrw_create,"or","replace","force","editioning","view"," ");
4157    addoraclecmds(ESqlStatementType.sstoraclecreateview, TBaseType.rrw_create,"or","replace","force","noneditionable","view"," ");
4158    addoraclecmds(ESqlStatementType.sstplsql_createfunction, TBaseType.rrw_create,"or","replace","function"," "," "," ");
4159    addoraclecmds(ESqlStatementType.sstoraclecreatelibrary, TBaseType.rrw_create,"or","replace","library"," "," "," ");
4160    addoraclecmds(ESqlStatementType.sstoraclecreateview, TBaseType.rrw_create,"or","replace","noforce","view"," "," ");
4161    addoraclecmds(ESqlStatementType.sstplsql_createfunction, TBaseType.rrw_create,"or","replace","noneditionable","function"," "," ");
4162    addoraclecmds(ESqlStatementType.sstplsql_createpackage, TBaseType.rrw_create,"or","replace","noneditionable","package"," "," ");
4163    addoraclecmds(ESqlStatementType.sstoraclecreatepackagebody, TBaseType.rrw_create,"or","replace","noneditionable","package","body"," ");
4164    addoraclecmds(ESqlStatementType.sstplsql_createprocedure, TBaseType.rrw_create,"or","replace","noneditionable","procedure"," "," ");
4165    addoraclecmds(ESqlStatementType.sstoraclecreatesynonym, TBaseType.rrw_create,"or","replace","noneditionable","public","synonym"," ");
4166    addoraclecmds(ESqlStatementType.sstplsql_createtrigger, TBaseType.rrw_create,"or","replace","noneditionable","trigger"," "," ");
4167    addoraclecmds(ESqlStatementType.sstoraclecreateview, TBaseType.rrw_create,"or","replace","noneditionable","view"," "," ");
4168    addoraclecmds(ESqlStatementType.sstplsql_createpackage, TBaseType.rrw_create,"or","replace","package"," "," "," ");
4169    addoraclecmds(ESqlStatementType.sstoraclecreatepackagebody, TBaseType.rrw_create,"or","replace","package","body"," "," ");
4170    addoraclecmds(ESqlStatementType.sstplsql_createprocedure, TBaseType.rrw_create,"or","replace","procedure"," "," "," ");
4171    addoraclecmds(ESqlStatementType.sstoraclecreatesynonym, TBaseType.rrw_create,"or","replace","public","synonym"," "," ");
4172    addoraclecmds(ESqlStatementType.sstoraclecreatesynonym, TBaseType.rrw_create,"or","replace","synonym"," "," "," ");
4173    addoraclecmds(ESqlStatementType.sstplsql_createtrigger, TBaseType.rrw_create,"or","replace","trigger"," "," "," ");
4174    addoraclecmds(ESqlStatementType.sstplsql_createtype_placeholder, TBaseType.rrw_create,"or","replace","type"," "," "," ");
4175    addoraclecmds(ESqlStatementType.sstplsql_createtypebody, TBaseType.rrw_create,"or","replace","type","body"," "," ");
4176    addoraclecmds(ESqlStatementType.sstoraclecreateview, TBaseType.rrw_create,"or","replace","view"," "," "," ");
4177    addoraclecmds(ESqlStatementType.sstoraclecreateoutline, TBaseType.rrw_create,"outline"," "," "," "," "," ");
4178    addoraclecmds(ESqlStatementType.sstplsql_createpackage, TBaseType.rrw_create,"package"," "," "," "," "," ");
4179    addoraclecmds(ESqlStatementType.sstoraclecreatepackagebody, TBaseType.rrw_create,"package","body"," "," "," "," ");
4180    addoraclecmds(ESqlStatementType.sstoraclecreatepfile, TBaseType.rrw_create,"pfile"," "," "," "," "," ");
4181    addoraclecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"private","temporary","table"," "," "," ");
4182    addoraclecmds(ESqlStatementType.sstplsql_createprocedure, TBaseType.rrw_create,"procedure"," "," "," "," "," ");
4183    addoraclecmds(ESqlStatementType.sstoraclecreateprofile, TBaseType.rrw_create,"profile"," "," "," "," "," ");
4184    addoraclecmds(ESqlStatementType.sstoraclecreatedatabaselink, TBaseType.rrw_create,"public","database","link"," "," "," ");
4185    addoraclecmds(ESqlStatementType.sstoraclecreatesynonym, TBaseType.rrw_create,"public","synonym"," "," "," "," ");
4186    addoraclecmds(ESqlStatementType.sstoraclecreaterestorepoint, TBaseType.rrw_create,"resotre","point"," "," "," "," ");
4187    addoraclecmds(ESqlStatementType.sstoraclecreaterole, TBaseType.rrw_create,"role"," "," "," "," "," ");
4188    addoraclecmds(ESqlStatementType.sstoraclecreaterollbacksegment, TBaseType.rrw_create,"rollback","segment"," "," "," "," ");
4189    addoraclecmds(ESqlStatementType.sstoraclecreatedatabaselink, TBaseType.rrw_create,"shared","database","link"," "," "," ");
4190    addoraclecmds(ESqlStatementType.sstoraclecreatedatabaselink, TBaseType.rrw_create,"shared","public","database","link"," "," ");
4191    addoraclecmds(ESqlStatementType.sstoraclecreateschema, TBaseType.rrw_create,"schema"," "," "," "," "," ");
4192    addoraclecmds(ESqlStatementType.sstoraclecreatesequence, TBaseType.rrw_create,"sequence"," "," "," "," "," ");
4193    addoraclecmds(ESqlStatementType.sstoraclecreatetablespace, TBaseType.rrw_create,"smallfile","tablespace"," "," "," "," ");
4194    addoraclecmds(ESqlStatementType.sstoraclecreatespfile, TBaseType.rrw_create,"spfile"," "," "," "," "," ");
4195    addoraclecmds(ESqlStatementType.sstoraclecreatesynonym, TBaseType.rrw_create,"synonym"," "," "," "," "," ");
4196    addoraclecmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"table"," "," "," "," "," ");
4197    addoraclecmds(ESqlStatementType.sstoraclecreatetablespace, TBaseType.rrw_create,"tablespace"," "," "," "," "," ");
4198    addoraclecmds(ESqlStatementType.sstoraclecreatetablespace, TBaseType.rrw_create,"temporary","tablespace"," "," "," "," ");
4199    addoraclecmds(ESqlStatementType.sstplsql_createtrigger, TBaseType.rrw_create,"trigger"," "," "," "," "," ");
4200    addoraclecmds(ESqlStatementType.sstplsql_createtype_placeholder, TBaseType.rrw_create,"type"," "," "," "," "," ");
4201    addoraclecmds(ESqlStatementType.sstplsql_createtypebody, TBaseType.rrw_create,"type","body"," "," "," "," ");
4202    addoraclecmds(ESqlStatementType.sstoraclecreatetablespace, TBaseType.rrw_create,"undo","tablespace"," "," "," "," ");
4203    addoraclecmds(ESqlStatementType.sstoraclecreateindex, TBaseType.rrw_create,"unique","index"," "," "," "," ");
4204    addoraclecmds(ESqlStatementType.sstoraclecreateuser, TBaseType.rrw_create,"user"," "," "," "," "," ");
4205    addoraclecmds(ESqlStatementType.sstoraclecreateview, TBaseType.rrw_create,"view"," "," "," "," "," ");
4206    addoraclecmds(ESqlStatementType.sstplsql_createpackage, TBaseType.rrw_custom,"package"," "," "," "," "," ");
4207    addoraclecmds(ESqlStatementType.sstoraclecreatepackagebody, TBaseType.rrw_custom,"package","body"," "," "," "," ");
4208    addoraclecmds(ESqlStatementType.sstdelete, TBaseType.rrw_delete," "," "," "," "," "," ");
4209    addoraclecmds(ESqlStatementType.sstoracledisassociatestatistics, TBaseType.rrw_disassociate, "statistics"," "," "," "," "," ");
4210    addoraclecmds(ESqlStatementType.sstoracledropcluster, TBaseType.rrw_drop,"cluster"," "," "," "," "," ");
4211    addoraclecmds(ESqlStatementType.sstoracledropcontext, TBaseType.rrw_drop,"context"," "," "," "," "," ");
4212    addoraclecmds(ESqlStatementType.sstoracledropdatabase, TBaseType.rrw_drop,"database"," "," "," "," "," ");
4213    addoraclecmds(ESqlStatementType.sstoracledropdatabaselink, TBaseType.rrw_drop,"database","link"," "," "," "," ");
4214    addoraclecmds(ESqlStatementType.sstoracledropdimension, TBaseType.rrw_drop,"dimension"," "," "," "," "," ");
4215    addoraclecmds(ESqlStatementType.sstoracledropdirectory, TBaseType.rrw_drop,"directory"," "," "," "," "," ");
4216    addoraclecmds(ESqlStatementType.sstoracledropdiskgroup, TBaseType.rrw_drop,"diskgroup"," "," "," "," "," ");
4217    addoraclecmds(ESqlStatementType.sstoracledropfunction, TBaseType.rrw_drop,"function"," "," "," "," "," ");
4218    addoraclecmds(ESqlStatementType.sstoracledropindex, TBaseType.rrw_drop,"index"," "," "," "," "," ");
4219    addoraclecmds(ESqlStatementType.sstoracledropindextype, TBaseType.rrw_drop,"indextype"," "," "," "," "," ");
4220    addoraclecmds(ESqlStatementType.sstoracledropjava, TBaseType.rrw_drop,"java"," "," "," "," "," ");
4221    addoraclecmds(ESqlStatementType.sstoracledroplibrary, TBaseType.rrw_drop,"library"," "," "," "," "," ");
4222    addoraclecmds(ESqlStatementType.sstoracledropmaterializedview, TBaseType.rrw_drop,"materialized","view"," "," "," "," ");
4223    addoraclecmds(ESqlStatementType.sstoracledropmaterializedviewlog, TBaseType.rrw_drop,"materialized","view","log"," "," "," ");
4224    addoraclecmds(ESqlStatementType.sstoracledropoperator, TBaseType.rrw_drop,"operator"," "," "," "," "," ");
4225    addoraclecmds(ESqlStatementType.sstoracledropoutline, TBaseType.rrw_drop,"outline"," "," "," "," "," ");
4226    addoraclecmds(ESqlStatementType.sstoracledroppackage, TBaseType.rrw_drop,"package"," "," "," "," "," ");
4227    addoraclecmds(ESqlStatementType.sstoracledropprocedure, TBaseType.rrw_drop,"procedure"," "," "," "," "," ");
4228    addoraclecmds(ESqlStatementType.sstoracledropprofile, TBaseType.rrw_drop,"profile"," "," "," "," "," ");
4229    addoraclecmds(ESqlStatementType.sstoracledropdatabaselink, TBaseType.rrw_drop,"public","database","link"," "," "," ");
4230    addoraclecmds(ESqlStatementType.sstoracledropsynonym, TBaseType.rrw_drop,"public","synonym"," "," "," "," ");
4231    addoraclecmds(ESqlStatementType.sstoracledroprestorepoint, TBaseType.rrw_drop,"restore","point"," "," "," "," ");
4232    addoraclecmds(ESqlStatementType.sstoracledroprole, TBaseType.rrw_drop,"role"," "," "," "," "," ");
4233    addoraclecmds(ESqlStatementType.sstoracledroprollbacksegment, TBaseType.rrw_drop,"rollback","segment"," "," "," "," ");
4234    addoraclecmds(ESqlStatementType.sstoracledropsequence, TBaseType.rrw_drop,"sequence"," "," "," "," "," ");
4235    addoraclecmds(ESqlStatementType.sstoracledropsynonym, TBaseType.rrw_drop,"synonym"," "," "," "," "," ");
4236    addoraclecmds(ESqlStatementType.sstoracledroptable, TBaseType.rrw_drop,"table"," "," "," "," "," ");
4237    addoraclecmds(ESqlStatementType.sstoracledroptablespace, TBaseType.rrw_drop,"tablespace"," "," "," "," "," ");
4238    addoraclecmds(ESqlStatementType.sstoracledroptrigger, TBaseType.rrw_drop,"trigger"," "," "," "," "," ");
4239    addoraclecmds(ESqlStatementType.sstoracledroptype, TBaseType.rrw_drop,"type"," "," "," "," "," ");
4240    addoraclecmds(ESqlStatementType.sstoracledroptypebody, TBaseType.rrw_drop,"type","body"," "," "," "," ");
4241    addoraclecmds(ESqlStatementType.sstoracledropuser, TBaseType.rrw_drop,"user"," "," "," "," "," ");
4242    addoraclecmds(ESqlStatementType.sstoracledropview, TBaseType.rrw_drop,"view"," "," "," "," "," ");
4243    addoraclecmds(ESqlStatementType.sstoracleexecuteprocedure, TBaseType.rrw_execute," "," "," "," "," "," ");
4244    addoraclecmds(ESqlStatementType.sstplsql_execimmestmt, TBaseType.rrw_execute,"immediate"," "," "," "," "," ");
4245    addoraclecmds(ESqlStatementType.sstExplain, TBaseType.rrw_explain,"plan"," "," "," "," "," ");
4246    addoraclecmds(ESqlStatementType.sstoracleflashbackdatabase, TBaseType.rrw_flashback,"database"," "," "," "," "," ");
4247    addoraclecmds(ESqlStatementType.sstoracleflashbacktable, TBaseType.rrw_flashback,"table"," "," "," "," "," ");
4248    addoraclecmds(ESqlStatementType.sstoraclegrant, TBaseType.rrw_grant," "," "," "," "," "," ");
4249    addoraclecmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert," "," "," "," "," "," ");
4250    addoraclecmds(ESqlStatementType.sstoraclelocktable, TBaseType.rrw_lock,"table"," "," "," "," "," ");
4251    addoraclecmds(ESqlStatementType.sstmerge, TBaseType.rrw_merge," "," "," "," "," "," ");
4252    addoraclecmds(ESqlStatementType.sstoraclenoaudit, TBaseType.rrw_noaudit," "," "," "," "," "," ");
4253    addoraclecmds(ESqlStatementType.sstoraclepurge, TBaseType.rrw_purge," "," "," "," "," "," ");
4254    addoraclecmds(ESqlStatementType.sstoraclerename, TBaseType.rrw_rename," "," "," "," "," "," ");
4255    addoraclecmds(ESqlStatementType.sstoraclerevoke, TBaseType.rrw_revoke," "," "," "," "," "," ");
4256    addoraclecmds(ESqlStatementType.sstoraclerollback, TBaseType.rrw_rollback," "," "," "," "," "," ");
4257    addoraclecmds(ESqlStatementType.sstoraclesavepoint, TBaseType.rrw_savepoint," "," "," "," "," "," ");
4258    addoraclecmds(ESqlStatementType.sstselect, TBaseType.rrw_select," "," "," "," "," "," ");
4259    addoraclecmds(ESqlStatementType.sstoraclesetconstraint, TBaseType.rrw_set,"constraint"," "," "," "," "," ");
4260    addoraclecmds(ESqlStatementType.sstoraclesetconstraint, TBaseType.rrw_set,"constraints"," "," "," "," "," ");
4261    addoraclecmds(ESqlStatementType.sstoraclesetrole, TBaseType.rrw_set,"role"," "," "," "," "," ");
4262    addoraclecmds(ESqlStatementType.sstoraclesettransaction, TBaseType.rrw_set,"transaction"," "," "," "," "," ");
4263    addoraclecmds(ESqlStatementType.sstTruncate, TBaseType.rrw_truncate," "," "," "," "," "," ");
4264    addoraclecmds(ESqlStatementType.sstplsql_createtype_placeholder, TBaseType.rrw_type2," "," "," "," "," "," ");
4265    addoraclecmds(ESqlStatementType.sstupdate, TBaseType.rrw_update," "," "," "," "," "," ");
4266
4267}
4268
4269void initinformixcmds(){
4270// cmd must be sort alphabetically
4271    addinformixcmds(ESqlStatementType.sstinformixAllocateCollection, TBaseType.rrw_allocate,"collection"," "," "," "," "," ");
4272    addinformixcmds(ESqlStatementType.sstinformixAllocateDescriptor, TBaseType.rrw_allocate,"descriptor"," "," "," "," "," ");
4273    addinformixcmds(ESqlStatementType.sstinformixAlterAccess_Method, TBaseType.rrw_alter,"access_method"," "," "," "," "," ");
4274    addinformixcmds(ESqlStatementType.sstinformixAlterFragment, TBaseType.rrw_alter,"fragment"," "," "," "," "," ");
4275    addinformixcmds(ESqlStatementType.sstinformixAlterFunction, TBaseType.rrw_alter,"function"," "," "," "," "," ");
4276    addinformixcmds(ESqlStatementType.sstinformixAlterIndex, TBaseType.rrw_alter,"index"," "," "," "," "," ");
4277    addinformixcmds(ESqlStatementType.sstinformixAlterProcedure, TBaseType.rrw_alter,"procedure"," "," "," "," "," ");
4278    addinformixcmds(ESqlStatementType.sstinformixAlterRoutine, TBaseType.rrw_alter,"routine"," "," "," "," "," ");
4279    addinformixcmds(ESqlStatementType.sstinformixAlterSecurityLabelComponent, TBaseType.rrw_alter,"security","label","component"," "," "," ");
4280    addinformixcmds(ESqlStatementType.sstinformixAlterSequence, TBaseType.rrw_alter,"sequence"," "," "," "," "," ");
4281    addinformixcmds(ESqlStatementType.sstinformixAlterTable, TBaseType.rrw_alter,"table"," "," "," "," "," ");
4282    addinformixcmds(ESqlStatementType.sstinformixAlterTrustedContext, TBaseType.rrw_alter,"trusted","context"," "," "," "," ");
4283    addinformixcmds(ESqlStatementType.sstinformixAlterUser, TBaseType.rrw_alter,"user"," "," "," "," "," ");
4284    addinformixcmds(ESqlStatementType.sstinformixBegin, TBaseType.rrw_begin," "," "," "," "," "," ");
4285    addinformixcmds(ESqlStatementType.sstinformixClose, TBaseType.rrw_close," "," "," "," "," "," ");
4286    addinformixcmds(ESqlStatementType.sstinformixCloseDatabase, TBaseType.rrw_close,"database"," "," "," "," "," ");
4287    addinformixcmds(ESqlStatementType.sstinformixCommit, TBaseType.rrw_commit," "," "," "," "," "," ");
4288    addinformixcmds(ESqlStatementType.sstinformixConnect, TBaseType.rrw_informix_connect_to," "," "," "," "," "," ");
4289    addinformixcmds(ESqlStatementType.sstinformixCreateAccess_Method, TBaseType.rrw_create,"access_method"," "," "," "," "," ");
4290    addinformixcmds(ESqlStatementType.sstinformixCreateAggregate, TBaseType.rrw_create,"aggregate"," "," "," "," "," ");
4291    addinformixcmds(ESqlStatementType.sstinformixCreateCast, TBaseType.rrw_create,"cast"," "," "," "," "," ");
4292    addinformixcmds(ESqlStatementType.sstinformixCreateIndex, TBaseType.rrw_create,"cluster","index"," "," "," "," ");
4293    addinformixcmds(ESqlStatementType.sstinformixCreateDatabase, TBaseType.rrw_create,"database"," "," "," "," "," ");
4294    addinformixcmds(ESqlStatementType.sstinformixCreateFunction, TBaseType.rrw_create,"dba","function"," "," "," "," ");
4295    addinformixcmds(ESqlStatementType.sstinformixCreateProcedure, TBaseType.rrw_create,"dba","procedure"," "," "," "," ");
4296    addinformixcmds(ESqlStatementType.sstinformixCreateDefaultUser, TBaseType.rrw_create,"default","user"," "," "," "," ");
4297    addinformixcmds(ESqlStatementType.sstinformixCreateIndex, TBaseType.rrw_create,"distinct","cluster","index"," "," "," ");
4298    addinformixcmds(ESqlStatementType.sstinformixCreateIndex, TBaseType.rrw_create,"distinct","index"," "," "," "," ");
4299    addinformixcmds(ESqlStatementType.sstinformixCreateDistinctType, TBaseType.rrw_create,"distinct","type"," "," "," "," ");
4300    addinformixcmds(ESqlStatementType.sstinformixCreateExternalTable, TBaseType.rrw_create,"external","table"," "," "," "," ");
4301    addinformixcmds(ESqlStatementType.sstinformixCreateFunction, TBaseType.rrw_create,"function"," "," "," "," "," ");
4302    addinformixcmds(ESqlStatementType.sstinformixCreateFunctionFrom, TBaseType.rrw_create,"function","from"," "," "," "," ");
4303    addinformixcmds(ESqlStatementType.sstinformixCreateIndex, TBaseType.rrw_create,"index"," "," "," "," "," ");
4304    addinformixcmds(ESqlStatementType.sstinformixCreateOpaqueType, TBaseType.rrw_create,"opaque","type"," "," "," "," ");
4305    addinformixcmds(ESqlStatementType.sstinformixCreateOpclass, TBaseType.rrw_create,"opclass"," "," "," "," "," ");
4306    addinformixcmds(ESqlStatementType.sstinformixCreateSynonym, TBaseType.rrw_create,"private","synonym"," "," "," "," ");
4307    addinformixcmds(ESqlStatementType.sstinformixCreateProcedure, TBaseType.rrw_create,"procedure"," "," "," "," "," ");
4308    addinformixcmds(ESqlStatementType.sstinformixCreateProcedureFrom, TBaseType.rrw_create,"procedure","from"," "," "," "," ");
4309    addinformixcmds(ESqlStatementType.sstinformixCreateSynonym, TBaseType.rrw_create,"public","synonym"," "," "," "," ");
4310    addinformixcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"raw","table"," "," "," "," ");
4311    addinformixcmds(ESqlStatementType.sstinformixCreateRole, TBaseType.rrw_create,"role"," "," "," "," "," ");
4312    addinformixcmds(ESqlStatementType.sstinformixCreateRoutineFrom, TBaseType.rrw_create,"routine","from"," "," "," "," ");
4313    addinformixcmds(ESqlStatementType.sstinformixCreateRowType, TBaseType.rrw_create,"row","type"," "," "," "," ");
4314    addinformixcmds(ESqlStatementType.sstinformixCreateSchema, TBaseType.rrw_create,"schema"," "," "," "," "," ");
4315    addinformixcmds(ESqlStatementType.sstinformixCreateSecurityLabel, TBaseType.rrw_create,"security","label"," "," "," "," ");
4316    addinformixcmds(ESqlStatementType.sstinformixCreateSecurityLabelComponent, TBaseType.rrw_create,"security","label","component"," "," "," ");
4317    addinformixcmds(ESqlStatementType.sstinformixCreateSecurityPolicy, TBaseType.rrw_create,"security","policy"," "," "," "," ");
4318    addinformixcmds(ESqlStatementType.sstinformixCreateSequence, TBaseType.rrw_create,"sequence"," "," "," "," "," ");
4319    addinformixcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"standard","table"," "," "," "," ");
4320    addinformixcmds(ESqlStatementType.sstinformixCreateSynonym, TBaseType.rrw_create,"synonym"," "," "," "," "," ");
4321    addinformixcmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"table"," "," "," "," "," ");
4322    addinformixcmds(ESqlStatementType.sstinformixCreateTempTable, TBaseType.rrw_create,"temp","table"," "," "," "," ");
4323    addinformixcmds(ESqlStatementType.sstcreatetrigger, TBaseType.rrw_create,"trigger"," "," "," "," "," ");
4324    addinformixcmds(ESqlStatementType.sstinformixCreateTrustedContext, TBaseType.rrw_create,"trusted","context"," "," "," "," ");
4325    addinformixcmds(ESqlStatementType.sstinformixCreateIndex, TBaseType.rrw_create,"unique","cluster","index"," "," "," ");
4326    addinformixcmds(ESqlStatementType.sstinformixCreateIndex, TBaseType.rrw_create,"unique","index"," "," "," "," ");
4327    addinformixcmds(ESqlStatementType.sstinformixCreateUser, TBaseType.rrw_create,"user"," "," "," "," "," ");
4328    addinformixcmds(ESqlStatementType.sstinformixCreateView, TBaseType.rrw_create,"view"," "," "," "," "," ");
4329    addinformixcmds(ESqlStatementType.sstinformixCreateXaDatasource, TBaseType.rrw_create,"xadatasource"," "," "," "," "," ");
4330    addinformixcmds(ESqlStatementType.sstinformixCreateXaDatasourceType, TBaseType.rrw_create,"xadatasource","type"," "," "," "," ");
4331    //addinformixcmds(ESqlStatementType.sstinformixDatabase, TBaseType.rrw_database," "," "," "," "," "," ");
4332    addinformixcmds(ESqlStatementType.sstinformixDeallocateCollection, TBaseType.rrw_deallocate,"collection"," "," "," "," "," ");
4333    addinformixcmds(ESqlStatementType.sstinformixDeallocateDescriptor, TBaseType.rrw_deallocate, "descriptor"," "," "," "," "," ");
4334    addinformixcmds(ESqlStatementType.sstinformixDeallocateRow, TBaseType.rrw_deallocate,"row"," "," "," "," "," ");
4335    addinformixcmds(ESqlStatementType.sstinformixDeclare, TBaseType.rrw_declare," "," "," "," "," "," ");
4336    addinformixcmds(ESqlStatementType.sstdelete, TBaseType.rrw_delete," "," "," "," "," "," ");
4337    addinformixcmds(ESqlStatementType.sstinformixDescribe, TBaseType.rrw_describe," "," "," "," "," "," ");
4338    addinformixcmds(ESqlStatementType.sstinformixDescribeInput, TBaseType.rrw_describe,"input"," "," "," "," "," ");
4339    addinformixcmds(ESqlStatementType.sstinformixDisconnect, TBaseType.rrw_disconnect," "," "," "," "," "," ");
4340    addinformixcmds(ESqlStatementType.sstinformixDropAccess_Method, TBaseType.rrw_drop,"access_method"," "," "," "," "," ");
4341    addinformixcmds(ESqlStatementType.sstinformixDropAggregate, TBaseType.rrw_drop,"aggregate"," "," "," "," "," ");
4342    addinformixcmds(ESqlStatementType.sstinformixDropCast, TBaseType.rrw_drop,"cast"," "," "," "," "," ");
4343    addinformixcmds(ESqlStatementType.sstdropdatabase, TBaseType.rrw_drop,"database"," "," "," "," "," ");
4344    addinformixcmds(ESqlStatementType.sstinformixDropFunction, TBaseType.rrw_drop,"function"," "," "," "," "," ");
4345    addinformixcmds(ESqlStatementType.sstinformixDropIndex, TBaseType.rrw_drop,"index"," "," "," "," "," ");
4346    addinformixcmds(ESqlStatementType.sstinformixDropOpclass, TBaseType.rrw_drop,"opclass"," "," "," "," "," ");
4347    addinformixcmds(ESqlStatementType.sstinformixDropProcedure, TBaseType.rrw_drop,"procedure"," "," "," "," "," ");
4348    addinformixcmds(ESqlStatementType.sstinformixDropRole, TBaseType.rrw_drop,"role"," "," "," "," "," ");
4349    addinformixcmds(ESqlStatementType.sstinformixDropRoutine, TBaseType.rrw_drop,"routine"," "," "," "," "," ");
4350    addinformixcmds(ESqlStatementType.sstinformixDropRowType, TBaseType.rrw_drop,"row","type"," "," "," "," ");
4351    addinformixcmds(ESqlStatementType.sstinformixDropSecurity, TBaseType.rrw_drop,"security"," "," "," "," "," ");
4352    addinformixcmds(ESqlStatementType.sstinformixDropSequence, TBaseType.rrw_drop,"sequence"," "," "," "," "," ");
4353    addinformixcmds(ESqlStatementType.sstinformixDropSynonym, TBaseType.rrw_drop,"synonym"," "," "," "," "," ");
4354    addinformixcmds(ESqlStatementType.sstinformixDropTable, TBaseType.rrw_drop,"table"," "," "," "," "," ");
4355    addinformixcmds(ESqlStatementType.sstinformixDropTrigger, TBaseType.rrw_drop,"trigger"," "," "," "," "," ");
4356    addinformixcmds(ESqlStatementType.sstinformixDropTrustedContext, TBaseType.rrw_drop,"trusted","context"," "," "," "," ");
4357    addinformixcmds(ESqlStatementType.sstinformixDropType, TBaseType.rrw_drop,"type"," "," "," "," "," ");
4358    addinformixcmds(ESqlStatementType.sstinformixDropUser, TBaseType.rrw_drop,"user"," "," "," "," "," ");
4359    addinformixcmds(ESqlStatementType.sstinformixDropView, TBaseType.rrw_drop,"view"," "," "," "," "," ");
4360    addinformixcmds(ESqlStatementType.sstinformixDropXaDatasource, TBaseType.rrw_drop,"xadatasource"," "," "," "," "," ");
4361    addinformixcmds(ESqlStatementType.sstinformixDropXaDatasourceType, TBaseType.rrw_drop,"xadatasource","type"," "," "," "," ");
4362    addinformixcmds(ESqlStatementType.sstinformixExecute, TBaseType.rrw_exec," "," "," "," "," "," ");
4363    addinformixcmds(ESqlStatementType.sstinformixExecute, TBaseType.rrw_execute," "," "," "," "," "," ");
4364    addinformixcmds(ESqlStatementType.sstinformixExecuteFunction, TBaseType.rrw_execute,"function"," "," "," "," "," ");
4365    addinformixcmds(ESqlStatementType.sstinformixExecuteImmediate, TBaseType.rrw_execute,"immediate"," "," "," "," "," ");
4366    addinformixcmds(ESqlStatementType.sstinformixExecuteProcedure, TBaseType.rrw_execute,"procedure"," "," "," "," "," ");
4367    addinformixcmds(ESqlStatementType.sstinformixFetch, TBaseType.rrw_fetch," "," "," "," "," "," ");
4368    addinformixcmds(ESqlStatementType.sstinformixFlush, TBaseType.rrw_flush," "," "," "," "," "," ");
4369    addinformixcmds(ESqlStatementType.sstinformixFree, TBaseType.rrw_free," "," "," "," "," "," ");
4370    addinformixcmds(ESqlStatementType.sstinformixGetDescriptor, TBaseType.rrw_get,"descriptor"," "," "," "," "," ");
4371    addinformixcmds(ESqlStatementType.sstinformixGetDiagnostics, TBaseType.rrw_get,"diagnostics"," "," "," "," "," ");
4372    addinformixcmds(ESqlStatementType.sstinformixGrant, TBaseType.rrw_grant," "," "," "," "," "," ");
4373    addinformixcmds(ESqlStatementType.sstinformixGrantFragment, TBaseType.rrw_grant,"fragment"," "," "," "," "," ");
4374    addinformixcmds(ESqlStatementType.sstinformixInfo, TBaseType.rrw_informix_info," "," "," "," "," "," ");
4375    addinformixcmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert, " "," "," "," "," "," ");
4376    addinformixcmds(ESqlStatementType.sstinformixLoad, TBaseType.rrw_load," "," "," "," "," "," ");
4377    addinformixcmds(ESqlStatementType.sstinformixLockTable, TBaseType.rrw_lock,"table"," "," "," "," "," ");
4378    addinformixcmds(ESqlStatementType.sstmerge, TBaseType.rrw_merge," "," "," "," "," "," ");
4379    addinformixcmds(ESqlStatementType.sstinformixOpen, TBaseType.rrw_open," "," "," "," "," "," ");
4380    addinformixcmds(ESqlStatementType.sstinformixOutput, TBaseType.rrw_informix_output," "," "," "," "," "," ");
4381    addinformixcmds(ESqlStatementType.sstinformixPrepare, TBaseType.rrw_prepare," "," "," "," "," "," ");
4382    addinformixcmds(ESqlStatementType.sstinformixPut, TBaseType.rrw_informix_put," "," "," "," "," "," ");
4383    addinformixcmds(ESqlStatementType.sstinformixReleaseSavepoint, TBaseType.rrw_release,"savepoint"," "," "," "," "," ");
4384    addinformixcmds(ESqlStatementType.sstinformixRenameColumn, TBaseType.rrw_rename,"column"," "," "," "," "," ");
4385    addinformixcmds(ESqlStatementType.sstinformixRenameDatabase, TBaseType.rrw_rename,"database"," "," "," "," "," ");
4386    addinformixcmds(ESqlStatementType.sstinformixRenameIndex, TBaseType.rrw_rename,"index"," "," "," "," "," ");
4387    addinformixcmds(ESqlStatementType.sstinformixRenameSecurity, TBaseType.rrw_rename,"security"," "," "," "," "," ");
4388    addinformixcmds(ESqlStatementType.sstinformixRenameSequence, TBaseType.rrw_rename,"sequence"," "," "," "," "," ");
4389    addinformixcmds(ESqlStatementType.sstinformixRenameTable, TBaseType.rrw_rename,"table"," "," "," "," "," ");
4390    addinformixcmds(ESqlStatementType.sstinformixRenameTrustedContext, TBaseType.rrw_rename,"trusted","context"," "," "," "," ");
4391    addinformixcmds(ESqlStatementType.sstinformixRenameUser, TBaseType.rrw_rename,"user"," "," "," "," "," ");
4392    addinformixcmds(ESqlStatementType.sstinformixRevoke, TBaseType.rrw_revoke," "," "," "," "," "," ");
4393    addinformixcmds(ESqlStatementType.sstinformixRevokeFragment, TBaseType.rrw_revoke,"fragment"," "," "," "," "," ");
4394    addinformixcmds(ESqlStatementType.sstinformixRollbackWork, TBaseType.rrw_rollback," "," "," "," "," "," ");
4395    addinformixcmds(ESqlStatementType.sstinformixRollbackWork, TBaseType.rrw_rollback,"work"," "," "," "," "," ");
4396    addinformixcmds(ESqlStatementType.sstinformixSaveExternalDirectives, TBaseType.rrw_save,"external","directives"," "," "," "," ");
4397    addinformixcmds(ESqlStatementType.sstinformixSavepoint, TBaseType.rrw_savepoint," "," "," "," "," "," ");
4398    addinformixcmds(ESqlStatementType.sstselect, TBaseType.rrw_select," "," "," "," "," "," ");
4399    addinformixcmds(ESqlStatementType.sstinformixSetAutofree, TBaseType.rrw_set,"autofree"," "," "," "," "," ");
4400    addinformixcmds(ESqlStatementType.sstinformixSetCollation, TBaseType.rrw_set,"collation"," "," "," "," "," ");
4401    addinformixcmds(ESqlStatementType.sstinformixSetConnection, TBaseType.rrw_set,"connection"," "," "," "," "," ");
4402    addinformixcmds(ESqlStatementType.sstinformixSetConstraints, TBaseType.rrw_set,"constraints"," "," "," "," "," ");
4403    addinformixcmds(ESqlStatementType.sstinformixSetDatabaseObject, TBaseType.rrw_set,"database","object"," "," "," "," ");
4404    addinformixcmds(ESqlStatementType.sstinformixSetDataskip, TBaseType.rrw_set,"dataskip"," "," "," "," "," ");
4405    addinformixcmds(ESqlStatementType.sstinformixSetDebugFile, TBaseType.rrw_set,"debug","file"," "," "," "," ");
4406    addinformixcmds(ESqlStatementType.sstinformixSetDeferred_Prepare, TBaseType.rrw_set,"defferred_prepare"," "," "," "," "," ");
4407    addinformixcmds(ESqlStatementType.sstinformixSetDescriptor, TBaseType.rrw_set,"descriptor"," "," "," "," "," ");
4408    addinformixcmds(ESqlStatementType.sstinformixSetEncryptionPassword, TBaseType.rrw_set,"encryption","password"," "," "," "," ");
4409    addinformixcmds(ESqlStatementType.sstinformixSetEnvironment, TBaseType.rrw_set,"environment"," "," "," "," "," ");
4410    addinformixcmds(ESqlStatementType.sstinformixSetExplain, TBaseType.rrw_set,"explain"," "," "," "," "," ");
4411    addinformixcmds(ESqlStatementType.sstinformixSetIndexes, TBaseType.rrw_set,"indexes"," "," "," "," "," ");
4412    addinformixcmds(ESqlStatementType.sstinformixSetIsolation, TBaseType.rrw_set,"isolation"," "," "," "," "," ");
4413    addinformixcmds(ESqlStatementType.sstinformixSetLockMode, TBaseType.rrw_set,"lock","mode"," "," "," "," ");
4414    addinformixcmds(ESqlStatementType.sstinformixSetLog, TBaseType.rrw_set,"log"," "," "," "," "," ");
4415    addinformixcmds(ESqlStatementType.sstinformixSetOptimization, TBaseType.rrw_set,"optimization"," "," "," "," "," ");
4416    addinformixcmds(ESqlStatementType.sstinformixSetPDQPriority, TBaseType.rrw_set,"pdqpriority"," "," "," "," "," ");
4417    addinformixcmds(ESqlStatementType.sstinformixSetRole, TBaseType.rrw_set,"role"," "," "," "," "," ");
4418    addinformixcmds(ESqlStatementType.sstinformixSetSessionAuthorization, TBaseType.rrw_set,"session","authorization"," "," "," "," ");
4419    addinformixcmds(ESqlStatementType.sstinformixSetStatementCache, TBaseType.rrw_set,"statement","cache"," "," "," "," ");
4420    addinformixcmds(ESqlStatementType.sstinformixSetTransaction, TBaseType.rrw_set,"transaction"," "," "," "," "," ");
4421    addinformixcmds(ESqlStatementType.sstinformixSetTransactionMode, TBaseType.rrw_set,"transaction","mode"," "," "," "," ");
4422    addinformixcmds(ESqlStatementType.sstinformixSetTriggers, TBaseType.rrw_set,"triggers"," "," "," "," "," ");
4423    addinformixcmds(ESqlStatementType.sstinformixSetUserPassword, TBaseType.rrw_set,"user","password"," "," "," "," ");
4424    addinformixcmds(ESqlStatementType.sstinformixStartViolationsTable, TBaseType.rrw_start,"violations","table"," "," "," "," ");
4425    addinformixcmds(ESqlStatementType.sstinformixStopViolationsTable, TBaseType.rrw_stop,"violations","table"," "," "," "," ");
4426    addinformixcmds(ESqlStatementType.sstTruncate, TBaseType.rrw_truncate," "," "," "," "," "," ");
4427    addinformixcmds(ESqlStatementType.sstinformixUnload, TBaseType.rrw_informix_unload," "," "," "," "," "," ");
4428    addinformixcmds(ESqlStatementType.sstinformixUnlockTable, TBaseType.rrw_unlock,"table"," "," "," "," "," ");
4429    addinformixcmds(ESqlStatementType.sstupdate, TBaseType.rrw_update," "," "," "," "," "," ");
4430    addinformixcmds(ESqlStatementType.sstinformixUpdateStatistics, TBaseType.rrw_update,"statistics"," "," "," "," "," ");
4431    addinformixcmds(ESqlStatementType.sstinformixWhenever, TBaseType.rrw_informix_whenever," "," "," "," "," "," ");
4432}
4433    public void initcouchbasecmds() {
4434        addcouchbasecmds(ESqlStatementType.sstBuildIndex,   TBaseType.rrw_couchbase_build, "index"," ", " ", " ", " ", " ");
4435        addcouchbasecmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create, "index", " ", " ", " ", " ", " ");
4436        addcouchbasecmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create, "primary", "index", " ", " ", " ", " ");
4437        addcouchbasecmds(ESqlStatementType.sstdelete, TBaseType.rrw_delete, " ", " ", " ", " ", " ", " ");
4438        addcouchbasecmds(ESqlStatementType.sstdropindex, TBaseType.rrw_drop, "index", " ", " ", " ", " ", " ");
4439        addcouchbasecmds(ESqlStatementType.sstdropindex, TBaseType.rrw_drop, "primary", "index", " ", " ", " ", " ");
4440        addcouchbasecmds(ESqlStatementType.sstExecutePreparedStmt, TBaseType.rrw_execute, " ", " ", " ", " ", " ", " ");
4441        addcouchbasecmds(ESqlStatementType.sstExplain, TBaseType.rrw_explain, " ", " ", " ", " ", " ", " ");
4442        addcouchbasecmds(ESqlStatementType.sstinfer, TBaseType.rrw_couchbase_infer, " ", " ", " ", " ", " ", " ");
4443        addcouchbasecmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert, " ", " ", " ", " ", " ", " ");
4444        addcouchbasecmds(ESqlStatementType.sstmerge, TBaseType.rrw_merge, " ", " ", " ", " ", " ", " ");
4445        addcouchbasecmds(ESqlStatementType.sstprepare, TBaseType.rrw_prepare, " ", " ", " ", " ", " ", " ");
4446        addcouchbasecmds(ESqlStatementType.sstselect, TBaseType.rrw_select, " ", " ", " ", " ", " ", " ");
4447        addcouchbasecmds(ESqlStatementType.sstupdate, TBaseType.rrw_update, " ", " ", " ", " ", " ", " ");
4448        addcouchbasecmds(ESqlStatementType.sstupsert, TBaseType.rrw_couchbase_upsert, " ", " ", " ", " ", " ", " ");
4449    }
4450
4451    void initverticacmds(){
4452
4453        addverticacmds(ESqlStatementType.sstActivateDirectedQuery, TBaseType.rrw_vertica_activate, "directed", "query",      " ", " ", " ", " ");
4454
4455        addverticacmds(ESqlStatementType.sstAlterAccessPolicy,   TBaseType.rrw_alter, "access",          "policy", " ", " ", " ", " ");
4456        addverticacmds(ESqlStatementType.sstAlterAuthentication, TBaseType.rrw_alter, "authentication", " ",      " ", " ", " ", " ");
4457        addverticacmds(ESqlStatementType.sstalterdatabase, TBaseType.rrw_alter, "database", " ", " ", " ", " ", " ");
4458        addverticacmds(ESqlStatementType.sstAlterFaultGroup, TBaseType.rrw_alter, "fault", "group", " ", " ", " ", " ");
4459        addverticacmds(ESqlStatementType.sstalterfunction, TBaseType.rrw_alter, "function", " ", " ", " ", " ", " ");
4460        addverticacmds(ESqlStatementType.sstAlterLibrary, TBaseType.rrw_alter, "library", " ", " ", " ", " ", " ");
4461        addverticacmds(ESqlStatementType.sstAlterNode, TBaseType.rrw_alter, "node", " ", " ", " ", " ", " ");
4462        addverticacmds(ESqlStatementType.sstAlterNetworkInterface, TBaseType.rrw_alter, "network", "interface", " ", " ", " ", " ");
4463        addverticacmds(ESqlStatementType.sstAlterProjection, TBaseType.rrw_alter, "projection", " ", " ", " ", " ", " ");
4464        addverticacmds(ESqlStatementType.sstAlterProfile, TBaseType.rrw_alter, "profile", " ", " ", " ", " ", " ");
4465        addverticacmds(ESqlStatementType.sstAlterResourcePool, TBaseType.rrw_alter, "resource", "pool", " ", " ", " ", " ");
4466        addverticacmds(ESqlStatementType.sstAlterRole, TBaseType.rrw_alter, "role", " ", " ", " ", " ", " ");
4467        addverticacmds(ESqlStatementType.sstAlterSchema, TBaseType.rrw_alter, "schema", " ", " ", " ", " ", " ");
4468        addverticacmds(ESqlStatementType.sstaltersequence, TBaseType.rrw_alter, "sequence", " ", " ", " ", " ", " ");
4469        addverticacmds(ESqlStatementType.sstaltersession, TBaseType.rrw_alter, "session", " ", " ", " ", " ", " ");
4470        addverticacmds(ESqlStatementType.sstAlterSubnet, TBaseType.rrw_alter, "subnet", " ", " ", " ", " ", " ");
4471        addverticacmds(ESqlStatementType.sstaltertable, TBaseType.rrw_alter, "table", " ", " ", " ", " ", " ");
4472        addverticacmds(ESqlStatementType.sstalteruser, TBaseType.rrw_alter, "user", " ", " ", " ", " ", " ");
4473        addverticacmds(ESqlStatementType.sstalterview, TBaseType.rrw_alter, "view", " ", " ", " ", " ", " ");
4474
4475        addverticacmds(ESqlStatementType.sstBegin, TBaseType.rrw_begin, " ", " ", " ", " ", " ", " ");
4476        addverticacmds(ESqlStatementType.sstcall, TBaseType.rrw_call, " ", " ", " ", " ", " ", " ");
4477
4478        addverticacmds(ESqlStatementType.sstCommentOn, TBaseType.rrw_comment, "on", " ", " ", " ", " ", " ");
4479        addverticacmds(ESqlStatementType.sstcommit, TBaseType.rrw_commit, " ", " ", " ", " ", " ", " ");
4480        addverticacmds(ESqlStatementType.sstconnect, TBaseType.rrw_connect, "to", " ", " ", " ", " ", " ");
4481        addverticacmds(ESqlStatementType.sstCopy, TBaseType.rrw_vertica_copy, " ", " ", " ", " ", " ", " ");
4482
4483        addverticacmds(ESqlStatementType.sstCreateAccessPolicy,   TBaseType.rrw_create, "access",          "policy", " ", " ", " ", " ");
4484        addverticacmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create , "aggregate", "function", " ", " ", " ", " ");
4485        addverticacmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create , "analytic", "function", " ", " ", " ", " ");
4486        addverticacmds(ESqlStatementType.sstCreateAuthentication, TBaseType.rrw_create, "authentication", " ",      " ", " ", " ", " ");
4487        addverticacmds(ESqlStatementType.sstCreateDirectedQuery, TBaseType.rrw_create, "directed", "query",      " ", " ", " ", " ");
4488        addverticacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "external", "table",      " ", " ", " ", " ");
4489        addverticacmds(ESqlStatementType.sstCreateFaultGroup, TBaseType.rrw_create , "fault", "group", " ", " ", " ", " ");
4490        addverticacmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create , "filter", " ", " ", " ", " ", " ");
4491        addverticacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create , "flex", "table", " ", " ", " ", " ");
4492        addverticacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create , "flex", "local", "temp", "table", " ", " ");
4493        addverticacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create , "flex", "local", "temporary", "table", " ", " ");
4494        addverticacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create , "flexible", "table", " ", " ", " ", " ");
4495        addverticacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create , "flexible", "local", "temp", "table", " ", " ");
4496        addverticacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create , "flexible", "local", "temporary", "table", " ", " ");
4497
4498        addverticacmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create , "function", " ", " ", " ", " ", " ");
4499        addverticacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create , "global", "temp", "table", " ", " ", " ");
4500        addverticacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create , "global", "temporary", "table", " ", " ", " ");
4501        addverticacmds(ESqlStatementType.sstCreateHCatalogSchema, TBaseType.rrw_create , "hcatalog", "schema", " ", " ", " ", " ");
4502        addverticacmds(ESqlStatementType.sstCreateLibrary, TBaseType.rrw_create, "library", " ", " ", " ", " ", " ");
4503        addverticacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create , "local", "temp", "table", " ", " ", " ");
4504        addverticacmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create , "local", "temp", "view", " ", " ", " ");
4505        addverticacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create , "local", "temporary", "table", " ", " ", " ");
4506        addverticacmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create , "local", "temporary", "view", " ", " ", " ");
4507        addverticacmds(ESqlStatementType.sstCreateLocation, TBaseType.rrw_create , "location", " ", " ", " ", " ", " ");
4508        addverticacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create , "managed", "external", "table", " ", " ", " ");
4509        addverticacmds(ESqlStatementType.sstCreateNetworkInterface, TBaseType.rrw_create, "network", "interface", " ", " ", " ", " ");
4510        addverticacmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create , "or", "replace", "aggregate", "function", " ", " ");
4511        addverticacmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create , "or", "replace", "function", " ", " ", " ");
4512        addverticacmds(ESqlStatementType.sstCreateLibrary, TBaseType.rrw_create , "or", "replace", "library", " ", " ", " ");
4513        addverticacmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create , "or", "replace", "local", "temp", "view", " ");
4514        addverticacmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create , "or", "replace", "local", "temporary", "view", " ");
4515        addverticacmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create , "or", "replace", "view", " ", " ", " ");
4516        addverticacmds(ESqlStatementType.sstcreateprocedure, TBaseType.rrw_create , "or", "replace", "procedure", " ", " ", " ");
4517
4518        addverticacmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create , "parser", " ", " ", " ", " ", " ");
4519        addverticacmds(ESqlStatementType.sstcreateprocedure, TBaseType.rrw_create , "procedure", " ", " ", " ", " ", " ");
4520        addverticacmds(ESqlStatementType.sstCreateProfile, TBaseType.rrw_create , "profile", " ", " ", " ", " ", " ");
4521        addverticacmds(ESqlStatementType.sstCreateProjection, TBaseType.rrw_create , "projection", " ", " ", " ", " ", " ");
4522        addverticacmds(ESqlStatementType.sstCreateResourcePool, TBaseType.rrw_create , "resource", "pool", " ", " ", " ", " ");
4523        addverticacmds(ESqlStatementType.sstcreaterole, TBaseType.rrw_create , "role", " ", " ", " ", " ", " ");
4524        addverticacmds(ESqlStatementType.sstcreateschema, TBaseType.rrw_create , "schema", " ", " ", " ", " ", " ");
4525        addverticacmds(ESqlStatementType.sstcreatesequence, TBaseType.rrw_create , "sequence", " ", " ", " ", " ", " ");
4526        addverticacmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create , "source", " ", " ", " ", " ", " ");
4527        addverticacmds(ESqlStatementType.sstCreateSubnet, TBaseType.rrw_create , "subnet", " ", " ", " ", " ", " ");
4528
4529        addverticacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create , "table", " ", " ", " ", " ", " ");
4530        addverticacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create , "temp", "table", " ", " ", " ", " ");
4531        addverticacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create , "temporary", "table", " ", " ", " ", " ");
4532        addverticacmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create , "text", "index", " ", " ", " ", " ");
4533        addverticacmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create , "transform", "function", " ", " ", " ", " ");
4534        addverticacmds(ESqlStatementType.sstcreateuser, TBaseType.rrw_create , "user", " ", " ", " ", " ", " ");
4535        addverticacmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create , "view", " ", " ", " ", " ", " ");
4536
4537        addverticacmds(ESqlStatementType.sstDeActivateDirectedQuery, TBaseType.rrw_vertica_deactivate, "directed", "query",      " ", " ", " ", " ");
4538
4539        addverticacmds(ESqlStatementType.sstdelete, TBaseType.rrw_delete , " ", " ", " ", " ", " ", " ");
4540        addverticacmds(ESqlStatementType.sstDisconnect, TBaseType.rrw_disconnect , " ", " ", " ", " ", " ", " ");
4541
4542        addverticacmds(ESqlStatementType.sstDeActivateDirectedQuery, TBaseType.rrw_drop, "directed", "query",      " ", " ", " ", " ");
4543        addverticacmds(ESqlStatementType.sstDropAccessPolicy,   TBaseType.rrw_drop, "access","policy", " ", " ", " ", " ");
4544        addverticacmds(ESqlStatementType.sstDropAggregateFunction, TBaseType.rrw_drop, "aggregate","function", " ", " ", " ", " ");
4545        addverticacmds(ESqlStatementType.sstDropAuthentication, TBaseType.rrw_drop, "authentication"," ", " ", " ", " ", " ");
4546
4547        addverticacmds(ESqlStatementType.sstDropFaultGroup, TBaseType.rrw_drop, "fault","group", " ", " ", " ", " ");
4548
4549        addverticacmds(ESqlStatementType.sstdropfunction, TBaseType.rrw_drop, "function"," ", " ", " ", " ", " ");
4550        addverticacmds(ESqlStatementType.sstDropLibrary, TBaseType.rrw_drop, "library"," ", " ", " ", " ", " ");
4551        addverticacmds(ESqlStatementType.sstDropNetworkInterface, TBaseType.rrw_drop, "network","interface", " ", " ", " ", " ");
4552        addverticacmds(ESqlStatementType.sstdropprocedure, TBaseType.rrw_drop, "procedure"," ", " ", " ", " ", " ");
4553        addverticacmds(ESqlStatementType.sstDropProfile, TBaseType.rrw_drop, "profile"," ", " ", " ", " ", " ");
4554        addverticacmds(ESqlStatementType.sstDropProjection, TBaseType.rrw_drop, "projection"," ", " ", " ", " ", " ");
4555        addverticacmds(ESqlStatementType.sstDropResourcePool, TBaseType.rrw_drop, "resource","pool", " ", " ", " ", " ");
4556        addverticacmds(ESqlStatementType.sstdroprole, TBaseType.rrw_drop, "role"," ", " ", " ", " ", " ");
4557        addverticacmds(ESqlStatementType.sstdropschema, TBaseType.rrw_drop, "schema"," ", " ", " ", " ", " ");
4558        addverticacmds(ESqlStatementType.sstdropsequence, TBaseType.rrw_drop, "sequence"," ", " ", " ", " ", " ");
4559        addverticacmds(ESqlStatementType.sstDropSubnet, TBaseType.rrw_drop, "subnet"," ", " ", " ", " ", " ");
4560        addverticacmds(ESqlStatementType.sstdroptable, TBaseType.rrw_drop, "table"," ", " ", " ", " ", " ");
4561        addverticacmds(ESqlStatementType.sstDropTextIndex, TBaseType.rrw_drop, "text","index", " ", " ", " ", " ");
4562        addverticacmds(ESqlStatementType.sstDropTransformFunction, TBaseType.rrw_drop, "transform","function", " ", " ", " ", " ");
4563        addverticacmds(ESqlStatementType.sstdropuser, TBaseType.rrw_drop, "user"," ", " ", " ", " ", " ");
4564        addverticacmds(ESqlStatementType.sstdropview, TBaseType.rrw_drop, "view"," ", " ", " ", " ", " ");
4565
4566        addverticacmds(ESqlStatementType.sstEnd, TBaseType.rrw_end, " ", " "," ", " ", " ", " ");
4567        addverticacmds(ESqlStatementType.sstExplain, TBaseType.rrw_explain, " ", " "," ", " ", " ", " ");
4568        addverticacmds(ESqlStatementType.sstExportToVertica, TBaseType.rrw_vertica_export, "to", "vertica"," ", " ", " ", " ");
4569        addverticacmds(ESqlStatementType.sstGrant, TBaseType.rrw_grant, " ", " "," ", " ", " ", " ");
4570        addverticacmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert, " ", " "," ", " ", " ", " ");
4571        addverticacmds(ESqlStatementType.sstmerge, TBaseType.rrw_merge, " ", " "," ", " ", " ", " ");
4572        addverticacmds(ESqlStatementType.sstProfile, TBaseType.rrw_vertica_profile, " ", " "," ", " ", " ", " ");
4573        addverticacmds(ESqlStatementType.sstReleaseSavepoint, TBaseType.rrw_release, " ", " "," ", " ", " ", " ");
4574        addverticacmds(ESqlStatementType.sstRevoke, TBaseType.rrw_revoke, " ", " "," ", " ", " ", " ");
4575        addverticacmds(ESqlStatementType.sstrollback, TBaseType.rrw_rollback, " ", " "," ", " ", " ", " ");
4576        addverticacmds(ESqlStatementType.sstsavepoint, TBaseType.rrw_savepoint, " ", " "," ", " ", " ", " ");
4577        addverticacmds(ESqlStatementType.sstselect, TBaseType.rrw_select, " ", " "," ", " ", " ", " ");
4578        addverticacmds(ESqlStatementType.sstset, TBaseType.rrw_set, "datestyle", "to"," ", " ", " ", " ");
4579        addverticacmds(ESqlStatementType.sstset, TBaseType.rrw_set, "escape_string_warning", "to"," ", " ", " ", " ");
4580        addverticacmds(ESqlStatementType.sstset, TBaseType.rrw_set, "intervalstyle", "to"," ", " ", " ", " ");
4581        addverticacmds(ESqlStatementType.sstset, TBaseType.rrw_set, "locale", " "," ", " ", " ", " ");
4582        addverticacmds(ESqlStatementType.sstset, TBaseType.rrw_set, "role", " "," ", " ", " ", " ");
4583        addverticacmds(ESqlStatementType.sstset, TBaseType.rrw_set, "search_path", " "," ", " ", " ", " ");
4584        addverticacmds(ESqlStatementType.sstset, TBaseType.rrw_set, "session", " "," ", " ", " ", " ");
4585        addverticacmds(ESqlStatementType.sstset, TBaseType.rrw_set, "standard_conforming_strings", " "," ", " ", " ", " ");
4586        addverticacmds(ESqlStatementType.sstset, TBaseType.rrw_set, "time", "zone"," ", " ", " ", " ");
4587        addverticacmds(ESqlStatementType.sstShow, TBaseType.rrw_show, " ", " "," ", " ", " ", " ");
4588        addverticacmds(ESqlStatementType.sstStartTransaction, TBaseType.rrw_start, " ", " "," ", " ", " ", " ");
4589        addverticacmds(ESqlStatementType.sstTruncate, TBaseType.rrw_truncate, "table", " "," ", " ", " ", " ");
4590        addverticacmds(ESqlStatementType.sstupdate, TBaseType.rrw_update, " ", " "," ", " ", " ", " ");
4591
4592
4593       // addverticacmds(ESqlStatementType.sstGetDirectedQuery, TBaseType.rrw_get, "directed", "query",      " ", " ", " ", " ");
4594       // addverticacmds(ESqlStatementType.sstSaveQuery, TBaseType.rrw_save, "query", " "," ", " ", " ", " ");
4595
4596    }
4597
4598    void inithanacmds(){
4599//alter
4600        addhanacmds(ESqlStatementType.sstalterauditpolicy, TBaseType.rrw_alter, "audit", "policy", " ", " ", " ", " ");
4601        addhanacmds(ESqlStatementType.sstaltercredential, TBaseType.rrw_alter, "credential", " ", " ", " ", " ", " ");
4602        addhanacmds(ESqlStatementType.sstalterdatabase, TBaseType.rrw_alter, "database", " ", " ", " ", " ", " ");
4603        addhanacmds(ESqlStatementType.sstalterfulltextindex, TBaseType.rrw_alter, "fulltext", "index", " ", " ", " ", " ");
4604        addhanacmds(ESqlStatementType.sstalterfunction, TBaseType.rrw_alter, "function", " ", " ", " ", " ", " ");
4605        addhanacmds(ESqlStatementType.sstalterindex, TBaseType.rrw_alter, "index", " ", " ", " ", " ", " ");
4606        addhanacmds(ESqlStatementType.sstalterldapprovider, TBaseType.rrw_alter, "ldap", "provider", " ", " ", " ", " ");
4607        addhanacmds(ESqlStatementType.sstalterjwtprovider, TBaseType.rrw_alter, "jwt", "provider", " ", " ", " ", " ");
4608        addhanacmds(ESqlStatementType.sstalterpse, TBaseType.rrw_alter, "pse", " ", " ", " ", " ", " ");
4609        addhanacmds(ESqlStatementType.sstalterprocedure, TBaseType.rrw_alter, "procedure", " ", " ", " ", " ", " ");
4610        addhanacmds(ESqlStatementType.sstalterremotesource, TBaseType.rrw_alter, "remote", "source", " ", " ", " ", " ");
4611        addhanacmds(ESqlStatementType.sstAlterRole, TBaseType.rrw_alter, "role", " ", " ", " ", " ", " ");
4612        addhanacmds(ESqlStatementType.sstaltersamlprovider, TBaseType.rrw_alter, "saml", "provider", " ", " ", " ", " ");
4613        addhanacmds(ESqlStatementType.sstaltersequence, TBaseType.rrw_alter, "sequence", " ", " ", " ", " ", " ");
4614        addhanacmds(ESqlStatementType.sstalterstatistics, TBaseType.rrw_alter, "statistics", " ", " ", " ", " ", " ");
4615        addhanacmds(ESqlStatementType.sstalterstructuredprivilege, TBaseType.rrw_alter, "structured", "privilege", " ", " ", " ", " ");
4616        addhanacmds(ESqlStatementType.sstaltersystem, TBaseType.rrw_alter, "system", " ", " ", " ", " ", " ");
4617        addhanacmds(ESqlStatementType.sstaltertable, TBaseType.rrw_alter, "table", " ", " ", " ", " ", " ");
4618        addhanacmds(ESqlStatementType.sstalteruser, TBaseType.rrw_alter, "user", " ", " ", " ", " ", " ");
4619        addhanacmds(ESqlStatementType.sstalterusergroup, TBaseType.rrw_alter, "usergroup", " ", " ", " ", " ", " ");
4620        addhanacmds(ESqlStatementType.sstalterview, TBaseType.rrw_alter, "view", " ", " ", " ", " ", " ");
4621        addhanacmds(ESqlStatementType.sstalterviewcache, TBaseType.rrw_alter, "view", "cache", " ", " ", " ", " ");
4622        addhanacmds(ESqlStatementType.sstaltervirtualtable, TBaseType.rrw_alter, "virtual", "table", " ", " ", " ", " ");
4623        addhanacmds(ESqlStatementType.sstalterworkloadclass, TBaseType.rrw_alter, "workload", "class", " ", " ", " ", " ");
4624        addhanacmds(ESqlStatementType.sstalterworkloadmapping, TBaseType.rrw_alter, "workload", "mapping", " ", " ", " ", " ");
4625
4626//backup
4627        addhanacmds(ESqlStatementType.sstbackupcancel, TBaseType.rrw_backup,"cancel"," "," "," "," "," ");
4628        addhanacmds(ESqlStatementType.sstbackupcatalogdelete, TBaseType.rrw_backup, "catalog", "delete", " ", " ", " ", " ");
4629        addhanacmds(ESqlStatementType.sstbackupcheck, TBaseType.rrw_backup,"check"," "," "," "," "," ");
4630        addhanacmds(ESqlStatementType.sstbackupcheckaccess, TBaseType.rrw_backup, "check", "access", " ", " ", " ", " ");
4631        addhanacmds(ESqlStatementType.sstbackupdata, TBaseType.rrw_backup, "data", " ", " ", " ", " ", " ");
4632        addhanacmds(ESqlStatementType.sstbackuplistdata, TBaseType.rrw_backup, "list", "data", " ", " ", " ", " ");
4633
4634        addhanacmds(ESqlStatementType.sstcall, TBaseType.rrw_call, " ", " ", " ", " ", " ", " ");
4635
4636//commit
4637        addhanacmds(ESqlStatementType.sstcomment, TBaseType.rrw_comment, "on", " ", " ", " ", " ", " ");
4638        addhanacmds(ESqlStatementType.sstcommit, TBaseType.rrw_commit, " ", " ", " ", " ", " ", " ");
4639        addhanacmds(ESqlStatementType.sstconnect, TBaseType.rrw_connect, " ", " ", " ", " ", " ", " ");
4640
4641//create
4642        addhanacmds(ESqlStatementType.sstcreateauditpolicy, TBaseType.rrw_create, "audit", "policy", " ", " ", " ", " ");
4643        addhanacmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create, "btree", "index", " ", " ", " ", " ");
4644        addhanacmds(ESqlStatementType.sstcreatecertificate, TBaseType.rrw_create, "certificate", " ", " ", " ", " ", " ");
4645        addhanacmds(ESqlStatementType.sstcreatecollection, TBaseType.rrw_create, "collection", " ", " ", " ", " ", " ");
4646        addhanacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "column", "table", " ", " ", " ", " ");
4647        addhanacmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create, "cpbtree", "index", " ", " ", " ", " ");
4648        addhanacmds(ESqlStatementType.sstcreatecredential, TBaseType.rrw_create, "credential", " ", " ", " ", " ", " ");
4649        addhanacmds(ESqlStatementType.sstcreatedatabase, TBaseType.rrw_create, "database", " ", " ", " ", " ", " ");
4650        addhanacmds(ESqlStatementType.sstcreatefulltextindex, TBaseType.rrw_create, "fulltext", "index", " ", " ", " ", " ");
4651        addhanacmds(ESqlStatementType.sstcreatefunction, TBaseType.rrw_create, "function", " ", " ", " ", " ", " ");
4652        addhanacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "global", "temporary", "column", "table", " ", " ");
4653        addhanacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"global","temporary","table"," "," "," ");
4654        addhanacmds(ESqlStatementType.sstcreategraphworkspace, TBaseType.rrw_create, "graph", "workspace", " ", " ", " ", " ");
4655        addhanacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"history","column","table"," "," "," ");
4656        addhanacmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create, "index", " ", " ", " ", " ", " ");
4657        addhanacmds(ESqlStatementType.sstcreateJWTProvider, TBaseType.rrw_create, "jwt", "provider", " ", " ", " ", " ");
4658        addhanacmds(ESqlStatementType.sstcreateLDAPProvider, TBaseType.rrw_create, "ldap", "provider", " ", " ", " ", " ");
4659        addhanacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create,"local","temporary","column","table"," "," ");
4660        addhanacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "local", "temporary", "table", " ", " ", " ");
4661        addhanacmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create, "or", "replace", "force", "editionable", "view", " ");
4662        addhanacmds(ESqlStatementType.sstcreatesynonym, TBaseType.rrw_create, "or", "replace", "public", "synonym", " ", " ");
4663        addhanacmds(ESqlStatementType.sstcreatesynonym, TBaseType.rrw_create, "or", "replace", "synonym", " ", " ", " ");
4664        addhanacmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create, "or", "replace", "view", " ", " ", " ");
4665        addhanacmds(ESqlStatementType.sstcreateprocedure, TBaseType.rrw_create, "procedure", " ", " ", " ", " ", " ");
4666        addhanacmds(ESqlStatementType.sstcreatepse, TBaseType.rrw_create, "pse", " ", " ", " ", " ", " ");
4667        addhanacmds(ESqlStatementType.sstcreatesynonym, TBaseType.rrw_create, "public", "synonym", " ", " ", " ", " ");
4668        addhanacmds(ESqlStatementType.sstcreateremotesource, TBaseType.rrw_create, "remote", "source", " ", " ", " ", " ");
4669        addhanacmds(ESqlStatementType.sstcreateuser, TBaseType.rrw_create, "restricted", "user", " ", " ", " ", " ");
4670        addhanacmds(ESqlStatementType.sstcreaterole, TBaseType.rrw_create, "role", " ", " ", " ", " ", " ");
4671        addhanacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "row", "table", " ", " ", " ", " ");
4672        addhanacmds(ESqlStatementType.sstcreatesamlprovider, TBaseType.rrw_create, "saml", "provider", " ", " ", " ", " ");
4673        addhanacmds(ESqlStatementType.sstcreateschema, TBaseType.rrw_create, "schema", " ", " ", " ", " ", " ");
4674        addhanacmds(ESqlStatementType.sstcreatesequence, TBaseType.rrw_create, "sequence", " ", " ", " ", " ", " ");
4675        addhanacmds(ESqlStatementType.sstcreatestatistics, TBaseType.rrw_create, "statistics", " ", " ", " ", " ", " ");
4676        addhanacmds(ESqlStatementType.sstcreatestructuredprivilege, TBaseType.rrw_create, "structured", "privilege", " ", " ", " ", " ");
4677        addhanacmds(ESqlStatementType.sstcreatesynonym, TBaseType.rrw_create, "synonym", " ", " ", " ", " ", " ");
4678        addhanacmds(ESqlStatementType.sstcreatetable, TBaseType.rrw_create, "table", " ", " ", " ", " ", " ");
4679        addhanacmds(ESqlStatementType.sstcreatetrigger, TBaseType.rrw_create, "trigger", " ", " ", " ", " ", " ");
4680        addhanacmds(ESqlStatementType.sstcreatetype, TBaseType.rrw_create, "type", " ", " ", " ", " ", " ");
4681        addhanacmds(ESqlStatementType.sstcreateindex, TBaseType.rrw_create, "unique", "index", " ", " ", " ", " ");
4682        addhanacmds(ESqlStatementType.sstcreateuser, TBaseType.rrw_create, "user", " ", " ", " ", " ", " ");
4683        addhanacmds(ESqlStatementType.sstcreateusergroup, TBaseType.rrw_create, "usergroup", " ", " ", " ", " ", " ");
4684        addhanacmds(ESqlStatementType.sstcreateview, TBaseType.rrw_create, "view", " ", " ", " ", " ", " ");
4685        addhanacmds(ESqlStatementType.sstcreatevirtualfunction, TBaseType.rrw_create, "virtual", "function", " ", " ", " ", " ");
4686        addhanacmds(ESqlStatementType.sstcreatevirtualtable, TBaseType.rrw_create, "virtual", "table", " ", " ", " ", " ");
4687        addhanacmds(ESqlStatementType.sstcreateworkloadclass, TBaseType.rrw_create, "workload", "class", " ", " ", " ", " ");
4688        addhanacmds(ESqlStatementType.sstcreateworkloadmapping, TBaseType.rrw_create, "workload", "mapping", " ", " ", " ", " ");
4689
4690//DELETE
4691        addhanacmds(ESqlStatementType.sstdelete, TBaseType.rrw_delete, " ", " ", " ", " ", " ", " ");
4692
4693        addhanacmds(ESqlStatementType.sstdobeginend, TBaseType.rrw_do, "begin", " ", " ", " ", " ", " ");
4694
4695//drop
4696        addhanacmds(ESqlStatementType.sstdropauditpolicy, TBaseType.rrw_drop, "audit", "policy", " ", " ", " ", " ");
4697        addhanacmds(ESqlStatementType.sstdropcertificate, TBaseType.rrw_drop, "certificate", " ", " ", " ", " ", " ");
4698        addhanacmds(ESqlStatementType.sstdropcollection, TBaseType.rrw_drop, "collection", " ", " ", " ", " ", " ");
4699        addhanacmds(ESqlStatementType.sstdropcredential, TBaseType.rrw_drop, "credential", " ", " ", " ", " ", " ");
4700        addhanacmds(ESqlStatementType.sstdropdatabase, TBaseType.rrw_drop, "database", " ", " ", " ", " ", " ");
4701        addhanacmds(ESqlStatementType.sstdropfulltextindex, TBaseType.rrw_drop, "fulltext", "index", " ", " ", " ", " ");
4702        addhanacmds(ESqlStatementType.sstdropfunction, TBaseType.rrw_drop, "function", " ", " ", " ", " ", " ");
4703        addhanacmds(ESqlStatementType.sstdropgraphworkspace, TBaseType.rrw_drop, "graph", "workspace", " ", " ", " ", " ");
4704        addhanacmds(ESqlStatementType.sstdropindex, TBaseType.rrw_drop, "index", " ", " ", " ", " ", " ");
4705        addhanacmds(ESqlStatementType.sstdropJWTProvider, TBaseType.rrw_drop, "jwt", "provider", " ", " ", " ", " ");
4706        addhanacmds(ESqlStatementType.sstdropLDAPProvider, TBaseType.rrw_drop, "ldap", "provider", " ", " ", " ", " ");
4707        addhanacmds(ESqlStatementType.sstdropprocedure, TBaseType.rrw_drop, "procedure", " ", " ", " ", " ", " ");
4708        addhanacmds(ESqlStatementType.sstdroppse, TBaseType.rrw_drop, "pse", " ", " ", " ", " ", " ");
4709        addhanacmds(ESqlStatementType.sstdropsynonym, TBaseType.rrw_drop, "public", "synonym", " ", " ", " ", " ");
4710        addhanacmds(ESqlStatementType.sstdropremotesource, TBaseType.rrw_drop, "remote", "source", " ", " ", " ", " ");
4711        addhanacmds(ESqlStatementType.sstdroprole, TBaseType.rrw_drop, "role", " ", " ", " ", " ", " ");
4712        addhanacmds(ESqlStatementType.sstdropsamlprovider, TBaseType.rrw_drop, "saml", "provider", " ", " ", " ", " ");
4713        addhanacmds(ESqlStatementType.sstdropschema, TBaseType.rrw_drop, "schema", " ", " ", " ", " ", " ");
4714        addhanacmds(ESqlStatementType.sstdropsequence, TBaseType.rrw_drop, "sequence", " ", " ", " ", " ", " ");
4715        addhanacmds(ESqlStatementType.sstdropstatistics, TBaseType.rrw_drop, "statistics", " ", " ", " ", " ", " ");
4716        addhanacmds(ESqlStatementType.sstdropstructuredprivilege, TBaseType.rrw_drop, "structured", "privilege", " ", " ", " ", " ");
4717        addhanacmds(ESqlStatementType.sstdropsynonym, TBaseType.rrw_drop, "synonym", " ", " ", " ", " ", " ");
4718        addhanacmds(ESqlStatementType.sstdroptable, TBaseType.rrw_drop, "table", " ", " ", " ", " ", " ");
4719        addhanacmds(ESqlStatementType.sstdroptrigger, TBaseType.rrw_drop, "trigger", " ", " ", " ", " ", " ");
4720        addhanacmds(ESqlStatementType.sstdroptype, TBaseType.rrw_drop, "type", " ", " ", " ", " ", " ");
4721        addhanacmds(ESqlStatementType.sstdropuser, TBaseType.rrw_drop, "user", " ", " ", " ", " ", " ");
4722        addhanacmds(ESqlStatementType.sstdropusergroup, TBaseType.rrw_drop, "usergroup", " ", " ", " ", " ", " ");
4723        addhanacmds(ESqlStatementType.sstdropview, TBaseType.rrw_drop, "view", " ", " ", " ", " ", " ");
4724        addhanacmds(ESqlStatementType.sstdropworkloadclass, TBaseType.rrw_drop, "workload", "class", " ", " ", " ", " ");
4725        addhanacmds(ESqlStatementType.sstdropworkloadmapping, TBaseType.rrw_drop, "workload", "mapping", " ", " ", " ", " ");
4726
4727        addhanacmds(ESqlStatementType.sstExplain, TBaseType.rrw_explain, "plan", " ", " ", " ", " ", " ");
4728        addhanacmds(ESqlStatementType.sstexport, TBaseType.rrw_hana_export, " ", " ", " ", " ", " ", " ");
4729
4730//GRANT
4731        addhanacmds(ESqlStatementType.sstGrant, TBaseType.rrw_grant, " ", " ", " ", " ", " ", " ");
4732
4733        addhanacmds(ESqlStatementType.sstimport, TBaseType.rrw_hana_import, " ", " ", " ", " ", " ", " ");
4734        addhanacmds(ESqlStatementType.sstimportfrom, TBaseType.rrw_hana_import, "from", " ", " ", " ", " ", " ");
4735        addhanacmds(ESqlStatementType.sstimportscan, TBaseType.rrw_hana_import, "scan", " ", " ", " ", " ", " ");
4736
4737//insert
4738        addhanacmds(ESqlStatementType.sstinsert, TBaseType.rrw_insert, " ", " ", " ", " ", " ", " ");
4739
4740//
4741        addhanacmds(ESqlStatementType.sstload, TBaseType.rrw_load, " ", " ", " ", " ", " ", " ");
4742        addhanacmds(ESqlStatementType.sstlocktable, TBaseType.rrw_lock, "table", " ", " ", " ", " ", " ");
4743
4744        addhanacmds(ESqlStatementType.sstmerge, TBaseType.rrw_merge, "into", " ", " ", " ", " ", " ");
4745
4746        addhanacmds(ESqlStatementType.sstmergedelta, TBaseType.rrw_merge, "delta", " ", " ", " ", " ", " ");
4747        addhanacmds(ESqlStatementType.sstmergedelta, TBaseType.rrw_merge,"history","delta"," "," "," "," ");
4748
4749        addhanacmds(ESqlStatementType.sstrecoverdata, TBaseType.rrw_hana_recover,"data"," "," "," "," "," ");
4750        addhanacmds(ESqlStatementType.sstrecoverdatabase, TBaseType.rrw_hana_recover, "database", " ", " ", " ", " ", " ");
4751        addhanacmds(ESqlStatementType.sstrefreshstatistics, TBaseType.rrw_refresh, "statistics", " ", " ", " ", " ", " ");
4752        addhanacmds(ESqlStatementType.sstrenamecollection, TBaseType.rrw_rename,"collection"," "," "," "," "," ");
4753        addhanacmds(ESqlStatementType.sstrenamecolumn, TBaseType.rrw_rename,"column"," "," "," "," "," ");
4754        addhanacmds(ESqlStatementType.sstrenamedatabase, TBaseType.rrw_rename,"database"," "," "," "," "," ");
4755        addhanacmds(ESqlStatementType.sstrenameindex, TBaseType.rrw_rename,"index"," "," "," "," "," ");
4756        addhanacmds(ESqlStatementType.sstrenametable, TBaseType.rrw_rename,"table"," "," "," "," "," ");
4757        addhanacmds(ESqlStatementType.sstreplace, TBaseType.rrw_replace, " ", " ", " ", " ", " ", " ");
4758
4759        addhanacmds(ESqlStatementType.sstRevoke, TBaseType.rrw_revoke, " ", " ", " ", " ", " ", " ");
4760
4761        addhanacmds(ESqlStatementType.sstrollback, TBaseType.rrw_rollback, " ", " ", " ", " ", " ", " ");
4762
4763        addhanacmds(ESqlStatementType.sstsavepoint, TBaseType.rrw_savepoint, " ", " ", " ", " ", " ", " ");
4764//SELECT
4765        addhanacmds(ESqlStatementType.sstselect, TBaseType.rrw_select, " ", " ", " ", " ", " ", " ");
4766
4767//SET
4768        addhanacmds(ESqlStatementType.sstset, TBaseType.rrw_set, " ", " ", " ", " ", " ", " ");
4769        addhanacmds(ESqlStatementType.sssethistorysession, TBaseType.rrw_set, "history", "session", " ", " ", " ", " ");
4770        addhanacmds(ESqlStatementType.sstsetpse, TBaseType.rrw_set, "pse", " ", " ", " ", " ", " ");
4771        addhanacmds(ESqlStatementType.sstsetschema, TBaseType.rrw_set, "schema", " ", " ", " ", " ", " ");
4772        addhanacmds(ESqlStatementType.sstsetsystemlicense, TBaseType.rrw_set, "system", "license", " ", " ", " ", " ");
4773        addhanacmds(ESqlStatementType.sstsettransaction, TBaseType.rrw_set, "transaction", " ", " ", " ", " ", " ");
4774        addhanacmds(ESqlStatementType.sstsettransactionautocommit, TBaseType.rrw_set, "transaction", "autocommit", " ", " ", " ", " ");
4775
4776        addhanacmds(ESqlStatementType.sstStartTransaction, TBaseType.rrw_start, "transaction", " ", " ", " ", " ", " ");
4777
4778
4779//TRUNCATE TABLE
4780        addhanacmds(ESqlStatementType.ssttruncatecollection, TBaseType.rrw_truncate, "collection", " ", " ", " ", " ", " ");
4781        addhanacmds(ESqlStatementType.ssttruncatetable, TBaseType.rrw_truncate, "table", " ", " ", " ", " ", " ");
4782        addhanacmds(ESqlStatementType.sstunload, TBaseType.rrw_hana_unload, " ", " ", " ", " ", " ", " ");
4783        addhanacmds(ESqlStatementType.sstunset, TBaseType.rrw_hana_unset, " ", " ", " ", " ", " ", " ");
4784        addhanacmds(ESqlStatementType.sstunsetpse, TBaseType.rrw_hana_unset, "pse", " ", " ", " ", " ", " ");
4785        addhanacmds(ESqlStatementType.sstunsetsystemlicense, TBaseType.rrw_hana_unset, "system", "license", " ", " ", " ", " ");
4786
4787//UPDATE
4788        addhanacmds(ESqlStatementType.sstupdate, TBaseType.rrw_update, " ", " ", " ", " ", " ", " ");
4789
4790        addhanacmds(ESqlStatementType.sstupsert, TBaseType.rrw_hana_upsert, " ", " ", " ", " ", " ", " ");
4791        addhanacmds(ESqlStatementType.sstvalidateLDAPProvider, TBaseType.rrw_hana_validate, "ldap", "provider", " ", " ", " ", " ");
4792        addhanacmds(ESqlStatementType.sstvalidateUser, TBaseType.rrw_hana_validate, "user", " ", " ", " ", " ", " ");
4793
4794    }
4795
4796ESqlStatementType findsybasecmd(TSourceToken ptoken){
4797    if (sybasecmds.size() == 0) {initsybasecmds();}
4798    return finddbcmd(ptoken,sybasecmds);
4799}
4800
4801    ESqlStatementType findmssqlcmd(TSourceToken ptoken){
4802        if (mssqlcmds.size() == 0) {initmssqlcmds();}
4803        return finddbcmd(ptoken,mssqlcmds);
4804    }
4805
4806    ESqlStatementType findteradatacmd(TSourceToken ptoken){
4807    if (teradatacmds.size() == 0) {initteradatacmds();}
4808    return finddbcmd(ptoken,teradatacmds);
4809}
4810
4811ESqlStatementType findpostgresqlcmd(TSourceToken ptoken){
4812    if (postgresqlcmds.size() == 0) {initpostgresqlcmds();}
4813    return finddbcmd(ptoken,postgresqlcmds);
4814}
4815
4816    ESqlStatementType findredshiftcmd(TSourceToken ptoken){
4817        if (redshiftcmds.size() == 0) {initredshiftcmds();}
4818        return finddbcmd(ptoken,redshiftcmds);
4819    }
4820
4821
4822    ESqlStatementType findgreenplumcmd(TSourceToken ptoken){
4823    if (greenplumcmds.size() == 0) {initgreenplumcmds();}
4824    return finddbcmd(ptoken,greenplumcmds);
4825}
4826
4827
4828ESqlStatementType findnetezzacmd(TSourceToken ptoken){
4829    if (netezzacmds.size() == 0) {initnetezzacmds();}
4830    return finddbcmd(ptoken,netezzacmds);
4831}
4832
4833ESqlStatementType findsparksqlcmd(TSourceToken ptoken){
4834        if (sparksqlcmds.size() == 0) {initsparksqlcmds();}
4835        return finddbcmd(ptoken,sparksqlcmds);
4836    }
4837
4838ESqlStatementType finddatabrickscmd(TSourceToken ptoken){
4839    if (databrickscmds.size() == 0) {initdatabrickscmds();}
4840    return finddbcmd(ptoken,databrickscmds);
4841}
4842    ESqlStatementType findgaussdbcmd(TSourceToken ptoken){
4843        if (gaussdbcmds.size() == 0) {initgaussdbcmds();}
4844        return finddbcmd(ptoken,gaussdbcmds);
4845    }
4846ESqlStatementType findprestocmd(TSourceToken ptoken){
4847    if (prestocmds.size() == 0) {initprestocmds();}
4848    return finddbcmd(ptoken,prestocmds);
4849}
4850
4851ESqlStatementType findathenacmd(TSourceToken ptoken){
4852    if (athenacmds.size() == 0) {initathenacmds();}
4853    return finddbcmd(ptoken,athenacmds);
4854}
4855
4856ESqlStatementType findmysqlcmd(TSourceToken ptoken){
4857    if (mysqlcmds.size() == 0) {initmysqlcmds();}
4858    return finddbcmd(ptoken,mysqlcmds);
4859}
4860
4861ESqlStatementType findhivecmd(TSourceToken ptoken){
4862        if (hivecmds.size() == 0) {inithivecmds();}
4863        return finddbcmd(ptoken,hivecmds);
4864    }
4865
4866ESqlStatementType finddb2cmd(TSourceToken ptoken){
4867            if (db2cmds.size() == 0) {initdb2cmds();}
4868            return finddbcmd(ptoken,db2cmds);
4869        }
4870
4871
4872ESqlStatementType findoraclecmd(TSourceToken ptoken){
4873            if (oraclecmds.size() == 0) {initoraclecmds();}
4874            return finddbcmd(ptoken,oraclecmds);
4875        }
4876
4877ESqlStatementType findmdxcmd(TSourceToken ptoken){
4878                    if (mdxcmds.size() == 0) {initmdxcmds();}
4879                    return finddbcmd(ptoken,mdxcmds);
4880                }
4881
4882ESqlStatementType findinformixcmd(TSourceToken ptoken){
4883                    if (informixcmds.size() == 0) {initinformixcmds();}
4884                    return finddbcmd(ptoken,informixcmds);
4885                }
4886
4887ESqlStatementType findhanacmd(TSourceToken ptoken){
4888    if (hanacmds.size() == 0) {inithanacmds();}
4889    return finddbcmd(ptoken,hanacmds);
4890}
4891
4892ESqlStatementType findverticacmd(TSourceToken ptoken){
4893    if (verticacmds.size() == 0) {initverticacmds();}
4894    return finddbcmd(ptoken,verticacmds);
4895}
4896
4897ESqlStatementType findcouchbasecmd(TSourceToken ptoken){
4898    if (couchbasecmds.size() == 0) {initcouchbasecmds();}
4899    return finddbcmd(ptoken,couchbasecmds);
4900}
4901
4902ESqlStatementType findsnowflakecmd(TSourceToken ptoken){
4903    if (snowflakecmds.size() == 0) {initsnowflakecmds();}
4904    return finddbcmd(ptoken,snowflakecmds);
4905}
4906
4907ESqlStatementType findbigquerycmd(TSourceToken ptoken){
4908    if (bigquerycmds.size() == 0) {initbigquerycmds();}
4909    return finddbcmd(ptoken,bigquerycmds);
4910}
4911
4912TCustomSqlStatement isnetezza(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
4913    TCustomSqlStatement ret = null;
4914
4915    gnewsqlstatementtype = ESqlStatementType.sstinvalid;
4916
4917    if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
4918       || (pcst.tokencode  == TBaseType.cmtslashstar)
4919       || (pcst.tokencode  == TBaseType.lexspace)
4920       || (pcst.tokencode  == TBaseType.lexnewline)
4921        || (pcst.tokentype == ETokenType.ttsemicolon) )
4922    {
4923      return null;
4924    }
4925
4926    int lcpos = pcst.posinlist;
4927    TSourceTokenList lcsourcetokenlist = pcst.container;
4928    TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
4929
4930    //subquery after semicolon or at first line
4931    if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
4932      {
4933        int k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
4934        if ( k >0 )
4935          {
4936            ret = new TSelectSqlStatement(pdbvendor);
4937          }
4938
4939          k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_with,1,"("); // ( with
4940          if ( k >0 )
4941          {
4942              ret = new TSelectSqlStatement(pdbvendor);
4943          }
4944
4945        return ret;
4946      }
4947
4948    //cte
4949    if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
4950      {
4951        ret = findcte(pcst,pdbvendor);
4952        if ( (ret != null) )  return ret;
4953      }
4954
4955    gnewsqlstatementtype = findnetezzacmd(pcst);
4956
4957    TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
4958    switch (gnewsqlstatementtype) {    //
4959        case sstinvalid:
4960          {
4961            ret = null;
4962
4963            if ( pstate == EFindSqlStateType.stnormal )
4964              {
4965              }
4966              break;
4967          }
4968        case sstselect:
4969          {
4970            boolean lcisnewsql = true;
4971
4972            if ( pstate != EFindSqlStateType.stnormal )
4973              {
4974                // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
4975                if ( (lcprevsolidtoken != null) )
4976                  {
4977                    if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
4978                      lcisnewsql = false; //subqery
4979                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
4980                      lcisnewsql = false;
4981                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
4982                      lcisnewsql = false;
4983                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
4984                      lcisnewsql = false;
4985                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
4986                      lcisnewsql = false;
4987                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
4988                      lcisnewsql = false;
4989                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
4990                      {
4991                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
4992                          lcisnewsql = false;
4993                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
4994                          lcisnewsql = false;
4995                      }
4996
4997                    if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
4998                      {
4999                        TSourceToken lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
5000                        if ( (lcpprevsolidtoken != null) )
5001                          {
5002                            if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
5003                              lcisnewsql = false;
5004                          }
5005                      }
5006
5007                  }
5008
5009
5010                if ( (lccurrentsqlstatement != null) )
5011                  {
5012                    if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
5013                      lcisnewsql = false;
5014                  }
5015
5016              }
5017
5018            if ( lcisnewsql )
5019              ret = new TSelectSqlStatement(pdbvendor);
5020
5021            break;
5022          }
5023        case sstinsert:
5024          {
5025            boolean lcisnewsql = true;
5026            if ( pstate != EFindSqlStateType.stnormal )
5027              {
5028                if ( (lccurrentsqlstatement != null) )
5029                  {
5030
5031                  }
5032              }
5033
5034            if ( lcisnewsql )
5035              ret = new TInsertSqlStatement(pdbvendor);
5036
5037            break;
5038          }
5039        case sstupdate:
5040          {
5041            boolean lcisnewsql = true;
5042            if ( pstate != EFindSqlStateType.stnormal )
5043              {
5044                lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
5045                if ( (lcprevsolidtoken != null) )
5046                  { //
5047                    if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
5048                      lcisnewsql = false;
5049                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
5050                      lcisnewsql = false;
5051                  }
5052
5053                TSourceToken lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
5054                if ( (lcnextsolidtoken != null) )
5055                  {
5056                    if ( lcnextsolidtoken.tokentype == ETokenType.ttleftparenthesis)
5057                      {
5058                        int k = lcsourcetokenlist.solidtokenafterpos(lcnextsolidtoken.posinlist,TBaseType.rrw_select,1,"(");
5059                        if ( k  == 0 ) lcisnewsql = false;
5060                      }
5061                  }
5062
5063
5064                if ( (lccurrentsqlstatement != null) )
5065                  {
5066                  }
5067              }
5068
5069            if ( lcisnewsql )
5070              {
5071                ret = new TUpdateSqlStatement(pdbvendor);
5072                ret.dummytag = 1; // means set clause in update is not found yet, used to seperate set clause from set statement
5073              }
5074            break;
5075          }
5076        case sstdelete:
5077          {
5078            boolean lcisnewsql = true;
5079
5080            if ( pstate != EFindSqlStateType.stnormal )
5081              {
5082                lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
5083                if ( (lcprevsolidtoken != null) )
5084                  {
5085                    if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
5086                      lcisnewsql = false;
5087                  }
5088
5089                if ( (lccurrentsqlstatement != null) )
5090                  {
5091                  }
5092              }
5093
5094            if ( lcisnewsql )
5095              ret = new TDeleteSqlStatement(pdbvendor);
5096
5097            break;
5098          }
5099        case sstTruncate:
5100          {
5101            ret = new TTruncateStatement(pdbvendor);
5102            ret.sqlstatementtype = gnewsqlstatementtype;
5103            break;
5104          }
5105        case sstcreatetable:
5106        case sstnetezzaCreateExternalTable:
5107          {
5108            ret = new TCreateTableSqlStatement(pdbvendor);
5109            break;
5110          }
5111        case sstcreateview:
5112          {
5113            ret = new TCreateViewSqlStatement(pdbvendor);
5114              break;
5115          }
5116        case sstcreatematerializedview:{
5117            ret = new TCreateMaterializedSqlStatement(pdbvendor);
5118            break;
5119        }
5120        case sstcreatedatabase:
5121          {
5122            ret = new TCreateDatabaseSqlStatement(pdbvendor);
5123              break;
5124          }
5125        case sstdroptable:
5126          {
5127            ret = new TDropTableSqlStatement(pdbvendor);
5128              break;
5129          }
5130        case sstdropview:
5131          {
5132           ret = new TDropViewSqlStatement(pdbvendor);
5133              break;
5134          }
5135        case sstaltertable:
5136          {
5137            ret = new TAlterTableStatement(pdbvendor);
5138              break;
5139          }
5140        case sstaltersession:
5141          {
5142            ret = new TAlterSessionStatement(pdbvendor);
5143              break;
5144          }
5145        case sstnetezzaGroomTable:
5146        {
5147            ret = new TNetezzaGroomTable(pdbvendor);
5148            break;
5149        }
5150        case sstnetezzaGenerateStatistics:
5151        {
5152            ret = new TNetezzaGenerateStatistics(pdbvendor);
5153            break;
5154        }
5155        case sstnetezzaAlterTable:
5156        {
5157            ret = new TAlterTableStatement(pdbvendor);
5158            break;
5159        }
5160        case sstnetezzaDropSchema:
5161        {
5162            ret = new TDropSchemaSqlStatement(pdbvendor);
5163            break;
5164        }
5165        case sstnetezzaCreateUser:
5166        {
5167            ret = new TCreateUserStmt(pdbvendor);
5168            break;
5169        }
5170        case sstnetezzaAlterView:
5171        {
5172            ret = new TAlterViewStatement(pdbvendor);
5173            break;
5174        }
5175        case sstnetezzaAlterDatabase:
5176        {
5177            ret = new TAlterDatabaseStmt(pdbvendor);
5178            break;
5179        }
5180        case sstAlterSchema:
5181        {
5182            ret = new TAlterSchemaStmt(pdbvendor);
5183            break;
5184        }
5185        case sstAlterSynonym:
5186        {
5187            ret = new TAlterSynonymStmt(pdbvendor);
5188            break;
5189        }
5190        case sstnetezzaDropTable:
5191        {
5192            ret = new TDropTableSqlStatement(pdbvendor);
5193            break;
5194        }
5195        case sstnetezzaDropView:
5196        {
5197            ret = new TDropViewSqlStatement(pdbvendor);
5198            break;
5199        }
5200        case sstmerge:
5201        {
5202            ret = new TMergeSqlStatement(pdbvendor);
5203            break;
5204        }
5205        case sstdropprocedure:
5206        {
5207            ret = new TDropProcedureStmt(pdbvendor);
5208            break;
5209        }
5210        case sstdropsynonym:
5211            ret = new TDropSynonymStmt(pdbvendor);
5212            break;
5213        case sstdropdatabase:
5214            ret = new TDropDatabaseStmt(pdbvendor);
5215            break;
5216        case sstcall:
5217            ret = new TCallStatement(pdbvendor);
5218            break;
5219        case sstcreatesynonym:
5220            ret = new TCreateSynonymStmt(pdbvendor);
5221            break;
5222        case sstcreatesequence:
5223            ret = new TCreateSequenceStmt(pdbvendor);
5224            break;
5225        case sstnetezzaDropSequence:
5226            ret = new TDropSequenceStmt(pdbvendor);
5227            break;
5228        case sstnetezzaGrant:
5229            ret = new TGrantStmt(pdbvendor);
5230            break;
5231        case sstexecutestmt:
5232            ret = new TExecuteSqlStatement(pdbvendor);
5233            break;
5234        case sstlocktable:
5235            ret = new TLockTableStmt(pdbvendor);
5236            break;
5237        case sstnetezzaComment:
5238            ret = new TCommentOnSqlStmt(pdbvendor);
5239            break;
5240        case sstcreateprocedure:
5241            ret = new TCreateProcedureStmt(pdbvendor);
5242            break;
5243        case sstnetezzaCopy:
5244            ret = new TCopyStmt(pdbvendor);
5245            break;
5246        case sstExplain:
5247            ret = new TExplainPlan(pdbvendor);
5248            break;
5249        case sstSetCatalog:
5250            ret = new TSetCatalogStmt(pdbvendor);
5251            break;
5252        case sstSetSchema:
5253            ret = new TSetSchemaStmt(pdbvendor);
5254            break;
5255        case sstnetezzaCommit:
5256        case sstnetezzaRollback:
5257        case sstnetezzaRevoke:
5258        default:
5259          {
5260            ret = new TUnknownSqlStatement(pdbvendor);
5261            ret.sqlstatementtype = gnewsqlstatementtype;
5262            break;
5263          }
5264    }    // case
5265
5266    return ret;
5267}
5268
5269    TCustomSqlStatement isredshift(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
5270        TCustomSqlStatement ret = null;
5271
5272        gnewsqlstatementtype = ESqlStatementType.sstinvalid;
5273
5274        if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
5275                || (pcst.tokencode  == TBaseType.cmtslashstar)
5276                || (pcst.tokencode  == TBaseType.lexspace)
5277                || (pcst.tokencode  == TBaseType.lexnewline)
5278                || (pcst.tokentype == ETokenType.ttsemicolon) )
5279        {
5280            return null;
5281        }
5282
5283        int lcpos = pcst.posinlist;
5284        TSourceTokenList lcsourcetokenlist = pcst.container;
5285        TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
5286
5287        //subquery after semicolon or at first line
5288        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
5289        {
5290            int k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
5291            if ( k >0 )
5292            {
5293                ret = new TSelectSqlStatement(pdbvendor);
5294            }
5295
5296            return ret;
5297        }
5298
5299        //cte
5300        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
5301        {
5302            ret = findcte(pcst,pdbvendor);
5303            if ( (ret != null) )  return ret;
5304        }
5305
5306        gnewsqlstatementtype = findredshiftcmd(pcst);
5307
5308        TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
5309        switch (gnewsqlstatementtype) {    //
5310            case sstinvalid:
5311            {
5312                ret = null;
5313                break;
5314            }
5315            case sstselect:
5316            {
5317                boolean lcisnewsql = true;
5318
5319                if ( pstate != EFindSqlStateType.stnormal )
5320                {
5321                    // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
5322                    if ( (lcprevsolidtoken != null) )
5323                    {
5324                        if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
5325                            lcisnewsql = false; //subqery
5326                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
5327                            lcisnewsql = false;
5328                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
5329                            lcisnewsql = false;
5330                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
5331                            lcisnewsql = false;
5332                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
5333                            lcisnewsql = false;
5334                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
5335                            lcisnewsql = false;
5336                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
5337                        {
5338                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
5339                                lcisnewsql = false;
5340                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
5341                                lcisnewsql = false;
5342                        }
5343
5344                        if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
5345                        {
5346                            TSourceToken lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
5347                            if ( (lcpprevsolidtoken != null) )
5348                            {
5349                                if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
5350                                    lcisnewsql = false;
5351                            }
5352                        }
5353
5354                    }
5355
5356
5357                    if ( (lccurrentsqlstatement != null) )
5358                    {
5359                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
5360                            lcisnewsql = false;
5361                    }
5362
5363                }
5364
5365                if ( lcisnewsql )
5366                    ret = new TSelectSqlStatement(pdbvendor);
5367
5368                break;
5369            }
5370            case sstinsert:
5371            {
5372                boolean lcisnewsql = true;
5373                if ( pstate != EFindSqlStateType.stnormal )
5374                {
5375                    if ( (lccurrentsqlstatement != null) )
5376                    {
5377
5378                    }
5379                }
5380
5381                if ( lcisnewsql )
5382                    ret = new TInsertSqlStatement(pdbvendor);
5383
5384                break;
5385            }
5386            case sstupdate:
5387            {
5388                boolean lcisnewsql = true;
5389                if ( pstate != EFindSqlStateType.stnormal )
5390                {
5391                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
5392                    if ( (lcprevsolidtoken != null) )
5393                    { //
5394                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
5395                            lcisnewsql = false;
5396                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
5397                            lcisnewsql = false;
5398                    }
5399
5400                    TSourceToken lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
5401                    if ( (lcnextsolidtoken != null) )
5402                    {
5403                        if ( lcnextsolidtoken.tokentype == ETokenType.ttleftparenthesis)
5404                        {
5405                            int k = lcsourcetokenlist.solidtokenafterpos(lcnextsolidtoken.posinlist,TBaseType.rrw_select,1,"(");
5406                            if ( k  == 0 ) lcisnewsql = false;
5407                        }
5408                    }
5409
5410
5411                    if ( (lccurrentsqlstatement != null) )
5412                    {
5413                    }
5414                }
5415
5416                if ( lcisnewsql )
5417                {
5418                    ret = new TUpdateSqlStatement(pdbvendor);
5419                    ret.dummytag = 1; // means set clause in update is not found yet, used to seperate set clause from set statement
5420                }
5421                break;
5422            }
5423            case sstdelete:
5424            {
5425                boolean lcisnewsql = true;
5426
5427                if ( pstate != EFindSqlStateType.stnormal )
5428                {
5429                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
5430                    if ( (lcprevsolidtoken != null) )
5431                    {
5432                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
5433                            lcisnewsql = false;
5434                    }
5435
5436                    if ( (lccurrentsqlstatement != null) )
5437                    {
5438                    }
5439                }
5440
5441                if ( lcisnewsql )
5442                    ret = new TDeleteSqlStatement(pdbvendor);
5443
5444                break;
5445            }
5446            case sstredshiftAbort:
5447            {
5448                ret = new TRedshiftAbort(pdbvendor);
5449                ret.sqlstatementtype = gnewsqlstatementtype;
5450                break;
5451            }
5452            case sstalterdatabase:
5453            {
5454                ret = new TAlterDatabaseStmt(pdbvendor);
5455                break;
5456            }
5457            case sstredshiftAlterGroup:
5458            {
5459                ret = new TAlterGroup(pdbvendor);
5460                break;
5461            }
5462            case sstredshiftAlterSchema:
5463            {
5464                ret = new TRedshiftAlterSchema(pdbvendor);
5465                break;
5466            }
5467            case sstaltertable:
5468            {
5469                ret = new TAlterTableStatement(pdbvendor);
5470                break;
5471            }
5472            case sstredshiftAlterUser:
5473            {
5474                ret = new TRedshiftAlterUser(pdbvendor);
5475                break;
5476            }
5477            case sstredshiftAnalyze:
5478            {
5479                ret = new TRedshiftAnalyze(pdbvendor);
5480                break;
5481            }
5482            case sstredshiftAnalyzeCompression:
5483            {
5484                ret = new TRedshiftAnalyzeCompression(pdbvendor);
5485                break;
5486            }
5487            case sstredshiftBegin:
5488            {
5489                ret = new TRedshiftBegin(pdbvendor);
5490                break;
5491            }
5492            case sstredshiftCancel:
5493            {
5494                ret = new TRedshiftCancel(pdbvendor);
5495                break;
5496            }
5497            case sstredshiftClose:
5498            {
5499                ret = new TCloseStmt(pdbvendor);
5500                break;
5501            }
5502            case sstredshiftComment:
5503            {
5504                ret = new TRedshiftComment(pdbvendor);
5505                break;
5506            }
5507            case sstredshiftCommit:
5508            {
5509                ret = new TRedshiftCommit(pdbvendor);
5510                break;
5511            }
5512            case sstredshiftCopy:
5513            {
5514                ret = new TRedshiftCopy(pdbvendor);
5515                break;
5516            }
5517            case sstcreatedatabase:
5518            {
5519                ret = new TCreateDatabaseSqlStatement(pdbvendor);
5520                break;
5521            }
5522            case sstredshiftCreateGroup:
5523            {
5524                ret = new TCreateGroup(pdbvendor);
5525                break;
5526            }
5527            case sstredshiftCreateSchema:
5528            {
5529                ret = new TCreateSchemaSqlStatement(pdbvendor);
5530                break;
5531            }
5532            case sstcreatetable:
5533            {
5534                ret = new TCreateTableSqlStatement(pdbvendor);
5535                break;
5536            }
5537            case sstredshiftCreateUser:
5538            {
5539                ret = new TRedshiftCreateUser(pdbvendor);
5540                break;
5541            }
5542            case sstcreateview:
5543            {
5544                ret = new TCreateViewSqlStatement(pdbvendor);
5545                break;
5546            }
5547            case sstredshiftDeallocate:
5548            {
5549                ret = new TRedshiftDeallocate(pdbvendor);
5550                break;
5551            }
5552            case sstredshiftDeclare:
5553            {
5554                ret = new TRedshiftDeclare(pdbvendor);
5555                break;
5556            }
5557            case sstredshiftDropDatabase:
5558            {
5559                ret = new TDropDatabaseStmt(pdbvendor);
5560                break;
5561            }
5562            case sstredshiftDropGroup:
5563            {
5564                ret = new TDropGroup(pdbvendor);
5565                break;
5566            }
5567            case sstredshiftDropSchema:
5568            {
5569                ret = new TRedshiftDropSchema(pdbvendor);
5570                break;
5571            }
5572            case sstdroptable:
5573            {
5574                ret = new TDropTableSqlStatement(pdbvendor);
5575                break;
5576            }
5577            case sstredshiftDropUser:
5578            {
5579                ret = new TRedshiftDropUser(pdbvendor);
5580                break;
5581            }
5582            case sstdropview:
5583            {
5584                ret = new TDropViewSqlStatement(pdbvendor);
5585                break;
5586            }
5587            case sstredshiftEnd:
5588            {
5589                ret = new TRedshiftEnd(pdbvendor);
5590                break;
5591            }
5592            case sstExecutePreparedStmt:
5593            {
5594                ret = new TExecuteSqlStatement(pdbvendor);
5595                break;
5596            }
5597            case sstExplain:
5598            {
5599                ret = new TExplainPlan(pdbvendor);
5600                break;
5601            }
5602            case sstFetchFrom:
5603            {
5604                ret = new TFetchFromStmt(pdbvendor);
5605                break;
5606            }
5607            case sstGrant:
5608            {
5609                ret = new TGrantStmt(pdbvendor);
5610                break;
5611            }
5612            case sstredshiftLock:
5613            {
5614                ret = new TLockTableStmt(pdbvendor);
5615                break;
5616            }
5617            case sstredshiftPrepare:
5618            {
5619                ret = new TRedshiftPrepare(pdbvendor);
5620                break;
5621            }
5622            case sstredshiftReset:
5623            {
5624                ret = new TRedshiftReset(pdbvendor);
5625                break;
5626            }
5627            case sstRevoke:
5628            {
5629                ret = new TRevokeStmt(pdbvendor);
5630                break;
5631            }
5632            case sstredshiftRollback:
5633            {
5634                ret = new TRedshiftRollback(pdbvendor);
5635                break;
5636            }
5637            case sstredshiftSet:
5638            {
5639                ret = new TSetStmt(pdbvendor);
5640                break;
5641            }
5642            case sstredshiftSetSessionAuthorization:
5643            {
5644                ret = new TRedshiftSessionAuthorization(pdbvendor);
5645                break;
5646            }
5647            case sstredshiftShow:
5648            {
5649                ret = new TShowStmt(pdbvendor);
5650                break;
5651            }
5652            case sstStartTransaction:
5653            {
5654                ret = new TStartTransactionStmt(pdbvendor);
5655                break;
5656            }
5657            case sstTruncate:
5658            {
5659                ret = new TTruncateStatement(pdbvendor);
5660                break;
5661            }
5662            case sstredshiftUnload:
5663            {
5664                ret = new TUnloadStmt(pdbvendor);
5665                break;
5666            }
5667            case sstredshiftVacuum:
5668            {
5669                ret = new TRedshiftVacuum(pdbvendor);
5670                break;
5671            }
5672            case sstcreatefunction:
5673                ret = new TCreateFunctionStmt(pdbvendor);
5674                break;
5675            case sstcreateprocedure:
5676                ret = new TCreateProcedureStmt(pdbvendor);
5677                break;
5678            case sstcreatematerializedview:{
5679                ret = new TCreateMaterializedSqlStatement(pdbvendor);
5680                break;
5681            }
5682            case sstcall:
5683                ret = new TCallStatement(pdbvendor);
5684                break;
5685            case sstmerge:
5686            {
5687                ret = new TMergeSqlStatement(pdbvendor);
5688                break;
5689            }
5690            default:
5691            {
5692                ret = new TUnknownSqlStatement(pdbvendor);
5693                ret.sqlstatementtype = gnewsqlstatementtype;
5694                break;
5695            }
5696        }    // case
5697
5698        return ret;
5699    }
5700    TCustomSqlStatement isgaussdb(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
5701        TCustomSqlStatement ret = null;
5702
5703        gnewsqlstatementtype = ESqlStatementType.sstinvalid;
5704
5705        if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
5706                || (pcst.tokencode  == TBaseType.cmtslashstar)
5707                || (pcst.tokencode  == TBaseType.lexspace)
5708                || (pcst.tokencode  == TBaseType.lexnewline)
5709                || (pcst.tokentype == ETokenType.ttsemicolon) )
5710        {
5711            return null;
5712        }
5713
5714        int lcpos = pcst.posinlist;
5715        TSourceTokenList lcsourcetokenlist = pcst.container;
5716        TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
5717
5718        //subquery after semicolon or at first line
5719        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
5720        {
5721            int k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
5722            if ( k >0 )
5723            {
5724                ret = new TSelectSqlStatement(pdbvendor);
5725            }else{
5726                k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_with,1,"(");
5727                if ( k >0 )
5728                { // syntax like: (with ... )
5729                    ret = new TSelectSqlStatement(pdbvendor);
5730                }
5731            }
5732
5733            return ret;
5734        }
5735
5736        //cte
5737        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
5738        {
5739            ret = findcte(pcst,pdbvendor);
5740            if ( (ret != null) )  return ret;
5741        }
5742
5743        gnewsqlstatementtype = findgaussdbcmd(pcst);
5744
5745        TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
5746        switch (gnewsqlstatementtype) {    //
5747            case sstinvalid:
5748            {
5749                ret = null;
5750
5751                if ( pstate == EFindSqlStateType.stnormal )
5752                {
5753                    if ( pcst.tokencode == TBaseType.label_begin )
5754                    {
5755                        ret = new TCommonBlock(pdbvendor);
5756                        gnewsqlstatementtype = ret.sqlstatementtype;
5757
5758                    }
5759                    else if ( pcst.tokencode == TBaseType.rrw_declare )
5760                    {
5761                        ret = new TCommonBlock(pdbvendor);
5762                        gnewsqlstatementtype = ret.sqlstatementtype;
5763                    }
5764                    else if ( pcst.tokencode == TBaseType.rrw_begin )
5765                    {
5766                        // https://support.huaweicloud.com/distributed-devg-v3-opengauss/gaussdb-12-0498.html
5767                        // 有两种可能 1:开启匿名块,或 2:开启事务
5768                        boolean isBlock = true;
5769                        TSourceToken st = pcst.nextSolidToken();
5770                        if (st != null){
5771                            if ((st.tokencode == ';')
5772                                    ||(st.toString().equalsIgnoreCase("work"))
5773                                    ||(st.toString().equalsIgnoreCase("transaction"))
5774                            ){
5775                                isBlock = false;
5776                            }
5777                        }
5778                        if (isBlock){
5779                            ret = new TCommonBlock(pdbvendor);
5780                            gnewsqlstatementtype = ret.sqlstatementtype;
5781                        }else{
5782                            ret = new TStartTransactionStmt(pdbvendor);
5783                            gnewsqlstatementtype = ret.sqlstatementtype;
5784                            pcst.tokencode = TBaseType.GAUSSDB_BEGIN_TRANSACTION;
5785                        }
5786
5787                    }
5788                    else if ( pcst.tokencode == TBaseType.rrw_procedure )
5789                    {
5790                        ret = new TCreateProcedureStmt(pdbvendor);
5791                        // ret.sqlstatementtype = ESqlStatementType.sstplsql_createprocedure;
5792                        gnewsqlstatementtype = ret.sqlstatementtype;
5793                    }
5794                    else if ( pcst.tokencode == TBaseType.rrw_function )
5795                    {
5796                        ret = new TPlsqlCreateFunction(pdbvendor);
5797                        // ret.sqlstatementtype = ESqlStatementType.sstplsql_createfunction;
5798                        gnewsqlstatementtype = ret.sqlstatementtype;
5799                    }
5800                    else if ( pcst.tokencode == TBaseType.rrw_package )
5801                    {
5802                        ret = new TPlsqlCreatePackage(pdbvendor);
5803                        // ret.sqlstatementtype = ESqlStatementType.sstplsql_createpackage;
5804                        gnewsqlstatementtype = ret.sqlstatementtype;
5805                    }
5806                }
5807                break;
5808            }
5809            case sstpostgresqlDeclare:{
5810                // https://support.huaweicloud.com/distributed-devg-v3-opengauss/gaussdb-12-0554.html
5811                // declare cursor_name [ BINARY ] [ NO SCROLL ] CURSOR ..., 这是单个的定义游标语句
5812                // 下面这种类型的定义才是开始一个 匿名块
5813                // [DECLARE [declare_statements]]
5814                //BEGIN
5815                //execution_statements
5816                //END;
5817
5818                // 判断逻辑如下:
5819                // 1. 如果 declare 后直接跟 CURSOR, 那就是开启一个 匿名块
5820                // 2. 如果 declare 后直接跟的是一个 identifier, 那再检查之后的第2或3或4个token是否为 CURSOR,
5821                // 如果是,该语句为 单个的定义游标语句,否则为  匿名块
5822
5823                boolean isBlock = true;
5824                TSourceToken st = pcst.nextSolidToken();
5825                if (st != null){
5826                    if (st.tokencode == TBaseType.GAUSSDB_CURSOR){
5827                        isBlock = true;
5828                    }else if (st.tokencode == TBaseType.ident){
5829                        st = st.nextSolidToken();
5830                        if (st != null){
5831                            if ((st.tokencode == TBaseType.GAUSSDB_CURSOR)
5832                                    ||(st.tokencode == TBaseType.rrw_binary)
5833                                    ||(st.toString().equalsIgnoreCase("no"))
5834                            ){
5835                                isBlock = false;
5836                            }
5837                        }
5838                    }
5839                }
5840                if (isBlock){
5841                    ret = new TCommonBlock(pdbvendor);
5842                    gnewsqlstatementtype = ret.sqlstatementtype;
5843                }else{
5844                    ret = new TDeclareCursorStmt(pdbvendor);
5845                    gnewsqlstatementtype = ret.sqlstatementtype;
5846                    pcst.tokencode = TBaseType.GAUSSDB_DECLARE_SINGLE_STMT;
5847                }
5848
5849                break;
5850            }
5851            case sstmerge:
5852            {
5853                ret = new TMergeSqlStatement(pdbvendor);
5854                ret.sqlstatementtype = gnewsqlstatementtype;
5855                break;
5856            }
5857            case sstcreatesynonym:
5858                ret = new TCreateSynonymStmt(pdbvendor);
5859                break;
5860            case sstdropsynonym:
5861                ret = new TDropSynonymStmt(pdbvendor);
5862                break;
5863            case sstAlterPackage:
5864                ret = new TAlterPackageStmt(pdbvendor);
5865                break;
5866            case sstpostgresqlRefreshMaterializedView:
5867                ret = new TRefreshMaterializedViewStmt(pdbvendor);
5868                break;
5869            case sstAlterSynonym:
5870                ret = new TAlterSynonymStmt(pdbvendor);
5871                break;
5872            case sstsavepoint:
5873            {
5874                ret = new TSavepointStmt(pdbvendor);
5875                ret.sqlstatementtype = gnewsqlstatementtype;
5876                break;
5877            }
5878            case sstselect:
5879            {
5880                boolean lcisnewsql = true;
5881
5882                if ( pstate != EFindSqlStateType.stnormal )
5883                {
5884                    // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
5885                    if ( (lcprevsolidtoken != null) )
5886                    {
5887                        if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
5888                            lcisnewsql = false; //subqery
5889                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
5890                            lcisnewsql = false;
5891                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
5892                            lcisnewsql = false;
5893                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
5894                            lcisnewsql = false;
5895                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
5896                            lcisnewsql = false;
5897                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
5898                            lcisnewsql = false;
5899                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
5900                        {
5901                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
5902                                lcisnewsql = false;
5903                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
5904                                lcisnewsql = false;
5905                        }
5906
5907                        if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
5908                        {
5909                            TSourceToken lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
5910                            if ( (lcpprevsolidtoken != null) )
5911                            {
5912                                if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
5913                                    lcisnewsql = false;
5914                            }
5915                        }
5916
5917                    }
5918
5919
5920                    if ( (lccurrentsqlstatement != null) )
5921                    {
5922                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
5923                            lcisnewsql = false;
5924                    }
5925
5926                }
5927
5928                if ( lcisnewsql )
5929                    ret = new TSelectSqlStatement(pdbvendor);
5930
5931                break;
5932            }
5933            case sstinsert:
5934            {
5935                boolean lcisnewsql = true;
5936                if ( pstate != EFindSqlStateType.stnormal )
5937                {
5938                    if ( (lccurrentsqlstatement != null) )
5939                    {
5940
5941                    }
5942                }
5943
5944                if ( lcisnewsql )
5945                    ret = new TInsertSqlStatement(pdbvendor);
5946
5947                break;
5948            }
5949            case sstupdate:
5950            {
5951                boolean lcisnewsql = true;
5952                if ( pstate != EFindSqlStateType.stnormal )
5953                {
5954                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
5955                    if ( (lcprevsolidtoken != null) )
5956                    { //
5957                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
5958                            lcisnewsql = false;
5959                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
5960                            lcisnewsql = false;
5961                    }
5962
5963                    TSourceToken lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
5964                    if ( (lcnextsolidtoken != null) )
5965                    {
5966                        if ( lcnextsolidtoken.tokentype == ETokenType.ttleftparenthesis)
5967                        {
5968                            int k = lcsourcetokenlist.solidtokenafterpos(lcnextsolidtoken.posinlist,TBaseType.rrw_select,1,"(");
5969                            if ( k  == 0 ) lcisnewsql = false;
5970                        }
5971                    }
5972
5973
5974                    if ( (lccurrentsqlstatement != null) )
5975                    {
5976                    }
5977                }
5978
5979                if ( lcisnewsql )
5980                {
5981                    ret = new TUpdateSqlStatement(pdbvendor);
5982                    ret.dummytag = 1; // means set clause in update is not found yet, used to seperate set clause from set statement
5983                }
5984                break;
5985            }
5986            case sstdelete:
5987            {
5988                boolean lcisnewsql = true;
5989
5990                if ( pstate != EFindSqlStateType.stnormal )
5991                {
5992                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
5993                    if ( (lcprevsolidtoken != null) )
5994                    {
5995                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
5996                            lcisnewsql = false;
5997                    }
5998
5999                    if ( (lccurrentsqlstatement != null) )
6000                    {
6001                    }
6002                }
6003
6004                if ( lcisnewsql )
6005                    ret = new TDeleteSqlStatement(pdbvendor);
6006
6007                break;
6008            }
6009            case sstoraclecommit:
6010            {
6011                ret = new TUnknownSqlStatement(pdbvendor);
6012                ret.sqlstatementtype = gnewsqlstatementtype;
6013                break;
6014            }
6015            case sstoraclerollback:
6016            {
6017                ret = new TUnknownSqlStatement(pdbvendor);
6018                ret.sqlstatementtype = gnewsqlstatementtype;
6019                break;
6020            }
6021            case sstoraclesavepoint:
6022            {
6023                ret = new TUnknownSqlStatement(pdbvendor);
6024                ret.sqlstatementtype = gnewsqlstatementtype;
6025                break;
6026            }
6027            case sstoraclerevoke:
6028            {
6029                ret = new TUnknownSqlStatement(pdbvendor);
6030                ret.sqlstatementtype = gnewsqlstatementtype;
6031                break;
6032            }
6033            case sstoraclegrant:
6034            {
6035                ret = new TUnknownSqlStatement(pdbvendor);
6036                //ret = new TGrantStmt(pdbvendor);
6037                ret.sqlstatementtype = gnewsqlstatementtype;
6038                break;
6039            }
6040            case sstoracleanalyze:
6041            {
6042                ret = new TUnknownSqlStatement(pdbvendor);
6043                ret.sqlstatementtype = gnewsqlstatementtype;
6044                break;
6045            }
6046            case sstoracletruncate:
6047            {
6048                ret = new TUnknownSqlStatement(pdbvendor);
6049                ret.sqlstatementtype = gnewsqlstatementtype;
6050                break;
6051            }
6052            case sstcreatetable:
6053            {
6054                ret = new TCreateTableSqlStatement(pdbvendor);
6055                break;
6056            }
6057            case sstoraclecreateview:
6058            {
6059                ret = new TCreateViewSqlStatement(pdbvendor);
6060                break;
6061            }
6062            case sstcreatematerializedview:{
6063                ret = new TCreateMaterializedSqlStatement(pdbvendor);
6064                break;
6065            }
6066            case sstoraclecreateindex:
6067            {
6068                ret = new TCreateIndexSqlStatement(pdbvendor);
6069                break;
6070            }
6071            case sstoraclecreatedatabase:
6072            {
6073                ret = new TCreateDatabaseSqlStatement(pdbvendor);
6074                break;
6075            }
6076            case sstoracledroptable:
6077            {
6078                ret = new TDropTableSqlStatement(pdbvendor);
6079                break;
6080            }
6081            case sstoracledropview:
6082            {
6083                ret = new TDropViewSqlStatement(pdbvendor);
6084                break;
6085            }
6086            case sstoracledropindex:
6087            {
6088                ret = new TDropIndexSqlStatement(pdbvendor);
6089                break;
6090            }
6091            case sstaltertable:
6092            {
6093                ret = new TAlterTableStatement(pdbvendor);
6094                break;
6095            }
6096            case sstoraclealtersession:
6097            {
6098                ret = new TAlterSessionStatement(pdbvendor);
6099                break;
6100            }
6101            case sstplsql_createprocedure:
6102            {
6103                ret = new TPlsqlCreateProcedure(pdbvendor);
6104                ret.sqlstatementtype = gnewsqlstatementtype;
6105                // System.out.println(gnewsqlstatementtype);
6106                break;
6107            }
6108            case sstplsql_createfunction:
6109            {
6110                ret = new TPlsqlCreateFunction(pdbvendor);
6111                ret.sqlstatementtype = gnewsqlstatementtype;
6112                // System.out.println(gnewsqlstatementtype);
6113                break;
6114            }
6115            case sstplsql_createpackage:
6116            {
6117                ret = new TPlsqlCreatePackage(pdbvendor);
6118                ret.sqlstatementtype = gnewsqlstatementtype;
6119                // System.out.println(gnewsqlstatementtype);
6120                break;
6121            }
6122            case sstoraclecreatepackagebody:
6123            {
6124                ret = new TPlsqlCreatePackage(pdbvendor);
6125                ret.sqlstatementtype = gnewsqlstatementtype;
6126                //ret.sqlstatementtype = ESqlStatementType.sstplsql_createpackage;
6127                break;
6128            }
6129            case sstplsql_createtrigger:
6130            {
6131                ret = new TPlsqlCreateTrigger(pdbvendor);
6132                ret.sqlstatementtype = gnewsqlstatementtype;
6133                // System.out.println(gnewsqlstatementtype);
6134                break;
6135            }
6136            case sstplsql_execimmestmt:
6137            {
6138                ret = new TExecImmeStmt(pdbvendor);
6139                // ret.sqlstatementtype = gnewsqlstatementtype;
6140                // System.out.println(gnewsqlstatementtype);
6141                break;
6142            }
6143            case sstplsql_createtype_placeholder:
6144            {
6145                ret = new TPlsqlCreateType_Placeholder(pdbvendor);
6146                ret.sqlstatementtype = gnewsqlstatementtype;
6147                // System.out.println(gnewsqlstatementtype);
6148                break;
6149            }
6150            case sstplsql_createtypebody:
6151            {
6152                ret = new TPlsqlCreateTypeBody(pdbvendor);
6153                ret.sqlstatementtype = gnewsqlstatementtype;
6154                break;
6155            }
6156            case sstCommentOn:
6157            {
6158                ret = new TCommentOnSqlStmt(pdbvendor);
6159                break;
6160            }
6161            case sstoraclecreatesequence:
6162            {
6163                ret = new TCreateSequenceStmt(pdbvendor);
6164                break;
6165            }
6166            case sstoraclecreatesynonym:
6167            {
6168                ret = new TCreateSynonymStmt(pdbvendor);
6169                break;
6170            }
6171            case sstoraclecreatedirectory:
6172            {
6173                ret = new TOracleCreateDirectoryStmt(pdbvendor);
6174                break;
6175            }
6176            case sstpostgresqlCreateIndex:
6177                ret = new TCreateIndexSqlStatement(pdbvendor);
6178                break;
6179            case sstpostgresqlCreateView:
6180                ret = new TCreateViewSqlStatement(pdbvendor);
6181                break;
6182            case sstpostgresqlCreateFunction:
6183                ret = new TCreateFunctionStmt(pdbvendor);
6184                break;
6185            case sstcreatetrigger:
6186                ret = new TCreateTriggerStmt(pdbvendor);
6187                break;
6188            case sstpostgresqlMove:
6189                ret = new TMoveStmt(pdbvendor);
6190                break;
6191            case sstpostgresqlTruncate:
6192                ret = new TTruncateStatement(pdbvendor);
6193                break;
6194            case sstpostgresqlExecute:
6195                ret = new TExecuteSqlStatement(pdbvendor);
6196                break;
6197            case sstpostgresqlDropTable:
6198                ret = new TDropTableSqlStatement(pdbvendor);
6199                break;
6200            case sstPostgresqlBlock:
6201                ret = new TCommonBlock(pdbvendor);
6202                break;
6203            case sstVacuum:
6204                ret = new TVacuumStmt(pdbvendor);
6205                break;
6206            case sstReindex:
6207                ret = new TReindexStmt(pdbvendor);
6208                break;
6209            case sstcreateprocedure:
6210                ret = new TCreateProcedureStmt(pdbvendor);
6211                break;
6212            case sstpostgresqlCommit:
6213                ret = new TCommitStmt(pdbvendor);
6214                break;
6215            case sstpostgresqlCreateSchema:
6216                ret = new TCreateSchemaSqlStatement(pdbvendor);
6217                break;
6218            case sstpostgresqlDropSchema:
6219                ret = new TDropSchemaSqlStatement(pdbvendor);
6220                break;
6221            case sstpostgresqlShowSearchPath:
6222                ret = new TShowSearchPathStmt(pdbvendor);
6223                break;
6224            case sstpostgresqlCopy:
6225                ret = new TCopyStmt(pdbvendor);
6226                break;
6227            case sstcall:
6228                ret = new TCallStatement(pdbvendor);
6229                break;
6230            case sstpostgresqlAlterSchema:
6231                ret = new TAlterSchemaStmt(pdbvendor);
6232                break;
6233            case sstpostgresqlAlterfunction:
6234                ret = new TAlterFunctionStmt(pdbvendor);
6235                break;
6236            case sstStartTransaction:
6237            {
6238                ret = new TStartTransactionStmt(pdbvendor);
6239                break;
6240            }
6241            case sstpostgresqlComment:
6242                ret = new TCommentOnSqlStmt(pdbvendor);
6243                break;
6244            case sstpostgresqlShow:
6245                ret = new TShowStmt(pdbvendor);
6246                break;
6247            case sstpostgresqlSetSearchPath:
6248            case sstpostgresqlSet:
6249                ret = new TSetStmt(pdbvendor);
6250                break;
6251            case sstpostgresqlDropFunction:
6252                ret = new TDropFunctionStmt(pdbvendor);
6253                break;
6254            case sstpostgresqlDropTrigger:
6255                ret = new TDropTriggerSqlStatement(pdbvendor);
6256                break;
6257            case sstpostgresqlDropProcedure:
6258                ret = new TDropProcedureStmt(pdbvendor);
6259                break;
6260            case sstdropindex:
6261                ret = new TDropIndexSqlStatement(pdbvendor);
6262                break;
6263            case sstpostgresqlDropSequence:
6264                ret = new TDropSequenceStmt(pdbvendor);
6265                break;
6266            case sstpostgresqlDropView:
6267                ret = new TDropViewSqlStatement(pdbvendor);
6268                break;
6269            case sstpostgresqlCreateSequence:
6270                ret = new TCreateSequenceStmt(pdbvendor);
6271                break;
6272            case sstpostgresqlAlterSequence:
6273                ret = new TAlterSequenceStatement(pdbvendor);
6274                break;
6275            case sstpostgresqlCreateType:
6276                ret = new TCreateTypeStmt(pdbvendor);
6277                break;
6278            case sstcreateExtension:
6279                ret = new TCreateExtensionStmt(pdbvendor);
6280                break;
6281            case sstPostgresqlTable:
6282                ret = new TPostgresqlTableStmt(pdbvendor);
6283                break;
6284            case sstpostgresqlEnd:
6285                ret = new TEndTran(pdbvendor);
6286                break;
6287            case sstpostgresqlDo:
6288                boolean lcisnewsql = false;
6289
6290                if ( pstate == EFindSqlStateType.stnormal )
6291                {
6292                    TSourceToken lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
6293                    if ( (lcnextsolidtoken != null) )
6294                    {
6295                        if ( lcnextsolidtoken.tokencode == TBaseType.rrw_postgresql_function_delimiter )
6296                            lcisnewsql = true;
6297                        else if ( lcnextsolidtoken.tokencode == TBaseType.rrw_postgresql_language )
6298                            lcisnewsql = true;
6299                    }
6300                }
6301
6302                if ( lcisnewsql )
6303                    ret = new TDoExecuteBlockStmt(pdbvendor);
6304
6305                break;
6306            default:
6307            {
6308                ret = new TUnknownSqlStatement(pdbvendor);
6309                ret.sqlstatementtype = gnewsqlstatementtype;
6310                break;
6311            }
6312        }    // case
6313
6314        return ret;
6315    }
6316
6317    TCustomSqlStatement ispostgresql(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
6318        TCustomSqlStatement ret = null;
6319
6320        gnewsqlstatementtype = ESqlStatementType.sstinvalid;
6321
6322        if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
6323                || (pcst.tokencode  == TBaseType.cmtslashstar)
6324                || (pcst.tokencode  == TBaseType.lexspace)
6325                || (pcst.tokencode  == TBaseType.lexnewline)
6326                || (pcst.tokentype == ETokenType.ttsemicolon) )
6327        {
6328            return null;
6329        }
6330
6331        int lcpos = pcst.posinlist;
6332        TSourceTokenList lcsourcetokenlist = pcst.container;
6333        TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
6334
6335        //subquery after semicolon or at first line
6336        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
6337        {
6338            int k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
6339            if ( k >0 )
6340            {
6341                ret = new TSelectSqlStatement(pdbvendor);
6342            }
6343
6344            return ret;
6345        }
6346
6347        //cte
6348        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
6349        {
6350            ret = findcte(pcst,pdbvendor);
6351            if ( (ret != null) )  return ret;
6352        }
6353
6354        gnewsqlstatementtype = findpostgresqlcmd(pcst);
6355
6356        TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
6357        switch (gnewsqlstatementtype) {    //
6358            case sstinvalid:
6359            {
6360                ret = null;
6361
6362                if ( pstate == EFindSqlStateType.stnormal )
6363                {
6364                    if ( pcst.tokencode == TBaseType.label_begin )
6365                    {
6366                        ret = new TCommonBlock(pdbvendor);
6367                        gnewsqlstatementtype = ret.sqlstatementtype;
6368                    }
6369                    else if ( pcst.tokencode == TBaseType.rrw_declare )
6370                    {
6371                        ret = new TCommonBlock(pdbvendor);
6372                        gnewsqlstatementtype = ret.sqlstatementtype;
6373                    }
6374                    else if ( pcst.tokencode == TBaseType.rrw_begin )
6375                    {
6376                        ret = new TCommonBlock(pdbvendor);
6377                        gnewsqlstatementtype = ret.sqlstatementtype;
6378                    }
6379                    else if ( pcst.tokencode == TBaseType.rrw_procedure )
6380                    {
6381                        ret = new TCreateProcedureStmt(pdbvendor);
6382                        // ret.sqlstatementtype = ESqlStatementType.sstplsql_createprocedure;
6383                        gnewsqlstatementtype = ret.sqlstatementtype;
6384                    }
6385                    else if ( pcst.tokencode == TBaseType.rrw_function )
6386                    {
6387                        ret = new TPlsqlCreateFunction(pdbvendor);
6388                        // ret.sqlstatementtype = ESqlStatementType.sstplsql_createfunction;
6389                        gnewsqlstatementtype = ret.sqlstatementtype;
6390                    }
6391                    else if ( pcst.tokencode == TBaseType.rrw_package )
6392                    {
6393                        ret = new TPlsqlCreatePackage(pdbvendor);
6394                        // ret.sqlstatementtype = ESqlStatementType.sstplsql_createpackage;
6395                        gnewsqlstatementtype = ret.sqlstatementtype;
6396                    }
6397                }
6398                break;
6399            }
6400            case sstselect:
6401            {
6402                boolean lcisnewsql = true;
6403
6404                if ( pstate != EFindSqlStateType.stnormal )
6405                {
6406                    // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
6407                    if ( (lcprevsolidtoken != null) )
6408                    {
6409                        if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
6410                            lcisnewsql = false; //subqery
6411                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
6412                            lcisnewsql = false;
6413                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
6414                            lcisnewsql = false;
6415                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
6416                            lcisnewsql = false;
6417                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
6418                            lcisnewsql = false;
6419                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
6420                            lcisnewsql = false;
6421                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
6422                        {
6423                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
6424                                lcisnewsql = false;
6425                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
6426                                lcisnewsql = false;
6427                        }
6428
6429
6430                        if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
6431                        {
6432                            TSourceToken lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
6433                            if ( (lcpprevsolidtoken != null) )
6434                            {
6435                                if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
6436                                    lcisnewsql = false;
6437                            }
6438                        }
6439
6440                    }
6441
6442
6443                    if ( (lccurrentsqlstatement != null) )
6444                    {
6445                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
6446                            lcisnewsql = false;
6447                    }
6448
6449                }
6450
6451                if ( lcisnewsql )
6452                    ret = new TSelectSqlStatement(pdbvendor);
6453
6454                break;
6455            }
6456            case sstinsert:
6457            {
6458                boolean lcisnewsql = true;
6459                if ( pstate != EFindSqlStateType.stnormal )
6460                {
6461                    if ( (lccurrentsqlstatement != null) )
6462                    {
6463
6464                    }
6465                }
6466
6467                if ( lcisnewsql )
6468                    ret = new TInsertSqlStatement(pdbvendor);
6469
6470                break;
6471            }
6472            case sstupdate:
6473            {
6474                boolean lcisnewsql = true;
6475                if ( pstate != EFindSqlStateType.stnormal )
6476                {
6477                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
6478                    if ( (lcprevsolidtoken != null) )
6479                    { //
6480                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
6481                            lcisnewsql = false;
6482                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
6483                            lcisnewsql = false;
6484                    }
6485
6486                    TSourceToken lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
6487                    if ( (lcnextsolidtoken != null) )
6488                    {
6489                        if ( lcnextsolidtoken.tokentype == ETokenType.ttleftparenthesis)
6490                        {
6491                            int k = lcsourcetokenlist.solidtokenafterpos(lcnextsolidtoken.posinlist,TBaseType.rrw_select,1,"(");
6492                            if ( k  == 0 ) lcisnewsql = false;
6493                        }
6494                    }
6495
6496
6497                    if ( (lccurrentsqlstatement != null) )
6498                    {
6499                    }
6500                }
6501
6502                if ( lcisnewsql )
6503                {
6504                    ret = new TUpdateSqlStatement(pdbvendor);
6505                    ret.dummytag = 1; // means set clause in update is not found yet, used to seperate set clause from set statement
6506                }
6507                break;
6508            }
6509            case sstdelete:
6510            {
6511                boolean lcisnewsql = true;
6512
6513                if ( pstate != EFindSqlStateType.stnormal )
6514                {
6515                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
6516                    if ( (lcprevsolidtoken != null) )
6517                    {
6518                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
6519                            lcisnewsql = false;
6520                    }
6521
6522                    if ( (lccurrentsqlstatement != null) )
6523                    {
6524                    }
6525                }
6526
6527                if ( lcisnewsql )
6528                    ret = new TDeleteSqlStatement(pdbvendor);
6529
6530                break;
6531            }
6532            case sstmerge:
6533            {
6534                ret = new TMergeSqlStatement(pdbvendor);
6535                ret.sqlstatementtype = gnewsqlstatementtype;
6536                break;
6537            }
6538            case sstoraclecommit:
6539            {
6540                ret = new TUnknownSqlStatement(pdbvendor);
6541                ret.sqlstatementtype = gnewsqlstatementtype;
6542                break;
6543            }
6544            case sstoraclerollback:
6545            {
6546                ret = new TUnknownSqlStatement(pdbvendor);
6547                ret.sqlstatementtype = gnewsqlstatementtype;
6548                break;
6549            }
6550            case sstoraclesavepoint:
6551            {
6552                ret = new TUnknownSqlStatement(pdbvendor);
6553                ret.sqlstatementtype = gnewsqlstatementtype;
6554                break;
6555            }
6556            case sstoraclerevoke:
6557            {
6558                ret = new TUnknownSqlStatement(pdbvendor);
6559                ret.sqlstatementtype = gnewsqlstatementtype;
6560                break;
6561            }
6562            case sstoraclegrant:
6563            {
6564                ret = new TUnknownSqlStatement(pdbvendor);
6565                //ret = new TGrantStmt(pdbvendor);
6566                ret.sqlstatementtype = gnewsqlstatementtype;
6567                break;
6568            }
6569            case sstoracleanalyze:
6570            {
6571                ret = new TUnknownSqlStatement(pdbvendor);
6572                ret.sqlstatementtype = gnewsqlstatementtype;
6573                break;
6574            }
6575            case sstoracletruncate:
6576            {
6577                ret = new TUnknownSqlStatement(pdbvendor);
6578                ret.sqlstatementtype = gnewsqlstatementtype;
6579                break;
6580            }
6581            case sstcreatetable:
6582            {
6583                ret = new TCreateTableSqlStatement(pdbvendor);
6584                break;
6585            }
6586            case sstoraclecreateview:
6587            {
6588                ret = new TCreateViewSqlStatement(pdbvendor);
6589                break;
6590            }
6591            case sstcreatematerializedview:{
6592                ret = new TCreateMaterializedSqlStatement(pdbvendor);
6593                break;
6594            }
6595            case sstoraclecreateindex:
6596            {
6597                ret = new TCreateIndexSqlStatement(pdbvendor);
6598                break;
6599            }
6600            case sstoraclecreatedatabase:
6601            {
6602                ret = new TCreateDatabaseSqlStatement(pdbvendor);
6603                break;
6604            }
6605            case sstoracledroptable:
6606            {
6607                ret = new TDropTableSqlStatement(pdbvendor);
6608                break;
6609            }
6610            case sstoracledropview:
6611            {
6612                ret = new TDropViewSqlStatement(pdbvendor);
6613                break;
6614            }
6615            case sstoracledropindex:
6616            {
6617                ret = new TDropIndexSqlStatement(pdbvendor);
6618                break;
6619            }
6620            case sstaltertable:
6621            {
6622                ret = new TAlterTableStatement(pdbvendor);
6623                break;
6624            }
6625            case sstoraclealtersession:
6626            {
6627                ret = new TAlterSessionStatement(pdbvendor);
6628                break;
6629            }
6630            case sstplsql_createprocedure:
6631            {
6632                ret = new TPlsqlCreateProcedure(pdbvendor);
6633                ret.sqlstatementtype = gnewsqlstatementtype;
6634                // System.out.println(gnewsqlstatementtype);
6635                break;
6636            }
6637            case sstplsql_createfunction:
6638            {
6639                ret = new TPlsqlCreateFunction(pdbvendor);
6640                ret.sqlstatementtype = gnewsqlstatementtype;
6641                // System.out.println(gnewsqlstatementtype);
6642                break;
6643            }
6644            case sstplsql_createpackage:
6645            {
6646                ret = new TPlsqlCreatePackage(pdbvendor);
6647                ret.sqlstatementtype = gnewsqlstatementtype;
6648                // System.out.println(gnewsqlstatementtype);
6649                break;
6650            }
6651            case sstplsql_createtrigger:
6652            {
6653                ret = new TPlsqlCreateTrigger(pdbvendor);
6654                ret.sqlstatementtype = gnewsqlstatementtype;
6655                // System.out.println(gnewsqlstatementtype);
6656                break;
6657            }
6658            case sstplsql_execimmestmt:
6659            {
6660                ret = new TExecImmeStmt(pdbvendor);
6661                // ret.sqlstatementtype = gnewsqlstatementtype;
6662                // System.out.println(gnewsqlstatementtype);
6663                break;
6664            }
6665            case sstoraclecreatepackagebody:
6666            {
6667                ret = new TPlsqlCreatePackage(pdbvendor);
6668                ret.sqlstatementtype = ESqlStatementType.sstplsql_createpackage;
6669                break;
6670            }
6671            case sstplsql_createtype_placeholder:
6672            {
6673                ret = new TPlsqlCreateType_Placeholder(pdbvendor);
6674                ret.sqlstatementtype = gnewsqlstatementtype;
6675                // System.out.println(gnewsqlstatementtype);
6676                break;
6677            }
6678            case sstplsql_createtypebody:
6679            {
6680                ret = new TPlsqlCreateTypeBody(pdbvendor);
6681                ret.sqlstatementtype = gnewsqlstatementtype;
6682                break;
6683            }
6684            case sstCommentOn:
6685            {
6686                ret = new TCommentOnSqlStmt(pdbvendor);
6687                break;
6688            }
6689            case sstoraclecreatesequence:
6690            {
6691                ret = new TCreateSequenceStmt(pdbvendor);
6692                break;
6693            }
6694            case sstoraclecreatesynonym:
6695            {
6696                ret = new TCreateSynonymStmt(pdbvendor);
6697                break;
6698            }
6699            case sstoraclecreatedirectory:
6700            {
6701                ret = new TOracleCreateDirectoryStmt(pdbvendor);
6702                break;
6703            }
6704            case sstpostgresqlCreateIndex:
6705                ret = new TCreateIndexSqlStatement(pdbvendor);
6706                break;
6707            case sstpostgresqlCreateView:
6708                ret = new TCreateViewSqlStatement(pdbvendor);
6709                break;
6710            case sstpostgresqlCreateFunction:
6711                ret = new TCreateFunctionStmt(pdbvendor);
6712                break;
6713            case sstcreatetrigger:
6714                ret = new TCreateTriggerStmt(pdbvendor);
6715                break;
6716            case sstpostgresqlMove:
6717                ret = new TMoveStmt(pdbvendor);
6718                break;
6719            case sstpostgresqlTruncate:
6720                ret = new TTruncateStatement(pdbvendor);
6721                break;
6722            case sstpostgresqlExecute:
6723                ret = new TExecuteSqlStatement(pdbvendor);
6724                break;
6725            case sstpostgresqlDropTable:
6726                ret = new TDropTableSqlStatement(pdbvendor);
6727                break;
6728            case sstPostgresqlBlock:
6729                ret = new TCommonBlock(pdbvendor);
6730                break;
6731            case sstVacuum:
6732                ret = new TVacuumStmt(pdbvendor);
6733                break;
6734            case sstReindex:
6735                ret = new TReindexStmt(pdbvendor);
6736                break;
6737            case sstcreateprocedure:
6738                ret = new TCreateProcedureStmt(pdbvendor);
6739                break;
6740            case sstpostgresqlCommit:
6741                ret = new TCommitStmt(pdbvendor);
6742                break;
6743            case sstpostgresqlCreateSchema:
6744                ret = new TCreateSchemaSqlStatement(pdbvendor);
6745                break;
6746            case sstpostgresqlDropSchema:
6747                ret = new TDropSchemaSqlStatement(pdbvendor);
6748                break;
6749            case sstpostgresqlShowSearchPath:
6750                ret = new TShowSearchPathStmt(pdbvendor);
6751                break;
6752            case sstpostgresqlCopy:
6753                ret = new TCopyStmt(pdbvendor);
6754                break;
6755            case sstcall:
6756                ret = new TCallStatement(pdbvendor);
6757                break;
6758            case sstpostgresqlAlterSchema:
6759                ret = new TAlterSchemaStmt(pdbvendor);
6760                break;
6761            case sstpostgresqlAlterfunction:
6762                ret = new TAlterFunctionStmt(pdbvendor);
6763                break;
6764            case sstStartTransaction:
6765            {
6766                ret = new TStartTransactionStmt(pdbvendor);
6767                break;
6768            }
6769            case sstpostgresqlComment:
6770                ret = new TCommentOnSqlStmt(pdbvendor);
6771                break;
6772            case sstpostgresqlShow:
6773                ret = new TShowStmt(pdbvendor);
6774                break;
6775            case sstpostgresqlSetSearchPath:
6776            case sstpostgresqlSet:
6777                ret = new TSetStmt(pdbvendor);
6778                break;
6779            case sstpostgresqlDropFunction:
6780                ret = new TDropFunctionStmt(pdbvendor);
6781                break;
6782            case sstpostgresqlDropTrigger:
6783                ret = new TDropTriggerSqlStatement(pdbvendor);
6784                break;
6785            case sstpostgresqlDropProcedure:
6786                ret = new TDropProcedureStmt(pdbvendor);
6787                break;
6788            case sstdropindex:
6789                ret = new TDropIndexSqlStatement(pdbvendor);
6790                break;
6791            case sstpostgresqlDropSequence:
6792                ret = new TDropSequenceStmt(pdbvendor);
6793                break;
6794            case sstpostgresqlDropView:
6795                ret = new TDropViewSqlStatement(pdbvendor);
6796                break;
6797            case sstpostgresqlCreateSequence:
6798                ret = new TCreateSequenceStmt(pdbvendor);
6799                break;
6800            case sstpostgresqlAlterSequence:
6801                ret = new TAlterSequenceStatement(pdbvendor);
6802                break;
6803            case sstpostgresqlCreateType:
6804                ret = new TCreateTypeStmt(pdbvendor);
6805                break;
6806            case sstcreateExtension:
6807                ret = new TCreateExtensionStmt(pdbvendor);
6808                break;
6809            case sstPostgresqlTable:
6810                ret = new TPostgresqlTableStmt(pdbvendor);
6811                break;
6812            case sstpostgresqlDropMaterializedView:
6813                ret = new TDropMaterializedViewStmt(pdbvendor);
6814                break;
6815            case sstpostgresqlDo:
6816                boolean lcisnewsql = false;
6817
6818                if ( pstate == EFindSqlStateType.stnormal )
6819                {
6820                    TSourceToken lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
6821                    if ( (lcnextsolidtoken != null) )
6822                    {
6823                        if ( lcnextsolidtoken.tokencode == TBaseType.rrw_postgresql_function_delimiter )
6824                            lcisnewsql = true;
6825                        else if ( lcnextsolidtoken.tokencode == TBaseType.rrw_postgresql_language )
6826                            lcisnewsql = true;
6827                    }
6828                }
6829
6830                if ( lcisnewsql )
6831                    ret = new TDoExecuteBlockStmt(pdbvendor);
6832
6833                break;
6834            case sstpostgresqlDeclare:
6835                ret = new TCommonBlock(pdbvendor);
6836                gnewsqlstatementtype = ret.sqlstatementtype;
6837                break;
6838            case sstpostgresqlExplain:
6839                ret = new TExplainPlan(pdbvendor);
6840                gnewsqlstatementtype = ret.sqlstatementtype;
6841                break;
6842            case sstpostgresqlCreateRole:
6843                ret = new TCreateRoleStmt(pdbvendor);
6844                break;
6845            case sstpostgresqlAlterRole:
6846                ret = new TAlterRoleStmt(pdbvendor);
6847                break;
6848            case sstpostgresqlAlterIndex:
6849                ret = new TAlterIndexStmt(pdbvendor);
6850                break;
6851            default:
6852            {
6853                ret = new TUnknownSqlStatement(pdbvendor);
6854                ret.sqlstatementtype = gnewsqlstatementtype;
6855                break;
6856            }
6857        }    // case
6858
6859        return ret;
6860    }
6861
6862
6863
6864TCustomSqlStatement isbigquery(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
6865        TCustomSqlStatement ret = null;
6866
6867        gnewsqlstatementtype = ESqlStatementType.sstinvalid;
6868
6869        if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
6870                || (pcst.tokencode  == TBaseType.cmtslashstar)
6871                || (pcst.tokencode  == TBaseType.lexspace)
6872                || (pcst.tokencode  == TBaseType.lexnewline)
6873                || (pcst.tokentype == ETokenType.ttsemicolon) )
6874        {
6875            return null;
6876        }
6877
6878        int lcpos = pcst.posinlist;
6879        TSourceTokenList lcsourcetokenlist = pcst.container;
6880        TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
6881
6882        //subquery after semicolon or at first line
6883        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
6884        {
6885            int k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
6886            if ( k >0 )
6887            {
6888                ret = new TSelectSqlStatement(pdbvendor);
6889            }
6890
6891            return ret;
6892        }
6893
6894        //cte
6895        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
6896        {
6897            ret = findcte(pcst,pdbvendor);
6898            if ( (ret != null) )  return ret;
6899        }
6900
6901        gnewsqlstatementtype = findbigquerycmd(pcst);
6902
6903        TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
6904        switch (gnewsqlstatementtype) {    //
6905            case sstinvalid:
6906            {
6907                ret = null;
6908
6909                if ( pstate == EFindSqlStateType.stnormal )
6910                {
6911                    if ( pcst.tokencode == TBaseType.rrw_begin )
6912                    {
6913
6914                        ret = new TCommonBlock(pdbvendor);
6915                        gnewsqlstatementtype = ret.sqlstatementtype;
6916                    }
6917
6918                }
6919                break;
6920            }
6921            case sstselect:
6922            {
6923                boolean lcisnewsql = true;
6924
6925                if ( pstate != EFindSqlStateType.stnormal )
6926                {
6927                    // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
6928                    if ( (lcprevsolidtoken != null) )
6929                    {
6930                        if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
6931                            lcisnewsql = false; //subqery
6932                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
6933                            lcisnewsql = false;
6934                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
6935                            lcisnewsql = false;
6936                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
6937                            lcisnewsql = false;
6938                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
6939                            lcisnewsql = false;
6940                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
6941                            lcisnewsql = false;
6942                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
6943                        {
6944                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
6945                                lcisnewsql = false;
6946                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
6947                                lcisnewsql = false;
6948                        }
6949
6950                        if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
6951                        {
6952                            TSourceToken lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
6953                            if ( (lcpprevsolidtoken != null) )
6954                            {
6955                                if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
6956                                    lcisnewsql = false;
6957                            }
6958                        }
6959
6960                    }
6961
6962
6963                    if ( (lccurrentsqlstatement != null) )
6964                    {
6965                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
6966                            lcisnewsql = false;
6967                    }
6968
6969                }
6970
6971                if ( lcisnewsql )
6972                    ret = new TSelectSqlStatement(pdbvendor);
6973
6974                break;
6975            }
6976            case sstinsert:
6977            {
6978                boolean lcisnewsql = true;
6979                if ( pstate != EFindSqlStateType.stnormal )
6980                {
6981                    if ( (lccurrentsqlstatement != null) )
6982                    {
6983
6984                    }
6985                }
6986
6987                if ( lcisnewsql )
6988                    ret = new TInsertSqlStatement(pdbvendor);
6989
6990                break;
6991            }
6992            case sstupdate:
6993            {
6994                boolean lcisnewsql = true;
6995                if ( pstate != EFindSqlStateType.stnormal )
6996                {
6997                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
6998                    if ( (lcprevsolidtoken != null) )
6999                    { //
7000                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
7001                            lcisnewsql = false;
7002                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
7003                            lcisnewsql = false;
7004                    }
7005
7006                    TSourceToken lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
7007                    if ( (lcnextsolidtoken != null) )
7008                    {
7009                        if ( lcnextsolidtoken.tokentype == ETokenType.ttleftparenthesis)
7010                        {
7011                            int k = lcsourcetokenlist.solidtokenafterpos(lcnextsolidtoken.posinlist,TBaseType.rrw_select,1,"(");
7012                            if ( k  == 0 ) lcisnewsql = false;
7013                        }
7014                    }
7015
7016
7017                    if ( (lccurrentsqlstatement != null) )
7018                    {
7019                    }
7020                }
7021
7022                if ( lcisnewsql )
7023                {
7024                    ret = new TUpdateSqlStatement(pdbvendor);
7025                    ret.dummytag = 1; // means set clause in update is not found yet, used to seperate set clause from set statement
7026                }
7027                break;
7028            }
7029            case sstdelete:
7030            {
7031                boolean lcisnewsql = true;
7032
7033                if ( pstate != EFindSqlStateType.stnormal )
7034                {
7035                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
7036                    if ( (lcprevsolidtoken != null) )
7037                    {
7038                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
7039                            lcisnewsql = false;
7040                    }
7041
7042                    if ( (lccurrentsqlstatement != null) )
7043                    {
7044                    }
7045                }
7046
7047                if ( lcisnewsql )
7048                    ret = new TDeleteSqlStatement(pdbvendor);
7049
7050                break;
7051            }
7052            case sstmerge:
7053            {
7054                ret = new TMergeSqlStatement(pdbvendor);
7055                ret.sqlstatementtype = gnewsqlstatementtype;
7056                break;
7057            }
7058            case sstcreatetable:
7059            {
7060                ret = new TCreateTableSqlStatement(pdbvendor);
7061                break;
7062            }
7063            case sstcreateview:{
7064                ret = new TCreateViewSqlStatement(pdbvendor);
7065                break;
7066            }
7067            case sstaltertable:
7068            {
7069                ret = new TAlterTableStatement(pdbvendor);
7070                break;
7071            }
7072            case sstalterview:
7073            {
7074                ret = new TAlterViewStatement(pdbvendor);
7075                break;
7076            }
7077            case sstdroptable:
7078            {
7079                ret = new TDropTableSqlStatement(pdbvendor);
7080                break;
7081            }
7082            case sstdropview:
7083            {
7084                ret = new TDropViewSqlStatement(pdbvendor);
7085                break;
7086            }
7087            case sstcreatefunction:
7088            {
7089                ret = new TCreateFunctionStmt(pdbvendor);
7090                break;
7091            }
7092            case sstcreateprocedure:
7093            {
7094                ret = new TCreateProcedureStmt(pdbvendor);
7095                break;
7096            }
7097            case sstBigQueryDeclare:
7098                ret = new TMssqlDeclare(pdbvendor);
7099                break;
7100            case sstTruncate:
7101            {
7102                ret = new TTruncateStatement(pdbvendor);
7103                break;
7104            }
7105            case sstset:
7106            {
7107                boolean lcisnewsql = true;
7108                if ( pstate != EFindSqlStateType.stnormal )
7109                {
7110                    if ( TBaseType.assigned(lccurrentsqlstatement) )
7111                    {
7112                        lcisnewsql = false;
7113                    }
7114                }
7115
7116                if ( lcisnewsql )
7117                {
7118                    ret =  new TSetStmt(pdbvendor);
7119                }
7120                break;
7121            }
7122            case sstcreatematerializedview:{
7123                ret = new TCreateMaterializedSqlStatement(pdbvendor);
7124                break;
7125            }
7126            case sstdropprocedure:
7127            {
7128                ret = new TDropProcedureStmt(pdbvendor);
7129                break;
7130            }
7131            case sstdropfunction:
7132            {
7133                ret = new TDropFunctionStmt(pdbvendor);
7134                break;
7135            }
7136            case sstDropMaterializedView:
7137                ret = new TDropMaterializedViewStmt(pdbvendor);
7138                break;
7139            case sstcall:
7140                ret = new TCallStatement(pdbvendor);
7141                break;
7142            case sstBigQueryExportData:
7143                ret = new TExportDataStmt(pdbvendor);
7144                break;
7145            case sstBegin:
7146            {
7147                boolean isblock = false;
7148                int numOfSolidToken = 0;
7149                // if linebreak appears before the ;, then it a block, else it a
7150                TSourceToken st ;
7151                if (lcpos == lcsourcetokenlist.size() - 1){
7152                    // this is the last token
7153                }else{
7154                    for(int i=lcpos+1;i<lcsourcetokenlist.size();i++){
7155                        st = lcsourcetokenlist.get(i);
7156                        if (st.issolidtoken()){
7157                            numOfSolidToken++;
7158                        }
7159                        
7160
7161                        
7162                        if (st.tokencode == ';') {
7163                            if (numOfSolidToken<=3){
7164
7165                            }else{
7166                                isblock = true;
7167                            }
7168                            break;
7169                        }
7170
7171                        if (numOfSolidToken > 3){
7172                            isblock = true;
7173                            break;
7174                        }
7175                    }
7176                }
7177
7178                if (isblock){
7179                    ret = new TCommonBlock(pdbvendor);
7180                    gnewsqlstatementtype = ret.sqlstatementtype;
7181                }else{
7182                    ret = new TBeginTran(pdbvendor);
7183                    pcst.tokencode = TBaseType.rrw_bigquery_begin_transaction;
7184                }
7185
7186
7187                break;
7188            }
7189            case sstbegintran:
7190            {
7191                ret = new TBeginTran(pdbvendor);
7192                if (pcst.tokencode == TBaseType.rrw_begin){
7193                    pcst.tokencode = TBaseType.rrw_bigquery_begin_transaction;
7194                }
7195
7196                break;
7197            }
7198            case sstExecute:
7199            {
7200                ret =  new TExecImmeStmt(pdbvendor);
7201                break;
7202            }
7203            case sst_ifstmt:
7204                ret = new TIfStmt(pdbvendor);
7205                break;
7206            case sst_loopstmt:
7207                ret = new TLoopStmt(pdbvendor);
7208                break;
7209            case sstRepeat:
7210                ret = new TRepeatStmt(pdbvendor);
7211                break;
7212            case sstWhilestmt:
7213                ret = new TWhileStmt(pdbvendor);
7214                break;
7215            case sstForStmt:
7216                ret = new TForStmt(pdbvendor);
7217                break;
7218            case sst_casestmt:
7219                ret = new TCaseStmt(pdbvendor);
7220                break;
7221            case sstDropAssignment:
7222                ret = new TDropStmt(pdbvendor);
7223                break;
7224            case sstdropschema:
7225                ret = new TDropSchemaSqlStatement(pdbvendor);
7226                break;
7227            case sstDropReservation:
7228                ret = new TDropStmt(pdbvendor);
7229                break;
7230            case sstDropRowAccessPolicy:
7231                ret = new TDropStmt(pdbvendor);
7232                break;
7233            case sstDropSnapshotTable:
7234                ret = new TDropStmt(pdbvendor);
7235                break;
7236            case sstDropTableFunction:
7237                ret = new TDropStmt(pdbvendor);
7238                break;
7239            default:
7240            {
7241                ret = new TUnknownSqlStatement(pdbvendor);
7242                ret.sqlstatementtype = gnewsqlstatementtype;
7243                break;
7244            }
7245        }    // case
7246
7247        return ret;
7248    }
7249
7250TCustomSqlStatement issnowflake(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
7251    TCustomSqlStatement ret = null;
7252
7253    gnewsqlstatementtype = ESqlStatementType.sstinvalid;
7254
7255    if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
7256       || (pcst.tokencode  == TBaseType.cmtslashstar)
7257       || (pcst.tokencode  == TBaseType.lexspace)
7258       || (pcst.tokencode  == TBaseType.lexnewline)
7259        || (pcst.tokentype == ETokenType.ttsemicolon) )
7260    {
7261      return null;
7262    }
7263
7264    int lcpos = pcst.posinlist;
7265    TSourceTokenList lcsourcetokenlist = pcst.container;
7266    TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
7267
7268    //subquery after semicolon or at first line
7269    if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
7270      {
7271        int k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
7272        if ( k >0 )
7273          {
7274            ret = new TSelectSqlStatement(pdbvendor);
7275          }
7276        else{
7277            k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_with,1,"(");
7278            int k2 = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_as,3,"(");
7279            if (( k >0 ) && (k2 > 2))
7280            {
7281                ret = new TSelectSqlStatement(pdbvendor);
7282            }
7283
7284        }
7285
7286        return ret;
7287      }
7288
7289    //cte
7290    if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
7291      {
7292        ret = findcte(pcst,pdbvendor);
7293        if ( (ret != null) )  return ret;
7294      }
7295
7296    gnewsqlstatementtype = findsnowflakecmd(pcst);
7297
7298    TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
7299    switch (gnewsqlstatementtype) {    //
7300        case sstinvalid:
7301          {
7302            ret = null;
7303
7304            if ( pstate == EFindSqlStateType.stnormal )
7305              {
7306                if ( pcst.tokencode == TBaseType.label_begin )
7307                  {
7308                    ret = new TCommonBlock(pdbvendor);
7309                    gnewsqlstatementtype = ret.sqlstatementtype;
7310                  }
7311                else if ( pcst.tokencode == TBaseType.rrw_declare )
7312                  {
7313                    ret = new TCommonBlock(pdbvendor);
7314                    gnewsqlstatementtype = ret.sqlstatementtype;
7315                  }
7316                else if ( pcst.tokencode == TBaseType.rrw_begin )
7317                  {
7318                    ret = new TCommonBlock(pdbvendor);
7319                    gnewsqlstatementtype = ret.sqlstatementtype;
7320                  }
7321                else if ( pcst.tokencode == TBaseType.rrw_procedure )
7322                  {
7323                    ret = new TPlsqlCreateProcedure(pdbvendor);
7324                    // ret.sqlstatementtype = ESqlStatementType.sstplsql_createprocedure;
7325                    gnewsqlstatementtype = ret.sqlstatementtype;
7326                  }
7327                else if ( pcst.tokencode == TBaseType.rrw_function )
7328                  {
7329                    ret = new TPlsqlCreateFunction(pdbvendor);
7330                    // ret.sqlstatementtype = ESqlStatementType.sstplsql_createfunction;
7331                    gnewsqlstatementtype = ret.sqlstatementtype;
7332                  }
7333                else if ( pcst.tokencode == TBaseType.rrw_package )
7334                  {
7335                    ret = new TPlsqlCreatePackage(pdbvendor);
7336                   // ret.sqlstatementtype = ESqlStatementType.sstplsql_createpackage;
7337                    gnewsqlstatementtype = ret.sqlstatementtype;
7338                  }
7339              }
7340              break;
7341          }
7342        case sstselect:
7343          {
7344            boolean lcisnewsql = true;
7345
7346            if ( pstate != EFindSqlStateType.stnormal )
7347              {
7348                // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
7349                if ( (lcprevsolidtoken != null) )
7350                  {
7351                    if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
7352                      lcisnewsql = false; //subqery
7353                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
7354                      lcisnewsql = false;
7355                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
7356                      lcisnewsql = false;
7357                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
7358                      lcisnewsql = false;
7359                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
7360                      lcisnewsql = false;
7361                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
7362                      lcisnewsql = false;
7363                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
7364                      {
7365                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
7366                          lcisnewsql = false;
7367                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
7368                          lcisnewsql = false;
7369                      }
7370
7371                    if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
7372                      {
7373                        TSourceToken lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
7374                        if ( (lcpprevsolidtoken != null) )
7375                          {
7376                            if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
7377                              lcisnewsql = false;
7378                          }
7379                      }
7380
7381                  }
7382
7383
7384                if ( (lccurrentsqlstatement != null) )
7385                  {
7386                    if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
7387                      lcisnewsql = false;
7388                  }
7389
7390              }
7391
7392            if ( lcisnewsql )
7393              ret = new TSelectSqlStatement(pdbvendor);
7394
7395            break;
7396          }
7397        case sstinsert:
7398          {
7399            boolean lcisnewsql = true;
7400            if ( pstate != EFindSqlStateType.stnormal )
7401              {
7402                if ( (lccurrentsqlstatement != null) )
7403                  {
7404
7405                  }
7406              }
7407
7408            if ( lcisnewsql )
7409              ret = new TInsertSqlStatement(pdbvendor);
7410
7411            break;
7412          }
7413        case sstupdate:
7414          {
7415            boolean lcisnewsql = true;
7416            if ( pstate != EFindSqlStateType.stnormal )
7417              {
7418                lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
7419                if ( (lcprevsolidtoken != null) )
7420                  { //
7421                    if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
7422                      lcisnewsql = false;
7423                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
7424                      lcisnewsql = false;
7425                  }
7426
7427                TSourceToken lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
7428                if ( (lcnextsolidtoken != null) )
7429                  {
7430                    if ( lcnextsolidtoken.tokentype == ETokenType.ttleftparenthesis)
7431                      {
7432                        int k = lcsourcetokenlist.solidtokenafterpos(lcnextsolidtoken.posinlist,TBaseType.rrw_select,1,"(");
7433                        if ( k  == 0 ) lcisnewsql = false;
7434                      }
7435                  }
7436
7437
7438                if ( (lccurrentsqlstatement != null) )
7439                  {
7440                  }
7441              }
7442
7443            if ( lcisnewsql )
7444              {
7445                ret = new TUpdateSqlStatement(pdbvendor);
7446                ret.dummytag = 1; // means set clause in update is not found yet, used to seperate set clause from set statement
7447              }
7448            break;
7449          }
7450        case sstdelete:
7451          {
7452            boolean lcisnewsql = true;
7453
7454            if ( pstate != EFindSqlStateType.stnormal )
7455              {
7456                lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
7457                if ( (lcprevsolidtoken != null) )
7458                  {
7459                    if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
7460                      lcisnewsql = false;
7461                  }
7462
7463                if ( (lccurrentsqlstatement != null) )
7464                  {
7465                  }
7466              }
7467
7468            if ( lcisnewsql )
7469              ret = new TDeleteSqlStatement(pdbvendor);
7470
7471            break;
7472          }
7473        case sstmerge:
7474          {
7475            ret = new TMergeSqlStatement(pdbvendor);
7476            ret.sqlstatementtype = gnewsqlstatementtype;
7477            break;
7478          }
7479        case sstoraclecommit:
7480          {
7481            ret = new TUnknownSqlStatement(pdbvendor);
7482            ret.sqlstatementtype = gnewsqlstatementtype;
7483            break;
7484          }
7485        case sstoraclerollback:
7486          {
7487            ret = new TUnknownSqlStatement(pdbvendor);
7488            ret.sqlstatementtype = gnewsqlstatementtype;
7489            break;
7490          }
7491        case sstoraclerevoke:
7492          {
7493            ret = new TUnknownSqlStatement(pdbvendor);
7494            ret.sqlstatementtype = gnewsqlstatementtype;
7495              break;
7496          }
7497        case sstoraclegrant:
7498          {
7499            ret = new TUnknownSqlStatement(pdbvendor);
7500            ret.sqlstatementtype = gnewsqlstatementtype;
7501              break;
7502          }
7503        case sstcreatetable:
7504          {
7505            ret = new TCreateTableSqlStatement(pdbvendor);
7506              break;
7507          }
7508        case sstoraclecreateview:
7509          {
7510            ret = new TCreateViewSqlStatement(pdbvendor);
7511              break;
7512          }
7513        case sstAlterAccount:
7514        {
7515            ret = new TAlterAccountStmt(pdbvendor);
7516            break;
7517        }
7518        case sstalterdatabase:
7519        {
7520            ret = new TAlterDatabaseStmt(pdbvendor);
7521            break;
7522        }
7523        case sstAlterFileFormat:
7524        {
7525            ret = new TAlterFileFormatStmt(pdbvendor);
7526            break;
7527        }
7528        case sstalterfunction:
7529        {
7530            ret = new TAlterFunctionStmt(pdbvendor);
7531            break;
7532        }
7533        case sstAlterNetworkPolicy:
7534        {
7535            ret = new TAlterNetworkPolicyStmt(pdbvendor);
7536            break;
7537        }
7538        case sstAlterPipe:
7539        {
7540            ret = new TAlterPipeStmt(pdbvendor);
7541            break;
7542        }
7543        case sstAlterResourceMonitor:
7544        {
7545            ret = new TAlterResourceMonitorStmt(pdbvendor);
7546            break;
7547        }
7548        case sstAlterRole:
7549        {
7550            ret = new TAlterRoleStmt(pdbvendor);
7551            break;
7552        }
7553        case sstAlterSchema:
7554        {
7555            ret = new TAlterSchemaStmt(pdbvendor);
7556            break;
7557        }
7558        case sstaltersequence:
7559        {
7560            ret = new TAlterSequenceStatement(pdbvendor);
7561            break;
7562        }
7563        case sstaltersession:
7564        {
7565            ret = new TAlterSessionStatement(pdbvendor);
7566            break;
7567        }
7568        case sstAlterStage:
7569        {
7570            ret = new TAlterStageStmt(pdbvendor);
7571            break;
7572        }
7573        case sstalteruser:
7574        {
7575            ret = new TAlterUserStmt(pdbvendor);
7576            break;
7577        }
7578        case sstAlterShare:
7579        {
7580            ret = new TAlterShareStmt(pdbvendor);
7581            break;
7582        }
7583        case sstalterview:
7584        {
7585            ret = new TAlterViewStatement(pdbvendor);
7586            break;
7587        }
7588        case sstAlterWarehouse:
7589        {
7590            ret = new TAlterWarehouseStmt(pdbvendor);
7591            break;
7592        }
7593        case sstBegin:
7594        {
7595            boolean isblock = false;
7596            int numOfSolidToken = 0;
7597            // if linebreak appears before the ;, then it a block, else it a
7598            TSourceToken st ;
7599            if (lcpos == lcsourcetokenlist.size() - 1){
7600                // this is the last token
7601            }else{
7602                for(int i=lcpos+1;i<lcsourcetokenlist.size();i++){
7603                    st = lcsourcetokenlist.get(i);
7604                    if (st.issolidtoken()){
7605                        numOfSolidToken++;
7606                    }
7607                    // Check for newline before semicolon - if found, must be a block
7608                    if (st.tokencode == TBaseType.lexnewline) {
7609                        isblock = true;
7610                        // Continue to look for semicolon to complete the check
7611                    }
7612
7613                    if (st.tokencode == ';') {
7614                        if (numOfSolidToken<=3){
7615
7616                        }else{
7617                            isblock = true;
7618                        }
7619                        break;
7620                    }
7621
7622                    if (numOfSolidToken > 3){
7623                        isblock = true;
7624                        break;
7625                    }
7626                }
7627            }
7628
7629            if (isblock){
7630                ret = new TCommonBlock(pdbvendor);
7631                gnewsqlstatementtype = ret.sqlstatementtype;
7632            }else{
7633                ret = new TBeginTran(pdbvendor);
7634                pcst.tokencode = TBaseType.rrw_snowflake_begin_transaction;
7635            }
7636
7637
7638            break;
7639        }
7640        case sstbegintran:
7641        {
7642            ret = new TBeginTran(pdbvendor);
7643            if (pcst.tokencode == TBaseType.rrw_begin){
7644                pcst.tokencode = TBaseType.rrw_snowflake_begin_transaction;
7645            }
7646
7647            break;
7648        }
7649        case sstcomment:
7650        {
7651            ret = new TCommentOnSqlStmt(pdbvendor);
7652            break;
7653        }
7654        case sstcommit:
7655        {
7656            ret = new TCommitStmt(pdbvendor);
7657            break;
7658        }
7659        case sstCopyInto:
7660        {
7661            ret = new TSnowflakeCopyIntoStmt(pdbvendor);
7662            break;
7663        }
7664        case sstcreatedatabase:
7665        {
7666            ret = new TCreateDatabaseSqlStatement(pdbvendor);
7667            break;
7668        }
7669        case sstCreateFileFormat:
7670        {
7671            ret = new TCreateFileFormatStmt(pdbvendor);
7672            break;
7673        }
7674        case sstcreatefunction:
7675        {
7676            ret = new TCreateFunctionStmt(pdbvendor);
7677            break;
7678        }
7679        case sstCreateNetworkPolicy:
7680        {
7681            ret = new TCreateNetworkPolicyStmt(pdbvendor);
7682            break;
7683        }
7684        case sstCreatePipe:
7685        {
7686            ret = new TCreatePipeStmt(pdbvendor);
7687            break;
7688        }
7689        case sstCreateResourceMonitor:
7690        {
7691            ret = new TCreateResourceMonitorStmt(pdbvendor);
7692            break;
7693        }
7694        case sstcreaterole:
7695        {
7696            ret = new TCreateRoleStmt(pdbvendor);
7697            break;
7698        }
7699        case sstcreateschema:
7700        {
7701            ret = new TCreateSchemaSqlStatement(pdbvendor);
7702            break;
7703        }
7704        case sstcreatesequence:
7705        {
7706            ret = new TCreateSequenceStmt(pdbvendor);
7707            break;
7708        }
7709        case sstCreateShare:
7710        {
7711            ret = new TCreateShareStmt(pdbvendor);
7712            break;
7713        }
7714        case sstCreateStage:
7715        {
7716            ret = new TCreateStageStmt(pdbvendor);
7717            break;
7718        }
7719        case sstcreateuser:
7720        {
7721            ret = new TCreateUserStmt(pdbvendor);
7722            break;
7723        }
7724        case sstCreateWarehouse:
7725        {
7726            ret = new TCreateWarehouseStmt(pdbvendor);
7727            break;
7728        }
7729        case sstDescFileFormat:
7730        case sstDescFunction:
7731        case sstDescNetworkPolicy:
7732        case sstDescPipe:
7733        case sstDescResult:
7734        case sstDescShare:
7735        case sstDescStage:
7736        case sstDescTable:
7737        case sstDescUser:
7738        case sstDescView:
7739        case sstDescStorage:
7740        {
7741            ret = new TDescribeStmt(pdbvendor);
7742            break;
7743        }
7744        case sstdropfunction:
7745        {
7746            ret = new TDropFunctionStmt(pdbvendor);
7747            break;
7748        }
7749        case sstdropdatabase:
7750        {
7751            ret = new TDropDatabaseStmt(pdbvendor);
7752            break;
7753        }
7754        case sstDropFileFormat:
7755        {
7756            ret = new TDropStmt(pdbvendor);
7757            ret.sqlstatementtype = gnewsqlstatementtype;
7758            break;
7759        }
7760        case sstDropNetworkPolicy:
7761        {
7762            ret = new TDropStmt(pdbvendor);
7763            ret.sqlstatementtype = gnewsqlstatementtype;
7764            break;
7765        }
7766        case sstDropPipe:
7767        {
7768            ret = new TDropStmt(pdbvendor);
7769            ret.sqlstatementtype = gnewsqlstatementtype;
7770            break;
7771        }
7772        case sstDropResourceMonitor:
7773        {
7774            ret = new TDropStmt(pdbvendor);
7775            ret.sqlstatementtype = gnewsqlstatementtype;
7776            break;
7777        }
7778        case sstdroprole:
7779        {
7780            ret = new TDropRoleStmt(pdbvendor);
7781            break;
7782        }
7783        case sstdropschema:
7784        {
7785            ret = new TDropSchemaSqlStatement(pdbvendor);
7786            break;
7787        }
7788        case sstDropShare:
7789        {
7790            ret = new TDropStmt(pdbvendor);
7791            ret.sqlstatementtype = gnewsqlstatementtype;
7792            break;
7793        }
7794        case sstDropStage:
7795        {
7796            ret = new TDropStmt(pdbvendor);
7797            ret.sqlstatementtype = gnewsqlstatementtype;
7798            break;
7799        }
7800        case sstdroptable:
7801        {
7802            ret = new TDropTableSqlStatement(pdbvendor);
7803            break;
7804        }
7805        case sstdropuser:
7806        {
7807            ret = new TDropUserStmt(pdbvendor);
7808            break;
7809        }
7810        case sstdropview:
7811        {
7812            ret = new TDropViewSqlStatement(pdbvendor);
7813            break;
7814        }
7815        case sstDropWarehouse:
7816        {
7817            ret = new TDropStmt(pdbvendor);
7818            ret.sqlstatementtype = gnewsqlstatementtype;
7819            break;
7820        }
7821        case sstGet:
7822        {
7823            ret = new TGetStmt(pdbvendor);
7824            break;
7825        }
7826        case sstGrant:
7827        {
7828            ret = new TGrantStmt(pdbvendor);
7829            break;
7830        }
7831        case sstList:
7832        {
7833            ret = new TListStmt(pdbvendor);
7834            break;
7835        }
7836        case sstPut:
7837        {
7838            ret = new TPutStmt(pdbvendor);
7839            break;
7840        }
7841        case sstRemove:
7842        {
7843            ret = new TRemoveStmt(pdbvendor);
7844            break;
7845        }
7846        case sstRevoke:
7847        {
7848            ret = new TRevokeStmt(pdbvendor);
7849            break;
7850        }
7851        case sstrollback:
7852        {
7853            ret = new TRollbackStmt(pdbvendor);
7854            break;
7855        }
7856        case sstset:
7857        {
7858            ret = new TSetStmt(pdbvendor);
7859            break;
7860        }
7861        case sstShowColumns:
7862        case sstShowDatabases:
7863        case sstShowFileFormats:
7864        case sstShowFunctions:
7865        case sstShowGrants:
7866        case sstShowNetworkPolicies:
7867        case sstShowObjects:
7868        case sstShowParameters:
7869        case sstShowPipes:
7870        case sstShowResourceMonitors:
7871        case sstShowRoles:
7872        case sstShowSchemas:
7873        case sstShowSequences:
7874        case sstShowShares:
7875        case sstShowStages:
7876        case sstShowTables:
7877        case sstShowTransactions:
7878        case sstShowUserFunctions:
7879        case sstShowUsers:
7880        case sstShowVariables:
7881        case sstShowViews:
7882        case sstShowWarehouses:
7883        case sstShowProcedures:
7884        case sstShowTasks:
7885        case sstShowStreams:
7886        {
7887            ret = new TShowStmt(pdbvendor);
7888            ret.sqlstatementtype = gnewsqlstatementtype;
7889            break;
7890        }
7891        case sstTruncate:
7892        {
7893            ret = new TTruncateStatement(pdbvendor);
7894
7895            break;
7896        }
7897        case sstUndropDatabase:
7898        case sstUndropSchema:
7899        case sstUndropTable:
7900        {
7901            ret = new TUndropStmt(pdbvendor);
7902            ret.sqlstatementtype = gnewsqlstatementtype;
7903            break;
7904        }
7905        case sstunset:
7906        {
7907            ret = new TUnsetStmt(pdbvendor);
7908            break;
7909        }
7910        case sstcreatematerializedview:{
7911            ret = new TCreateMaterializedSqlStatement(pdbvendor);
7912            break;
7913        }
7914        case sstoraclecreateindex:
7915          {
7916            ret = new TCreateIndexSqlStatement(pdbvendor);
7917              break;
7918          }
7919        case sstoracledroptable:
7920          {
7921            ret = new TDropTableSqlStatement(pdbvendor);
7922              break;
7923          }
7924        case sstoracledropview:
7925          {
7926           ret = new TDropViewSqlStatement(pdbvendor);
7927              break;
7928          }
7929        case sstoracledropindex:
7930          {
7931            ret = new TDropIndexSqlStatement(pdbvendor);
7932              break;
7933          }
7934        case sstaltertable:
7935          {
7936            ret = new TAlterTableStatement(pdbvendor);
7937              break;
7938          }
7939        case sstoraclealtersession:
7940          {
7941            ret = new TAlterSessionStatement(pdbvendor);
7942              break;
7943          }
7944        case sstplsql_createfunction:
7945        {
7946          ret = new TPlsqlCreateFunction(pdbvendor);
7947          ret.sqlstatementtype = gnewsqlstatementtype;
7948          // System.out.println(gnewsqlstatementtype);
7949            break;
7950        }
7951        case sstCommentOn:
7952          {
7953            ret = new TCommentOnSqlStmt(pdbvendor);
7954              break;
7955          }
7956        case sstoraclecreatesequence:
7957          {
7958            ret = new TCreateSequenceStmt(pdbvendor);
7959              break;
7960          }
7961        case sstpostgresqlCreateIndex:
7962            ret = new TCreateIndexSqlStatement(pdbvendor);
7963            break;
7964        case sstpostgresqlCreateView:
7965            ret = new TCreateViewSqlStatement(pdbvendor);
7966            break;
7967        case sstpostgresqlCreateFunction:
7968            ret = new TCreateFunctionStmt(pdbvendor);
7969            break;
7970//        case sstcreatetrigger:
7971//            ret = new TCreateTriggerStmt(pdbvendor);
7972//            break;
7973        case sstpostgresqlTruncate:
7974            ret = new TTruncateStatement(pdbvendor);
7975            break;
7976        case sstpostgresqlDropTable:
7977            ret = new TDropTableSqlStatement(pdbvendor);
7978            break;
7979        case sstcreateview:
7980            ret = new TCreateViewSqlStatement(pdbvendor);
7981            break;
7982        case sstcall:
7983            ret = new TCallStatement(pdbvendor);
7984            break;
7985        case sstSnowflakePseudoExprStmt:
7986            ret = new TPseudoExprStmt(pdbvendor);
7987            break;
7988        case sstcreateprocedure:
7989            ret = new TCreateProcedureStmt(pdbvendor);
7990            break;
7991        case sstCreateStream:
7992            ret = new TCreateStreamStmt(pdbvendor);
7993            break;
7994        case sstUse:
7995            TSourceToken lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
7996            if (lcnextsolidtoken != null){
7997                if (lcnextsolidtoken.toString().equalsIgnoreCase("database")){
7998                    ret = new TUseDatabase(pdbvendor);
7999                }else if (lcnextsolidtoken.toString().equalsIgnoreCase("role")){
8000                    ret = new TUseRole(pdbvendor);
8001                }else if (lcnextsolidtoken.toString().equalsIgnoreCase("warehouse")){
8002                    ret = new TUseWarehouse(pdbvendor);
8003                }else{
8004                    ret = new TUseSchema(pdbvendor);
8005                }
8006
8007            }else{
8008                ret = new TUnknownSqlStatement(pdbvendor);
8009                ret.sqlstatementtype = gnewsqlstatementtype;
8010            }
8011            break;
8012        case sstExecute:
8013        {
8014            ret =  new TExecuteSqlStatement(pdbvendor);
8015            break;
8016        }
8017        case sstAlterTask:
8018            ret =  new TAlterTaskStmt(pdbvendor);
8019            break;
8020        case sstCreateTask:
8021            ret = new TCreateTaskStmt(pdbvendor);
8022            break;
8023        case sstAlterMaterializedView:
8024            ret = new TAlterMaterializedViewStmt(pdbvendor);
8025            break;
8026        case sstDropMaterializedView:
8027            ret = new TDropMaterializedViewStmt(pdbvendor);
8028            break;
8029        case sstdropprocedure:
8030            ret = new TDropProcedureStmt(pdbvendor);
8031            break;
8032        case sstUseSecondaryRoles:
8033            ret = new TUseSecondaryRolesStmt(pdbvendor);
8034            break;
8035        case sstDropStreamlit:
8036            ret = new TDropStmt(pdbvendor);
8037            break;
8038        case sstDropStream:
8039            ret = new TDropStreamStmt(pdbvendor);
8040            break;
8041        default:
8042          {
8043            ret = new TUnknownSqlStatement(pdbvendor);
8044            ret.sqlstatementtype = gnewsqlstatementtype;
8045            break;
8046          }
8047    }    // case
8048
8049    return ret;
8050}
8051
8052TCustomSqlStatement isgreenplum(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
8053        TCustomSqlStatement ret = null;
8054
8055        gnewsqlstatementtype = ESqlStatementType.sstinvalid;
8056
8057        if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
8058           || (pcst.tokencode  == TBaseType.cmtslashstar)
8059           || (pcst.tokencode  == TBaseType.lexspace)
8060           || (pcst.tokencode  == TBaseType.lexnewline)
8061            || (pcst.tokentype == ETokenType.ttsemicolon) )
8062        {
8063          return null;
8064        }
8065
8066        int lcpos = pcst.posinlist;
8067        TSourceTokenList lcsourcetokenlist = pcst.container;
8068        TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
8069
8070        //subquery after semicolon or at first line
8071        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
8072          {
8073            int k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
8074            if ( k >0 )
8075              {
8076                ret = new TSelectSqlStatement(pdbvendor);
8077              }
8078
8079            return ret;
8080          }
8081
8082        //cte
8083        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
8084          {
8085            ret = findcte(pcst,pdbvendor);
8086            if ( (ret != null) )  return ret;
8087          }
8088
8089        gnewsqlstatementtype = findgreenplumcmd(pcst);
8090
8091        TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
8092        switch (gnewsqlstatementtype) {    //
8093            case sstinvalid:
8094              {
8095                ret = null;
8096
8097                if ( pstate == EFindSqlStateType.stnormal )
8098                  {
8099                    if ( pcst.tokencode == TBaseType.label_begin )
8100                      {
8101                        ret = new TCommonBlock(pdbvendor);
8102                        gnewsqlstatementtype = ret.sqlstatementtype;
8103                      }
8104                    else if ( pcst.tokencode == TBaseType.rrw_declare )
8105                      {
8106                        ret = new TCommonBlock(pdbvendor);
8107                        gnewsqlstatementtype = ret.sqlstatementtype;
8108                      }
8109                    else if ( pcst.tokencode == TBaseType.rrw_begin )
8110                      {
8111                        ret = new TCommonBlock(pdbvendor);
8112                        gnewsqlstatementtype = ret.sqlstatementtype;
8113                      }
8114                    else if ( pcst.tokencode == TBaseType.rrw_procedure )
8115                      {
8116                        ret = new TPlsqlCreateProcedure(pdbvendor);
8117                        // ret.sqlstatementtype = ESqlStatementType.sstplsql_createprocedure;
8118                        gnewsqlstatementtype = ret.sqlstatementtype;
8119                      }
8120                    else if ( pcst.tokencode == TBaseType.rrw_function )
8121                      {
8122                        ret = new TPlsqlCreateFunction(pdbvendor);
8123                        // ret.sqlstatementtype = ESqlStatementType.sstplsql_createfunction;
8124                        gnewsqlstatementtype = ret.sqlstatementtype;
8125                      }
8126                    else if ( pcst.tokencode == TBaseType.rrw_package )
8127                      {
8128                        ret = new TPlsqlCreatePackage(pdbvendor);
8129                       // ret.sqlstatementtype = ESqlStatementType.sstplsql_createpackage;
8130                        gnewsqlstatementtype = ret.sqlstatementtype;
8131                      }
8132                  }
8133                  break;
8134              }
8135            case sstselect:
8136              {
8137                boolean lcisnewsql = true;
8138
8139                if ( pstate != EFindSqlStateType.stnormal )
8140                  {
8141                    // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
8142                    if ( (lcprevsolidtoken != null) )
8143                      {
8144                        if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
8145                          lcisnewsql = false; //subqery
8146                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
8147                          lcisnewsql = false;
8148                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
8149                          lcisnewsql = false;
8150                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
8151                          lcisnewsql = false;
8152                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
8153                          lcisnewsql = false;
8154                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
8155                          lcisnewsql = false;
8156                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
8157                          {
8158                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
8159                              lcisnewsql = false;
8160                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
8161                              lcisnewsql = false;
8162                          }
8163
8164                        if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
8165                          {
8166                            TSourceToken lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
8167                            if ( (lcpprevsolidtoken != null) )
8168                              {
8169                                if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
8170                                  lcisnewsql = false;
8171                              }
8172                          }
8173
8174                      }
8175
8176
8177                    if ( (lccurrentsqlstatement != null) )
8178                      {
8179                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
8180                          lcisnewsql = false;
8181                      }
8182
8183                  }
8184
8185                if ( lcisnewsql )
8186                  ret = new TSelectSqlStatement(pdbvendor);
8187
8188                break;
8189              }
8190            case sstinsert:
8191              {
8192                boolean lcisnewsql = true;
8193                if ( pstate != EFindSqlStateType.stnormal )
8194                  {
8195                    if ( (lccurrentsqlstatement != null) )
8196                      {
8197
8198                      }
8199                  }
8200
8201                if ( lcisnewsql )
8202                  ret = new TInsertSqlStatement(pdbvendor);
8203
8204                break;
8205              }
8206            case sstupdate:
8207              {
8208                boolean lcisnewsql = true;
8209                if ( pstate != EFindSqlStateType.stnormal )
8210                  {
8211                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
8212                    if ( (lcprevsolidtoken != null) )
8213                      { //
8214                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
8215                          lcisnewsql = false;
8216                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
8217                          lcisnewsql = false;
8218                      }
8219
8220                    TSourceToken lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
8221                    if ( (lcnextsolidtoken != null) )
8222                      {
8223                        if ( lcnextsolidtoken.tokentype == ETokenType.ttleftparenthesis)
8224                          {
8225                            int k = lcsourcetokenlist.solidtokenafterpos(lcnextsolidtoken.posinlist,TBaseType.rrw_select,1,"(");
8226                            if ( k  == 0 ) lcisnewsql = false;
8227                          }
8228                      }
8229
8230
8231                    if ( (lccurrentsqlstatement != null) )
8232                      {
8233                      }
8234                  }
8235
8236                if ( lcisnewsql )
8237                  {
8238                    ret = new TUpdateSqlStatement(pdbvendor);
8239                    ret.dummytag = 1; // means set clause in update is not found yet, used to seperate set clause from set statement
8240                  }
8241                break;
8242              }
8243            case sstdelete:
8244              {
8245                boolean lcisnewsql = true;
8246
8247                if ( pstate != EFindSqlStateType.stnormal )
8248                  {
8249                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
8250                    if ( (lcprevsolidtoken != null) )
8251                      {
8252                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
8253                          lcisnewsql = false;
8254                      }
8255
8256                    if ( (lccurrentsqlstatement != null) )
8257                      {
8258                      }
8259                  }
8260
8261                if ( lcisnewsql )
8262                  ret = new TDeleteSqlStatement(pdbvendor);
8263
8264                break;
8265              }
8266            case sstmerge:
8267              {
8268                ret = new TMergeSqlStatement(pdbvendor);
8269                ret.sqlstatementtype = gnewsqlstatementtype;
8270                break;
8271              }
8272            case sstoraclecommit:
8273              {
8274                ret = new TUnknownSqlStatement(pdbvendor);
8275                ret.sqlstatementtype = gnewsqlstatementtype;
8276                break;
8277              }
8278            case sstoraclerollback:
8279              {
8280                ret = new TUnknownSqlStatement(pdbvendor);
8281                ret.sqlstatementtype = gnewsqlstatementtype;
8282                break;
8283              }
8284            case sstoraclesavepoint:
8285              {
8286                ret = new TUnknownSqlStatement(pdbvendor);
8287                ret.sqlstatementtype = gnewsqlstatementtype;
8288                  break;
8289              }
8290            case sstoraclerevoke:
8291              {
8292                ret = new TUnknownSqlStatement(pdbvendor);
8293                ret.sqlstatementtype = gnewsqlstatementtype;
8294                  break;
8295              }
8296            case sstoraclegrant:
8297              {
8298                ret = new TUnknownSqlStatement(pdbvendor);
8299                ret.sqlstatementtype = gnewsqlstatementtype;
8300                  break;
8301              }
8302            case sstoracleanalyze:
8303              {
8304                ret = new TUnknownSqlStatement(pdbvendor);
8305                ret.sqlstatementtype = gnewsqlstatementtype;
8306                  break;
8307              }
8308            case sstoracletruncate:
8309              {
8310                ret = new TUnknownSqlStatement(pdbvendor);
8311                ret.sqlstatementtype = gnewsqlstatementtype;
8312                  break;
8313              }
8314            case sstcreatetable:
8315            case sstgreenplumCreateExternalTable:
8316              {
8317                ret = new TCreateTableSqlStatement(pdbvendor);
8318                  break;
8319              }
8320            case sstoraclecreateview:
8321              {
8322                ret = new TCreateViewSqlStatement(pdbvendor);
8323                  break;
8324              }
8325            case sstcreatematerializedview:{
8326                ret = new TCreateMaterializedSqlStatement(pdbvendor);
8327                break;
8328            }
8329            case sstoraclecreateindex:
8330              {
8331                ret = new TCreateIndexSqlStatement(pdbvendor);
8332                  break;
8333              }
8334            case sstoraclecreatedatabase:
8335              {
8336                ret = new TCreateDatabaseSqlStatement(pdbvendor);
8337                  break;
8338              }
8339            case sstoracledroptable:
8340              {
8341                ret = new TDropTableSqlStatement(pdbvendor);
8342                  break;
8343              }
8344            case sstoracledropview:
8345              {
8346               ret = new TDropViewSqlStatement(pdbvendor);
8347                  break;
8348              }
8349            case sstoracledropindex:
8350              {
8351                ret = new TDropIndexSqlStatement(pdbvendor);
8352                  break;
8353              }
8354            case sstaltertable:
8355              {
8356                ret = new TAlterTableStatement(pdbvendor);
8357                  break;
8358              }
8359            case sstoraclealtersession:
8360              {
8361                ret = new TAlterSessionStatement(pdbvendor);
8362                  break;
8363              }
8364            case sstplsql_createprocedure:
8365            {
8366              ret = new TPlsqlCreateProcedure(pdbvendor);
8367              ret.sqlstatementtype = gnewsqlstatementtype;
8368              // System.out.println(gnewsqlstatementtype);
8369                break;
8370            }
8371            case sstplsql_createfunction:
8372            {
8373              ret = new TPlsqlCreateFunction(pdbvendor);
8374              ret.sqlstatementtype = gnewsqlstatementtype;
8375              // System.out.println(gnewsqlstatementtype);
8376                break;
8377            }
8378            case sstplsql_createpackage:
8379            {
8380              ret = new TPlsqlCreatePackage(pdbvendor);
8381              ret.sqlstatementtype = gnewsqlstatementtype;
8382              // System.out.println(gnewsqlstatementtype);
8383                break;
8384            }
8385            case sstplsql_createtrigger:
8386            {
8387              ret = new TPlsqlCreateTrigger(pdbvendor);
8388              ret.sqlstatementtype = gnewsqlstatementtype;
8389              // System.out.println(gnewsqlstatementtype);
8390                break;
8391            }
8392            case sstplsql_execimmestmt:
8393              {
8394                ret = new TExecImmeStmt(pdbvendor);
8395               // ret.sqlstatementtype = gnewsqlstatementtype;
8396                // System.out.println(gnewsqlstatementtype);
8397                  break;
8398              }
8399            case sstoraclecreatepackagebody:
8400             {
8401                ret = new TPlsqlCreatePackage(pdbvendor);
8402                ret.sqlstatementtype = ESqlStatementType.sstplsql_createpackage;
8403                 break;
8404             }
8405            case sstplsql_createtype_placeholder:
8406            {
8407              ret = new TPlsqlCreateType_Placeholder(pdbvendor);
8408              ret.sqlstatementtype = gnewsqlstatementtype;
8409              // System.out.println(gnewsqlstatementtype);
8410                break;
8411            }
8412            case sstplsql_createtypebody:
8413              {
8414                ret = new TPlsqlCreateTypeBody(pdbvendor);
8415                ret.sqlstatementtype = gnewsqlstatementtype;
8416                  break;
8417              }
8418            case sstCommentOn:
8419              {
8420                ret = new TCommentOnSqlStmt(pdbvendor);
8421                  break;
8422              }
8423            case sstoraclecreatesequence:
8424              {
8425                ret = new TCreateSequenceStmt(pdbvendor);
8426                  break;
8427              }
8428            case sstoraclecreatesynonym:
8429              {
8430                ret = new TCreateSynonymStmt(pdbvendor);
8431                  break;
8432              }
8433            case sstoraclecreatedirectory:
8434              {
8435                ret = new TOracleCreateDirectoryStmt(pdbvendor);
8436                  break;
8437              }
8438            case sstpostgresqlCreateIndex:
8439                ret = new TCreateIndexSqlStatement(pdbvendor);
8440                break;
8441            case sstpostgresqlCreateView:
8442                ret = new TCreateViewSqlStatement(pdbvendor);
8443                break;
8444            case sstpostgresqlCreateFunction:
8445                ret = new TCreateFunctionStmt(pdbvendor);
8446                break;
8447            case sstcreatetrigger:
8448                ret = new TCreateTriggerStmt(pdbvendor);
8449                break;
8450            case sstpostgresqlMove:
8451                ret = new TMoveStmt(EDbVendor.dbvgreenplum);
8452                break;
8453            case sstpostgresqlTruncate:
8454                ret = new TTruncateStatement(EDbVendor.dbvgreenplum);
8455                break;
8456            case sstpostgresqlExecute:
8457                ret = new TExecuteSqlStatement(EDbVendor.dbvgreenplum);
8458                break;
8459            case sstValues:
8460                ret = new TSelectSqlStatement(EDbVendor.dbvgreenplum);
8461                break;
8462            case sstpostgresqlDeclare: {
8463                boolean lcisnewsql = true;
8464
8465                TSourceToken lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos, 2, false);
8466                if ((lcnextsolidtoken != null)) {
8467                    if (lcnextsolidtoken.tokencode == TBaseType.rrw_greenplum_CURSOR) {
8468                        lcisnewsql = false;
8469                    }
8470                }
8471
8472
8473                if (lcisnewsql)
8474                    ret = new TCommonBlock(pdbvendor);
8475                else {
8476                    ret = new TUnknownSqlStatement(pdbvendor);
8477                }
8478                ret.sqlstatementtype = gnewsqlstatementtype;
8479
8480                break;
8481            }
8482            case sstpostgresqlSet:
8483                ret = new TSetStmt(pdbvendor);
8484                break;
8485            case sstcreateExtension:
8486                ret = new TCreateExtensionStmt(pdbvendor);
8487                break;
8488            case sstcall:
8489                ret = new TCallStatement(pdbvendor);
8490                break;
8491            case sstpostgresqlCreateSchema:
8492                ret = new TCreateSchemaSqlStatement(pdbvendor);
8493                break;
8494            case sstpostgresqlDo: {
8495                boolean lcisnewsql = false;
8496
8497                if (pstate == EFindSqlStateType.stnormal) {
8498                    TSourceToken lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos, 1, false);
8499                    if ((lcnextsolidtoken != null)) {
8500                        if (lcnextsolidtoken.tokencode == TBaseType.rrw_greenplum_function_delimiter)
8501                            lcisnewsql = true;
8502                        else if (lcnextsolidtoken.tokencode == TBaseType.rrw_greenplum_language)
8503                            lcisnewsql = true;
8504                    }
8505                }
8506
8507                if (lcisnewsql)
8508                    ret = new TDoExecuteBlockStmt(pdbvendor);
8509
8510                break;
8511            }
8512            case sstpostgresqlComment:
8513                ret = new TCommentOnSqlStmt(pdbvendor);
8514                break;
8515            default:
8516              {
8517                ret = new TUnknownSqlStatement(pdbvendor);
8518                ret.sqlstatementtype = gnewsqlstatementtype;
8519                break;
8520              }
8521        }    // case
8522
8523        return ret;
8524    }
8525
8526TCustomSqlStatement isoraclesql(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
8527    TCustomSqlStatement ret = null;
8528
8529    gnewsqlstatementtype = ESqlStatementType.sstinvalid;
8530
8531    if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
8532       || (pcst.tokencode  == TBaseType.cmtslashstar)
8533       || (pcst.tokencode  == TBaseType.lexspace)
8534       || (pcst.tokencode  == TBaseType.lexnewline)
8535        || (pcst.tokentype == ETokenType.ttsemicolon) )
8536    {
8537      return null;
8538    }
8539
8540    int lcpos = pcst.posinlist;
8541    TSourceTokenList lcsourcetokenlist = pcst.container;
8542    TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
8543
8544    //subquery after semicolon or at first line
8545    if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
8546      {
8547        int k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
8548        if ( k >0 )
8549          {
8550            ret = new TSelectSqlStatement(pdbvendor);
8551          }
8552
8553        return ret;
8554      }
8555
8556    //cte
8557    if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
8558      {
8559        ret = findcte(pcst,pdbvendor);
8560        if ( (ret != null) )  return ret;
8561      }
8562
8563    gnewsqlstatementtype = findoraclecmd(pcst);
8564
8565    TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
8566    switch (gnewsqlstatementtype) {    //
8567        case sstinvalid:
8568          {
8569            ret = null;
8570
8571            if ( pstate == EFindSqlStateType.stnormal )
8572              {
8573                if ( pcst.tokencode == TBaseType.label_begin )
8574                  {
8575                    ret = new TCommonBlock(pdbvendor);
8576                    gnewsqlstatementtype = ret.sqlstatementtype;
8577                  }
8578                else if ( pcst.tokencode == TBaseType.rrw_declare )
8579                  {
8580                    ret = new TCommonBlock(pdbvendor);
8581                    gnewsqlstatementtype = ret.sqlstatementtype;
8582                  }
8583                else if ( pcst.tokencode == TBaseType.rrw_begin )
8584                  {
8585                    ret = new TCommonBlock(pdbvendor);
8586                    gnewsqlstatementtype = ret.sqlstatementtype;
8587                  }
8588                else if ( pcst.tokencode == TBaseType.rrw_procedure )
8589                  {
8590                    ret = new TPlsqlCreateProcedure(pdbvendor);
8591                    // ret.sqlstatementtype = ESqlStatementType.sstplsql_createprocedure;
8592                    gnewsqlstatementtype = ret.sqlstatementtype;
8593                  }
8594                else if ( pcst.tokencode == TBaseType.rrw_function )
8595                  {
8596                    ret = new TPlsqlCreateFunction(pdbvendor);
8597                    // ret.sqlstatementtype = ESqlStatementType.sstplsql_createfunction;
8598                    gnewsqlstatementtype = ret.sqlstatementtype;
8599                  }
8600                else if ( pcst.tokencode == TBaseType.rrw_package )
8601                  {
8602                    ret = new TPlsqlCreatePackage(pdbvendor);
8603                   // ret.sqlstatementtype = ESqlStatementType.sstplsql_createpackage;
8604                    gnewsqlstatementtype = ret.sqlstatementtype;
8605                  }
8606              }
8607              break;
8608          }
8609        case sstselect:
8610          {
8611            boolean lcisnewsql = true;
8612
8613            if ( pstate != EFindSqlStateType.stnormal )
8614              {
8615                // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
8616                if ( (lcprevsolidtoken != null) )
8617                  {
8618                    if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
8619                      lcisnewsql = false; //subquery
8620                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
8621                      lcisnewsql = false;
8622                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
8623                      lcisnewsql = false;
8624                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
8625                      lcisnewsql = false;
8626                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
8627                      lcisnewsql = false;
8628                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
8629                      lcisnewsql = false;
8630                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
8631                      {
8632                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
8633                          lcisnewsql = false;
8634                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
8635                          lcisnewsql = false;
8636                      }
8637
8638                    if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
8639                      {
8640                        TSourceToken lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
8641                        if ( (lcpprevsolidtoken != null) )
8642                          {
8643                            if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
8644                              lcisnewsql = false;
8645                          }
8646                      }
8647
8648                  }
8649
8650
8651                if ( (lccurrentsqlstatement != null) )
8652                  {
8653                      switch (lccurrentsqlstatement.sqlstatementtype){
8654                          case sstinsert:
8655                              lcisnewsql = false;
8656                              break;
8657                          case sstcreatetable:
8658                          case sstcreateview:
8659                              lcisnewsql = false;
8660                              break;
8661                      }
8662                  }
8663
8664              }
8665
8666            if ( lcisnewsql )
8667              ret = new TSelectSqlStatement(pdbvendor);
8668
8669            break;
8670          }
8671        case sstinsert:
8672          {
8673            boolean lcisnewsql = true;
8674            if ( pstate != EFindSqlStateType.stnormal )
8675              {
8676                if ( (lccurrentsqlstatement != null) )
8677                  {
8678
8679                  }
8680              }
8681
8682            if ( lcisnewsql )
8683              ret = new TInsertSqlStatement(pdbvendor);
8684
8685            break;
8686          }
8687        case sstupdate:
8688          {
8689            boolean lcisnewsql = true;
8690            if ( pstate != EFindSqlStateType.stnormal )
8691              {
8692                lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
8693                if ( (lcprevsolidtoken != null) )
8694                  { //
8695                    if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
8696                      lcisnewsql = false;
8697                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
8698                      lcisnewsql = false;
8699                  }
8700
8701                TSourceToken lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
8702                if ( (lcnextsolidtoken != null) )
8703                  {
8704                    if ( lcnextsolidtoken.tokentype == ETokenType.ttleftparenthesis)
8705                      {
8706                        int k = lcsourcetokenlist.solidtokenafterpos(lcnextsolidtoken.posinlist,TBaseType.rrw_select,1,"(");
8707                        if ( k  == 0 ) lcisnewsql = false;
8708                      }
8709                  }
8710
8711
8712                if ( (lccurrentsqlstatement != null) )
8713                  {
8714                  }
8715              }
8716
8717            if ( lcisnewsql )
8718              {
8719                ret = new TUpdateSqlStatement(pdbvendor);
8720                ret.dummytag = 1; // means set clause in update is not found yet, used to seperate set clause from set statement
8721              }
8722            break;
8723          }
8724        case sstdelete:
8725          {
8726            boolean lcisnewsql = true;
8727
8728            if ( pstate != EFindSqlStateType.stnormal )
8729              {
8730                lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
8731                if ( (lcprevsolidtoken != null) )
8732                  {
8733                    if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
8734                      lcisnewsql = false;
8735                  }
8736
8737                if ( (lccurrentsqlstatement != null) )
8738                  {
8739                      TSourceToken lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
8740                      if ( (lcnextsolidtoken != null) ){
8741                          if (lcnextsolidtoken.tokencode == TBaseType.rrw_oracle_rows){
8742                              lcisnewsql = false;
8743                          }
8744                      }
8745                  }
8746              }
8747
8748            if ( lcisnewsql )
8749              ret = new TDeleteSqlStatement(pdbvendor);
8750
8751            break;
8752          }
8753        case sstmerge:
8754          {
8755            ret = new TMergeSqlStatement(pdbvendor);
8756            ret.sqlstatementtype = gnewsqlstatementtype;
8757            break;
8758          }
8759        case sstoraclecommit:
8760          {
8761
8762              boolean lcisnewsql = true;
8763              if ( pstate != EFindSqlStateType.stnormal )
8764              {
8765                  lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
8766                  if ( (lcprevsolidtoken != null) )
8767                  { //
8768                      if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
8769                          lcisnewsql = false;
8770                  }
8771              }
8772
8773              if (lcisnewsql){
8774                  ret = new TCommitStmt(pdbvendor);
8775                  ret.sqlstatementtype = gnewsqlstatementtype;
8776              }
8777
8778            break;
8779          }
8780        case sstoraclerollback:
8781          {
8782            ret = new TUnknownSqlStatement(pdbvendor);
8783            ret.sqlstatementtype = gnewsqlstatementtype;
8784            break;
8785          }
8786        case sstoraclesavepoint:
8787          {
8788            ret = new TUnknownSqlStatement(pdbvendor);
8789            ret.sqlstatementtype = gnewsqlstatementtype;
8790              break;
8791          }
8792        case sstoraclerevoke:
8793          {
8794            ret = new TUnknownSqlStatement(pdbvendor);
8795            ret.sqlstatementtype = gnewsqlstatementtype;
8796              break;
8797          }
8798        case sstoraclegrant:
8799          {
8800            ret = new TUnknownSqlStatement(pdbvendor);
8801            ret.sqlstatementtype = gnewsqlstatementtype;
8802              break;
8803          }
8804        case sstoracleanalyze:
8805          {
8806            ret = new TUnknownSqlStatement(pdbvendor);
8807            ret.sqlstatementtype = gnewsqlstatementtype;
8808              break;
8809          }
8810        case sstTruncate:
8811          {
8812              ret = new TTruncateStatement(pdbvendor);
8813              ret.sqlstatementtype = gnewsqlstatementtype;
8814              break;
8815          }
8816        case sstcreatetable:
8817          {
8818            ret = new TCreateTableSqlStatement(pdbvendor);
8819              break;
8820          }
8821        case sstoraclecreateview:
8822          {
8823            ret = new TCreateViewSqlStatement(pdbvendor);
8824              break;
8825          }
8826        case sstcreatematerializedview:{
8827            ret = new TCreateMaterializedSqlStatement(pdbvendor);
8828            break;
8829        }
8830        case sstoraclecreatematerializedviewlog:{
8831            ret = new TCreateMaterializedViewLogSqlStatement(pdbvendor);
8832            break;
8833        }
8834        case sstoraclecreateindex:
8835          {
8836            ret = new TCreateIndexSqlStatement(pdbvendor);
8837              break;
8838          }
8839        case sstoraclecreatedatabase:
8840          {
8841            ret = new TCreateDatabaseSqlStatement(pdbvendor);
8842              break;
8843          }
8844        case sstoracledroptable:
8845          {
8846            ret = new TDropTableSqlStatement(pdbvendor);
8847              break;
8848          }
8849        case sstoracledropview:
8850          {
8851           ret = new TDropViewSqlStatement(pdbvendor);
8852              break;
8853          }
8854        case sstoracledropindex:
8855          {
8856            ret = new TDropIndexSqlStatement(pdbvendor);
8857              break;
8858          }
8859        case sstaltertable:
8860          {
8861            ret = new TAlterTableStatement(pdbvendor);
8862              break;
8863          }
8864        case sstoraclealtersession:
8865          {
8866            ret = new TAlterSessionStatement(pdbvendor);
8867              break;
8868          }
8869        case sstplsql_createprocedure:
8870        {
8871          ret = new TPlsqlCreateProcedure(pdbvendor);
8872          ret.sqlstatementtype = gnewsqlstatementtype;
8873          // System.out.println(gnewsqlstatementtype);
8874            break;
8875        }
8876        case sstplsql_createfunction:
8877        {
8878          ret = new TPlsqlCreateFunction(pdbvendor);
8879          ret.sqlstatementtype = gnewsqlstatementtype;
8880          // System.out.println(gnewsqlstatementtype);
8881            break;
8882        }
8883        case sstplsql_createpackage:
8884        {
8885          ret = new TPlsqlCreatePackage(pdbvendor);
8886          ret.sqlstatementtype = gnewsqlstatementtype;
8887          // System.out.println(gnewsqlstatementtype);
8888            break;
8889        }
8890        case sstplsql_createtrigger:
8891        {
8892          ret = new TPlsqlCreateTrigger(pdbvendor);
8893          ret.sqlstatementtype = gnewsqlstatementtype;
8894          // System.out.println(gnewsqlstatementtype);
8895            break;
8896        }
8897        case sstplsql_execimmestmt:
8898          {
8899            ret = new TExecImmeStmt(pdbvendor);
8900           // ret.sqlstatementtype = gnewsqlstatementtype;
8901            // System.out.println(gnewsqlstatementtype);
8902              break;
8903          }
8904        case sstoraclecreatepackagebody:
8905         {
8906            ret = new TPlsqlCreatePackage(pdbvendor);
8907            ret.sqlstatementtype = ESqlStatementType.sstplsql_createpackage;
8908             break;
8909         }
8910        case sstplsql_createtype_placeholder:
8911        {
8912          ret = new TPlsqlCreateType_Placeholder(pdbvendor);
8913          ret.sqlstatementtype = gnewsqlstatementtype;
8914          // System.out.println(gnewsqlstatementtype);
8915            break;
8916        }
8917        case sstplsql_createtypebody:
8918          {
8919            ret = new TPlsqlCreateTypeBody(pdbvendor);
8920            ret.sqlstatementtype = gnewsqlstatementtype;
8921              break;
8922          }
8923        case sstCommentOn:
8924          {
8925            ret = new TCommentOnSqlStmt(pdbvendor);
8926              break;
8927          }
8928        case sstoraclecreatesequence:
8929          {
8930            ret = new TCreateSequenceStmt(pdbvendor);
8931              break;
8932          }
8933        case sstoraclecreatesynonym:
8934          {
8935            ret = new TCreateSynonymStmt(pdbvendor);
8936              break;
8937          }
8938        case sstoraclecreatedirectory:
8939          {
8940            ret = new TOracleCreateDirectoryStmt(pdbvendor);
8941              break;
8942          }
8943        case sstoracleexecuteprocedure:
8944        {
8945            ret = new TOracleExecuteProcedure(pdbvendor);
8946            break;
8947        }
8948        case sstExplain:
8949        {
8950            ret = new TExplainPlan(pdbvendor);
8951            break;
8952        }
8953        case sstoraclecreatelibrary:
8954            ret = new TOracleCreateLibraryStmt(pdbvendor);
8955            break;
8956        case sstaltertrigger:
8957            ret  = new TAlterTriggerStmt(pdbvendor);
8958            break;
8959        case sstoracledropsequence:
8960            ret = new TDropSequenceStmt(pdbvendor);
8961            break;
8962        case sstoraclecall:
8963            ret = new TCallStatement(pdbvendor);
8964            break;
8965        case sstoraclealterview:
8966            ret = new TAlterViewStatement(pdbvendor);
8967            break;
8968        case sstoracledropsynonym:
8969            ret = new TDropSynonymStmt(pdbvendor);
8970            break;
8971        case sstoracledropdatabaselink:
8972            ret = new TDropDatabaseLinkStmt(pdbvendor);
8973            break;
8974        case sstoraclecreatedatabaselink:
8975            ret = new TCreateDatabaseLinkStmt(pdbvendor);
8976            break;
8977        case sstoracledropmaterializedview:
8978            ret = new TDropMaterializedViewStmt(pdbvendor);
8979            break;
8980        case sstoracledropmaterializedviewlog:
8981            ret = new TDropMaterializedViewLogStmt(pdbvendor);
8982            break;
8983        case sstoraclerename:
8984            ret = new TRenameStmt(pdbvendor);
8985            break;
8986        case sstoracledropprocedure:
8987            ret = new TDropProcedureStmt(pdbvendor);
8988            break;
8989        case sstAlterMaterializedView:
8990            ret = new TAlterMaterializedViewStmt(pdbvendor);
8991            break;
8992        case sstoracledroptrigger:
8993            ret = new TDropTriggerSqlStatement(pdbvendor);
8994            break;
8995        case sstoracledropfunction:
8996            ret = new TDropFunctionStmt(pdbvendor);
8997            break;
8998        case sstoraclealterindex:
8999            ret = new TAlterIndexStmt(pdbvendor);
9000            break;
9001        case sstoraclealtersequence:
9002            ret = new TAlterSequenceStatement(pdbvendor);
9003            break;
9004        case sstoraclealtertype:
9005            ret = new TAlterTypeStatement(pdbvendor);
9006            break;
9007        default:
9008          {
9009            ret = new TUnknownSqlStatement(pdbvendor);
9010            ret.sqlstatementtype = gnewsqlstatementtype;
9011            break;
9012          }
9013    }    // case
9014
9015    return ret;
9016}
9017
9018TCustomSqlStatement isinformixsql(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
9019    TCustomSqlStatement ret = null;
9020
9021    gnewsqlstatementtype = ESqlStatementType.sstinvalid;
9022
9023    if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
9024       || (pcst.tokencode  == TBaseType.cmtslashstar)
9025       || (pcst.tokencode  == TBaseType.lexspace)
9026       || (pcst.tokencode  == TBaseType.lexnewline)
9027        || (pcst.tokentype == ETokenType.ttsemicolon) )
9028    {
9029      return null;
9030    }
9031
9032    int lcpos = pcst.posinlist;
9033    TSourceTokenList lcsourcetokenlist = pcst.container;
9034    TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
9035
9036    //subquery after semicolon or at first line
9037    if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
9038      {
9039        int k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
9040        if ( k >0 )
9041          {
9042            ret = new TSelectSqlStatement(pdbvendor);
9043          }
9044
9045        return ret;
9046      }
9047
9048    //cte
9049    if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
9050      {
9051        ret = findcte(pcst,pdbvendor);
9052        if ( (ret != null) )  return ret;
9053      }
9054
9055    gnewsqlstatementtype = findinformixcmd(pcst);
9056
9057    TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
9058    switch (gnewsqlstatementtype) {    //
9059        case sstinvalid:
9060          {
9061            ret = null;
9062
9063            if ( pstate == EFindSqlStateType.stnormal )
9064              {
9065                if ( pcst.tokencode == TBaseType.label_begin )
9066                  {
9067                    ret = new TCommonBlock(pdbvendor);
9068                    gnewsqlstatementtype = ret.sqlstatementtype;
9069                  }
9070                else if ( pcst.tokencode == TBaseType.rrw_declare )
9071                  {
9072                    ret = new TCommonBlock(pdbvendor);
9073                    gnewsqlstatementtype = ret.sqlstatementtype;
9074                  }
9075                else if ( pcst.tokencode == TBaseType.rrw_begin )
9076                  {
9077                    ret = new TCommonBlock(pdbvendor);
9078                    gnewsqlstatementtype = ret.sqlstatementtype;
9079                  }
9080                else if ( pcst.tokencode == TBaseType.rrw_procedure )
9081                  {
9082                    ret = new TPlsqlCreateProcedure(pdbvendor);
9083                    // ret.sqlstatementtype = ESqlStatementType.sstplsql_createprocedure;
9084                    gnewsqlstatementtype = ret.sqlstatementtype;
9085                  }
9086                else if ( pcst.tokencode == TBaseType.rrw_function )
9087                  {
9088                    ret = new TPlsqlCreateFunction(pdbvendor);
9089                    // ret.sqlstatementtype = ESqlStatementType.sstplsql_createfunction;
9090                    gnewsqlstatementtype = ret.sqlstatementtype;
9091                  }
9092                else if ( pcst.tokencode == TBaseType.rrw_package )
9093                  {
9094                    ret = new TPlsqlCreatePackage(pdbvendor);
9095                   // ret.sqlstatementtype = ESqlStatementType.sstplsql_createpackage;
9096                    gnewsqlstatementtype = ret.sqlstatementtype;
9097                  }
9098              }
9099              break;
9100          }
9101        case sstselect:
9102          {
9103            boolean lcisnewsql = true;
9104
9105            if ( pstate != EFindSqlStateType.stnormal )
9106              {
9107                // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
9108                if ( (lcprevsolidtoken != null) )
9109                  {
9110                    if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
9111                      lcisnewsql = false; //subqery
9112                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
9113                      lcisnewsql = false;
9114                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
9115                      lcisnewsql = false;
9116                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
9117                      lcisnewsql = false;
9118                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
9119                      lcisnewsql = false;
9120                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
9121                      lcisnewsql = false;
9122                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
9123                      {
9124                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
9125                          lcisnewsql = false;
9126                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
9127                          lcisnewsql = false;
9128                      }
9129
9130                    if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
9131                      {
9132                        TSourceToken lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
9133                        if ( (lcpprevsolidtoken != null) )
9134                          {
9135                            if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
9136                              lcisnewsql = false;
9137                          }
9138                      }
9139
9140                  }
9141
9142
9143                if ( (lccurrentsqlstatement != null) )
9144                  {
9145                    if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
9146                      lcisnewsql = false;
9147                  }
9148
9149              }
9150
9151            if ( lcisnewsql )
9152              ret = new TSelectSqlStatement(pdbvendor);
9153
9154            break;
9155          }
9156        case sstinsert:
9157          {
9158            boolean lcisnewsql = true;
9159            if ( pstate != EFindSqlStateType.stnormal )
9160              {
9161                if ( (lccurrentsqlstatement != null) )
9162                  {
9163                        // merge
9164                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
9165                        {
9166                              if (lcprevsolidtoken != null)
9167                              {
9168                                  if (lcprevsolidtoken.tokencode == TBaseType.rrw_then)
9169                                  {lcisnewsql = false;}
9170                              }
9171                        }
9172
9173                  }
9174              }
9175
9176            if ( lcisnewsql )
9177              ret = new TInsertSqlStatement(pdbvendor);
9178
9179            break;
9180          }
9181        case sstupdate:
9182          {
9183            boolean lcisnewsql = true;
9184            if ( pstate != EFindSqlStateType.stnormal )
9185              {
9186                lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
9187                if ( (lcprevsolidtoken != null) )
9188                  { //
9189                    if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
9190                      lcisnewsql = false;
9191                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
9192                      lcisnewsql = false;
9193                  }
9194
9195                TSourceToken lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
9196                if ( (lcnextsolidtoken != null) )
9197                  {
9198                    if ( lcnextsolidtoken.tokentype == ETokenType.ttleftparenthesis)
9199                      {
9200                        int k = lcsourcetokenlist.solidtokenafterpos(lcnextsolidtoken.posinlist,TBaseType.rrw_select,1,"(");
9201                        if ( k  == 0 ) lcisnewsql = false;
9202                      }
9203                  }
9204
9205
9206                if ( (lccurrentsqlstatement != null) )
9207                  {
9208                        // merge
9209                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
9210                        {
9211                              if (lcprevsolidtoken != null)
9212                              {
9213                                  if (lcprevsolidtoken.tokencode == TBaseType.rrw_then)
9214                                  {lcisnewsql = false;}
9215                              }
9216                        }
9217                  }
9218              }
9219
9220            if ( lcisnewsql )
9221              {
9222                ret = new TUpdateSqlStatement(pdbvendor);
9223                ret.dummytag = 1; // means set clause in update is not found yet, used to seperate set clause from set statement
9224              }
9225            break;
9226          }
9227        case sstdelete:
9228          {
9229            boolean lcisnewsql = true;
9230
9231            if ( pstate != EFindSqlStateType.stnormal )
9232              {
9233                lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
9234                if ( (lcprevsolidtoken != null) )
9235                  {
9236                    if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
9237                      lcisnewsql = false;
9238                  }
9239
9240                if ( (lccurrentsqlstatement != null) )
9241                  {
9242                        // merge
9243                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
9244                        {
9245                              if (lcprevsolidtoken != null)
9246                              {
9247                                  if (lcprevsolidtoken.tokencode == TBaseType.rrw_then)
9248                                  {lcisnewsql = false;}
9249                              }
9250                        }
9251                  }
9252              }
9253
9254            if ( lcisnewsql )
9255              ret = new TDeleteSqlStatement(pdbvendor);
9256
9257            break;
9258          }
9259        case sstmerge:
9260          {
9261            ret = new TMergeSqlStatement(pdbvendor);
9262            ret.sqlstatementtype = gnewsqlstatementtype;
9263            break;
9264          }
9265        case sstinformixCommit:
9266          {
9267            ret = new TUnknownSqlStatement(pdbvendor);
9268            ret.sqlstatementtype = gnewsqlstatementtype;
9269            break;
9270          }
9271        case sstinformixSavepoint:
9272          {
9273            ret = new TUnknownSqlStatement(pdbvendor);
9274            ret.sqlstatementtype = gnewsqlstatementtype;
9275              break;
9276          }
9277        case sstinformixRevoke:
9278          {
9279            ret = new TUnknownSqlStatement(pdbvendor);
9280            ret.sqlstatementtype = gnewsqlstatementtype;
9281              break;
9282          }
9283        case sstinformixGrant:
9284          {
9285            ret = new TUnknownSqlStatement(pdbvendor);
9286            ret.sqlstatementtype = gnewsqlstatementtype;
9287              break;
9288          }
9289        case sstTruncate:
9290          {
9291              ret = new TTruncateStatement(pdbvendor);
9292              ret.sqlstatementtype = gnewsqlstatementtype;
9293              break;
9294          }
9295        case sstcreatetable:
9296        case sstinformixCreateTempTable:
9297          {
9298            ret = new TCreateTableSqlStatement(pdbvendor);
9299              break;
9300          }
9301        case sstinformixCreateView:
9302          {
9303            ret = new TCreateViewSqlStatement(pdbvendor);
9304              break;
9305          }
9306        case sstinformixCreateIndex:
9307          {
9308            ret = new TCreateIndexSqlStatement(pdbvendor);
9309              break;
9310          }
9311        case sstinformixCreateDatabase:
9312          {
9313            ret = new TCreateDatabaseSqlStatement(pdbvendor);
9314              break;
9315          }
9316        case sstinformixDropTable:
9317          {
9318            ret = new TDropTableSqlStatement(pdbvendor);
9319              break;
9320          }
9321        case sstinformixDropView:
9322          {
9323           ret = new TDropViewSqlStatement(pdbvendor);
9324              break;
9325          }
9326        case sstinformixDropIndex:
9327          {
9328            ret = new TDropIndexSqlStatement(pdbvendor);
9329              break;
9330          }
9331        case sstinformixDropRowType:
9332        {
9333            ret = new TInformixDropRowTypeStmt(pdbvendor);
9334            break;
9335        }
9336        case sstinformixDropSequence:
9337        {
9338            ret = new TDropSequenceStmt(pdbvendor);
9339            break;
9340        }
9341        case sstinformixDropSynonym:
9342        {
9343            ret = new TDropSynonymStmt(pdbvendor);
9344            break;
9345        }
9346        case sstinformixAlterTable:
9347          {
9348            ret = new TAlterTableStatement(pdbvendor);
9349              break;
9350          }
9351        case sstinformixCreateProcedure:
9352        {
9353          ret = new TInformixCreateProcedure(pdbvendor);
9354          ret.sqlstatementtype = gnewsqlstatementtype;
9355            break;
9356        }
9357        case sstinformixCreateFunction:
9358        {
9359          ret = new TInformixCreateFunction(pdbvendor);
9360          ret.sqlstatementtype = gnewsqlstatementtype;
9361            break;
9362        }
9363        case sstcreatetrigger:
9364        {
9365          ret = new TCreateTriggerStmt(pdbvendor);
9366            break;
9367        }
9368        case sstinformixExecuteImmediate:
9369          {
9370            ret = new TInformixExecuteImmediate(pdbvendor);
9371              break;
9372          }
9373        case sstinformixCreateSequence:
9374        case sstinformixAlterSequence:
9375          {
9376            ret = new TCreateSequenceStmt(pdbvendor);
9377              break;
9378          }
9379        case sstinformixCreateSynonym:
9380          {
9381            ret = new TCreateSynonymStmt(pdbvendor);
9382              break;
9383          }
9384        case sstinformixExecuteFunction:
9385        {
9386            ret = new TInformixExecuteFunction(pdbvendor);
9387            break;
9388        }
9389        case sstinformixExecuteProcedure:
9390        {
9391            ret = new TInformixExecuteProcedure(pdbvendor);
9392            break;
9393        }
9394        case sstinformixCreateRowType:
9395        {
9396            ret = new TInformixCreateRowTypeStmt(pdbvendor);
9397            break;
9398        }
9399        case sstinformixPut:
9400        case sstinformixInfo:
9401          {
9402            ret = null;
9403
9404            if ( pstate == EFindSqlStateType.stnormal )
9405              {
9406                  ret = new TUnknownSqlStatement(pdbvendor);
9407                  ret.sqlstatementtype = gnewsqlstatementtype;
9408              }
9409              break;
9410          }
9411        case sstinformixAlterIndex:
9412        {
9413            ret = new TAlterIndexStmt(pdbvendor);
9414            break;
9415        }
9416        case sstinformixRenameColumn:
9417        case sstinformixRenameTable:
9418        case sstinformixRenameSequence:
9419        case sstinformixRenameIndex:
9420        {
9421            ret = new TRenameStmt(pdbvendor);
9422            break;
9423        }
9424        case sstdropdatabase:
9425            ret = new TDropDatabaseStmt(pdbvendor);
9426            break;
9427        case sstinformixRollbackWork:
9428        {
9429            ret =  new TMssqlRollback(pdbvendor);
9430            break;
9431        }
9432        default:
9433          {
9434            ret = new TUnknownSqlStatement(pdbvendor);
9435            ret.sqlstatementtype = gnewsqlstatementtype;
9436            break;
9437          }
9438    }    // case
9439
9440    return ret;
9441}
9442
9443
9444    TCustomSqlStatement issybasesql(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
9445        TCustomSqlStatement ret = null;
9446        int k;
9447        boolean lcisnewsql;
9448        TSourceToken lcpprevsolidtoken,lcnextsolidtoken,lctoken;
9449
9450        gnewsqlstatementtype = ESqlStatementType.sstinvalid;
9451
9452        if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
9453                || (pcst.tokencode  == TBaseType.cmtslashstar)
9454                || (pcst.tokencode  == TBaseType.lexspace)
9455                || (pcst.tokencode  == TBaseType.lexnewline)
9456                || (pcst.tokentype == ETokenType.ttsemicolon) )
9457        {
9458            return ret;
9459        }
9460
9461        int lcpos = pcst.posinlist;
9462        TSourceTokenList lcsourcetokenlist = pcst.container;
9463        TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
9464
9465        //subquery after semicolon || at first line
9466        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
9467        {
9468            k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
9469            if ( k >0 )
9470            {
9471                ret =  new TSelectSqlStatement(pdbvendor);
9472            }
9473
9474            return ret;
9475        }
9476
9477        //cte
9478        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
9479        {
9480            ret = findcte(pcst,pdbvendor);
9481            if ( (ret != null) )  return ret;
9482        }
9483
9484        gnewsqlstatementtype = findsybasecmd(pcst);
9485
9486        TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
9487        switch(gnewsqlstatementtype ) {   //
9488            case sstinvalid:
9489            {
9490                if ( pcst.tokencode == TBaseType.mslabel )
9491                {
9492                    ret =  new TMssqlLabel(pdbvendor);
9493                }
9494                else
9495                    ret = null;
9496
9497                break;
9498            }
9499            case sstselect:
9500            {
9501                lcisnewsql = true;
9502
9503                if ( pstate != EFindSqlStateType.stnormal )
9504                {
9505                    // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
9506                    if ( (lcprevsolidtoken != null) )
9507                    {
9508                        if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
9509                            lcisnewsql = false; //subqery
9510                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
9511                            lcisnewsql = false;
9512                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
9513                            lcisnewsql = false;
9514                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
9515                            lcisnewsql = false;
9516                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
9517                            lcisnewsql = false;
9518                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
9519                            lcisnewsql = false;
9520                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
9521                        {
9522                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
9523                                lcisnewsql = false;
9524                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
9525                                lcisnewsql = false;
9526                        }
9527                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
9528                        {
9529                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlset )
9530                                lcisnewsql = false;
9531                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqldeclare )
9532                                lcisnewsql = false;
9533                        }
9534
9535                        if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
9536                        {
9537                            lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
9538                            if ( (lcpprevsolidtoken != null) )
9539                            {
9540                                if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
9541                                    lcisnewsql = false;
9542                            }
9543                        }
9544
9545                    }
9546
9547                    if ( (lccurrentsqlstatement != null) )
9548                    {
9549                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
9550                        {
9551                        }
9552                        else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlgrant )
9553                        {
9554                            if ( (lcprevsolidtoken != null) )
9555                            {
9556                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_grant )
9557                                    lcisnewsql = false;
9558                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
9559                                    lcisnewsql = false;
9560                            }
9561                        } else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlrevoke )
9562                        {
9563                            if ( (lcprevsolidtoken != null) )
9564                            {
9565                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_revoke )
9566                                    lcisnewsql = false;
9567                            }
9568                        }else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview ){
9569                            lcisnewsql = false;
9570                        }
9571                    }
9572
9573                }
9574
9575                if ( lcisnewsql )
9576                    ret =  new TSelectSqlStatement(pdbvendor);
9577
9578                break;
9579
9580            }
9581            case sstinsert:
9582            {
9583                lcisnewsql = true;
9584                if ( pstate != EFindSqlStateType.stnormal )
9585                {
9586                    if ( (lccurrentsqlstatement != null) )
9587                    {
9588                        // merge
9589                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
9590                        {
9591                              if (lcprevsolidtoken != null)
9592                              {
9593                                  if (lcprevsolidtoken.tokencode == TBaseType.rrw_then)
9594                                  {lcisnewsql = false;}
9595                              }
9596                        }
9597
9598                        // bulk insert
9599                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlbulkinsert )
9600                        {
9601                            if ( (lcprevsolidtoken != null) )
9602                            {
9603                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_bulk )
9604                                    lcisnewsql = false;
9605                            }
9606                        }
9607
9608                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlgrant )
9609                        {
9610                            if ( (lcprevsolidtoken != null) )
9611                            {
9612                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_grant )
9613                                    lcisnewsql = false;
9614                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
9615                                    lcisnewsql = false;
9616                            }
9617                        }else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlrevoke ) {
9618                            if ( (lcprevsolidtoken != null) )
9619                            {
9620                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_revoke )
9621                                    lcisnewsql = false;
9622                            }
9623                        }
9624
9625                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetrigger )
9626                        {
9627                            if ( (lcprevsolidtoken != null) )
9628                            {
9629                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
9630                                    lcisnewsql = false;
9631                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
9632                                    lcisnewsql = false;
9633                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(),"after") == 0 )
9634                                    lcisnewsql = false;
9635                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(), "of") == 0 )
9636                                    lcisnewsql = false;
9637                            }
9638                        }
9639
9640
9641                    }
9642                }
9643
9644                if ( lcisnewsql )
9645                {
9646                    ret =  new TInsertSqlStatement(pdbvendor);
9647                    ret.dummytag = 1; //  select stmt in insert is permitted
9648                    for ( k = lcpos + 1; k < lcsourcetokenlist.size();k++ )    // iterate
9649                    {
9650                        if ( lcsourcetokenlist.get(k).isnonsolidtoken() ) continue;
9651                        if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_values ) break;
9652                        if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_go ) break;
9653                        if ( lcsourcetokenlist.get(k).tokentype == ETokenType.ttsemicolon ) break;
9654                        if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_select ) break;
9655                        if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_execute ) break;
9656                        if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_exec ) break;
9657                    }    // for (
9658                    if ( k > lcsourcetokenlist.size() - 1 )
9659                        k = lcsourcetokenlist.size() - 1;
9660
9661                    for ( int i = lcpos + 1; i <=  k; i++ )    // iterate
9662                    {
9663                        lcsourcetokenlist.get(i).tokenstatus = ETokenStatus.tsignoredbygetrawstatement;
9664                    }    // for (
9665
9666                }
9667
9668                break;
9669            }
9670            case sstsybaseInsertBulk:
9671            {
9672                ret =  new TInsertBulk(pdbvendor);
9673                break;
9674            }
9675            case sstupdate:
9676            {
9677                lcisnewsql = true;
9678                if ( pstate != EFindSqlStateType.stnormal )
9679                {
9680                    // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
9681                    if ( (lcprevsolidtoken != null) )
9682                    { //
9683                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
9684                            lcisnewsql = false;
9685                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
9686                            lcisnewsql = false;
9687                    }
9688
9689                    lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
9690                    if ( TBaseType.assigned(lcnextsolidtoken) )
9691                    {
9692                        if ( lcnextsolidtoken.tokentype == ETokenType.ttleftparenthesis)
9693                        {
9694                            k = lcsourcetokenlist.solidtokenafterpos(lcnextsolidtoken.posinlist,TBaseType.rrw_select,1,"(");
9695                            if ( k  == 0 ) lcisnewsql = false;
9696                        }
9697                    }
9698
9699
9700                    if ( TBaseType.assigned(lccurrentsqlstatement) )
9701                    {
9702                        // merge
9703                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
9704                        {
9705                              if (lcprevsolidtoken != null)
9706                              {
9707                                  if (lcprevsolidtoken.tokencode == TBaseType.rrw_then)
9708                                  {lcisnewsql = false;}
9709                              }
9710                        }
9711
9712                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlgrant )
9713                        {
9714                            if ( TBaseType.assigned(lcprevsolidtoken) )
9715                            {
9716                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_grant )
9717                                    lcisnewsql = false;
9718                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
9719                                    lcisnewsql = false;
9720                            }
9721                        }else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlrevoke )
9722                        {
9723                            if ( TBaseType.assigned(lcprevsolidtoken) )
9724                            {
9725                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_revoke )
9726                                    lcisnewsql = false;
9727                            }
9728                        }
9729                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetrigger )
9730                        {
9731                            if ( TBaseType.assigned(lcprevsolidtoken) )
9732                            {
9733                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
9734                                    lcisnewsql = false;
9735                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
9736                                    lcisnewsql = false;
9737                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(),"after") == 0 )
9738                                    lcisnewsql = false;
9739                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(), "of") == 0 )
9740                                    lcisnewsql = false;
9741                            }
9742                        }
9743
9744                    }
9745                }
9746
9747                if ( lcisnewsql )
9748                {
9749                    ret =  new TUpdateSqlStatement(pdbvendor);
9750                    ret.dummytag = 1; // means set clause in update is not found yet, used to seperate set clause from set statement
9751                }
9752
9753                break;
9754            }
9755            case sstdelete:
9756            {
9757                lcisnewsql = true;
9758
9759                if ( pstate != EFindSqlStateType.stnormal )
9760                {
9761                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
9762                    if ( TBaseType.assigned(lcprevsolidtoken) )
9763                    {
9764                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
9765                            lcisnewsql = false;
9766                    }
9767
9768                    if ( TBaseType.assigned(lccurrentsqlstatement) )
9769                    {
9770                        // merge
9771                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
9772                        {
9773                              if (lcprevsolidtoken != null)
9774                              {
9775                                  if (lcprevsolidtoken.tokencode == TBaseType.rrw_then)
9776                                  {lcisnewsql = false;}
9777                              }
9778                        }
9779
9780                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlgrant )
9781                        {
9782                            if ( TBaseType.assigned(lcprevsolidtoken) )
9783                            {
9784                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_grant )
9785                                    lcisnewsql = false;
9786                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
9787                                    lcisnewsql = false;
9788                            }
9789                        }else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlrevoke )
9790                        {
9791                            if ( TBaseType.assigned(lcprevsolidtoken) )
9792                            {
9793                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_revoke )
9794                                    lcisnewsql = false;
9795                            }
9796                        }
9797
9798                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetrigger )
9799                        {
9800                            if ( TBaseType.assigned(lcprevsolidtoken) )
9801                            {
9802                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
9803                                    lcisnewsql = false;
9804                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
9805                                    lcisnewsql = false;
9806                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(),"after") == 0 )
9807                                    lcisnewsql = false;
9808                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(), "of") == 0 )
9809                                    lcisnewsql = false;
9810                            }
9811                        }
9812
9813                    }
9814                }
9815
9816                if ( lcisnewsql )
9817                    ret =  new TDeleteSqlStatement(pdbvendor);
9818
9819                break;
9820            }
9821            case sstcreatetable:
9822            {
9823                ret =  new TCreateTableSqlStatement(pdbvendor);
9824                break;
9825            }
9826            case sstcreateview:
9827            {
9828                ret =  new TCreateViewSqlStatement(pdbvendor);
9829                break;
9830            }
9831            case sstaltertable:
9832            {
9833                ret =  new TAlterTableStatement(pdbvendor);
9834                break;
9835            }
9836            case sstmssqlfetch:
9837            {
9838                ret =  new TMssqlFetch(pdbvendor);
9839                break;
9840            }
9841            case sstmssqlif :
9842            {
9843                lcisnewsql = true;
9844                if ((lccurrentsqlstatement != null) && ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqldropprocedure ))
9845                {lcisnewsql = false;}
9846                if (lcisnewsql){
9847                    ret = new TMssqlIfElse(pdbvendor);
9848                    ret.dummytag = 1;// reduce to 0 while stmt find in 'if ( condtion stmt' || 'else stmt'
9849                }
9850
9851                break;
9852            }
9853            case sstmssqlwhile:
9854            {
9855                ret = new TMssqlIfElse(pdbvendor);
9856                ret.dummytag = 1;// reduce to 0 while stmt find in 'if ( condtion stmt' || 'else stmt'
9857                break;
9858            }
9859            case sstmssqlcreateprocedure :
9860            case sstmssqlalterprocedure:
9861            {
9862                ret = new TMssqlCreateProcedure(pdbvendor);
9863                break;
9864            }
9865            case sstmssqlcreatefunction :
9866            case sstmssqlalterfunction:
9867            {
9868                ret =  new TMssqlCreateFunction(pdbvendor);
9869                break;
9870            }
9871            case sstcreatetrigger :
9872            case sstmssqlaltertrigger:
9873            {
9874                ret =  new TCreateTriggerStmt(pdbvendor);
9875                break;
9876            }
9877            case sstmssqlreturn:
9878            {
9879                ret =  new TMssqlReturn(pdbvendor);
9880                break;
9881            }
9882            case sstmssqlprint:
9883            {
9884                ret =  new TMssqlPrint(pdbvendor);
9885                break;
9886            }
9887            case sstmssqluse:
9888            {
9889                ret =  new TUseDatabase(pdbvendor);
9890                break;
9891            }
9892            case sstmssqlgo:
9893            {
9894                ret =  new TMssqlGo(pdbvendor);
9895                break;
9896            }
9897            case sstmssqlrevert:
9898            {
9899                ret =  new TMssqlRevert(pdbvendor);
9900                break;
9901            }
9902            case sstmssqlgrant:
9903            {
9904                lcisnewsql = true;
9905                // prev tokentext can't be with
9906                if ( pstate != EFindSqlStateType.stnormal )
9907                {
9908                    if ( TBaseType.assigned(lcprevsolidtoken) )
9909                    {
9910                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_with )
9911                        {
9912                            ret = null;
9913                            lcisnewsql = false;
9914                        }
9915                    }
9916                }
9917                if ( lcisnewsql )
9918                {
9919                    ret =  new TGrantStmt(pdbvendor);
9920                    //ret.sqlstatementtype = gnewsqlstatementtype;
9921                    for ( k = lcpos + 1; k< lcsourcetokenlist.size();k++ )    // iterate
9922                    {
9923                        lctoken = lcsourcetokenlist.get(k);
9924                        if (lctoken.isnonsolidtoken() ) continue;
9925                        if ( lctoken.tokencode == TBaseType.rrw_go ) break;
9926                        if ( lctoken.tokentype == ETokenType.ttsemicolon ) break;
9927                        if ( lctoken.tokencode == TBaseType.rrw_to   ) break;
9928                        lctoken.tokenstatus = ETokenStatus.tsignoredbygetrawstatement;
9929                    }
9930                }
9931                break;
9932            }
9933            case sstmssqldeclare:
9934            {
9935                ret =  new TMssqlDeclare(pdbvendor);
9936                break;
9937            }
9938            case sstmssqlcontinue:
9939            {
9940                lcisnewsql = true;
9941                if ((lccurrentsqlstatement != null) && ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstload ))
9942                {lcisnewsql = false;}
9943                if (lcisnewsql){
9944                    ret =  new TMssqlContinue(pdbvendor);
9945                }
9946
9947                break;
9948            }
9949            case sstbreak:
9950            {
9951                ret =  new TBreakStmt(pdbvendor);
9952                break;
9953            }
9954            case sstmssqlopen:
9955            {
9956                ret =  new TMssqlOpen(pdbvendor);
9957                break;
9958            }
9959            case sstmssqlclose:
9960            {
9961                ret =  new TMssqlClose(pdbvendor);
9962                break;
9963            }
9964            case sstmssqlbulkinsert:
9965            {
9966                ret =  new TMssqlBulkInsert(pdbvendor);
9967                break;
9968            }
9969            case sstmssqldeallocate:
9970            {
9971                ret =  new TMssqlDeallocate(pdbvendor);
9972                break;
9973            }
9974            case sstmssqlraiserror:
9975            {
9976                ret =  new TMssqlRaiserror(pdbvendor);
9977                break;
9978            }
9979            case sstmssqlgoto:
9980            {
9981                ret =  new TMssqlGoTo(pdbvendor);
9982                break;
9983            }
9984            case sstmssqldropview:
9985            {
9986                ret =  new TDropViewSqlStatement(pdbvendor);
9987                break;
9988            }
9989            case sstmssqldroptable:
9990            {
9991                ret =  new TDropTableSqlStatement(pdbvendor);
9992                break;
9993            }
9994            case sstmssqldropindex:
9995            {
9996                ret =  new TDropIndexSqlStatement(pdbvendor);
9997                break;
9998            }
9999            case sstmssqldroppartitionscheme :
10000                ret = new TDropPartitionSchemeStmt(pdbvendor);
10001                break;
10002
10003            case sstmssqldropaggregate :
10004            case sstmssqldropapplicationrole :
10005            case sstmssqldropassembly :
10006            case sstmssqldropasymmetrickey :
10007            case sstmssqldropcertificate :
10008            case sstmssqldropcontract :
10009            case sstmssqldropcredential :
10010            case sstmssqldropdefault :
10011            case sstmssqldropendpoint :
10012            case sstmssqldropeventnotification :
10013            case sstmssqldropfulltextcatalog :
10014            case sstmssqldropfulltextindex :
10015            case sstmssqldropfunction :
10016            case sstmssqldroplogin :
10017            case sstmssqldropmasterkey :
10018            case sstmssqldropmessagetype :
10019            case sstmssqldroppartitionfunction :
10020            case sstmssqldropprocedure :
10021            case sstmssqldropqueue :
10022            case sstmssqldropremoteservicebinding :
10023            case sstmssqldroprole :
10024            case sstmssqldroproute :
10025            case sstmssqldroprule :
10026            case sstmssqldropschema :
10027            case sstmssqldropservice :
10028            case sstmssqldropsignature:
10029            case sstmssqldropstatistics :
10030            case sstmssqldropsymmetrickey :
10031            case sstmssqldroptrigger :
10032            case sstmssqldroptype :
10033            case sstmssqldropuser :
10034            case sstmssqldropxmlschemacollection:
10035            case sstmssqldropdatabase :
10036            {
10037                ret =  new TMssqlDropDbObject(EDbVendor.dbvsybase);
10038                ret.sqlstatementtype = gnewsqlstatementtype;
10039                break;
10040            }
10041            case sstmssqldropsynonym :
10042            {
10043                ret =  new TDropSynonymStmt(pdbvendor);
10044                break;
10045            }
10046            case sstmssqltruncatetable:
10047            {
10048                ret =  new TTruncateStatement(pdbvendor);
10049                break;
10050            }
10051            case sstmssqlbegintran:
10052            {
10053                ret =  new TBeginTran(pdbvendor);
10054                break;
10055            }
10056            case sstmssqlsavetran:
10057            {
10058                ret =  new TMssqlSaveTran(pdbvendor);
10059                break;
10060            }
10061            case sstmssqlcommit:
10062            {
10063                lcisnewsql = true;
10064
10065                if ( TBaseType.assigned(lcprevsolidtoken) )
10066                {
10067                    if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
10068                    {
10069
10070                        lcisnewsql = false;
10071                    }
10072                }
10073
10074                if (lcisnewsql){
10075                    ret =  new TMssqlCommit(pdbvendor);
10076                }
10077
10078                break;
10079            }
10080            case sstmssqlrollback:
10081            {
10082                ret =  new TMssqlRollback(pdbvendor);
10083                break;
10084            }
10085            case sstmssqlreadtext :
10086            case sstmssqldbcc :
10087            case sstmssqlrestore :
10088            case sstmssqlbackup :
10089            {
10090                ret = new TMssqlDummyStmt(pdbvendor);
10091                ret.sqlstatementtype = gnewsqlstatementtype;
10092                break;
10093            }
10094            case sstcreateindex:
10095            {
10096                ret =  new TCreateIndexSqlStatement(pdbvendor);
10097                break;
10098            }
10099            case sstmssqlwaitfor:
10100            {
10101                ret =  new TMssqlWaitFor(pdbvendor);
10102                break;
10103            }
10104            case sstmerge:
10105            {
10106                lcisnewsql = true;
10107
10108                if (pstate != EFindSqlStateType.stnormal)
10109                {
10110
10111                    if (lccurrentsqlstatement != null)
10112                    {
10113                        // merge union, merge join
10114                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstselect)
10115                        {
10116                                    lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
10117                                    if (lcnextsolidtoken != null)
10118                                       {
10119                                        if ((lcnextsolidtoken.tokencode == TBaseType.rrw_union) || (lcnextsolidtoken.tokencode == TBaseType.rrw_join))
10120                                           {
10121                                              lcisnewsql = false;
10122                                           }
10123                                        }
10124                        }
10125
10126                    }
10127
10128                    TSourceToken lcnexttoken = lcsourcetokenlist.nextsolidtoken(lcpos, 1, false);
10129                    if ( (lcnexttoken != null) )
10130                    {
10131                        if ( lcnexttoken.tokencode == TBaseType.rrw_sybase_partition )
10132                            lcisnewsql = false;
10133                    }
10134
10135                }
10136
10137                if (lcisnewsql)
10138                {
10139                    ret = new TMergeSqlStatement(pdbvendor);
10140                    ret.sqlstatementtype = gnewsqlstatementtype;
10141                }
10142
10143                break;
10144            }
10145            case sstmssqlbegintry :
10146            case sstmssqlbegincatch:
10147            {
10148                ret =  new TMssqlBlock(pdbvendor);
10149                ret.sqlstatementtype = gnewsqlstatementtype;
10150                break;
10151            }
10152            case sstmssqlexec:
10153            {
10154                lcisnewsql = true;
10155                // prev tokentext can't be with
10156                if ( pstate != EFindSqlStateType.stnormal )
10157                {
10158                    if ( TBaseType.assigned(lccurrentsqlstatement) )
10159                    {
10160                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
10161                        {
10162                            if ( lccurrentsqlstatement.dummytag == 1 )
10163                            {
10164                                lcisnewsql = false;
10165                                lccurrentsqlstatement.dummytag = 0; // no select is permited after it
10166                            }
10167                        }
10168
10169                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlgrant )
10170                        {
10171                            if ( TBaseType.assigned(lcprevsolidtoken) )
10172                            {
10173                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_grant )
10174                                    lcisnewsql = false;
10175                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
10176                                    lcisnewsql = false;
10177                            }
10178                        }else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlrevoke ){
10179                            if ( TBaseType.assigned(lcprevsolidtoken) )
10180                            {
10181                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_revoke )
10182                                    lcisnewsql = false;
10183                            }
10184                        }
10185
10186
10187
10188                        if (
10189                                (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlcreateprocedure)
10190                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetrigger)
10191                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlcreatefunction)
10192                                        ||(lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlalterprocedure)
10193                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlaltertrigger)
10194                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlalterfunction)
10195                                )
10196                        {
10197                            if ( TBaseType.assigned(lcprevsolidtoken) )
10198                            {
10199                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_with )
10200                                    lcisnewsql = false;
10201                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
10202                                    lcisnewsql = false;
10203                            }
10204                        }
10205                    }
10206                }
10207                if ( lcisnewsql )
10208                {
10209                    ret =  new TMssqlExecute(pdbvendor);
10210                }
10211                break;
10212            }
10213            case sstmssqlexecuteas:
10214            {
10215                lcisnewsql = true;
10216                // prev tokentext can't be with
10217                if ( pstate != EFindSqlStateType.stnormal )
10218                {
10219                    if ( TBaseType.assigned(lccurrentsqlstatement) )
10220                    {
10221                        if (
10222                                (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlcreateprocedure)
10223                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetrigger)
10224                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlcreatefunction)
10225                                        ||(lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlalterprocedure)
10226                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlaltertrigger)
10227                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlalterfunction)
10228                                )
10229                        {
10230                            if ( TBaseType.assigned(lcprevsolidtoken) )
10231                            {
10232                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_with )
10233                                    lcisnewsql = false;
10234                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
10235                                    lcisnewsql = false;
10236                            }
10237                        }
10238                    }
10239                }
10240                if ( lcisnewsql )
10241                {
10242                    ret =  new TMssqlExecuteAs(pdbvendor);
10243                    ret.sqlstatementtype = gnewsqlstatementtype;
10244                }
10245                break;
10246            }
10247            case sstmssqlset:
10248            {
10249                lcisnewsql = true;
10250                if ( pstate != EFindSqlStateType.stnormal )
10251                {
10252                    if ( TBaseType.assigned(lccurrentsqlstatement) )
10253                    {
10254
10255                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlif)
10256                        {
10257                             TSourceToken lcPPToken = lcsourcetokenlist.searchToken(TBaseType.rrw_update,"",pcst,-10);
10258                             if (TBaseType.assigned(lcPPToken))
10259                            {
10260                                  lcisnewsql = false;
10261                            }
10262                        }
10263
10264                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
10265                        {
10266                              if (lcprevsolidtoken != null)
10267                              {
10268                                  if (lcprevsolidtoken.tokencode == TBaseType.rrw_update){
10269                                    lcisnewsql = false;}
10270                              }
10271                        }
10272
10273                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstupdate )
10274                        {
10275                            if ( lccurrentsqlstatement.dummytag == 1 )
10276                            {
10277                                //update statement still find set clause yet, so this is setclause in update statement
10278                                lccurrentsqlstatement.dummytag = 0;
10279                                lcisnewsql = false;
10280                            }
10281                        }
10282                    }
10283
10284                    lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
10285                    if ( TBaseType.assigned(lcnextsolidtoken) )
10286                    { //set null, set default
10287                        if ( (TBaseType.mycomparetext(lcnextsolidtoken.getAstext(),"null")==0)
10288                                || (TBaseType.mycomparetext(lcnextsolidtoken.getAstext(), "default")==0) )
10289                        {
10290                            lcisnewsql = false;
10291                        }
10292                    }
10293
10294                }
10295
10296                if ( lcisnewsql )
10297                {
10298                    ret =  new TMssqlSet(pdbvendor);
10299                }
10300
10301                break;
10302            }
10303            case sstmssqlupdatetext:
10304            {
10305                ret =  new TMssqlUpdateText(pdbvendor);
10306                break;
10307            }
10308            case sstmssqlendconversation:
10309            {
10310                ret =  new TMssqlEndConversation(pdbvendor);
10311                break;
10312            }
10313            case sstmssqlbegindialog:
10314            {
10315                ret =  new TMssqlBeginDialog(pdbvendor);
10316                break;
10317            }
10318            case sstmssqlsendonconversation:
10319            {
10320                ret =  new TMssqlSendOnConversation(pdbvendor);
10321                break;
10322            }
10323            case sstmssqldisabletrigger :
10324            case sstmssqlenabletrigger:
10325            {
10326                lcisnewsql = true;
10327                if ( TBaseType.assigned(lccurrentsqlstatement) )
10328                {
10329                    if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstaltertable )
10330                        lcisnewsql = false;
10331                }
10332
10333                if ( lcisnewsql )
10334                {
10335                    ret =  new TDisableEnableTriggerStmt(pdbvendor);
10336                    ret.sqlstatementtype = gnewsqlstatementtype;
10337                }
10338                break;
10339            }
10340            case sstsybaseWritetext:
10341            {
10342                ret =  new TSybaseWritetext(pdbvendor);
10343                break;
10344            }
10345            case sstsybaseDeleteStatistics:
10346            {
10347                ret = new TSybaseDeleteStatistics(pdbvendor);
10348                break;
10349            }
10350            case sstcall:
10351            {
10352                ret = new TCallStatement(pdbvendor);
10353                break;
10354            }
10355            default:
10356            {
10357                ret =  new TUnknownSqlStatement(pdbvendor);
10358                ret.sqlstatementtype = gnewsqlstatementtype;
10359                break;
10360            }
10361        }    // case
10362
10363        return ret;
10364    }
10365
10366    TCustomSqlStatement ismssqlsql(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
10367        TCustomSqlStatement ret = null;
10368        int k;
10369        boolean lcisnewsql;
10370        TSourceToken lcpprevsolidtoken,lcnextsolidtoken,lctoken;
10371
10372        gnewsqlstatementtype = ESqlStatementType.sstinvalid;
10373
10374        if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
10375                || (pcst.tokencode  == TBaseType.cmtslashstar)
10376                || (pcst.tokencode  == TBaseType.lexspace)
10377                || (pcst.tokencode  == TBaseType.lexnewline)
10378                || (pcst.tokentype == ETokenType.ttsemicolon) )
10379        {
10380            return ret;
10381        }
10382
10383        int lcpos = pcst.posinlist;
10384        TSourceTokenList lcsourcetokenlist = pcst.container;
10385        TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
10386
10387        //subquery after semicolon or at first line
10388        if ( pcst.tokentype == ETokenType.ttleftparenthesis)  // (
10389        {
10390            k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
10391            if ( k >0 )
10392            {
10393                if (pstate == EFindSqlStateType.stnormal){
10394                    ret =  new TSelectSqlStatement(pdbvendor);
10395                    return ret;
10396                }
10397//                if (((lccurrentsqlstatement != null) )&&(lccurrentsqlstatement.sqlstatementtype != ESqlStatementType.sstselect)&&(lcsourcetokenlist.returnbeforecurtoken(true))){
10398//                    ret =  new TSelectSqlStatement(pdbvendor);
10399//                    return ret;
10400//                }
10401            }
10402        }
10403
10404        //cte
10405        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
10406        {
10407            ret = findcte(pcst,pdbvendor);
10408            if ( (ret != null) )  return ret;
10409        }
10410
10411        if ( (lccurrentsqlstatement != null) && (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable)
10412                && (pcst.tokencode == TBaseType.rrw_with) )
10413        {
10414            TSourceToken lcPrevToken = pcst.prevSolidToken();
10415            if ((lcPrevToken != null) && (lcPrevToken.tokencode == TBaseType.rrw_as))
10416            { // mantisbt/view.php?id=3900, create table with as select, ignore tokens from with to select (including the select token)
10417                ret = findcte(pcst,pdbvendor);
10418                if ( (ret != null) )  {
10419                    ret = null;
10420                }
10421            }
10422        }
10423
10424        //odbc
10425        if ( (pstate == EFindSqlStateType.stnormal) && ((pcst.tokencode == '{')||(pcst.tokencode == TBaseType.odbc_esc_prefix)) && (pcst.getLinkToken() != null)  )
10426        {
10427            ret = new TCallStatement(pdbvendor);
10428            return ret;
10429        }
10430
10431        gnewsqlstatementtype = findmssqlcmd(pcst);
10432
10433        TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
10434        switch(gnewsqlstatementtype ) {   //
10435            case sstinvalid:
10436            {
10437                if ( pcst.tokencode == TBaseType.mslabel )
10438                {
10439                    ret =  new TMssqlLabel(pdbvendor);
10440                }
10441                else
10442                    ret = null;
10443
10444                break;
10445            }
10446            case sstselect:
10447            {
10448                lcisnewsql = true;
10449
10450                if ( pstate != EFindSqlStateType.stnormal )
10451                {
10452                    // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
10453                    if ( (lcprevsolidtoken != null) )
10454                    {
10455                        if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
10456                            lcisnewsql = false; //subqery
10457                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
10458                            lcisnewsql = false;
10459                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
10460                            lcisnewsql = false;
10461                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
10462                            lcisnewsql = false;
10463                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
10464                            lcisnewsql = false;
10465                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
10466                            lcisnewsql = false;
10467                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
10468                        {
10469                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
10470                                lcisnewsql = false;
10471                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
10472                                lcisnewsql = false;
10473                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstalterview )
10474                                lcisnewsql = false;
10475                        }
10476                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
10477                        {
10478                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlset )
10479                                lcisnewsql = false;
10480                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqldeclare )
10481                                lcisnewsql = false;
10482                        }
10483
10484                        if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
10485                        {
10486                            lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
10487                            if ( (lcpprevsolidtoken != null) )
10488                            {
10489                                if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
10490                                    lcisnewsql = false;
10491                            }
10492                        }
10493
10494                    }
10495
10496                    if ( (lccurrentsqlstatement != null) )
10497                    {
10498                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
10499                        {
10500                        }
10501                        else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlgrant )
10502                        {
10503                            if ( (lcprevsolidtoken != null) )
10504                            {
10505                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_grant )
10506                                    lcisnewsql = false;
10507                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
10508                                    lcisnewsql = false;
10509                            }
10510                        }else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview ){
10511                            lcisnewsql = false;
10512                        }else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatematerializedview ){
10513                            lcisnewsql = false;
10514                        }
10515                    }
10516
10517                }
10518
10519                if ( lcisnewsql )
10520                    ret =  new TSelectSqlStatement(pdbvendor);
10521
10522                break;
10523
10524            }
10525            case sstinsert:
10526            {
10527                lcisnewsql = true;
10528                if ( pstate != EFindSqlStateType.stnormal )
10529                {
10530                    if ( (lccurrentsqlstatement != null) )
10531                    {
10532                        // merge
10533                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
10534                        {
10535                              if (lcprevsolidtoken != null)
10536                              {
10537                                  if (lcprevsolidtoken.tokencode == TBaseType.rrw_then)
10538                                  {lcisnewsql = false;}
10539                              }
10540                        }
10541
10542                        // bulk insert
10543                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlbulkinsert )
10544                        {
10545                            if ( (lcprevsolidtoken != null) )
10546                            {
10547                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_bulk )
10548                                    lcisnewsql = false;
10549                            }
10550                        }
10551
10552                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlgrant )
10553                        {
10554                            if ( (lcprevsolidtoken != null) )
10555                            {
10556                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_grant )
10557                                    lcisnewsql = false;
10558                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
10559                                    lcisnewsql = false;
10560                            }
10561                        }
10562
10563                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetrigger )
10564                        {
10565                            if ( (lcprevsolidtoken != null) )
10566                            {
10567                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
10568                                    lcisnewsql = false;
10569                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
10570                                    lcisnewsql = false;
10571                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(),"after") == 0 )
10572                                    lcisnewsql = false;
10573                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(), "of") == 0 )
10574                                    lcisnewsql = false;
10575                            }
10576                        }
10577
10578
10579                    }
10580                }
10581
10582                if ( lcisnewsql )
10583                {
10584                    ret =  new TInsertSqlStatement(pdbvendor);
10585                    ret.dummytag = 1; //  select stmt in insert is permitted
10586                    for ( k = lcpos + 1; k < lcsourcetokenlist.size();k++ )    // iterate
10587                    {
10588                        if ( lcsourcetokenlist.get(k).isnonsolidtoken() ) continue;
10589                        if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_values ) break;
10590                        if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_go ) break;
10591                        if ( lcsourcetokenlist.get(k).tokentype == ETokenType.ttsemicolon ) break;
10592                        if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_select ){
10593                            ret.dummytag = 0;
10594                            break;
10595                        }
10596                        if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_execute ) break;
10597                        if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_exec ) break;
10598                    }    // for (
10599                    if ( k > lcsourcetokenlist.size() - 1 )
10600                        k = lcsourcetokenlist.size() - 1;
10601
10602                    for ( int i = lcpos + 1; i <=  k; i++ )    // iterate
10603                    {
10604                        lcsourcetokenlist.get(i).tokenstatus = ETokenStatus.tsignoredbygetrawstatement;
10605                    }    // for (
10606
10607                }
10608
10609                break;
10610            }
10611            case sstupdate:
10612            {
10613                lcisnewsql = true;
10614                if ( pstate != EFindSqlStateType.stnormal )
10615                {
10616                    // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
10617                    if ( (lcprevsolidtoken != null) )
10618                    { //
10619                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
10620                            lcisnewsql = false;
10621                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
10622                            lcisnewsql = false;
10623                    }
10624
10625                    lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
10626                    if ( TBaseType.assigned(lcnextsolidtoken) )
10627                    {
10628                        if ( lcnextsolidtoken.tokentype == ETokenType.ttleftparenthesis)
10629                        {
10630                            k = lcsourcetokenlist.solidtokenafterpos(lcnextsolidtoken.posinlist,TBaseType.rrw_select,1,"(");
10631                            if ( k  == 0 ) lcisnewsql = false;
10632                        }
10633                    }
10634
10635
10636                    if ( TBaseType.assigned(lccurrentsqlstatement) )
10637                    {
10638                        // merge
10639                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
10640                        {
10641                              if (lcprevsolidtoken != null)
10642                              {
10643                                  if (lcprevsolidtoken.tokencode == TBaseType.rrw_then)
10644                                  {lcisnewsql = false;}
10645                              }
10646                        }
10647
10648                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlgrant )
10649                        {
10650                            if ( TBaseType.assigned(lcprevsolidtoken) )
10651                            {
10652                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_grant )
10653                                    lcisnewsql = false;
10654                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
10655                                    lcisnewsql = false;
10656                            }
10657                        }
10658                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetrigger )
10659                        {
10660                            if ( TBaseType.assigned(lcprevsolidtoken) )
10661                            {
10662                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
10663                                    lcisnewsql = false;
10664                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
10665                                    lcisnewsql = false;
10666                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(),"after") == 0 )
10667                                    lcisnewsql = false;
10668                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(), "of") == 0 )
10669                                    lcisnewsql = false;
10670                            }
10671                        }
10672
10673                    }
10674                }
10675
10676                if ( lcisnewsql )
10677                {
10678                    ret =  new TUpdateSqlStatement(pdbvendor);
10679                    ret.dummytag = 1; // means set clause in update is not found yet, used to separate set clause from set statement
10680                }
10681
10682                break;
10683            }
10684            case sstdelete:
10685            {
10686                lcisnewsql = true;
10687
10688                if ( pstate != EFindSqlStateType.stnormal )
10689                {
10690                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
10691                    if ( TBaseType.assigned(lcprevsolidtoken) )
10692                    {
10693                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
10694                            lcisnewsql = false;
10695                    }
10696
10697                    if ( TBaseType.assigned(lccurrentsqlstatement) )
10698                    {
10699                        // merge
10700                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
10701                        {
10702                              if (lcprevsolidtoken != null)
10703                              {
10704                                  if (lcprevsolidtoken.tokencode == TBaseType.rrw_then)
10705                                  {lcisnewsql = false;}
10706                              }
10707                        }
10708
10709                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlgrant )
10710                        {
10711                            if ( TBaseType.assigned(lcprevsolidtoken) )
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 ( TBaseType.assigned(lcprevsolidtoken) )
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                if ( lcisnewsql )
10739                    ret =  new TDeleteSqlStatement(pdbvendor);
10740
10741                break;
10742            }
10743            case sstcreatetable:
10744            {
10745                lcisnewsql = true;
10746                if ( pstate != EFindSqlStateType.stnormal ) {
10747
10748                    if (TBaseType.assigned(lccurrentsqlstatement)) {
10749                        if ((lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateschema)
10750                                )
10751                        {
10752                            lcisnewsql = false;
10753                        }
10754                    }
10755                }
10756
10757                if (lcisnewsql) {
10758                    ret = new TCreateTableSqlStatement(pdbvendor);
10759
10760                }
10761                break;
10762            }
10763            case sstcreateview:
10764            {
10765
10766                lcisnewsql = true;
10767                if ( pstate != EFindSqlStateType.stnormal ) {
10768
10769                    if (TBaseType.assigned(lccurrentsqlstatement)) {
10770                        if ((lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateschema)
10771                                )
10772                        {
10773                            lcisnewsql = false;
10774                        }
10775                    }
10776                }
10777                if (lcisnewsql) {
10778                    ret =  new TCreateViewSqlStatement(pdbvendor);
10779                }
10780                break;
10781            }
10782            case sstcreatesequence:
10783              {
10784                ret = new TCreateSequenceStmt(pdbvendor);
10785                  break;
10786              }
10787            case sstaltertable:
10788            {
10789                ret =  new TAlterTableStatement(pdbvendor);
10790                break;
10791            }
10792            case sstmssqlfetch:
10793            {
10794                ret =  new TMssqlFetch(pdbvendor);
10795                break;
10796            }
10797            case sstmssqlif :
10798            {
10799                lcisnewsql = true;
10800                if ( pstate != EFindSqlStateType.stnormal ) {
10801
10802                    if (TBaseType.assigned(lccurrentsqlstatement)) {
10803                        // merge
10804                        if (
10805                            (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstdropprocedure)
10806                                ||(lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstdropdatabase)
10807                                    ||(lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstdropfunction)
10808                                    ||(lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlDropSecurityPolicy)
10809                                )
10810                        {
10811                            lcisnewsql = false;
10812                        }else if ( (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstdroptable)
10813                                ||(lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstdropindex)
10814                                ||(lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable)
10815                                ||(lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstdropsynonym)
10816                                ||(lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstdropview)
10817                                ||(lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstdropsequence)
10818                        ){
10819                            // DROP TABLE IF EXISTS T1;
10820                            TSourceToken st = lcsourcetokenlist.solidtokenbefore(lcpos);
10821                            if ((st.tokencode == TBaseType.rrw_table)||(st.tokencode == TBaseType.rrw_index)
10822                                ||(st.tokencode == TBaseType.rrw_sqlserver_synonym)||(st.tokencode == TBaseType.rrw_view)
10823                                ||(st.tokencode == TBaseType.rrw_sqlserver_sequence)
10824                                ){
10825                                lcisnewsql = false;
10826                            }
10827                        }else if ((lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstaltertable)){
10828                            lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
10829                            if (lcnextsolidtoken != null){
10830                                if (lcnextsolidtoken.tokencode == TBaseType.rrw_sqlserver_exists){
10831                                    lcisnewsql = false;
10832                                }
10833                            }
10834                        }
10835                    }
10836                }
10837
10838
10839                if (lcisnewsql) {
10840                    ret = new TMssqlIfElse(pdbvendor);
10841                    ret.dummytag = 1;// reduce to 0 while stmt find in 'if ( condtion stmt' || 'else stmt'
10842                }
10843                break;
10844            }
10845            case sstmssqlwhile:
10846            {
10847                ret = new TMssqlIfElse(pdbvendor);
10848                ret.dummytag = 1;// reduce to 0 while stmt find in 'if ( condtion stmt' || 'else stmt'
10849                break;
10850            }
10851            case sstmssqlcreateprocedure :
10852            case sstmssqlalterprocedure:
10853            {
10854                ret = new TMssqlCreateProcedure(pdbvendor);
10855                break;
10856            }
10857            case sstmssqlcreatefunction :
10858            case sstmssqlalterfunction:
10859            {
10860                ret =  new TMssqlCreateFunction(pdbvendor);
10861                break;
10862            }
10863            case sstcreatetrigger :
10864            case sstmssqlaltertrigger:
10865            {
10866                ret =  new TCreateTriggerStmt(pdbvendor); //TMssqlCreateTrigger(pdbvendor);
10867                break;
10868            }
10869            case sstmssqlreturn:
10870            {
10871                ret =  new TMssqlReturn(pdbvendor);
10872                break;
10873            }
10874            case sstmssqlprint:
10875            {
10876                if (pdbvendor == EDbVendor.dbvodbc){
10877
10878                }else if (pdbvendor == EDbVendor.dbvmssql){
10879                    ret =  new TMssqlPrint(pdbvendor);
10880                }
10881
10882                break;
10883            }
10884            case sstmssqluse:
10885            {
10886                ret =  new TUseDatabase(pdbvendor);
10887                break;
10888            }
10889            case sstmssqlgo:
10890            {
10891                ret =  new TMssqlGo(pdbvendor);
10892                break;
10893            }
10894            case sstmssqlrevert:
10895            {
10896                lcisnewsql = true;
10897                // prev tokentext can't be with
10898                if ( pstate != EFindSqlStateType.stnormal ) {
10899                    if (TBaseType.assigned(lcprevsolidtoken)) {
10900                        if (lcprevsolidtoken.toString().equalsIgnoreCase("no")) {
10901                            ret = null;
10902                            lcisnewsql = false;
10903                        }
10904                    }
10905                }
10906                if (lcisnewsql){
10907                    ret =  new TMssqlRevert(pdbvendor);
10908                }
10909
10910                break;
10911            }
10912            case sstmssqlgrant:
10913            {
10914                lcisnewsql = true;
10915                // prev tokentext can't be with
10916                if ( pstate != EFindSqlStateType.stnormal )
10917                {
10918                    if ( TBaseType.assigned(lcprevsolidtoken) )
10919                    {
10920                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_with )
10921                        {
10922                            ret = null;
10923                            lcisnewsql = false;
10924                        }
10925                    }
10926
10927                    if((lcisnewsql)&&(TBaseType.assigned(lccurrentsqlstatement))) {
10928                        if ((lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateschema)
10929                                )
10930                        {
10931                            lcisnewsql = false;
10932                        }
10933                    }
10934                }
10935                if ( lcisnewsql )
10936                {
10937                    ret =  new TGrantStmt(pdbvendor);
10938                    //ret.sqlstatementtype = gnewsqlstatementtype;
10939                    for ( k = lcpos + 1; k< lcsourcetokenlist.size();k++ )    // iterate
10940                    {
10941                        lctoken = lcsourcetokenlist.get(k);
10942                        if (lctoken.isnonsolidtoken() ) continue;
10943                        if ( lctoken.tokencode == TBaseType.rrw_go ) break;
10944                        if ( lctoken.tokentype == ETokenType.ttsemicolon ) break;
10945                        if ( lctoken.tokencode == TBaseType.rrw_to   ) break;
10946                        lctoken.tokenstatus = ETokenStatus.tsignoredbygetrawstatement;
10947                    }
10948                }
10949                break;
10950            }
10951            case sstmssqlrevoke:{
10952                lcisnewsql = true;
10953                if ( pstate != EFindSqlStateType.stnormal )
10954                {
10955                    if((lcisnewsql)&&(TBaseType.assigned(lccurrentsqlstatement))) {
10956                        if ((lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateschema)
10957                                )
10958                        {
10959                            lcisnewsql = false;
10960                        }
10961                    }
10962                }
10963                if ( lcisnewsql )
10964                {
10965                    ret =  new TRevokeStmt(pdbvendor);
10966                    for ( k = lcpos + 1; k< lcsourcetokenlist.size();k++ )    // iterate
10967                    {
10968                        lctoken = lcsourcetokenlist.get(k);
10969                        if (lctoken.isnonsolidtoken() ) continue;
10970                        if ( lctoken.tokencode == TBaseType.rrw_go ) break;
10971                        if ( lctoken.tokentype == ETokenType.ttsemicolon ) break;
10972                        if ( lctoken.tokencode == TBaseType.rrw_to   ) break;
10973                        lctoken.tokenstatus = ETokenStatus.tsignoredbygetrawstatement;
10974                    }
10975                }
10976                break;
10977
10978            }
10979            case sstmssqldeny:
10980            {
10981                lcisnewsql = true;
10982                if ( pstate != EFindSqlStateType.stnormal )
10983                {
10984                    if((lcisnewsql)&&(TBaseType.assigned(lccurrentsqlstatement))) {
10985                        if ((lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateschema)
10986                                )
10987                        {
10988                            lcisnewsql = false;
10989                        }
10990                    }
10991                }
10992                if ( lcisnewsql )
10993                {
10994                    ret =  new TDenyStmt(pdbvendor);
10995                    for ( k = lcpos + 1; k< lcsourcetokenlist.size();k++ )    // iterate
10996                    {
10997                        lctoken = lcsourcetokenlist.get(k);
10998                        if (lctoken.isnonsolidtoken() ) continue;
10999                        if ( lctoken.tokencode == TBaseType.rrw_go ) break;
11000                        if ( lctoken.tokentype == ETokenType.ttsemicolon ) break;
11001                        if ( lctoken.tokencode == TBaseType.rrw_to   ) break;
11002                        lctoken.tokenstatus = ETokenStatus.tsignoredbygetrawstatement;
11003                    }
11004                }
11005                break;
11006            }
11007            case sstmssqldeclare:
11008            {
11009                ret =  new TMssqlDeclare(pdbvendor);
11010                break;
11011            }
11012            case sstmssqlcontinue:
11013            {
11014                ret =  new TMssqlContinue(pdbvendor);
11015                break;
11016            }
11017            case sstbreak:
11018            {
11019                ret =  new TBreakStmt(pdbvendor);
11020                break;
11021            }
11022            case sstmssqlopen:
11023            {
11024                ret =  new TMssqlOpen(pdbvendor);
11025                break;
11026            }
11027            case sstmssqlclose:
11028            {
11029                ret =  new TMssqlClose(pdbvendor);
11030                break;
11031            }
11032            case sstmssqlbulkinsert:
11033            {
11034                ret =  new TMssqlBulkInsert(pdbvendor);
11035                break;
11036            }
11037            case sstmssqldeallocate:
11038            {
11039                ret =  new TMssqlDeallocate(pdbvendor);
11040                break;
11041            }
11042            case sstmssqlraiserror:
11043            {
11044                ret =  new TMssqlRaiserror(pdbvendor);
11045                break;
11046            }
11047            case sstmssqlgoto:
11048            {
11049                ret =  new TMssqlGoTo(pdbvendor);
11050                break;
11051            }
11052            case sstmssqldropview:
11053            {
11054                ret =  new TDropViewSqlStatement(pdbvendor);
11055                break;
11056            }
11057            case sstmssqldroptable:
11058            {
11059                ret =  new TDropTableSqlStatement(pdbvendor);
11060                break;
11061            }
11062            case sstmssqldropindex:
11063            {
11064                ret =  new TDropIndexSqlStatement(pdbvendor);
11065                break;
11066            }
11067            case sstmssqldroppartitionscheme :
11068                ret = new TDropPartitionSchemeStmt(pdbvendor);
11069                break;
11070            case sstmssqldropaggregate :
11071            case sstmssqldropapplicationrole :
11072            case sstmssqldropassembly :
11073            case sstmssqldropasymmetrickey :
11074            case sstmssqldropcertificate :
11075            case sstmssqldropcontract :
11076            case sstmssqldropcredential :
11077            case sstmssqldropdefault :
11078            case sstmssqldropendpoint :
11079            case sstmssqldropeventnotification :
11080            case sstmssqldropfulltextcatalog :
11081            case sstmssqldropfulltextindex :
11082            case sstmssqldroplogin :
11083            case sstmssqldropmasterkey :
11084            case sstmssqldropmessagetype :
11085            case sstmssqldroppartitionfunction :
11086            case sstmssqldropqueue :
11087            case sstmssqldropremoteservicebinding :
11088            case sstmssqldroprole :
11089            case sstmssqldroproute :
11090            case sstmssqldroprule :
11091            case sstmssqldropservice :
11092            case sstmssqldropsignature:
11093            case sstmssqldropstatistics :
11094            case sstmssqldropsymmetrickey :
11095            case sstmssqldroptrigger :
11096            case sstmssqldroptype :
11097            case sstmssqldropuser :
11098            case sstmssqldropxmlschemacollection:
11099            case sstmssqldropeventsession:
11100            {
11101                ret =  new TMssqlDropDbObject(EDbVendor.dbvmssql);
11102                ret.sqlstatementtype = gnewsqlstatementtype;
11103                break;
11104            }
11105            case sstmssqldropsynonym :
11106            {
11107                ret =  new TDropSynonymStmt(pdbvendor);
11108                break;
11109            }
11110            case sstmssqldropprocedure :
11111            {
11112                ret =  new TDropProcedureStmt(EDbVendor.dbvmssql);
11113                break;
11114            }
11115            case sstmssqldropdatabase :
11116            {
11117                ret =  new TDropDatabaseStmt(EDbVendor.dbvmssql);
11118                break;
11119            }
11120            case sstmssqldropschema :
11121            {
11122                ret =  new TDropSchemaSqlStatement(EDbVendor.dbvmssql);
11123                break;
11124            }
11125            case sstmssqltruncatetable:
11126            {
11127                ret =  new TTruncateStatement(pdbvendor);
11128                break;
11129            }
11130            case sstmssqlbegintran:
11131            {
11132                ret =  new TBeginTran(pdbvendor);
11133                break;
11134            }
11135            case sstmssqlsavetran:
11136            {
11137                if (pdbvendor == EDbVendor.dbvodbc){
11138
11139                }else if (pdbvendor == EDbVendor.dbvmssql) {
11140                    ret = new TMssqlSaveTran(pdbvendor);
11141                }
11142                break;
11143            }
11144            case sstmssqlcommit:
11145            {
11146                ret =  new TMssqlCommit(pdbvendor);
11147                break;
11148            }
11149            case sstmssqlrollback:
11150            {
11151                ret =  new TMssqlRollback(pdbvendor);
11152                break;
11153            }
11154            case sstmssqlreadtext :
11155            case sstmssqldbcc :
11156            case sstmssqlrestore :
11157            case sstmssqlbackup :
11158            {
11159                ret = new TMssqlDummyStmt(pdbvendor);
11160                ret.sqlstatementtype = gnewsqlstatementtype;
11161                break;
11162            }
11163
11164            case sstmssqlreceive:
11165            {
11166                lcisnewsql = true;
11167                if ( pstate != EFindSqlStateType.stnormal )
11168                {
11169                    if((lcisnewsql)&&(TBaseType.assigned(lccurrentsqlstatement))) {
11170                        if ((lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstselect)
11171                        )
11172                        {
11173                            lcisnewsql = false;
11174                        }
11175                    }
11176                }
11177                if ( lcisnewsql )
11178                {
11179                    ret = new TMssqlDummyStmt(pdbvendor);
11180                    ret.sqlstatementtype = gnewsqlstatementtype;
11181                }
11182                break;
11183            }
11184            case sstcreateindex:
11185            {
11186                ret =  new TCreateIndexSqlStatement(pdbvendor);
11187                break;
11188            }
11189            case sstmssqlwaitfor:
11190            {
11191                ret =  new TMssqlWaitFor(pdbvendor);
11192                break;
11193            }
11194            case sstmerge:
11195            {
11196                lcisnewsql = true;
11197
11198                if (pstate != EFindSqlStateType.stnormal)
11199                {
11200
11201                    if (lccurrentsqlstatement != null)
11202                    {
11203                        // merge union, merge join
11204                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstselect)
11205                        {
11206                                    lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
11207                                    if (lcnextsolidtoken != null)
11208                                       {
11209                                        if ((lcnextsolidtoken.tokencode == TBaseType.rrw_union) || (lcnextsolidtoken.tokencode == TBaseType.rrw_join)) 
11210                                           {
11211                                              lcisnewsql = false;
11212                                           }
11213                                        }
11214                        }
11215
11216//                        if ( TBaseType.assigned(lcprevsolidtoken) )
11217//                        {
11218//                            if ( lcprevsolidtoken.tokencode == '(' )
11219//                                lcisnewsql = false;
11220//                        }
11221
11222                    }
11223                    if (lcisnewsql){
11224                        TSourceToken nextSt = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
11225                        if (nextSt != null){
11226                            if (nextSt.tokencode == TBaseType.rrw_join){
11227                                lcisnewsql = false;
11228                            }
11229                        }
11230                    }
11231                }
11232
11233                if (lcisnewsql)
11234                {
11235                    ret = new TMergeSqlStatement(pdbvendor);
11236                    ret.sqlstatementtype = gnewsqlstatementtype;
11237                }
11238
11239                break;
11240            }
11241            case sstmssqlbegintry :
11242            case sstmssqlbegincatch:
11243            {
11244                ret =  new TMssqlBlock(pdbvendor);
11245                ret.sqlstatementtype = gnewsqlstatementtype;
11246                break;
11247            }
11248            case sstmssqlexec:
11249            {
11250                lcisnewsql = true;
11251                // prev tokentext can't be with
11252                if ( pstate != EFindSqlStateType.stnormal )
11253                {
11254                    if ( TBaseType.assigned(lccurrentsqlstatement) )
11255                    {
11256                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
11257                        {
11258                            if ( lccurrentsqlstatement.dummytag == 1 )
11259                            {
11260                                lcisnewsql = false;
11261                                lccurrentsqlstatement.dummytag = 0; // no select is permitted after it
11262                            }
11263
11264                            TSourceToken valuesToken = pcst.searchToken(TBaseType.rrw_values,-pcst.posinlist);
11265                            if (valuesToken != null){
11266                                // https://www.sqlparser.com/bugs/mantisbt/view.php?id=3153
11267                                // INSERT INTO @tempTbl VALUES ('Test5')
11268                                //
11269                                //EXEC sp_execute @handle, 1
11270                                // 如果 EXEC 在 insert 语句的 values 后面,则这个 EXEC 为独立的 sql 语句,
11271                                // 而不是属于insert 语句
11272                                TSourceToken insertToken = lccurrentsqlstatement.sourcetokenlist.get(0);
11273                                if (valuesToken.posinlist > insertToken.posinlist){
11274                                    lcisnewsql = true;
11275                                }
11276                            }
11277                        }
11278
11279                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlgrant )
11280                        {
11281                            if ( TBaseType.assigned(lcprevsolidtoken) )
11282                            {
11283                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_grant )
11284                                    lcisnewsql = false;
11285                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
11286                                    lcisnewsql = false;
11287                            }
11288                        }
11289
11290                        if (
11291                                (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlcreateprocedure)
11292                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetrigger)
11293                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlcreatefunction)
11294                                        ||(lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlalterprocedure)
11295                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlaltertrigger)
11296                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlalterfunction)
11297                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlcreatequeue)
11298                                )
11299                        {
11300                            if ( TBaseType.assigned(lcprevsolidtoken) )
11301                            {
11302                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_with )
11303                                    lcisnewsql = false;
11304                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
11305                                    lcisnewsql = false;
11306                            }
11307                        }
11308                    }
11309                }
11310                if ( lcisnewsql )
11311                {
11312                    ret =  new TMssqlExecute(pdbvendor);
11313                }
11314                break;
11315            }
11316            case sstmssqlexecuteas:
11317            {
11318                lcisnewsql = true;
11319                // prev tokentext can't be with
11320                if ( pstate != EFindSqlStateType.stnormal )
11321                {
11322                    if ( TBaseType.assigned(lccurrentsqlstatement) )
11323                    {
11324                        if (
11325                                (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlcreateprocedure)
11326                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetrigger)
11327                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlcreatefunction)
11328                                        ||(lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlalterprocedure)
11329                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlaltertrigger)
11330                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlalterfunction)
11331                                )
11332                        {
11333                            if ( TBaseType.assigned(lcprevsolidtoken) )
11334                            {
11335                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_with )
11336                                    lcisnewsql = false;
11337                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
11338                                    lcisnewsql = false;
11339                            }
11340                        }
11341                    }
11342                }
11343                if ( lcisnewsql )
11344                {
11345                    ret =  new TMssqlExecuteAs(pdbvendor);
11346                    ret.sqlstatementtype = gnewsqlstatementtype;
11347                }
11348                break;
11349            }
11350            case sstmssqlset:
11351            {
11352                lcisnewsql = true;
11353                if ( pstate != EFindSqlStateType.stnormal )
11354                {
11355                    if ( TBaseType.assigned(lccurrentsqlstatement) )
11356                    {
11357
11358                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlif)
11359                        {
11360                             TSourceToken lcPPToken = lcsourcetokenlist.searchToken(TBaseType.rrw_update,"",pcst,-10);
11361                             if (TBaseType.assigned(lcPPToken))
11362                            {
11363                                  lcisnewsql = false;
11364                            }
11365                        }
11366
11367                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstalterdatabase)
11368                        {
11369                             TSourceToken lcPPToken = lcsourcetokenlist.searchToken(TBaseType.rrw_alter,"",pcst,-10);
11370                             if (TBaseType.assigned(lcPPToken))
11371                            {
11372                                  lcisnewsql = false;
11373                            }
11374                        }
11375
11376                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
11377                        {
11378                              if (lcprevsolidtoken != null)
11379                              {
11380                                  if (lcprevsolidtoken.tokencode == TBaseType.rrw_update){
11381                                    lcisnewsql = false;}
11382                              }
11383                        }
11384
11385                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstupdate )
11386                        {
11387                            if ( lccurrentsqlstatement.dummytag == 1 )
11388                            {
11389                                //update statement still find set clause yet, so this is set clause in update statement
11390                                lccurrentsqlstatement.dummytag = 0;
11391                                lcisnewsql = false;
11392                            }
11393                        }
11394
11395                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlcreateeventsession )
11396                        {
11397                            lcisnewsql = false;
11398                        }
11399                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstaltertable )
11400                        {
11401                            lcisnewsql = false;
11402                        }
11403                    }
11404
11405                    lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
11406                    if ( TBaseType.assigned(lcnextsolidtoken) )
11407                    { //set null, set default
11408                        if ( (TBaseType.mycomparetext(lcnextsolidtoken.getAstext(),"null")==0)
11409                                || (TBaseType.mycomparetext(lcnextsolidtoken.getAstext(), "default")==0) )
11410                        {
11411                            lcisnewsql = false;
11412                        }
11413                    }
11414
11415                }
11416
11417                if ( lcisnewsql )
11418                {
11419                    ret =  new TMssqlSet(pdbvendor);
11420                }
11421
11422                break;
11423            }
11424            case sstmssqlsetrowcount:
11425            {
11426                ret =  new TMssqlSetRowCount(pdbvendor);
11427                break;
11428            }
11429            case sstmssqlupdatetext:
11430            {
11431                ret =  new TMssqlUpdateText(pdbvendor);
11432                break;
11433            }
11434            case sstmssqlendconversation:
11435            {
11436                ret =  new TMssqlEndConversation(pdbvendor);
11437                break;
11438            }
11439            case sstmssqlbegindialog:
11440            {
11441                ret =  new TMssqlBeginDialog(pdbvendor);
11442                break;
11443            }
11444            case sstmssqlsendonconversation:
11445            {
11446                ret =  new TMssqlSendOnConversation(pdbvendor);
11447                break;
11448            }
11449            case sstdropsequence:
11450                ret = new TDropSequenceStmt(pdbvendor);
11451                break;
11452            case sstmssqldisabletrigger :
11453            case sstmssqlenabletrigger:
11454            {
11455                lcisnewsql = true;
11456                if ( TBaseType.assigned(lccurrentsqlstatement) )
11457                {
11458                    if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstaltertable )
11459                        lcisnewsql = false;
11460                }
11461
11462                if ( lcisnewsql )
11463                {
11464                    ret =  new TUnknownSqlStatement(pdbvendor);
11465                    ret.sqlstatementtype = gnewsqlstatementtype;
11466                }
11467                break;
11468            }
11469            case sstmssqlthrow:
11470                ret = new TMssqlThrow(pdbvendor);
11471                break;
11472            case sstmssqlalterdatabase:
11473                ret = new TAlterDatabaseStmt(pdbvendor);
11474                break;
11475            case sstmssqlreconfigure:
11476                ret = new TReconfigure(pdbvendor);
11477                break;
11478            case sstcreatedatabase:
11479            {
11480                ret = new TCreateDatabaseSqlStatement(pdbvendor);
11481                break;
11482            }
11483            case sstmssqlcreateschema:
11484            {
11485                ret = new TCreateSchemaSqlStatement(pdbvendor);
11486                for ( k = lcpos + 1; k< lcsourcetokenlist.size();k++ )    // iterate
11487                {
11488                    lctoken = lcsourcetokenlist.get(k);
11489                    if (lctoken.isnonsolidtoken() ) continue;
11490                    if ( lctoken.tokencode == TBaseType.rrw_go ) break;
11491                    if ( lctoken.tokentype == ETokenType.ttsemicolon ) break;
11492                    lctoken.tokenstatus = ETokenStatus.tsignoredbygetrawstatement;
11493                }
11494                break;
11495            }
11496            case sstmssqlcreatesynonym:
11497            {
11498                ret = new TCreateSynonymStmt(pdbvendor);
11499                break;
11500            }
11501            case sstmssqlcreatetype:
11502                ret = new TMssqlCreateType(pdbvendor);
11503                break;
11504            case sstmssqlcreatexmlschemacollection:
11505                ret = new TMssqlCreateXmlSchemaCollectionStmt(pdbvendor);
11506                break;
11507            case sstmssqlalterindex:
11508                ret = new TAlterIndexStmt(pdbvendor);
11509                break;
11510            case sstmssqlcreateevexternalDataSource:
11511                ret = new TCreateExternalDataSourceStmt(pdbvendor);
11512                break;
11513            case sstmssqlcreateeventsession:
11514                ret = new TCreateEventSession(pdbvendor);
11515                break;
11516            case sstmssqldropfunction :
11517                ret = new TDropFunctionStmt(pdbvendor);
11518                break;
11519            case sstmssqlcreateevexternalLanguage:
11520                ret = new TCreateExternalLanguage(pdbvendor);
11521                break;
11522            case sstmssqlalterview:
11523            {
11524                lcisnewsql = true;
11525                if ( TBaseType.assigned(lccurrentsqlstatement) )
11526                {
11527                    if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
11528                        lcisnewsql = false;
11529                }
11530
11531                if ( lcisnewsql )
11532                {
11533                    ret =  new TAlterViewStatement(pdbvendor);
11534                    //ret.sqlstatementtype = gnewsqlstatementtype;
11535                }
11536                break;
11537            }
11538            case sstCreateFileFormat:
11539            {
11540                ret = new TCreateFileFormatStmt(pdbvendor);
11541                break;
11542            }
11543            case sstmssqlcreatemasterkey:
11544                ret = new TCreateMasterKeyStmt(pdbvendor);
11545                break;
11546            case sstmssqlcreatedatabaseencryptionkey:
11547            {
11548                TMssqlStmtStub stub = new TMssqlStmtStub(pdbvendor);
11549                stub.sqlstatementtype = ESqlStatementType.sstmssqlcreatedatabaseencryptionkey;
11550                ret = stub;
11551                break;
11552            }
11553            case sstmssqlcreateselectivexmlindex:
11554            {
11555                TMssqlStmtStub stub = new TMssqlStmtStub(pdbvendor);
11556                stub.sqlstatementtype = ESqlStatementType.sstmssqlcreateselectivexmlindex;
11557                ret = stub;
11558                break;
11559            }
11560            case sstmssqlcreatejsonindex:
11561            {
11562                TMssqlStmtStub stub = new TMssqlStmtStub(pdbvendor);
11563                stub.sqlstatementtype = ESqlStatementType.sstmssqlcreatejsonindex;
11564                ret = stub;
11565                break;
11566            }
11567            case sstmssqlcreatevectorindex:
11568            {
11569                TMssqlStmtStub stub = new TMssqlStmtStub(pdbvendor);
11570                stub.sqlstatementtype = ESqlStatementType.sstmssqlcreatevectorindex;
11571                ret = stub;
11572                break;
11573            }
11574            case sstcreatecredential:
11575                ret =  new TCreateCredentialStmt(pdbvendor);
11576                break;
11577            case sstCopyInto:
11578            {
11579                ret = new TMssqlCopyIntoStmt(pdbvendor);
11580                break;
11581            }
11582            case sstcreatematerializedview:{
11583                ret = new TCreateMaterializedSqlStatement(pdbvendor);
11584                break;
11585            }
11586            case sstmssqlCreateSecurityPolicy:
11587                ret = new TMssqlCreateSecurityPolicy(pdbvendor);
11588                break;
11589            case sstmssqlAlterSecurityPolicy:
11590                ret = new TMssqlAlterSecurityPolicy(pdbvendor);
11591                break;
11592            case sstmssqlDropSecurityPolicy:
11593                ret = new TMssqlDropSecurityPolicy(pdbvendor);
11594                break;
11595            case sstmssqlalterpartitionfunction:
11596                ret = new TAlterPartitionFunctionStmt(pdbvendor);
11597                break;
11598            case sstmssqlcreatepartitionfunction:
11599                ret = new TCreatePartitionFunctionStmt(pdbvendor);
11600                break;
11601            case sstmssqlalterpartitionscheme:
11602                ret = new TAlterPartitionSchemeSqlStatement(pdbvendor);
11603                break;
11604            case sstmssqlcreatepartitionscheme:
11605                ret = new TCreatePartitionSchemeSqlStatement(pdbvendor);
11606                break;
11607            default:
11608            {
11609                ret =  new TUnknownSqlStatement(pdbvendor);
11610                ret.sqlstatementtype = gnewsqlstatementtype;
11611                break;
11612            }
11613        }    // case
11614
11615        return ret;
11616    }
11617
11618    TCustomSqlStatement isteradatasql(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
11619        TCustomSqlStatement ret = null;
11620        int k;
11621        boolean lcisnewsql;
11622        TSourceToken lcpprevsolidtoken,lcnextsolidtoken,lctoken;
11623
11624        gnewsqlstatementtype = ESqlStatementType.sstinvalid;
11625
11626        if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
11627                || (pcst.tokencode  == TBaseType.cmtslashstar)
11628                || (pcst.tokencode  == TBaseType.lexspace)
11629                || (pcst.tokencode  == TBaseType.lexnewline)
11630                || (pcst.tokentype == ETokenType.ttsemicolon) )
11631        {
11632            return ret;
11633        }
11634
11635        int lcpos = pcst.posinlist;
11636        TSourceTokenList lcsourcetokenlist = pcst.container;
11637        TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
11638
11639        //subquery after semicolon || at first line
11640        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokentype == ETokenType.ttleftparenthesis) )
11641        {
11642            k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
11643            if ( k >0 )
11644            {
11645                ret =  new TSelectSqlStatement(pdbvendor);
11646            }else{
11647                k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_teradata_sel,1,"(");
11648                if ( k >0 )
11649                {
11650                    ret =  new TSelectSqlStatement(pdbvendor);
11651                }
11652            }
11653
11654            return ret;
11655        }
11656
11657        //cte
11658        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
11659        {
11660            ret = findcte(pcst,pdbvendor);
11661            if ( (ret != null) )  return ret;
11662        }
11663
11664        // using
11665        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_teradata_using) ){
11666           //return mapTeradataUsing(pcst);
11667            return new TTeradataUsing(pdbvendor);
11668        }
11669        
11670        if ( (pstate == EFindSqlStateType.stnormal) &&
11671                ((pcst.tokencode == TBaseType.rrw_lock)||(pcst.tokencode == TBaseType.rrw_teradata_locking)) ){
11672            return new TTeradataLock(pdbvendor);
11673        }
11674
11675        gnewsqlstatementtype = findteradatacmd(pcst);
11676
11677        TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
11678        switch(gnewsqlstatementtype ) {   //
11679            case sstinvalid:
11680            {
11681                ret = null;
11682                break;
11683            }
11684            case sstselect:
11685            {
11686                lcisnewsql = true;
11687
11688                if ( pstate != EFindSqlStateType.stnormal )
11689                {
11690                    // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
11691                    if ( (lcprevsolidtoken != null) )
11692                    {
11693                        if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
11694                            lcisnewsql = false; //subqery
11695                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
11696                            lcisnewsql = false;
11697                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
11698                            lcisnewsql = false;
11699                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
11700                            lcisnewsql = false;
11701                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
11702                            lcisnewsql = false;
11703                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
11704                            lcisnewsql = false;
11705                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
11706                        {
11707                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
11708                                lcisnewsql = false;
11709                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
11710                                lcisnewsql = false;
11711                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstteradatareplaceview )
11712                                lcisnewsql = false;
11713                        }
11714
11715                        if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
11716                        {
11717                            lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
11718                            if ( (lcpprevsolidtoken != null) )
11719                            {
11720                                if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
11721                                    lcisnewsql = false;
11722                            }
11723                        }
11724
11725                    }
11726
11727                    if ( (lccurrentsqlstatement != null) )
11728                    {
11729                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
11730                        {
11731                        }
11732                        else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview ){
11733                            lcisnewsql = false;
11734                        }
11735                    }
11736
11737                }
11738
11739                if ( lcisnewsql )
11740                    ret =  new TSelectSqlStatement(pdbvendor);
11741
11742                break;
11743
11744            }
11745            case sstinsert:
11746            {
11747                lcisnewsql = true;
11748                if ( pstate != EFindSqlStateType.stnormal )
11749                {
11750                    if ( (lccurrentsqlstatement != null) )
11751                    {
11752                        // merge
11753                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
11754                        {
11755                              if (lcprevsolidtoken != null)
11756                              {
11757                                  if (lcprevsolidtoken.tokencode == TBaseType.rrw_then)
11758                                  {lcisnewsql = false;}
11759                              }
11760                        }
11761
11762
11763
11764                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstteradatacreatetrigger )
11765                        {
11766                            if ( (lcprevsolidtoken != null) )
11767                            {
11768                                if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
11769                                    lcisnewsql = false;
11770                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(),"after") == 0 )
11771                                    lcisnewsql = false;
11772                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(),"before") == 0 )
11773                                    lcisnewsql = false;
11774                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(), "of") == 0 )
11775                                    lcisnewsql = false;
11776                            }
11777                        }
11778
11779
11780                    }
11781                }
11782
11783                if ( lcisnewsql )
11784                {
11785                    ret =  new TInsertSqlStatement(pdbvendor);
11786                    ret.dummytag = 1; //  select stmt in insert is permitted
11787                    for ( k = lcpos + 1; k < lcsourcetokenlist.size();k++ )    // iterate
11788                    {
11789                        if ( lcsourcetokenlist.get(k).isnonsolidtoken() ) continue;
11790                        if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_values ) break;
11791                        // if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_go ) break;
11792                        if ( lcsourcetokenlist.get(k).tokentype == ETokenType.ttsemicolon ) break;
11793                        if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_select ) break;
11794                        if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_execute ) break;
11795                        if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_exec ) break;
11796                    }    // for (
11797                    if ( k > lcsourcetokenlist.size() - 1 )
11798                        k = lcsourcetokenlist.size() - 1;
11799
11800                    for ( int i = lcpos + 1; i <=  k; i++ )    // iterate
11801                    {
11802                        lcsourcetokenlist.get(i).tokenstatus = ETokenStatus.tsignoredbygetrawstatement;
11803                    }    // for (
11804
11805                }
11806
11807                break;
11808            }
11809            case sstupdate:
11810            {
11811                lcisnewsql = true;
11812                if ( pstate != EFindSqlStateType.stnormal )
11813                {
11814                    // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
11815                    if ( (lcprevsolidtoken != null) )
11816                    { //
11817                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
11818                            lcisnewsql = false;
11819                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
11820                            lcisnewsql = false;
11821                    }
11822
11823                    lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
11824                    if ( TBaseType.assigned(lcnextsolidtoken) )
11825                    {
11826                        if ( lcnextsolidtoken.tokentype == ETokenType.ttleftparenthesis)
11827                        {
11828                            k = lcsourcetokenlist.solidtokenafterpos(lcnextsolidtoken.posinlist,TBaseType.rrw_select,1,"(");
11829                            if ( k  == 0 ) lcisnewsql = false;
11830                        }
11831                    }
11832
11833
11834                    if ( TBaseType.assigned(lccurrentsqlstatement) )
11835                    {
11836                        // merge
11837                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
11838                        {
11839                              if (lcprevsolidtoken != null)
11840                              {
11841                                  if (lcprevsolidtoken.tokencode == TBaseType.rrw_then)
11842                                  {lcisnewsql = false;}
11843                              }
11844                        }
11845
11846
11847                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstteradatacreatetrigger )
11848                        {
11849                            if ( TBaseType.assigned(lcprevsolidtoken) )
11850                            {
11851                                if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
11852                                    lcisnewsql = false;
11853                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(),"after") == 0 )
11854                                    lcisnewsql = false;
11855                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(),"before") == 0 )
11856                                    lcisnewsql = false;
11857                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(), "of") == 0 )
11858                                    lcisnewsql = false;
11859                            }
11860                        }
11861
11862                    }
11863                }
11864
11865                if ( lcisnewsql )
11866                {
11867                    ret =  new TUpdateSqlStatement(pdbvendor);
11868                    ret.dummytag = 1; // means set clause in update is not found yet, used to seperate set clause from set statement
11869                }
11870
11871                break;
11872            }
11873            case sstdelete:
11874            {
11875                lcisnewsql = true;
11876
11877                if ( pstate != EFindSqlStateType.stnormal )
11878                {
11879                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
11880                    if ( TBaseType.assigned(lcprevsolidtoken) )
11881                    {
11882                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
11883                            lcisnewsql = false;
11884                    }
11885
11886                    if ( TBaseType.assigned(lccurrentsqlstatement) )
11887                    {
11888                        // merge
11889                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
11890                        {
11891                              if (lcprevsolidtoken != null)
11892                              {
11893                                  if (lcprevsolidtoken.tokencode == TBaseType.rrw_then)
11894                                  {lcisnewsql = false;}
11895                              }
11896                        }
11897
11898
11899                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstteradatacreatetrigger )
11900                        {
11901                            if ( TBaseType.assigned(lcprevsolidtoken) )
11902                            {
11903                                if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
11904                                    lcisnewsql = false;
11905                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(),"after") == 0 )
11906                                    lcisnewsql = false;
11907                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(),"before") == 0 )
11908                                    lcisnewsql = false;
11909                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(), "of") == 0 )
11910                                    lcisnewsql = false;
11911                            }
11912                        }
11913
11914                    }
11915                }
11916
11917                if ( lcisnewsql )
11918                    ret =  new TDeleteSqlStatement(pdbvendor);
11919
11920                break;
11921            }
11922            case sstcreatetable:
11923            {
11924                ret =  new TCreateTableSqlStatement(pdbvendor);
11925                break;
11926            }
11927            case sstaltertable:
11928            case sstteradataaltertable:
11929            {
11930                ret =  new TAlterTableStatement(pdbvendor);
11931                break;
11932            }
11933            case sstteradatafetch:
11934            {
11935                ret =  new TMssqlFetch(pdbvendor);
11936                break;
11937            }
11938            case sstcreateprocedure :
11939            case sstteradatareplaceprocedure:
11940            {
11941                ret = new TCreateProcedureStmt(pdbvendor);
11942                break;
11943            }
11944            case sstteradataalterprocedure:
11945                ret = new TAlterProcedureStmt(pdbvendor);
11946                break;
11947            case sstteradatacreatefunction :
11948            case sstteradatareplacefunction:
11949            {
11950                ret =  new TTeradataCreateFunction(pdbvendor);
11951                break;
11952            }
11953            case sstteradataalterfunction:
11954                ret =  new TAlterFunctionStmt(pdbvendor);
11955                break;
11956            case sstteradatacreatetrigger :
11957            case sstteradataaltertrigger:
11958            case sstteradatareplacetrigger:
11959            {                              
11960                ret =  new TCreateTriggerStmt(pdbvendor);
11961                break;
11962            }
11963            case sstteradatagrant:
11964            {
11965                lcisnewsql = true;
11966                // prev tokentext can't be with
11967                if ( pstate != EFindSqlStateType.stnormal )
11968                {
11969                    if ( TBaseType.assigned(lcprevsolidtoken) )
11970                    {
11971                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_with )
11972                        {
11973                            ret = null;
11974                            lcisnewsql = false;
11975                        }
11976                    }
11977                }
11978                if ( lcisnewsql )
11979                {
11980                    ret =  new TTeradataGrant(pdbvendor);
11981                    ret.sqlstatementtype = gnewsqlstatementtype;
11982                    for ( k = lcpos + 1; k< lcsourcetokenlist.size();k++ )    // iterate
11983                    {
11984                        lctoken = lcsourcetokenlist.get(k);
11985                        if (lctoken.isnonsolidtoken() ) continue;
11986                        if ( lctoken.tokencode == TBaseType.rrw_go ) break;
11987                        if ( lctoken.tokentype == ETokenType.ttsemicolon ) break;
11988                        if ( lctoken.tokencode == TBaseType.rrw_to   ) break;
11989                        lctoken.tokenstatus = ETokenStatus.tsignoredbygetrawstatement;
11990                    }
11991                }
11992                break;
11993            }
11994            case sstdropindex:
11995            {
11996                ret =  new TDropIndexSqlStatement(pdbvendor);
11997                break;
11998            }
11999            case sstdroptable:
12000            {
12001                ret =  new TDropTableSqlStatement(pdbvendor);
12002                break;
12003            }
12004            case sstdropview:
12005            {
12006                ret =  new TDropViewSqlStatement(pdbvendor);
12007                break;
12008            }
12009            case sstteradatadropprocedure:
12010                ret =  new TDropProcedureStmt(pdbvendor);
12011                break;
12012            case sstteradatadropauthorization:
12013            case sstteradatadropcast:
12014            case sstteradatadropdatabase:
12015            case sstteradatadropfunction:
12016            case sstteradatadroptrigger:
12017            case sstteradatadropordering:
12018            case sstteradatadropprofile:
12019            case sstteradatadropreplicationgroup:
12020            case sstteradatadroprole:
12021            case sstteradatadroptransform:
12022            case sstteradatadroptype:
12023            case sstteradatadropuser:
12024            case sstteradatadropzone:
12025            {
12026                ret =  new TTeradataDropDbObject(EDbVendor.dbvteradata);
12027                ret.sqlstatementtype = gnewsqlstatementtype;
12028                break;
12029            }
12030            case sstteradatadropmacro:
12031                ret = new TDropMacro(EDbVendor.dbvteradata);
12032                break;
12033            case sstteradatadropconstraint:
12034                ret = new TDropConstraintStmt(EDbVendor.dbvteradata);
12035                break;
12036            case sstteradatabegintransaction:
12037            {
12038                ret =  new TBeginTran(pdbvendor);
12039                break;
12040            }
12041            case sstteradataendtransaction:
12042            {
12043                ret =  new TEndTran(pdbvendor);
12044                break;
12045            }
12046            case sstteradatabeginrequest:
12047            {
12048                ret =  new TBeginTran(pdbvendor);
12049                ret.sqlstatementtype = ESqlStatementType.sstteradatabeginrequest;
12050                break;
12051            }
12052            case sstteradataendrequest:
12053            {
12054                ret =  new TEndTran(pdbvendor);
12055                ret.sqlstatementtype = ESqlStatementType.sstteradataendrequest;
12056                break;
12057            }
12058            case sstteradatacommit:
12059            {
12060                ret =  new TTeradataCommit(pdbvendor);
12061                break;
12062            }
12063            case sstteradatarollback:
12064            {
12065                ret =  new TTeradataRollback(pdbvendor);
12066                break;
12067            }
12068            case sstcreateindex:
12069            {
12070                ret =  new TCreateIndexSqlStatement(pdbvendor);
12071                break;
12072            }
12073            case sstmerge:
12074            {
12075                lcisnewsql = true;
12076
12077                if (pstate != EFindSqlStateType.stnormal)
12078                {
12079
12080                    if (lccurrentsqlstatement != null)
12081                    {
12082                        // merge union, merge join
12083                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstselect)
12084                        {
12085                                    lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
12086                                    if (lcnextsolidtoken != null)
12087                                       {
12088                                        if ((lcnextsolidtoken.tokencode == TBaseType.rrw_union) || (lcnextsolidtoken.tokencode == TBaseType.rrw_join))
12089                                           {
12090                                              lcisnewsql = false;
12091                                           }
12092                                        }
12093                        }
12094
12095                    }
12096                }
12097
12098                if (lcisnewsql)
12099                {
12100                    ret = new TMergeSqlStatement(pdbvendor);
12101                    ret.sqlstatementtype = gnewsqlstatementtype;
12102                }
12103
12104                break;
12105            }
12106            case sstteradataexecute:
12107            {
12108                lcisnewsql = true;
12109                // prev tokentext can't be with
12110                if ( pstate != EFindSqlStateType.stnormal )
12111                {
12112                    if ( TBaseType.assigned(lccurrentsqlstatement) )
12113                    {
12114                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
12115                        {
12116                            if ( lccurrentsqlstatement.dummytag == 1 )
12117                            {
12118                                lcisnewsql = false;
12119                                lccurrentsqlstatement.dummytag = 0; // no select is permited after it
12120                            }
12121                        }
12122
12123                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstteradatagrant )
12124                        {
12125                            if ( TBaseType.assigned(lcprevsolidtoken) )
12126                            {
12127                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_grant )
12128                                    lcisnewsql = false;
12129                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
12130                                    lcisnewsql = false;
12131                            }
12132                        }
12133
12134                        if (
12135                                (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateprocedure)
12136                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstteradatacreatetrigger)
12137                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstteradatacreatefunction)
12138                                        ||(lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstteradataalterprocedure)
12139                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstteradataaltertrigger)
12140                                        ||(      lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstteradataalterfunction)
12141                                )
12142                        {
12143                            if ( TBaseType.assigned(lcprevsolidtoken) )
12144                            {
12145                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_with )
12146                                    lcisnewsql = false;
12147                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
12148                                    lcisnewsql = false;
12149                            }
12150                        }
12151                    }
12152                }
12153                if ( lcisnewsql )
12154                {
12155                    ret =  new TTeradataExecute(pdbvendor);
12156                }
12157                break;
12158            }
12159            case sstteradatasetsession:
12160            {
12161                ret =  new TTeradataSetSession(pdbvendor);
12162                break;
12163            }
12164            case sstteradatadatabase:
12165                if (pcst.isFirstTokenOfLine()){
12166                    ret =  new TTeradataSetSession(pdbvendor);
12167                }
12168
12169                break;
12170            case sstteradatasettimezone:
12171            {
12172                ret =  new TTeradataSetTimezone(pdbvendor);
12173                break;
12174            }
12175            case sstteradatasetrole:
12176            {
12177                ret =  new TTeradataSetRole(pdbvendor);
12178                break;
12179            }
12180            case sstteradataendlogging:
12181            {
12182                ret =  new TTeradataEndLogging(pdbvendor);
12183                break;
12184            }
12185            case sstteradatabeginlogging:
12186            {
12187                ret =  new TTeradataBeginLogging(pdbvendor);
12188                break;
12189            }
12190            case sstteradataabort:
12191            {
12192                ret = new TTeradataAbort(pdbvendor);
12193                break;
12194            }
12195            case sstteradatareplaceview:
12196            case sstcreateview:
12197            {
12198                ret = new TCreateViewSqlStatement(pdbvendor);
12199                ret.sqlstatementtype = ESqlStatementType.sstcreateview;
12200                break;
12201            }
12202            case sstteradatacollectstatistics:
12203            {
12204                ret = new TTeradataCollectStatistics(pdbvendor);
12205                break;
12206            }
12207            case sstteradatagive:
12208            {
12209                ret = new TTeradataGive(pdbvendor);
12210                break;
12211            }
12212            case sstteradatacall:
12213                ret = new TCallStatement(pdbvendor);
12214                break;
12215            case sstteradatacreatemacro:
12216            case sstteradatareplacemacro:
12217                ret = new TCreateMacro(pdbvendor);
12218                break;
12219            case sstteradatarenametable:
12220                ret = new TRenameStmt(pdbvendor);
12221                break;
12222            case sstteradatacomment:
12223                ret = new TCommentOnSqlStmt(pdbvendor);
12224                break;
12225            case sstteradatacheckworkload:
12226                ret = new TCheckWorkload(pdbvendor);
12227                break;
12228            case sstgetdiagnostics:
12229                ret = new TGetDiagStmt(pdbvendor);
12230                break;
12231            case sstteradatacreaterole:
12232                ret = new TCreateRoleStmt(pdbvendor);
12233                break;
12234            case sstteradatarevoke:
12235                ret = new TRevokeStmt(pdbvendor);
12236                break;
12237            case sstteradataalterzone:
12238                ret = new TAlterZoneStmt(pdbvendor);
12239                break;
12240            case sstcreatezone:
12241                ret = new TCreateZoneStmt(pdbvendor);
12242                break;
12243            case sstteradataalterconstraint:
12244                ret = new TAlterConstraintStmt(pdbvendor);
12245                break;
12246            case sstExplain:
12247                ret = new TExplainPlan(pdbvendor);
12248                break;
12249            case sstteradatareleaseLock:
12250                ret = new TTeradataReleaseLockStmt(pdbvendor);
12251                break;
12252            default:
12253            {
12254                ret =  new TTeradataNotImplement(pdbvendor);
12255                ret.sqlstatementtype = gnewsqlstatementtype;
12256                break;
12257            }
12258        }    // case
12259
12260        return ret;
12261    }
12262
12263
12264    TCustomSqlStatement ishana(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
12265        TCustomSqlStatement ret = null;
12266        int k;
12267        boolean lcisnewsql;
12268        TSourceToken lcpprevsolidtoken,lcnextsolidtoken,lctoken;
12269
12270        gnewsqlstatementtype = ESqlStatementType.sstinvalid;
12271
12272        if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
12273                || (pcst.tokencode  == TBaseType.cmtslashstar)
12274                || (pcst.tokencode  == TBaseType.lexspace)
12275                || (pcst.tokencode  == TBaseType.lexnewline)
12276                || (pcst.tokentype == ETokenType.ttsemicolon) )
12277        {
12278            return ret;
12279        }
12280
12281        int lcpos = pcst.posinlist;
12282        TSourceTokenList lcsourcetokenlist = pcst.container;
12283        TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
12284
12285        //subquery after semicolon || at first line
12286        if ( pcst.tokentype == ETokenType.ttleftparenthesis)  // (
12287        {
12288            k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
12289            if ( k >0 )
12290            {
12291                if (pstate == EFindSqlStateType.stnormal){
12292                    ret =  new TSelectSqlStatement(pdbvendor);
12293                    return ret;
12294                }
12295            }
12296        }
12297
12298        //cte
12299        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
12300        {
12301            ret = findcte(pcst,pdbvendor);
12302            if ( (ret != null) )  return ret;
12303        }
12304
12305        gnewsqlstatementtype = findhanacmd(pcst);
12306
12307        TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
12308        switch(gnewsqlstatementtype ) {   //
12309            case sstinvalid:
12310            {
12311                if ( pcst.tokencode == TBaseType.mslabel )
12312                {
12313                    ret =  new TMssqlLabel(pdbvendor);
12314                }
12315                else
12316                    ret = null;
12317
12318                break;
12319            }
12320            case sstselect:
12321            {
12322                lcisnewsql = true;
12323
12324                if ( pstate != EFindSqlStateType.stnormal )
12325                {
12326                    // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
12327                    if ( (lcprevsolidtoken != null) )
12328                    {
12329                        if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
12330                            lcisnewsql = false; //subqery
12331                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
12332                            lcisnewsql = false;
12333                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
12334                            lcisnewsql = false;
12335                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
12336                            lcisnewsql = false;
12337                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
12338                            lcisnewsql = false;
12339                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
12340                            lcisnewsql = false;
12341                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
12342                        {
12343                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
12344                                lcisnewsql = false;
12345                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
12346                                lcisnewsql = false;
12347                        }
12348                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
12349                        {
12350                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmssqlset )
12351                                lcisnewsql = false;
12352                        }
12353                        else if (lcprevsolidtoken.tokentype == ETokenType.ttrightparenthesis){
12354                            if ((lccurrentsqlstatement != null) && (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable)){
12355                                lcisnewsql = false;
12356                            }
12357                        }
12358
12359                        if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
12360                        {
12361                            lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
12362                            if ( (lcpprevsolidtoken != null) )
12363                            {
12364                                if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
12365                                    lcisnewsql = false;
12366                            }
12367                        }
12368
12369                    }
12370
12371                    if ( (lccurrentsqlstatement != null) )
12372                    {
12373                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
12374                        {
12375                            lcisnewsql = false;
12376                        }
12377                        else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstGrant )
12378                        {
12379                            if ( (lcprevsolidtoken != null) )
12380                            {
12381                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_grant )
12382                                    lcisnewsql = false;
12383                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
12384                                    lcisnewsql = false;
12385                            }
12386                        }else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview ){
12387                            lcisnewsql = false;
12388                        }else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstaltersequence ){
12389                            lcisnewsql = false;
12390                        }else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstExplain ){
12391                            lcisnewsql = false;
12392                        }else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstRevoke ){
12393                            lcisnewsql = false;
12394                        }else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstupsert ){
12395                            lcisnewsql = false;
12396                        }else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstalterview ){
12397                            lcisnewsql = false;
12398                        }
12399                    }
12400
12401                }
12402
12403                if ( lcisnewsql )
12404                    ret =  new TSelectSqlStatement(pdbvendor);
12405
12406                break;
12407
12408            }
12409            case sstinsert:
12410            {
12411                lcisnewsql = true;
12412                if ( pstate != EFindSqlStateType.stnormal )
12413                {
12414                    if ( (lccurrentsqlstatement != null) )
12415                    {
12416                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateauditpolicy)
12417                        {
12418                            lcisnewsql = false;
12419                        }
12420                        // merge
12421                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
12422                        {
12423                            if (lcprevsolidtoken != null)
12424                            {
12425                                if (lcprevsolidtoken.tokencode == TBaseType.rrw_then)
12426                                {lcisnewsql = false;}
12427                            }
12428                        }
12429
12430
12431                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstGrant )
12432                        {
12433                            if ( (lcprevsolidtoken != null) )
12434                            {
12435                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_grant )
12436                                    lcisnewsql = false;
12437                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
12438                                    lcisnewsql = false;
12439                            }
12440                        }else if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
12441                        {
12442                            lcisnewsql = false;
12443                        }
12444
12445                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetrigger )
12446                        {
12447                            if ( (lcprevsolidtoken != null) )
12448                            {
12449                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
12450                                    lcisnewsql = false;
12451                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
12452                                    lcisnewsql = false;
12453                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(),"after") == 0 )
12454                                    lcisnewsql = false;
12455                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(), "of") == 0 )
12456                                    lcisnewsql = false;
12457                            }
12458                        }
12459
12460
12461                    }
12462                }
12463
12464                if ( lcisnewsql )
12465                {
12466                    ret =  new TInsertSqlStatement(pdbvendor);
12467                    ret.dummytag = 1; //  select stmt in insert is permitted
12468                    for ( k = lcpos + 1; k < lcsourcetokenlist.size();k++ )    // iterate
12469                    {
12470                        if ( lcsourcetokenlist.get(k).isnonsolidtoken() ) continue;
12471                        if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_values ) break;
12472                        if ( lcsourcetokenlist.get(k).tokentype == ETokenType.ttsemicolon ) break;
12473                        if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_select ){
12474                            ret.dummytag = 0;
12475                            break;
12476                        }
12477                    }    // for (
12478                    if ( k > lcsourcetokenlist.size() - 1 )
12479                        k = lcsourcetokenlist.size() - 1;
12480
12481                    for ( int i = lcpos + 1; i <=  k; i++ )    // iterate
12482                    {
12483                        lcsourcetokenlist.get(i).tokenstatus = ETokenStatus.tsignoredbygetrawstatement;
12484                    }    // for (
12485
12486                }
12487
12488                break;
12489            }
12490            case sstupdate:
12491            {
12492                lcisnewsql = true;
12493                if ( pstate != EFindSqlStateType.stnormal )
12494                {
12495                    // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
12496                    if ( (lcprevsolidtoken != null) )
12497                    { //
12498                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
12499                            lcisnewsql = false;
12500                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
12501                            lcisnewsql = false;
12502                    }
12503
12504                    lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
12505                    if ( TBaseType.assigned(lcnextsolidtoken) )
12506                    {
12507                        if ( lcnextsolidtoken.tokentype == ETokenType.ttleftparenthesis)
12508                        {
12509                            k = lcsourcetokenlist.solidtokenafterpos(lcnextsolidtoken.posinlist,TBaseType.rrw_select,1,"(");
12510                            if ( k  == 0 ) lcisnewsql = false;
12511                        }
12512                    }
12513
12514
12515                    if ( TBaseType.assigned(lccurrentsqlstatement) )
12516                    {
12517                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateauditpolicy)
12518                        {
12519                                lcisnewsql = false;
12520                        }else if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
12521                        {
12522                            lcisnewsql = false;
12523                        }
12524                        // merge
12525                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
12526                        {
12527                            if (lcprevsolidtoken != null)
12528                            {
12529                                if (lcprevsolidtoken.tokencode == TBaseType.rrw_then)
12530                                {lcisnewsql = false;}
12531                            }
12532                        }
12533
12534                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstGrant )
12535                        {
12536                            if ( TBaseType.assigned(lcprevsolidtoken) )
12537                            {
12538                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_grant )
12539                                    lcisnewsql = false;
12540                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
12541                                    lcisnewsql = false;
12542                            }
12543                        }
12544                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetrigger )
12545                        {
12546                            if ( TBaseType.assigned(lcprevsolidtoken) )
12547                            {
12548                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
12549                                    lcisnewsql = false;
12550                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
12551                                    lcisnewsql = false;
12552                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(),"after") == 0 )
12553                                    lcisnewsql = false;
12554                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(), "of") == 0 )
12555                                    lcisnewsql = false;
12556                            }
12557                        }
12558
12559                    }
12560                }
12561
12562                if ( lcisnewsql )
12563                {
12564                    ret =  new TUpdateSqlStatement(pdbvendor);
12565                    ret.dummytag = 1; // means set clause in update is not found yet, used to separate set clause from set statement
12566                }
12567
12568                break;
12569            }
12570            case sstdelete:
12571            {
12572                lcisnewsql = true;
12573
12574                if ( pstate != EFindSqlStateType.stnormal )
12575                {
12576                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
12577                    if ( TBaseType.assigned(lcprevsolidtoken) )
12578                    {
12579                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
12580                            lcisnewsql = false;
12581                    }
12582
12583                    if ( TBaseType.assigned(lccurrentsqlstatement) )
12584                    {
12585                        // merge
12586                        if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstmerge)
12587                        {
12588                            if (lcprevsolidtoken != null)
12589                            {
12590                                if (lcprevsolidtoken.tokencode == TBaseType.rrw_then)
12591                                {lcisnewsql = false;}
12592                            }
12593                        }
12594
12595                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstGrant )
12596                        {
12597                            if ( TBaseType.assigned(lcprevsolidtoken) )
12598                            {
12599                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_grant )
12600                                    lcisnewsql = false;
12601                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
12602                                    lcisnewsql = false;
12603                            }
12604                        }
12605
12606                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetrigger )
12607                        {
12608                            if ( TBaseType.assigned(lcprevsolidtoken) )
12609                            {
12610                                if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
12611                                    lcisnewsql = false;
12612                                else if ( lcprevsolidtoken.tokentype == ETokenType.ttcomma )
12613                                    lcisnewsql = false;
12614                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(),"after") == 0 )
12615                                    lcisnewsql = false;
12616                                else if ( TBaseType.mycomparetext(lcprevsolidtoken.getAstext(), "of") == 0 )
12617                                    lcisnewsql = false;
12618                            }
12619                        }
12620
12621                        if ((lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstbackupcatalogdelete)
12622                        ||(lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable)
12623                                )
12624                        {
12625                            lcisnewsql = false;
12626                        }
12627
12628                    }
12629                }
12630
12631                if ( lcisnewsql )
12632                    ret =  new TDeleteSqlStatement(pdbvendor);
12633
12634                break;
12635            }
12636            case sstcreatetable:
12637            {
12638                ret =  new TCreateTableSqlStatement(pdbvendor);
12639                break;
12640            }
12641            case sstcreateview:
12642            {
12643                ret =  new TCreateViewSqlStatement(pdbvendor);
12644                break;
12645            }
12646            case sstcreatesequence:
12647            {
12648                ret = new TCreateSequenceStmt(pdbvendor);
12649                break;
12650            }
12651            case sstaltertable:
12652            {
12653                lcisnewsql = true;
12654                if ( pstate != EFindSqlStateType.stnormal )
12655                {
12656                            lcisnewsql = false;
12657                }
12658                if ( lcisnewsql ) {
12659                    ret = new TAlterTableStatement(pdbvendor);
12660                }
12661                break;
12662            }
12663            case sstcreateprocedure :
12664            {
12665                ret = new TCreateProcedureStmt(pdbvendor);
12666                break;
12667            }
12668            case sstalterprocedure:
12669            {
12670                boolean isAlter = false;
12671                // hana  alter and create procedure 语法混在一起,无法区分
12672                // c:\prg\gsp_java\gsp_java_core\gsp_sqlfiles\TestCases\public\allversions\hana\create_procedure.sql
12673                if (pcst.tokencode == TBaseType.rrw_alter){
12674
12675                    TSourceToken st = pcst.nextSolidToken(3);
12676                    if (st != null){
12677                        switch (st.toString().toUpperCase()) {
12678                            case "RECOMPILE":   
12679                                isAlter = true;
12680                                break;
12681                            case "ENCRYPTION":
12682                                isAlter = true;
12683                                break;
12684                            case "ADD":
12685                                isAlter = true;
12686                                break;
12687                            default:
12688                                break;
12689                        }
12690                    }
12691
12692                    // TSourceToken st = pcst.searchToken("recompile",4);
12693                    // if (st != null){
12694                    //     isAlter = true;
12695                    // }else{
12696                    //     st = pcst.searchToken("encryption",4);
12697                    //     if (st != null){
12698                    //         isAlter = true;
12699                    //     }
12700                    // }
12701                }
12702                if (isAlter){
12703                    ret = new TAlterProcedureStmt (pdbvendor);
12704                }else{
12705                    ret  = new TCreateProcedureStmt (pdbvendor);
12706                }
12707
12708                break;
12709            }
12710            case sstcreatefunction :
12711            {
12712                ret =  new TCreateFunctionStmt(pdbvendor);
12713                break;
12714            }
12715            case sstalterfunction:
12716            {
12717                boolean isAlter = false;
12718                // hana  alter and create function 语法混在一起,无法区分
12719
12720                if (pcst.tokencode == TBaseType.rrw_alter){
12721                    TSourceToken stAdd = pcst.searchToken("add",4);
12722                    TSourceToken stAlter = pcst.searchToken("alter",4);
12723                    TSourceToken stDrop = pcst.searchToken("drop",4);
12724                    if ((stAdd != null)||(stAlter != null)||(stDrop != null)){
12725                        isAlter = true;
12726                    }else{
12727                        TSourceToken st = pcst.searchToken("encryption",4);
12728                        if (st != null){
12729                            isAlter = true;
12730                        }
12731                    }
12732                }
12733
12734                if (isAlter){
12735                    ret = new TAlterFunctionStmt (pdbvendor);
12736                }else{
12737                    ret  = new TCreateFunctionStmt (pdbvendor);
12738                }
12739
12740
12741                break;
12742            }
12743            case sstcreatetrigger :
12744            case sstaltertrigger:
12745            {
12746                ret =  new TCreateTriggerStmt(pdbvendor);
12747                break;
12748            }
12749            case sstGrant:
12750            {
12751                lcisnewsql = true;
12752
12753                if ( pstate != EFindSqlStateType.stnormal )
12754                {
12755                    lcisnewsql = false;
12756
12757                }
12758                if ( lcisnewsql )
12759                {
12760                    ret =  new TGrantStmt(pdbvendor);
12761                    //ret.sqlstatementtype = gnewsqlstatementtype;
12762                    for ( k = lcpos + 1; k< lcsourcetokenlist.size();k++ )    // iterate
12763                    {
12764                        lctoken = lcsourcetokenlist.get(k);
12765                        if (lctoken.isnonsolidtoken() ) continue;
12766                        if ( lctoken.tokencode == TBaseType.rrw_go ) break;
12767                        if ( lctoken.tokentype == ETokenType.ttsemicolon ) break;
12768                        if ( lctoken.tokencode == TBaseType.rrw_to   ) break;
12769                        lctoken.tokenstatus = ETokenStatus.tsignoredbygetrawstatement;
12770                    }
12771                }
12772                break;
12773            }
12774            case sstdropview:
12775            {
12776                ret =  new TDropViewSqlStatement(pdbvendor);
12777                break;
12778            }
12779            case sstdroptable:
12780            {
12781                ret =  new TDropTableSqlStatement(pdbvendor);
12782                break;
12783            }
12784            case sstdropindex:
12785            {
12786                ret =  new TDropIndexSqlStatement(pdbvendor);
12787                break;
12788            }
12789            case ssttruncatetable:
12790            {
12791                ret =  new TTruncateStatement(pdbvendor);
12792                break;
12793            }
12794            case sstcommit:
12795            {
12796                lcisnewsql = true;
12797                TSourceToken lcPrev = pcst.prevSolidToken();
12798                if ((lcPrev != null) && (lcPrev.tokencode == TBaseType.rrw_hana_of)){
12799                    lcisnewsql = false;
12800                }
12801                if ( pstate != EFindSqlStateType.stnormal )
12802                {
12803                    lcisnewsql = false;
12804
12805                }
12806                if (lcisnewsql){
12807                    ret =  new TCommitStmt(pdbvendor);
12808                }
12809
12810                break;
12811            }
12812            case sstrollback:
12813            {
12814                ret =  new TRollbackStmt(pdbvendor);
12815                break;
12816            }
12817            case sstRevoke:
12818            {
12819                lcisnewsql = true;
12820
12821                if ( pstate != EFindSqlStateType.stnormal )
12822                {
12823                    lcisnewsql = false;
12824
12825                }
12826                if (lcisnewsql){
12827                    ret = new TRevokeStmt(pdbvendor);
12828                }
12829                break;
12830            }
12831            case sstcreateindex:
12832            {
12833                ret =  new TCreateIndexSqlStatement(pdbvendor);
12834                break;
12835            }
12836            case sstset:
12837            {
12838                lcisnewsql = true;
12839                if ( pstate != EFindSqlStateType.stnormal )
12840                {
12841                    if ( TBaseType.assigned(lccurrentsqlstatement) )
12842                    {
12843                        lcisnewsql = false;
12844                    }
12845                }
12846
12847                if ( lcisnewsql )
12848                {
12849                    ret =  new TMssqlSet(pdbvendor);
12850                }
12851
12852                break;
12853            }
12854            case sstdropsequence:
12855                ret = new TDropSequenceStmt(pdbvendor);
12856                break;
12857            case sstalterdatabase:
12858                ret = new TAlterDatabaseStmt(pdbvendor);
12859                break;
12860            case sstcreatedatabase:
12861            {
12862                ret = new TCreateDatabaseSqlStatement(pdbvendor);
12863                break;
12864            }
12865            case sstcreateschema:
12866            {
12867                ret = new TCreateSchemaSqlStatement(pdbvendor);
12868                break;
12869            }
12870            case sstcreatesynonym:
12871            {
12872                ret = new TCreateSynonymStmt(pdbvendor);
12873                break;
12874            }
12875            case sstcreatetype:
12876                ret = new TMssqlCreateType(pdbvendor);
12877                break;
12878            case sstreplace:
12879                lcisnewsql = true;
12880                TSourceToken lcNext = pcst.nextSolidToken();
12881                if ((lcNext != null) && (lcNext.tokencode == '(')){
12882                    lcisnewsql = false;
12883                }
12884                if ( pstate != EFindSqlStateType.stnormal )
12885                {
12886                    lcisnewsql = false;
12887                }
12888                if (lcisnewsql) {
12889                     ret = new TUpsertStmt(pdbvendor);
12890                    //ret.sqlstatementtype = gnewsqlstatementtype;
12891                }
12892                break;
12893            case sstalterauditpolicy:
12894                ret = new TAlterAuditPolicyStmt(pdbvendor);
12895                break;
12896            case sstaltercredential:
12897                ret = new TAlterCredentialStmt(pdbvendor);
12898                break;
12899            case sstalterfulltextindex:
12900                ret = new TAlterFulltextIndexStmt(pdbvendor);
12901                break;
12902            case sstalterindex:
12903                ret = new TAlterIndexStmt(pdbvendor);
12904                break;
12905            case sstalterldapprovider:
12906                ret = new TAlterLDAPProviderStmt(pdbvendor);
12907                break;
12908            case sstalterjwtprovider:
12909                ret = new TAlterJWTProviderStmt(pdbvendor);
12910                break;
12911            case sstalterpse:
12912                ret = new TAlterPSEStmt(pdbvendor);
12913                break;
12914            case sstalterremotesource:
12915                ret = new TAlterRemoteSourceStmt(pdbvendor);
12916                break;
12917            case sstAlterRole:
12918                ret = new TAlterRoleStmt(pdbvendor);
12919                break;
12920            case sstaltersamlprovider:
12921                ret = new TAlterSAMLProviderStmt(pdbvendor);
12922                break;
12923            case sstaltersequence:
12924                ret = new TAlterSequenceStatement(pdbvendor);
12925                break;
12926            case sstalterstatistics:
12927                ret = new TAlterStatisticsStmt(pdbvendor);
12928                break;
12929            case sstaltersystem:
12930                ret = new TAlterSystemStmt(pdbvendor);
12931                break;
12932            case sstunload:
12933                lcisnewsql = true;
12934                if ( pstate != EFindSqlStateType.stnormal )
12935                {
12936                    lcisnewsql = false;
12937                }
12938                if ( lcisnewsql ) {
12939                    ret = new TUnloadStmt(pdbvendor);
12940                    ret.sqlstatementtype = gnewsqlstatementtype;
12941                }
12942                break;
12943            case sstunset:
12944            case sstunsetpse:
12945            case sstunsetsystemlicense:
12946                lcisnewsql = true;
12947                if ( pstate != EFindSqlStateType.stnormal )
12948                {
12949                    lcisnewsql = false;
12950                }
12951                if ( lcisnewsql ) {
12952                    ret = new TUnsetStmt(pdbvendor);
12953                    ret.sqlstatementtype = gnewsqlstatementtype;
12954                }
12955                break;
12956            case sstalteruser:
12957                ret  = new TAlterUserStmt(pdbvendor);
12958                break;
12959            case sstconnect:
12960                lcisnewsql = true;
12961                if ( pstate != EFindSqlStateType.stnormal )
12962                {
12963                    lcisnewsql = false;
12964                }
12965                if ( lcisnewsql ) {
12966                    ret = new TConnectStmt(pdbvendor);
12967                    ret.sqlstatementtype = gnewsqlstatementtype;
12968                }
12969                break;
12970            case sstalterusergroup:
12971                ret = new TAlterUserGroupStmt(pdbvendor);
12972                        break;
12973            case sstalterview:
12974            case sstalterviewcache:
12975                ret = new TAlterViewStatement(pdbvendor);
12976                break;
12977            case sstaltervirtualtable:
12978                ret = new TAlterVirtualTableStmt(pdbvendor);
12979                break;
12980            case sstalterworkloadclass:
12981                ret = new TAlterWorkloadClassStmt(pdbvendor);
12982                break;
12983            case sstalterworkloadmapping:
12984                ret = new TAlterWorkloadMappingStmt(pdbvendor);
12985                break;
12986            case sstbackupcancel:
12987                ret = new TBackupCancelStmt(pdbvendor);
12988                break;
12989            case sstbackupcatalogdelete:
12990                ret = new TBackupCatalogDeleteStmt(pdbvendor);
12991                break;
12992            case sstbackupcheck:
12993            case sstbackupcheckaccess:
12994                ret = new TBackupCheckStmt(pdbvendor);
12995                break;
12996            case sstbackupdata:
12997                ret = new TBackupDataStmt(pdbvendor);
12998                break;
12999            case sstbackuplistdata:
13000                ret = new TBackupListDataStmt(pdbvendor);
13001                break;
13002            case sstcall:
13003                ret = new TCallStatement(pdbvendor);
13004                break;
13005            case sstcomment:
13006                ret = new TCommentOnSqlStmt(pdbvendor);
13007                break;
13008            case sstcreateauditpolicy:
13009                ret =  new TCreateAuditPolicyStmt(pdbvendor);
13010                break;
13011            case sstcreatecertificate:
13012                ret =  new TCreateCertificateStmt(pdbvendor);
13013                break;
13014            case sstcreatecollection:
13015                ret =  new TCreateCollectionStmt(pdbvendor);
13016                break;
13017            case sstcreatecredential:
13018                ret =  new TCreateCredentialStmt(pdbvendor);
13019                break;
13020            case sstcreatefulltextindex:
13021                ret =  new TCreateFulltextIndexStmt(pdbvendor);
13022                break;
13023            case sstcreategraphworkspace:
13024                ret =  new TCreateGraphWorkspaceStmt(pdbvendor);
13025                break;
13026            case sstcreateJWTProvider:
13027                ret =  new TCreateJWTProviderStmt(pdbvendor);
13028                break;
13029            case sstcreateLDAPProvider:
13030                ret =  new TCreateLDAPProviderStmt(pdbvendor);
13031                break;
13032            case sstcreatepse:
13033                ret =  new TCreatePSEStmt(pdbvendor);
13034                break;
13035            case sstcreateremotesource:
13036                ret =  new TCreateRemoteSourceStmt(pdbvendor);
13037                break;
13038            case sstcreaterole:
13039                ret =  new TCreateRoleStmt(pdbvendor);
13040                break;
13041            case sstcreatesamlprovider:
13042                ret =  new TCreateSAMLProviderStmt(pdbvendor);
13043                break;
13044            case sstcreatestatistics:
13045                ret =  new TCreateStatistics(pdbvendor);
13046                break;
13047            case sstcreatestructuredprivilege:
13048                ret =  new TCreateStructuredPrivilegeStmt(pdbvendor);
13049                break;
13050            case sstcreateuser:
13051                ret =  new TCreateUserStmt(pdbvendor);
13052                break;
13053            case sstcreateusergroup:
13054                ret =  new TCreateUserGroupStmt(pdbvendor);
13055                break;
13056            case sstcreatevirtualfunction:
13057                ret =  new TCreateVirtualFunctionStmt(pdbvendor);
13058                break;
13059            case sstcreatevirtualtable:
13060                ret =  new TCreateVirtualTableStmt(pdbvendor);
13061                break;
13062            case sstcreateworkloadclass:
13063                ret =  new TCreateWorkloadClassStmt(pdbvendor);
13064                break;
13065            case sstcreateworkloadmapping:
13066                ret =  new TCreateWorkloadMappingStmt(pdbvendor);
13067                break;
13068            case sstdropauditpolicy:
13069            case sstdropcertificate:
13070            case sstdropcollection:
13071            case sstdropcredential:
13072            case sstdropfulltextindex:
13073            case sstdropJWTProvider:
13074            case sstdropLDAPProvider:
13075            case sstdroppse:
13076            case sstdropremotesource:
13077            case sstdropsamlprovider:
13078            case sstdropstatistics:
13079            case sstdropgraphworkspace:
13080            case sstdropstructuredprivilege:
13081            case sstdroptype:
13082            case sstdropusergroup:
13083            case sstdropworkloadclass:
13084            case sstdropworkloadmapping:
13085                lcisnewsql = true;
13086                if ( pstate != EFindSqlStateType.stnormal )
13087                {
13088                    lcisnewsql = false;
13089                }
13090                if ( lcisnewsql ) {
13091                    ret =  new TDropStmt(pdbvendor);
13092                }
13093
13094                break;
13095            case sstdropdatabase:
13096                ret =  new TDropDatabaseStmt(pdbvendor);
13097                break;
13098            case sstdropfunction:
13099                ret =  new TDropFunctionStmt(pdbvendor);
13100                break;
13101            case sstdropprocedure:
13102                ret =  new TDropProcedureStmt(pdbvendor);
13103                break;
13104            case sstdroprole:
13105                ret =  new TDropRoleStmt(pdbvendor);
13106                break;
13107            case sstdropschema:
13108                ret =  new TDropSchemaSqlStatement(pdbvendor);
13109                break;
13110            case sstdropsynonym:
13111                ret =  new TDropSynonymStmt(pdbvendor);
13112                break;
13113            case sstdroptrigger:
13114                ret =  new TDropTriggerSqlStatement(pdbvendor);
13115                break;
13116            case sstdropuser:
13117                ret =  new TDropUserStmt(pdbvendor);
13118                break;
13119            case sstExplain:
13120                ret =  new TExplainPlan(pdbvendor);
13121                break;
13122            case sstexport:
13123                ret =  new TExportStmt(pdbvendor);
13124                break;
13125            case sstimport:
13126//            case sstimportfrom:
13127//            case sstimportscan:
13128                ret =  new TImportStmt(pdbvendor);
13129                break;
13130            case sstload:
13131                lcisnewsql = true;
13132                if ( pstate != EFindSqlStateType.stnormal )
13133                {
13134                    lcisnewsql = false;
13135                }
13136                if ( lcisnewsql ) {
13137                    ret =  new TLoadStmt(pdbvendor);
13138                }
13139
13140                break;
13141            case sstlocktable:
13142                ret =  new TLockTableStmt(pdbvendor);
13143                break;
13144            case sstmergedelta:
13145                ret =  new TMergeDeltaStmt(pdbvendor);
13146                break;
13147            case sstmerge:
13148                ret =  new TMergeSqlStatement(pdbvendor);
13149                break;
13150            case sstrecoverdata:
13151                ret =  new TRecoverDataStmt(pdbvendor);
13152                break;
13153            case sstrecoverdatabase:
13154                ret =  new TRecoverDatabaseStmt(pdbvendor);
13155                break;
13156            case sstrefreshstatistics:
13157                ret =  new TRefreshStatisticsStmt(pdbvendor);
13158                break;
13159            case sstrenamecollection:
13160            case sstrenamecolumn:
13161            case sstrenamedatabase:
13162            case sstrenameindex:
13163            case sstrenametable:
13164                ret =  new TRenameStmt(pdbvendor);
13165                break;
13166            case sssethistorysession:
13167            case sstsetpse:
13168            case sstsetschema:
13169            case sstsetsystemlicense:
13170            case sstsettransaction:
13171            case sstsettransactionautocommit:
13172                ret =  new TSetDatabaseObjectStmt(pdbvendor);
13173                break;
13174            case ssttruncatecollection:
13175                ret =  new TTruncateCollectionStmt(pdbvendor);
13176                break;
13177            case sstvalidateLDAPProvider:
13178                ret =  new TValidateLDAPProviderStmt(pdbvendor);
13179                break;
13180            case sstvalidateUser:
13181                ret =  new TValidateUserStmt(pdbvendor);
13182                break;
13183            case sstupsert:
13184                ret =  new TUpsertStmt(pdbvendor);
13185                break;
13186            case sstsavepoint:
13187                {
13188                    lcisnewsql = true;
13189
13190                    if ( pstate != EFindSqlStateType.stnormal )
13191                    {
13192                        lcisnewsql = false;
13193    
13194                    }
13195                    if (lcisnewsql){
13196                    ret = new TSavepointStmt(pdbvendor);
13197                    ret.sqlstatementtype = gnewsqlstatementtype;
13198                    }
13199                    break;
13200                }                
13201            default:
13202            {
13203                ret =  new TUnknownSqlStatement(pdbvendor);
13204                ret.sqlstatementtype = gnewsqlstatementtype;
13205                break;
13206            }
13207        }    // case
13208
13209        return ret;
13210    }
13211
13212    TCustomSqlStatement mapTeradataUsing(TSourceToken ptoken){
13213        TCustomSqlStatement ret = null;
13214        TSourceToken lctoken = null;
13215        int lcnested = 0,k,j;
13216
13217        //using ... insert/select/delete/update/begin transaction
13218        int lcpos = ptoken.posinlist;
13219        TSourceTokenList lcsourcetokenlist = ptoken.container;
13220
13221        for (int i = lcpos + 1; i <  lcsourcetokenlist.size();i++)    // iterate
13222          {
13223            lctoken = lcsourcetokenlist.get(i);
13224              if ( (lctoken.tokencode == TBaseType.rrw_delete) )
13225                {
13226                  ret = new TDeleteSqlStatement(EDbVendor.dbvteradata);
13227                  gnewsqlstatementtype = ESqlStatementType.sstdelete;
13228                  break;
13229                }
13230              else if ( (lctoken.tokencode == TBaseType.rrw_insert) )
13231                {
13232                  ret = new TInsertSqlStatement(EDbVendor.dbvteradata);
13233                  gnewsqlstatementtype = ESqlStatementType.sstinsert;
13234                  break;
13235                }
13236              else if ( (lctoken.tokencode == TBaseType.rrw_select) )
13237                {
13238                  ret = new TSelectSqlStatement(EDbVendor.dbvteradata);
13239                  gnewsqlstatementtype = ESqlStatementType.sstselect;
13240                  break;
13241                }
13242              else if ( (lctoken.tokencode == TBaseType.rrw_update) )
13243                {
13244                  ret = new TUpdateSqlStatement(EDbVendor.dbvteradata);
13245                  gnewsqlstatementtype = ESqlStatementType.sstupdate;
13246                  break;
13247                }
13248              else if ( (lctoken.tokencode == TBaseType.rrw_begin) || (lctoken.tokencode == TBaseType.rrw_bt) )
13249                {
13250                  ret = new TTeradataBeginTransaction(EDbVendor.dbvteradata);
13251                  gnewsqlstatementtype = ESqlStatementType.sstteradatabegintransaction;
13252                  break;
13253                }
13254          }
13255        return ret;
13256    }
13257
13258/**
13259 * Analyzes a SQL token to determine if it starts a Common Table Expression (CTE) 
13260 * and returns the appropriate SQL statement object.
13261 *
13262 * This function handles CTEs that begin with "WITH" and can contain:
13263 * - SELECT statements
13264 * - INSERT statements  
13265 * - UPDATE statements
13266 * - DELETE statements
13267 * - MERGE statements
13268 * - VALUES clauses (PostgreSQL)
13269 *
13270 * Side Effects:
13271 * When a CTE is found, this function marks tokens as "ignored" to prevent them from being 
13272 * processed again during raw statement parsing:
13273 * 1. All tokens from after WITH up to and including the main statement keyword (SELECT/INSERT/etc.) 
13274 *    are marked with ETokenStatus.tsignoredbygetrawstatement
13275 * 2. For INSERT statements, additional tokens after INSERT up to VALUES/SELECT/EXECUTE/semicolon 
13276 *    are also marked as ignored
13277 * 
13278 * Example of ignored tokens:
13279 * WITH cte AS (SELECT * FROM t1)  -- these tokens marked as ignored
13280 * SELECT * FROM cte;             -- SELECT is also marked as ignored
13281 *                               -- parsing continues after SELECT
13282 *
13283 * @param ptoken The source token to analyze, expected to be a "WITH" keyword
13284 * @param pdbvendor The database vendor type (e.g. Oracle, SQL Server, etc.)
13285 * @return A TCustomSqlStatement object representing the CTE statement type found,
13286 *         or null if no valid CTE statement is detected
13287 */    
13288TCustomSqlStatement findcte(TSourceToken ptoken, EDbVendor pdbvendor){
13289    TCustomSqlStatement ret = null;
13290    TSourceToken lctoken = null;
13291    int lcnested = 0,k,j;
13292    boolean inXmlNamespaces = false;
13293    boolean isXmlNamespaces = false;
13294
13295    int lcpos = ptoken.posinlist;
13296    TSourceTokenList lcsourcetokenlist = ptoken.container;
13297
13298    for (int i = lcpos + 1; i <  lcsourcetokenlist.size();i++)    // iterate
13299      {
13300        lctoken = lcsourcetokenlist.get(i);
13301//        if (lctoken.tokencode == TBaseType.rrw_postgresql_recursive){
13302//            continue;
13303//        }
13304          if (lctoken.tokencode == TBaseType.rrw_xmlnamespaces){
13305              inXmlNamespaces = true;
13306              lcnested = 0;
13307              continue;
13308          }
13309          if (inXmlNamespaces) {
13310              if ( lctoken.tokentype == ETokenType.ttleftparenthesis)  lcnested++;
13311              if ( lctoken.tokentype == ETokenType.ttrightparenthesis) {
13312                  lcnested--;
13313                  if (lcnested == 0) {
13314                    inXmlNamespaces = false;
13315                    isXmlNamespaces = true;
13316                  }
13317              }
13318              continue;
13319          }
13320        if (( lctoken.tokencode == TBaseType.rrw_as ) || isXmlNamespaces)
13321          {
13322            lcnested = 0;
13323            int startPos = i+1;
13324            if (isXmlNamespaces) startPos = i;
13325            for ( j = startPos; j < lcsourcetokenlist.size();j++)
13326            {
13327              lctoken = lcsourcetokenlist.get(j);
13328              if (lctoken.isnonsolidtoken() ) continue;
13329              if ( lctoken.tokentype == ETokenType.ttleftparenthesis)  lcnested++;
13330              if ( lctoken.tokentype == ETokenType.ttrightparenthesis) lcnested--;
13331
13332
13333              if ( (lcnested == 0) && (lctoken.tokencode == TBaseType.rrw_delete) )
13334                {
13335                  ret = new TDeleteSqlStatement(pdbvendor);
13336                  ret.isctequery = true;
13337                  gnewsqlstatementtype = ESqlStatementType.sstdelete;
13338                  break;
13339                }
13340
13341                if ( (lcnested == 0) && (lctoken.tokencode == TBaseType.rrw_merge) )
13342                  {
13343                    ret = new TMergeSqlStatement(pdbvendor);
13344                    ret.isctequery = true;
13345                    gnewsqlstatementtype = ESqlStatementType.sstmerge;
13346                    break;
13347                  }
13348
13349              if ( (lcnested == 0) && (lctoken.tokencode == TBaseType.rrw_insert) )
13350                {
13351                  ret = new TInsertSqlStatement(pdbvendor);
13352                  ret.isctequery = true;
13353                  gnewsqlstatementtype = ESqlStatementType.sstinsert;
13354                  ret.dummytag = 1; //  select stmt in insert is permitted
13355
13356                  for ( k = lctoken.posinlist + 1; k < lcsourcetokenlist.size();k++)    // iterate
13357                  {
13358                    if ( lcsourcetokenlist.get(k).isnonsolidtoken()  ) continue;
13359                    if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_values ) break;
13360                    if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_go ) break;
13361                    if ( lcsourcetokenlist.get(k).tokentype == ETokenType.ttsemicolon ) break;
13362                    if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_select ) break;
13363                    if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_execute ) break;
13364                    if ( lcsourcetokenlist.get(k).tokencode == TBaseType.rrw_exec ) break;
13365                  }    // for
13366                  if ( k > lcsourcetokenlist.size() - 1 )
13367                    k = lcsourcetokenlist.size() - 1;
13368
13369                  for (int m = lctoken.posinlist + 1; m <=  k; m++)    // iterate
13370                  {
13371                    lcsourcetokenlist.get(m).tokenstatus = ETokenStatus.tsignoredbygetrawstatement;
13372                  }    // for
13373
13374                  break;
13375                }
13376
13377                if ( (lcnested == 0) && (lctoken.tokencode == TBaseType.rrw_values) &&(pdbvendor == EDbVendor.dbvpostgresql) )
13378                {
13379                        ret = new TSelectSqlStatement(pdbvendor);
13380                        ret.isctequery = true;
13381                        gnewsqlstatementtype = ESqlStatementType.sstselect;
13382                        break;
13383                }
13384
13385              if ( (lcnested == 0) && (lctoken.tokencode == TBaseType.rrw_select) )
13386                {
13387                  ret = new TSelectSqlStatement(pdbvendor);
13388                  ret.isctequery = true;
13389                  gnewsqlstatementtype = ESqlStatementType.sstselect;
13390                  break;
13391                }
13392
13393              if ( (lcnested == 0) && (lctoken.tokencode == TBaseType.rrw_update) )
13394                {
13395                  ret = new TUpdateSqlStatement(pdbvendor);
13396                  ret.isctequery = true;
13397                  ret.dummytag = 1; // means set clause in update is not found yet, used to seperate set clause from set statement
13398                  gnewsqlstatementtype = ESqlStatementType.sstupdate;
13399                  break;
13400                }
13401
13402                if ( (pdbvendor == EDbVendor.dbvhive) && (lcnested == 0) && (lctoken.tokencode == TBaseType.rrw_from) )
13403                {
13404                    TSourceToken cmdToken = lctoken.searchToken(TBaseType.rrw_insert,3);
13405                    if (cmdToken != null){
13406                        ret = new TInsertSqlStatement(pdbvendor);
13407                        ret.isctequery = true;
13408                        gnewsqlstatementtype = ESqlStatementType.sstinsert;
13409
13410                    }else{
13411                        ret = new TSelectSqlStatement(pdbvendor);
13412                        ret.isctequery = true;
13413                        gnewsqlstatementtype = ESqlStatementType.ssthiveFromQuery;
13414                    }
13415                    break;
13416                }
13417
13418
13419            }    // for
13420
13421            if ( (ret != null) )
13422              {
13423                for (k = lcpos + 1; k <= j;k++)    // iterate
13424                {
13425                  lcsourcetokenlist.get(k).tokenstatus = ETokenStatus.tsignoredbygetrawstatement;
13426                }    // for
13427                break;
13428              }
13429
13430          }
13431      }
13432
13433    return ret;
13434}
13435
13436  TCustomSqlStatement findMdxStmtBeginWithClause(TSourceToken ptoken, EDbVendor pdbvendor){
13437      TCustomSqlStatement ret = null;
13438      ret = new TMdxSelect(pdbvendor);
13439      ret.isctequery = true;
13440      gnewsqlstatementtype = ESqlStatementType.sstmdxselect;
13441      return ret;
13442 }
13443
13444 TCustomSqlStatement isdb2sql(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
13445    TCustomSqlStatement ret = null;
13446    int k;
13447    boolean lcisnewsql;
13448    TSourceToken lcpprevsolidtoken,lcnextsolidtoken;
13449
13450    gnewsqlstatementtype = ESqlStatementType.sstinvalid;
13451
13452    if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
13453       || (pcst.tokencode  == TBaseType.cmtslashstar)
13454       || (pcst.tokencode  == TBaseType.lexspace)
13455       || (pcst.tokencode  == TBaseType.lexnewline)
13456        || (pcst.tokentype == ETokenType.ttsemicolon) )
13457    {
13458      return ret;
13459    }
13460
13461    int lcpos = pcst.posinlist;
13462    TSourceTokenList lcsourcetokenlist = pcst.container;
13463    TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
13464
13465    //subquery after semicolon || at first line
13466    if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
13467      {
13468        k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
13469        if ( k >0 )
13470          {
13471            ret =  new TSelectSqlStatement(pdbvendor);
13472          }
13473
13474        return ret;
13475      }
13476
13477    //cte
13478    if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
13479      {
13480        ret = findcte(pcst,pdbvendor);
13481        if ( TBaseType.assigned(ret) )  return ret;
13482      }
13483
13484    //values
13485    if ( (pstate == EFindSqlStateType.stnormal) &&  (pcst.tokencode == TBaseType.rrw_values) )
13486      {
13487        ret =  new TSelectSqlStatement(pdbvendor);
13488        return ret;
13489      }
13490
13491    // db2 scriptoptions
13492    if ( pcst.tokencode == TBaseType.scriptoptions )
13493      {
13494        ret = new TDb2ScriptOptionStmt(pdbvendor);
13495        return ret;
13496      }
13497
13498    gnewsqlstatementtype = finddb2cmd(pcst);
13499
13500    TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
13501    switch(gnewsqlstatementtype) {   //
13502        case sstinvalid:
13503          {
13504            ret = null;
13505           if ( pcst.tokencode == TBaseType.rrw_begin )
13506          {
13507              ret = new TCommonBlock(pdbvendor);
13508              gnewsqlstatementtype = ret.sqlstatementtype;
13509          }
13510              break;
13511          }
13512        case sstselect:
13513          {
13514            lcisnewsql = true;
13515
13516            if ( pstate != EFindSqlStateType.stnormal )
13517              {
13518                // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
13519                if ( TBaseType.assigned(lcprevsolidtoken) )
13520                  {
13521                    if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
13522                      lcisnewsql = false; //subqery
13523                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
13524                      lcisnewsql = false;
13525                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
13526                      lcisnewsql = false;
13527                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
13528                      lcisnewsql = false;
13529                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
13530                      lcisnewsql = false;
13531                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
13532                      lcisnewsql = false;
13533                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
13534                      {
13535                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
13536                          lcisnewsql = false;
13537                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
13538                          lcisnewsql = false;
13539                      }
13540
13541                    if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
13542                      {
13543                        lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
13544                        if ( TBaseType.assigned(lcpprevsolidtoken) )
13545                          {
13546                            if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
13547                              lcisnewsql = false;
13548                          }
13549                      }
13550
13551                  }
13552
13553
13554                if ( TBaseType.assigned(lccurrentsqlstatement) )
13555                  {
13556                    if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
13557                    {
13558                      lcisnewsql = false;
13559                    }
13560                    else if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstselect )
13561                      {
13562                        if ( lccurrentsqlstatement.isctequery )
13563                          lcisnewsql = false;
13564                      }
13565                  }
13566
13567              }
13568
13569            if ( lcisnewsql )
13570              ret =  new TSelectSqlStatement(pdbvendor);
13571              break;
13572          }
13573        case sstinsert:
13574          {
13575            lcisnewsql = true;
13576            if ( pstate != EFindSqlStateType.stnormal )
13577              {
13578                if ( TBaseType.assigned(lccurrentsqlstatement) )
13579                  {
13580
13581                  }
13582              }
13583
13584            if ( lcisnewsql )
13585              ret =  new TInsertSqlStatement(pdbvendor);
13586              break;
13587          }
13588        case sstupdate:
13589          {
13590            lcisnewsql = true;
13591            if ( pstate != EFindSqlStateType.stnormal )
13592              {
13593                lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
13594                if ( TBaseType.assigned(lcprevsolidtoken) )
13595                  { //
13596                    if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
13597                      lcisnewsql = false;
13598                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
13599                      lcisnewsql = false;
13600                  }
13601
13602                lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
13603                if ( TBaseType.assigned(lcnextsolidtoken) )
13604                  {
13605                    if ( lcnextsolidtoken.tokentype == ETokenType.ttleftparenthesis)
13606                      {
13607                        k = lcsourcetokenlist.solidtokenafterpos(lcnextsolidtoken.posinlist,TBaseType.rrw_select,1,"(");
13608                        if ( k  == 0 ) lcisnewsql = false;
13609                      }
13610                  }
13611
13612
13613                if ( TBaseType.assigned(lccurrentsqlstatement) )
13614                  {
13615                  }
13616              }
13617
13618            if ( lcisnewsql )
13619              {
13620                ret =  new TUpdateSqlStatement(pdbvendor);
13621                ret.dummytag = 1; // means set clause in update is not found yet, used to seperate set clause from set statement
13622              }
13623              break;
13624          }
13625        case sstdelete:
13626          {
13627            lcisnewsql = true;
13628
13629            if ( pstate != EFindSqlStateType.stnormal )
13630              {
13631                lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
13632                if ( TBaseType.assigned(lcprevsolidtoken) )
13633                  {
13634                    if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
13635                      lcisnewsql = false;
13636                  }
13637
13638                if ( TBaseType.assigned(lccurrentsqlstatement) )
13639                  {
13640                  }
13641              }
13642
13643            if ( lcisnewsql )
13644              ret =  new TDeleteSqlStatement(pdbvendor);
13645              break;
13646          }
13647        case sstmerge:
13648          {
13649            ret =  new TMergeSqlStatement(pdbvendor);
13650            ret.sqlstatementtype = gnewsqlstatementtype;
13651              break;
13652          }
13653        case sstcommit:
13654          {
13655            ret =  new TUnknownSqlStatement(pdbvendor);
13656            ret.sqlstatementtype = gnewsqlstatementtype;
13657              break;
13658          }
13659        case sstrollback:
13660          {
13661            ret =  new TUnknownSqlStatement(pdbvendor);
13662            ret.sqlstatementtype = gnewsqlstatementtype;
13663              break;
13664          }
13665        case sstsavepoint:
13666          {
13667            ret =  new TUnknownSqlStatement(pdbvendor);
13668            ret.sqlstatementtype = gnewsqlstatementtype;
13669              break;
13670          }
13671        case sstRevoke:
13672          {
13673            ret =  new TUnknownSqlStatement(pdbvendor);
13674            ret.sqlstatementtype = gnewsqlstatementtype;
13675              break;
13676          }
13677        case sstcreatetable:
13678          {
13679            ret =  new TCreateTableSqlStatement(pdbvendor);
13680              break;
13681          }
13682        case sstcreateview:
13683          {
13684            ret =  new TCreateViewSqlStatement(pdbvendor);
13685              break;
13686          }
13687        case sstcreateindex:
13688          {
13689            ret =  new TCreateIndexSqlStatement(pdbvendor);
13690              break;
13691          }
13692        case sstcreatedatabase:
13693          {
13694            ret =  new TCreateDatabaseSqlStatement(pdbvendor);
13695              break;
13696          }
13697        case sstdroptable:
13698          {
13699            ret =  new TDropTableSqlStatement(pdbvendor);
13700              break;
13701          }
13702        case sstdropview:
13703          {
13704            ret =  new TDropViewSqlStatement(pdbvendor);
13705              break;
13706          }
13707        case sstdropindex:
13708          {
13709            ret =  new TDropIndexSqlStatement(pdbvendor);
13710              break;
13711          }
13712        case sstaltertable:
13713          {
13714            ret =  new TAlterTableStatement(pdbvendor);
13715              break;
13716          }
13717        case sstaltersession:
13718          {
13719            ret =  new TAlterSessionStatement(pdbvendor);
13720              break;
13721          }
13722        case sstdb2set:
13723          {
13724            ret = new TDb2SetVariableStmt(pdbvendor);
13725              break;
13726          }
13727        case sstdb2setschema:
13728        {
13729            ret = new TSetDatabaseObjectStmt(pdbvendor);
13730            break;
13731        }
13732        case sstdb2call:
13733          {
13734            ret = new TDb2CallStmt(pdbvendor);
13735              break;
13736          }
13737        case sstdb2declarecursor:
13738          {
13739            ret = new TDb2DeclareCursorStatement(pdbvendor);
13740              break;
13741          }
13742        case sstcreateprocedure:
13743          {
13744            ret = new TCreateProcedureStmt(pdbvendor);
13745              break;
13746          }
13747        case sstcreatefunction:
13748          {
13749            ret = new TCreateFunctionStmt(pdbvendor);
13750              break;
13751          }
13752        case sstdb2createtrigger:
13753          {
13754            ret = new TCreateTriggerStmt(pdbvendor);
13755              break;
13756          }
13757        case sstdb2return:
13758          {
13759            ret = new TDb2ReturnStmt(pdbvendor);
13760              break;
13761          }
13762      case sstdb2refreshtable:
13763      case sstdb2connect:
13764      case sstdb2terminate:
13765      case sstdb2execute:
13766          {
13767            ret = new TDb2DummyStmt(pdbvendor);
13768              break;
13769          }
13770        case sstdb2createalias:
13771        {
13772            ret = new TCreateAliasStmt(pdbvendor);
13773            break;
13774        }
13775        case sstcreateauditpolicy:
13776            ret =  new TCreateAuditPolicyStmt(pdbvendor);
13777            break;
13778        case sstdb2comment:
13779            ret =  new TCommentOnSqlStmt(pdbvendor);
13780            break;
13781        case sstdb2createvariable:
13782            ret =  new TCreateVariableStmt(pdbvendor);
13783            break;
13784        case sstcreaterole:
13785            ret =  new TCreateRoleStmt(pdbvendor);
13786            break;
13787        case sstcreateTablespace:
13788            ret =  new TCreateTablespaceStmt(pdbvendor);
13789            break;
13790        case sstRunStats:
13791            ret =  new TRunStats(pdbvendor);
13792            break;
13793        case ssttruncatetable:
13794        {
13795            ret =  new TTruncateStatement(pdbvendor);
13796            break;
13797        }
13798        case sstcreatesynonym:
13799            ret = new TCreateSynonymStmt(pdbvendor);
13800            break;        
13801        default:
13802          {
13803            // ret = tdb2dummystmt.create(pdbvendor);
13804            ret =  new TUnknownSqlStatement(pdbvendor);
13805            ret.sqlstatementtype = gnewsqlstatementtype;
13806              break;
13807          }
13808    }    // case
13809
13810    return ret;
13811}
13812
13813    public TCustomSqlStatement issql(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
13814        TCustomSqlStatement ret = null;
13815        if (pcst == null) return null;
13816
13817        switch (pdbvendor){
13818            case dbvoracle: {
13819                ret = isoraclesql(pcst,pdbvendor,pstate,psqlstatement);
13820                break;
13821            }
13822            case dbvdameng: {
13823                ret = isoraclesql(pcst,pdbvendor,pstate,psqlstatement);
13824                break;
13825            }
13826            case dbvmssql: {
13827                ret = ismssqlsql(pcst, pdbvendor, pstate, psqlstatement);
13828                break;
13829            }
13830            case dbvdb2: {
13831                ret = isdb2sql(pcst, pdbvendor, pstate, psqlstatement);
13832                break;
13833            }
13834            case dbvmysql: {
13835                ret = ismysqlsql(pcst, pdbvendor, pstate, psqlstatement);
13836                break;
13837            }
13838            case dbvaccess: {
13839                ret = ismssqlsql(pcst, pdbvendor, pstate, psqlstatement);
13840                break;
13841            }
13842            case dbvteradata: {
13843                ret = isteradatasql(pcst, pdbvendor, pstate, psqlstatement);
13844                break;
13845            }
13846            case dbvpostgresql: {
13847                ret = ispostgresql(pcst, pdbvendor, pstate, psqlstatement);
13848                break;
13849            }
13850            case dbvredshift: {
13851                ret = isredshift(pcst, pdbvendor, pstate, psqlstatement);
13852                break;
13853            }
13854            case dbvgreenplum: {
13855                ret = isgreenplum(pcst,pdbvendor,pstate,psqlstatement);
13856                break;
13857            }
13858            case dbvmdx:{
13859                ret = ismdxsql(pcst, pdbvendor, pstate, psqlstatement);
13860                break;
13861            }
13862            case dbvnetezza:{
13863                ret = isnetezza(pcst, pdbvendor, pstate, psqlstatement);
13864                break;
13865            }
13866            case dbvsybase:{
13867                ret = issybasesql(pcst, pdbvendor, pstate, psqlstatement);
13868                break;
13869            }
13870            case dbvinformix:{
13871                ret = isinformixsql(pcst, pdbvendor, pstate, psqlstatement);
13872                break;
13873            }
13874            case dbvhive:{
13875                ret = ishive(pcst, pdbvendor, pstate, psqlstatement);
13876                break;
13877            }
13878            case dbvimpala:{
13879                ret = ishive(pcst, pdbvendor, pstate, psqlstatement);
13880                break;
13881            }
13882            case dbvhana:{
13883                ret = ishana(pcst, pdbvendor, pstate, psqlstatement);
13884                break;
13885            }
13886            case dbvvertica:{
13887                ret = isvertica(pcst, pdbvendor, pstate, psqlstatement);
13888                break;
13889            }
13890            case dbvcouchbase:{
13891                ret = iscouchbase(pcst, pdbvendor, pstate, psqlstatement);
13892                break;
13893            }
13894            case dbvsnowflake:{
13895                ret = issnowflake(pcst, pdbvendor, pstate, psqlstatement);
13896                break;
13897            }
13898            case dbvbigquery:{
13899                ret = isbigquery(pcst, pdbvendor, pstate, psqlstatement);
13900                break;
13901            }
13902            case dbvsoql:{
13903                ret = ismssqlsql(pcst,pdbvendor,pstate,psqlstatement);
13904                break;
13905            }
13906            case dbvsparksql:{
13907                ret = issparksql(pcst,pdbvendor,pstate,psqlstatement);
13908                break;
13909            }
13910            case dbvpresto:{
13911                ret = ispresto(pcst,pdbvendor,pstate,psqlstatement);
13912                break;
13913            }
13914            case dbvathena:{
13915                ret = isathena(pcst,pdbvendor,pstate,psqlstatement);
13916                break;
13917            }
13918            case dbvdatabricks:{
13919                ret = isdatabricks(pcst,pdbvendor,pstate,psqlstatement);
13920                break;
13921            }
13922            case dbvgaussdb:{
13923                ret = isgaussdb(pcst,pdbvendor,pstate,psqlstatement);
13924                break;
13925            }
13926            default:
13927            {
13928                ret = ismssqlsql(pcst,pdbvendor,pstate,psqlstatement);
13929            }
13930        }    // case
13931        return ret;
13932    }
13933    TCustomSqlStatement isdatabricks(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
13934
13935        TCustomSqlStatement ret = null;
13936        int k;
13937        boolean lcisnewsql;
13938        TSourceToken lcpprevsolidtoken,lcnextsolidtoken;
13939
13940        gnewsqlstatementtype = ESqlStatementType.sstinvalid;
13941
13942        if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
13943                || (pcst.tokencode  == TBaseType.cmtslashstar)
13944                || (pcst.tokencode  == TBaseType.lexspace)
13945                || (pcst.tokencode  == TBaseType.lexnewline)
13946                || (pcst.tokentype == ETokenType.ttsemicolon) )
13947        {
13948            return ret;
13949        }
13950
13951        int lcpos = pcst.posinlist;
13952        TSourceTokenList lcsourcetokenlist = pcst.container;
13953        TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
13954
13955        //subquery after semicolon || at first line
13956        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
13957        {
13958            k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
13959            if ( k >0 )
13960            {
13961                ret =  new TSelectSqlStatement(pdbvendor);
13962            }
13963
13964            return ret;
13965        }
13966
13967        //cte
13968        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
13969        {
13970            ret = findcte(pcst,pdbvendor);
13971            if ( (ret != null) )  return ret;
13972        }
13973
13974
13975        gnewsqlstatementtype = finddatabrickscmd(pcst);
13976
13977        TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
13978
13979        if ((gnewsqlstatementtype == ESqlStatementType.sstinvalid)&&(pcst.tokencode == TBaseType.rrw_create)){
13980            //if (pcst.container.nextsolidtoken(pcst.posinlist,15,))
13981            TSourceToken viewToken = pcst.container.searchToken(TBaseType.rrw_view,"",pcst,15);
13982            if (viewToken != null){
13983                gnewsqlstatementtype = ESqlStatementType.sstcreateview;
13984            }
13985        }
13986        switch (gnewsqlstatementtype){
13987            case sstinvalid:
13988            {
13989                ret = null;
13990                break;
13991            }
13992            case sstselect:
13993            {
13994                lcisnewsql = true;
13995
13996                if ( pstate != EFindSqlStateType.stnormal )
13997                {
13998                    // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
13999                    if ( TBaseType.assigned(lcprevsolidtoken) )
14000                    {
14001                        if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
14002                            lcisnewsql = false; //subqery
14003                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
14004                            lcisnewsql = false;
14005                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
14006                            lcisnewsql = false;
14007                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
14008                            lcisnewsql = false;
14009                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
14010                            lcisnewsql = false;
14011                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
14012                            lcisnewsql = false;
14013                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
14014                        {
14015                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
14016                                lcisnewsql = false;
14017                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
14018                                lcisnewsql = false;
14019                        }
14020
14021                        if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
14022                        {
14023                            lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
14024                            if ( TBaseType.assigned(lcpprevsolidtoken) )
14025                            {
14026                                if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
14027                                    lcisnewsql = false;
14028                            }
14029                        }
14030
14031                    }
14032
14033
14034                    if ( TBaseType.assigned(lccurrentsqlstatement) )
14035                    {
14036                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
14037                            lcisnewsql = false;
14038                    }
14039
14040                }
14041
14042                if ( lcisnewsql )
14043                    ret =  new TSelectSqlStatement(pdbvendor);
14044                break;
14045            }
14046            case sstinsert:
14047            {
14048                lcisnewsql = true;
14049                if ( pstate != EFindSqlStateType.stnormal )
14050                {
14051                    if ( TBaseType.assigned(lccurrentsqlstatement) )
14052                    {
14053
14054                    }
14055                }
14056
14057                if ( lcisnewsql )
14058                    ret =  new TInsertSqlStatement(pdbvendor);
14059                ret.sqlstatementtype = gnewsqlstatementtype;
14060                break;
14061            }
14062            case sstdelete:
14063            {
14064                lcisnewsql = true;
14065
14066                if ( pstate != EFindSqlStateType.stnormal )
14067                {
14068                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
14069                    if ( TBaseType.assigned(lcprevsolidtoken) )
14070                    {
14071                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
14072                            lcisnewsql = false;
14073                    }
14074
14075                    if ( TBaseType.assigned(lccurrentsqlstatement) )
14076                    {
14077                    }
14078                }
14079
14080                if ( lcisnewsql )
14081                    ret =  new TDeleteSqlStatement(pdbvendor);
14082                break;
14083            }
14084            case sstaltertable:
14085            {
14086                ret =  new TAlterTableStatement(pdbvendor);
14087                break;
14088            }
14089            case sstalterfunction:
14090            {
14091                ret =  new TAlterFunctionStmt(pdbvendor);
14092                break;
14093            }
14094            case sstAlterSchema:
14095            {
14096                ret =  new TAlterSchemaStmt(pdbvendor);
14097                break;
14098            }
14099            case sstanalyzeTable:
14100            {
14101                ret = new TAnalyzeStmt(pdbvendor);
14102                break;
14103            }
14104            case sstcall:
14105            {
14106                ret =  new TCallStatement(pdbvendor);
14107                break;
14108            }
14109            case sstcommit:
14110            {
14111                ret =  new TCommitStmt(pdbvendor);
14112                break;
14113            }
14114            case sstcreatefunction:
14115            {
14116                ret =  new TCreateFunctionStmt(pdbvendor);
14117                break;
14118            }
14119            case sstcreaterole:
14120            {
14121                ret =  new TCreateRoleStmt(pdbvendor);
14122                break;
14123            }
14124            case sstcreateschema:
14125            {
14126                ret =  new TCreateSchemaSqlStatement(pdbvendor);
14127                break;
14128            }
14129            case sstcreatetable:
14130            {
14131                ret =  new TCreateTableSqlStatement(pdbvendor);
14132                break;
14133            }
14134            case sstcreateview:
14135            {
14136                ret =  new TCreateViewSqlStatement(pdbvendor);
14137                break;
14138            }
14139            case sstpostgresqlDeallocate:
14140            {
14141                ret =  new TUnknownSqlStatement(pdbvendor);
14142                ret.sqlstatementtype = gnewsqlstatementtype;
14143                break;
14144            }
14145            case sstdropfunction:
14146            {
14147                ret =  new TDropFunctionStmt(pdbvendor);
14148                break;
14149            }
14150            case sstdroprole:
14151            {
14152                ret =  new TDropRoleStmt(pdbvendor);
14153                break;
14154            }
14155            case sstdropschema:
14156            {
14157                ret =  new TDropSchemaSqlStatement(pdbvendor);
14158                break;
14159            }
14160            case sstdroptable:
14161            {
14162                ret =  new TDropTableSqlStatement(pdbvendor);
14163                break;
14164            }
14165            case sstdropview:
14166            {
14167                ret =  new TDropViewSqlStatement(pdbvendor);
14168                break;
14169            }
14170            case sstExecute:
14171            {
14172                ret =  new TExecuteSqlStatement(pdbvendor);
14173                break;
14174            }
14175            case sstExplain:
14176            {
14177                ret =  new TExplainPlan(pdbvendor);
14178                break;
14179            }
14180            case sstGrant:
14181            {
14182                ret =  new TGrantStmt(pdbvendor);
14183                break;
14184            }
14185            case sstprepare:
14186            {
14187                ret =  new TPrepareStmt(pdbvendor);
14188                break;
14189            }
14190            case sstset:
14191            case sstReset:
14192            {
14193                lcisnewsql = true;
14194                if ( pstate != EFindSqlStateType.stnormal )
14195                {
14196                    if ( TBaseType.assigned(lccurrentsqlstatement) )
14197                    {
14198                        lcisnewsql = false;
14199                    }
14200                }
14201
14202                if ( lcisnewsql )
14203                {
14204                    ret =  new TSetStmt(pdbvendor);
14205                }
14206                break;
14207            }
14208            case sstShow:
14209            {
14210                ret = new TShowStmt(pdbvendor);
14211                ret.sqlstatementtype = gnewsqlstatementtype;
14212                break;
14213            }
14214            case sstStartTransaction:
14215            {
14216                ret = new TStartTransactionStmt(pdbvendor);
14217                break;
14218            }
14219            case sstValues:
14220            {
14221                ret =  new TSelectSqlStatement(pdbvendor);
14222                break;
14223            }
14224            case sstResetSession:
14225            {
14226                ret =  new TResetSessionStmt(pdbvendor);
14227                break;
14228            }
14229            case sstCreateExternallocation:
14230                ret = new TCreateExternalLocationStmt(pdbvendor);
14231                break;
14232            case sstList:
14233            {
14234                ret = new TListStmt(pdbvendor);
14235                break;
14236            }
14237            case sstRevoke:
14238                ret = new TRevokeStmt(pdbvendor);
14239                break;
14240            case sstaltercredental:
14241                ret = new TAlterCredentialStmt(pdbvendor);
14242                break;
14243            case sstdescribeCatalog:
14244            case  sstdescribeFunction:
14245            case   sstdescribeProvider:
14246            case   sstdescribeQuery:
14247            case   sstdescribeRecipient:
14248            case   sstdescribeSchema:
14249            case    sstdescribeShare:
14250            case    sstdescribeTable:
14251            case    sstdescribeDatabase:
14252            case    sstdescribeLocation:
14253            case    sstdescribeCredential:
14254            case    sstdescribe:
14255                ret = new TDescribeStmt(pdbvendor);
14256                break;
14257            case sstUseCatalog:
14258            case sstUseSchema:
14259            case sstUseDatabase:
14260            case sstUse:
14261                ret = new TUseDatabase(pdbvendor);
14262                break;
14263            case sstAnalyzeTable:
14264                ret = new TAnalyzeStmt(pdbvendor);
14265                break;
14266            case sstCreategroup:
14267                ret = new TCreateGroup(pdbvendor);
14268                break;
14269            case sstAlterGroup:
14270                ret = new TAlterGroup(pdbvendor);
14271                break;
14272            case sstDeny:
14273                ret = new TDenyStmt(pdbvendor);
14274                break;
14275            case sstDropGroup:
14276                ret = new TDropGroup(pdbvendor);
14277                break;
14278            case sstmsckrepairtable:
14279                 ret = new TMSCKStmt(pdbvendor);
14280                break;
14281            case sstcreatecatalog:
14282                ret = new TCreateCatalogStmt(pdbvendor);
14283                break;
14284            case sstConvertToDelta:
14285                ret = new TConvertToDeltaStmt(pdbvendor);
14286                break;
14287            case sstOptimize:
14288                ret = new TOptimizeStmt(pdbvendor);
14289                break;
14290            case sstRestoreTable:
14291                ret = new TRestoreTableStmt(pdbvendor);
14292                break;
14293            case sstReorgTable:
14294                ret = new TReorgTableStmt(pdbvendor);
14295                    break;
14296            case sstVacuum:
14297                ret = new TVacuumStmt(pdbvendor);
14298                break;
14299            case sstmerge:
14300                ret = new TMergeSqlStatement(pdbvendor);
14301                break;
14302            default:
14303            {
14304                ret =  new TUnknownSqlStatement(pdbvendor);
14305                ret.sqlstatementtype = gnewsqlstatementtype;
14306                break;
14307            }
14308        }    // case
14309
14310        return ret;
14311
14312    }
14313    TCustomSqlStatement ispresto(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
14314
14315        TCustomSqlStatement ret = null;
14316        int k;
14317        boolean lcisnewsql;
14318        TSourceToken lcpprevsolidtoken,lcnextsolidtoken;
14319
14320        gnewsqlstatementtype = ESqlStatementType.sstinvalid;
14321
14322        if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
14323                || (pcst.tokencode  == TBaseType.cmtslashstar)
14324                || (pcst.tokencode  == TBaseType.lexspace)
14325                || (pcst.tokencode  == TBaseType.lexnewline)
14326                || (pcst.tokentype == ETokenType.ttsemicolon) )
14327        {
14328            return ret;
14329        }
14330
14331        int lcpos = pcst.posinlist;
14332        TSourceTokenList lcsourcetokenlist = pcst.container;
14333        TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
14334
14335        //subquery after semicolon || at first line
14336        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
14337        {
14338            k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
14339            if ( k >0 )
14340            {
14341                ret =  new TSelectSqlStatement(pdbvendor);
14342            }
14343
14344            return ret;
14345        }
14346
14347        //cte
14348        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
14349        {
14350            ret = findcte(pcst,pdbvendor);
14351            if ( (ret != null) )  return ret;
14352        }
14353
14354
14355        gnewsqlstatementtype = findprestocmd(pcst);
14356
14357        TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
14358
14359        if ((gnewsqlstatementtype == ESqlStatementType.sstinvalid)&&(pcst.tokencode == TBaseType.rrw_create)){
14360            //if (pcst.container.nextsolidtoken(pcst.posinlist,15,))
14361            TSourceToken viewToken = pcst.container.searchToken(TBaseType.rrw_view,"",pcst,15);
14362            if (viewToken != null){
14363                gnewsqlstatementtype = ESqlStatementType.sstcreateview;
14364            }
14365        }
14366        switch (gnewsqlstatementtype){
14367            case sstinvalid:
14368            {
14369                ret = null;
14370                break;
14371            }
14372            case sstselect:
14373            {
14374                lcisnewsql = true;
14375
14376                if ( pstate != EFindSqlStateType.stnormal )
14377                {
14378                    // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
14379                    if ( TBaseType.assigned(lcprevsolidtoken) )
14380                    {
14381                        if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
14382                            lcisnewsql = false; //subqery
14383                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
14384                            lcisnewsql = false;
14385                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
14386                            lcisnewsql = false;
14387                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
14388                            lcisnewsql = false;
14389                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
14390                            lcisnewsql = false;
14391                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
14392                            lcisnewsql = false;
14393                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
14394                        {
14395                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
14396                                lcisnewsql = false;
14397                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
14398                                lcisnewsql = false;
14399                        }
14400
14401                        if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
14402                        {
14403                            lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
14404                            if ( TBaseType.assigned(lcpprevsolidtoken) )
14405                            {
14406                                if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
14407                                    lcisnewsql = false;
14408                            }
14409                        }
14410
14411                    }
14412
14413
14414                    if ( TBaseType.assigned(lccurrentsqlstatement) )
14415                    {
14416                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
14417                            lcisnewsql = false;
14418                    }
14419
14420                }
14421
14422                if ( lcisnewsql )
14423                    ret =  new TSelectSqlStatement(pdbvendor);
14424                break;
14425            }
14426            case sstinsert:
14427            {
14428                lcisnewsql = true;
14429                if ( pstate != EFindSqlStateType.stnormal )
14430                {
14431                    if ( TBaseType.assigned(lccurrentsqlstatement) )
14432                    {
14433
14434                    }
14435                }
14436
14437                if ( lcisnewsql )
14438                    ret =  new TInsertSqlStatement(pdbvendor);
14439                ret.sqlstatementtype = gnewsqlstatementtype;
14440                break;
14441            }
14442            case sstdelete:
14443            {
14444                lcisnewsql = true;
14445
14446                if ( pstate != EFindSqlStateType.stnormal )
14447                {
14448                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
14449                    if ( TBaseType.assigned(lcprevsolidtoken) )
14450                    {
14451                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
14452                            lcisnewsql = false;
14453                    }
14454
14455                    if ( TBaseType.assigned(lccurrentsqlstatement) )
14456                    {
14457                    }
14458                }
14459
14460                if ( lcisnewsql )
14461                    ret =  new TDeleteSqlStatement(pdbvendor);
14462                break;
14463            }
14464            case sstaltertable:
14465            {
14466                ret =  new TAlterTableStatement(pdbvendor);
14467                break;
14468            }
14469            case sstalterfunction:
14470            {
14471                ret =  new TAlterFunctionStmt(pdbvendor);
14472                break;
14473            }
14474            case sstAlterSchema:
14475            {
14476                ret =  new TAlterSchemaStmt(pdbvendor);
14477                break;
14478            }
14479            case sstanalyzeTable:
14480            {
14481                ret = new TAnalyzeStmt(pdbvendor);
14482                break;
14483            }
14484            case sstcall:
14485            {
14486                ret =  new TCallStatement(pdbvendor);
14487                break;
14488            }
14489            case sstcommit:
14490            {
14491                ret =  new TCommitStmt(pdbvendor);
14492                break;
14493            }
14494            case sstcreatefunction:
14495            {
14496                ret =  new TCreateFunctionStmt(pdbvendor);
14497                break;
14498            }
14499            case sstcreaterole:
14500            {
14501                ret =  new TCreateRoleStmt(pdbvendor);
14502                break;
14503            }
14504            case sstcreateschema:
14505            {
14506                ret =  new TCreateSchemaSqlStatement(pdbvendor);
14507                break;
14508            }
14509            case sstcreatetable:
14510            {
14511                ret =  new TCreateTableSqlStatement(pdbvendor);
14512                break;
14513            }
14514            case sstcreateview:
14515            {
14516                ret =  new TCreateViewSqlStatement(pdbvendor);
14517                break;
14518            }
14519            case sstpostgresqlDeallocate:
14520            {
14521                ret =  new TUnknownSqlStatement(pdbvendor);
14522                ret.sqlstatementtype = gnewsqlstatementtype;
14523                break;
14524            }
14525            case sstdescribe:
14526            {
14527                ret =  new TDescribeStmt(pdbvendor);
14528                break;
14529            }
14530            case sstdropfunction:
14531            {
14532                ret =  new TDropFunctionStmt(pdbvendor);
14533                break;
14534            }
14535            case sstdroprole:
14536            {
14537                ret =  new TDropRoleStmt(pdbvendor);
14538                break;
14539            }
14540            case sstdropschema:
14541            {
14542                ret =  new TDropSchemaSqlStatement(pdbvendor);
14543                break;
14544            }
14545            case sstdroptable:
14546            {
14547                ret =  new TDropTableSqlStatement(pdbvendor);
14548                break;
14549            }
14550            case sstdropview:
14551            {
14552                ret =  new TDropViewSqlStatement(pdbvendor);
14553                break;
14554            }
14555            case sstExecute:
14556            {
14557                ret =  new TExecuteSqlStatement(pdbvendor);
14558                break;
14559            }
14560            case sstExplain:
14561            {
14562                ret =  new TExplainPlan(pdbvendor);
14563                break;
14564            }
14565            case sstGrant:
14566            {
14567                ret =  new TGrantStmt(pdbvendor);
14568                break;
14569            }
14570            case sstprepare:
14571            {
14572                ret =  new TPrepareStmt(pdbvendor);
14573                break;
14574            }
14575            case sstset:
14576            case sstReset:
14577            {
14578                lcisnewsql = true;
14579                if ( pstate != EFindSqlStateType.stnormal )
14580                {
14581                    if ( TBaseType.assigned(lccurrentsqlstatement) )
14582                    {
14583                        lcisnewsql = false;
14584                    }
14585                }
14586
14587                if ( lcisnewsql )
14588                {
14589                    ret =  new TSetStmt(pdbvendor);
14590                }
14591                break;
14592            }
14593            case sstShow:
14594            {
14595                ret = new TShowStmt(pdbvendor);
14596                ret.sqlstatementtype = gnewsqlstatementtype;
14597                break;
14598            }
14599            case sstStartTransaction:
14600            {
14601                ret = new TStartTransactionStmt(pdbvendor);
14602                break;
14603            }
14604            case sstUse:
14605            {
14606                ret =  new TUseDatabase(pdbvendor);
14607                break;
14608            }
14609            case sstValues:
14610            {
14611                ret =  new TSelectSqlStatement(pdbvendor);
14612                break;
14613            }
14614            case sstResetSession:
14615            {
14616                ret =  new TResetSessionStmt(pdbvendor);
14617                break;
14618            }
14619            default:
14620            {
14621                ret =  new TUnknownSqlStatement(pdbvendor);
14622                ret.sqlstatementtype = gnewsqlstatementtype;
14623                break;
14624            }
14625        }    // case
14626
14627        return ret;
14628
14629    }
14630    TCustomSqlStatement isathena(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
14631
14632        TCustomSqlStatement ret = null;
14633        int k;
14634        boolean lcisnewsql;
14635        TSourceToken lcpprevsolidtoken,lcnextsolidtoken;
14636
14637        gnewsqlstatementtype = ESqlStatementType.sstinvalid;
14638
14639        if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
14640                || (pcst.tokencode  == TBaseType.cmtslashstar)
14641                || (pcst.tokencode  == TBaseType.lexspace)
14642                || (pcst.tokencode  == TBaseType.lexnewline)
14643                || (pcst.tokentype == ETokenType.ttsemicolon) )
14644        {
14645            return ret;
14646        }
14647
14648        int lcpos = pcst.posinlist;
14649        TSourceTokenList lcsourcetokenlist = pcst.container;
14650        TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
14651
14652        //subquery after semicolon || at first line
14653        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
14654        {
14655            k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
14656            if ( k >0 )
14657            {
14658                ret =  new TSelectSqlStatement(pdbvendor);
14659            }
14660
14661            return ret;
14662        }
14663
14664        //cte
14665        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
14666        {
14667            ret = findcte(pcst,pdbvendor);
14668            if ( (ret != null) )  return ret;
14669        }
14670
14671
14672        gnewsqlstatementtype = findathenacmd(pcst);
14673
14674        TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
14675
14676        if ((gnewsqlstatementtype == ESqlStatementType.sstinvalid)&&(pcst.tokencode == TBaseType.rrw_create)){
14677            //if (pcst.container.nextsolidtoken(pcst.posinlist,15,))
14678            TSourceToken viewToken = pcst.container.searchToken(TBaseType.rrw_view,"",pcst,15);
14679            if (viewToken != null){
14680                gnewsqlstatementtype = ESqlStatementType.sstcreateview;
14681            }
14682        }
14683        switch (gnewsqlstatementtype){
14684            case sstinvalid:
14685            {
14686                ret = null;
14687                break;
14688            }
14689            case sstselect:
14690            {
14691                lcisnewsql = true;
14692
14693                if ( pstate != EFindSqlStateType.stnormal )
14694                {
14695                    // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
14696                    if ( TBaseType.assigned(lcprevsolidtoken) )
14697                    {
14698                        if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
14699                            lcisnewsql = false; //subqery
14700                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
14701                            lcisnewsql = false;
14702                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
14703                            lcisnewsql = false;
14704                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
14705                            lcisnewsql = false;
14706                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
14707                            lcisnewsql = false;
14708                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
14709                            lcisnewsql = false;
14710                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
14711                        {
14712                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
14713                                lcisnewsql = false;
14714                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
14715                                lcisnewsql = false;
14716                        }
14717
14718                        if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
14719                        {
14720                            lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
14721                            if ( TBaseType.assigned(lcpprevsolidtoken) )
14722                            {
14723                                if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
14724                                    lcisnewsql = false;
14725                            }
14726                        }
14727
14728                    }
14729
14730
14731                    if ( TBaseType.assigned(lccurrentsqlstatement) )
14732                    {
14733                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
14734                            lcisnewsql = false;
14735                    }
14736
14737                }
14738
14739                if ( lcisnewsql )
14740                    ret =  new TSelectSqlStatement(pdbvendor);
14741                break;
14742            }
14743            case sstinsert:
14744            {
14745                lcisnewsql = true;
14746                if ( pstate != EFindSqlStateType.stnormal )
14747                {
14748                    if ( TBaseType.assigned(lccurrentsqlstatement) )
14749                    {
14750
14751                    }
14752                }
14753
14754                if ( lcisnewsql )
14755                    ret =  new TInsertSqlStatement(pdbvendor);
14756                ret.sqlstatementtype = gnewsqlstatementtype;
14757                break;
14758            }
14759            case sstdelete:
14760            {
14761                lcisnewsql = true;
14762
14763                if ( pstate != EFindSqlStateType.stnormal )
14764                {
14765                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
14766                    if ( TBaseType.assigned(lcprevsolidtoken) )
14767                    {
14768                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
14769                            lcisnewsql = false;
14770                    }
14771
14772                    if ( TBaseType.assigned(lccurrentsqlstatement) )
14773                    {
14774                    }
14775                }
14776
14777                if ( lcisnewsql )
14778                    ret =  new TDeleteSqlStatement(pdbvendor);
14779                break;
14780            }
14781            case sstaltertable:
14782            {
14783                ret =  new TAlterTableStatement(pdbvendor);
14784                break;
14785            }
14786            case sstalterfunction:
14787            {
14788                ret =  new TAlterFunctionStmt(pdbvendor);
14789                break;
14790            }
14791            case sstAlterSchema:
14792            {
14793                ret =  new TAlterSchemaStmt(pdbvendor);
14794                break;
14795            }
14796            case sstanalyzeTable:
14797            {
14798                ret = new TAnalyzeStmt(pdbvendor);
14799                break;
14800            }
14801            case sstcall:
14802            {
14803                ret =  new TCallStatement(pdbvendor);
14804                break;
14805            }
14806            case sstcommit:
14807            {
14808                ret =  new TCommitStmt(pdbvendor);
14809                break;
14810            }
14811            case sstcreatefunction:
14812            {
14813                ret =  new TCreateFunctionStmt(pdbvendor);
14814                break;
14815            }
14816            case sstcreaterole:
14817            {
14818                ret =  new TCreateRoleStmt(pdbvendor);
14819                break;
14820            }
14821            case sstcreateschema:
14822            {
14823                ret =  new TCreateSchemaSqlStatement(pdbvendor);
14824                break;
14825            }
14826            case sstcreatetable:
14827            {
14828                ret =  new TCreateTableSqlStatement(pdbvendor);
14829                break;
14830            }
14831            case sstcreateview:
14832            {
14833                ret =  new TCreateViewSqlStatement(pdbvendor);
14834                break;
14835            }
14836            case sstpostgresqlDeallocate:
14837            {
14838                ret =  new TUnknownSqlStatement(pdbvendor);
14839                ret.sqlstatementtype = gnewsqlstatementtype;
14840                break;
14841            }
14842            case sstdescribe:
14843            {
14844                ret =  new TDescribeStmt(pdbvendor);
14845                break;
14846            }
14847            case sstdropfunction:
14848            {
14849                ret =  new TDropFunctionStmt(pdbvendor);
14850                break;
14851            }
14852            case sstdroprole:
14853            {
14854                ret =  new TDropRoleStmt(pdbvendor);
14855                break;
14856            }
14857            case sstdropschema:
14858            {
14859                ret =  new TDropSchemaSqlStatement(pdbvendor);
14860                break;
14861            }
14862            case sstdroptable:
14863            {
14864                ret =  new TDropTableSqlStatement(pdbvendor);
14865                break;
14866            }
14867            case sstdropview:
14868            {
14869                ret =  new TDropViewSqlStatement(pdbvendor);
14870                break;
14871            }
14872            case sstExecute:
14873            {
14874                ret =  new TExecuteSqlStatement(pdbvendor);
14875                break;
14876            }
14877            case sstExplain:
14878            {
14879                ret =  new TExplainPlan(pdbvendor);
14880                break;
14881            }
14882            case sstGrant:
14883            {
14884                ret =  new TGrantStmt(pdbvendor);
14885                break;
14886            }
14887            case sstprepare:
14888            {
14889                ret =  new TPrepareStmt(pdbvendor);
14890                break;
14891            }
14892            case sstset:
14893            case sstReset:
14894            {
14895                lcisnewsql = true;
14896                if ( pstate != EFindSqlStateType.stnormal )
14897                {
14898                    if ( TBaseType.assigned(lccurrentsqlstatement) )
14899                    {
14900                        lcisnewsql = false;
14901                    }
14902                }
14903
14904                if ( lcisnewsql )
14905                {
14906                    ret =  new TSetStmt(pdbvendor);
14907                }
14908                break;
14909            }
14910            case sstShow:
14911            {
14912                ret = new TShowStmt(pdbvendor);
14913                ret.sqlstatementtype = gnewsqlstatementtype;
14914                break;
14915            }
14916            case sstStartTransaction:
14917            {
14918                ret = new TStartTransactionStmt(pdbvendor);
14919                break;
14920            }
14921            case sstUse:
14922            {
14923                ret =  new TUseDatabase(pdbvendor);
14924                break;
14925            }
14926            case sstValues:
14927            {
14928                ret =  new TSelectSqlStatement(pdbvendor);
14929                break;
14930            }
14931            case sstResetSession:
14932            {
14933                ret =  new TResetSessionStmt(pdbvendor);
14934                break;
14935            }
14936            case sstunload:
14937                lcisnewsql = true;
14938                if ( pstate != EFindSqlStateType.stnormal )
14939                {
14940                    lcisnewsql = false;
14941                }
14942                if ( lcisnewsql ) {
14943                    ret = new TUnloadStmt(pdbvendor);
14944                    ret.sqlstatementtype = gnewsqlstatementtype;
14945                }
14946                break;
14947            case sstmsck:
14948            {
14949                ret = new TMSCKStmt(pdbvendor);
14950                break;
14951            }
14952            case sstcreatedatabase:
14953            {
14954                ret = new TCreateDatabaseSqlStatement(pdbvendor);
14955                break;
14956            }
14957            case sstalterdatabase:
14958            {
14959                ret = new TAlterDatabaseStmt(pdbvendor);
14960                break;
14961            }
14962            case sstdropdatabase:
14963                ret = new TDropDatabaseStmt(pdbvendor);
14964                break;
14965            default:
14966            {
14967                ret =  new TUnknownSqlStatement(pdbvendor);
14968                ret.sqlstatementtype = gnewsqlstatementtype;
14969                break;
14970            }
14971        }    // case
14972
14973        return ret;
14974
14975    }
14976
14977    TCustomSqlStatement issparksql(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
14978
14979            TCustomSqlStatement ret = null;
14980            int k;
14981            boolean lcisnewsql;
14982            TSourceToken lcpprevsolidtoken,lcnextsolidtoken;
14983
14984            gnewsqlstatementtype = ESqlStatementType.sstinvalid;
14985
14986            if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
14987                    || (pcst.tokencode  == TBaseType.cmtslashstar)
14988                    || (pcst.tokencode  == TBaseType.lexspace)
14989                    || (pcst.tokencode  == TBaseType.lexnewline)
14990                    || (pcst.tokentype == ETokenType.ttsemicolon) )
14991            {
14992                return ret;
14993            }
14994
14995            int lcpos = pcst.posinlist;
14996            TSourceTokenList lcsourcetokenlist = pcst.container;
14997            TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
14998
14999            //subquery after semicolon || at first line
15000            if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
15001            {
15002                k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
15003                if ( k >0 )
15004                {
15005                    ret =  new TSelectSqlStatement(pdbvendor);
15006                }
15007
15008                return ret;
15009            }
15010
15011            //cte
15012            if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
15013            {
15014                ret = findcte(pcst,pdbvendor);
15015                if ( (ret != null) )  return ret;
15016            }
15017
15018
15019            gnewsqlstatementtype = findsparksqlcmd(pcst);
15020
15021            TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
15022
15023            if ((gnewsqlstatementtype == ESqlStatementType.sstinvalid)&&(pcst.tokencode == TBaseType.rrw_create)){
15024                //if (pcst.container.nextsolidtoken(pcst.posinlist,15,))
15025                TSourceToken viewToken = pcst.container.searchToken(TBaseType.rrw_view,"",pcst,15);
15026                if (viewToken != null){
15027                    gnewsqlstatementtype = ESqlStatementType.sstcreateview;
15028                }
15029            }
15030            switch (gnewsqlstatementtype){
15031                case sstinvalid:
15032                {
15033                    ret = null;
15034                    break;
15035                }
15036                case sstselect:
15037                {
15038                    lcisnewsql = true;
15039
15040                    if ( pstate != EFindSqlStateType.stnormal )
15041                    {
15042                        // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
15043                        if ( TBaseType.assigned(lcprevsolidtoken) )
15044                        {
15045                            if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
15046                                lcisnewsql = false; //subqery
15047                            else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
15048                                lcisnewsql = false;
15049                            else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
15050                                lcisnewsql = false;
15051                            else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
15052                                lcisnewsql = false;
15053                            else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
15054                                lcisnewsql = false;
15055                            else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
15056                                lcisnewsql = false;
15057                            else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
15058                            {
15059                                if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
15060                                    lcisnewsql = false;
15061                                if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
15062                                    lcisnewsql = false;
15063                            }
15064
15065                            if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
15066                            {
15067                                lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
15068                                if ( TBaseType.assigned(lcpprevsolidtoken) )
15069                                {
15070                                    if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
15071                                        lcisnewsql = false;
15072                                }
15073                            }
15074
15075                        }
15076
15077
15078                        if ( TBaseType.assigned(lccurrentsqlstatement) )
15079                        {
15080                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
15081                                lcisnewsql = false;
15082                        }
15083
15084                    }
15085
15086                    if ( lcisnewsql )
15087                        ret =  new TSelectSqlStatement(pdbvendor);
15088                    break;
15089                }
15090                case sstinsert:
15091                {
15092                    lcisnewsql = true;
15093                    if ( pstate != EFindSqlStateType.stnormal )
15094                    {
15095                        if ( TBaseType.assigned(lccurrentsqlstatement) )
15096                        {
15097
15098                        }
15099                    }
15100
15101                    if ( lcisnewsql )
15102                        ret =  new TInsertSqlStatement(pdbvendor);
15103                    ret.sqlstatementtype = gnewsqlstatementtype;
15104                    break;
15105                }
15106                case sstupdate:
15107                {
15108                    lcisnewsql = true;
15109                    if ( pstate != EFindSqlStateType.stnormal )
15110                    {
15111                        lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
15112                        if ( TBaseType.assigned(lcprevsolidtoken) )
15113                        { //
15114                            if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
15115                                lcisnewsql = false;
15116                            else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
15117                                lcisnewsql = false;
15118                        }
15119
15120                        lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
15121                        if ( TBaseType.assigned(lcnextsolidtoken) )
15122                        {
15123                            if ( lcnextsolidtoken.tokentype == ETokenType.ttleftparenthesis)
15124                            {
15125                                k = lcsourcetokenlist.solidtokenafterpos(lcnextsolidtoken.posinlist,TBaseType.rrw_select,1,"(");
15126                                if ( k  == 0 ) lcisnewsql = false;
15127                            }
15128                        }
15129
15130
15131                        if ( TBaseType.assigned(lccurrentsqlstatement) )
15132                        {
15133                        }
15134                    }
15135
15136                    if ( lcisnewsql )
15137                    {
15138                        ret =  new TUpdateSqlStatement(pdbvendor);
15139                        ret.dummytag = 1; // means set clause in update is not found yet, used to seperate set clause from set statement
15140                    }
15141                    break;
15142                }
15143                case sstdelete:
15144                {
15145                    lcisnewsql = true;
15146
15147                    if ( pstate != EFindSqlStateType.stnormal )
15148                    {
15149                        lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
15150                        if ( TBaseType.assigned(lcprevsolidtoken) )
15151                        {
15152                            if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
15153                                lcisnewsql = false;
15154                        }
15155
15156                        if ( TBaseType.assigned(lccurrentsqlstatement) )
15157                        {
15158                        }
15159                    }
15160
15161                    if ( lcisnewsql )
15162                        ret =  new TDeleteSqlStatement(pdbvendor);
15163                    break;
15164                }
15165                case sstcreatetable:
15166                {
15167                    ret =  new TCreateTableSqlStatement(pdbvendor);
15168                    break;
15169                }
15170                case sstcreateview:
15171                {
15172                    ret =  new TCreateViewSqlStatement(pdbvendor);
15173                    break;
15174                }
15175                case sstcreatedatabase:
15176                {
15177                    ret =  new TCreateDatabaseSqlStatement(pdbvendor);
15178                    break;
15179                }
15180                case sstdroptable:
15181                {
15182                    ret =  new TDropTableSqlStatement(pdbvendor);
15183                    break;
15184                }
15185                case sstdropview:
15186                {
15187                    ret =  new TDropViewSqlStatement(pdbvendor);
15188                    break;
15189                }
15190                case sstaltertable:
15191                {
15192                    ret =  new TAlterTableStatement(pdbvendor);
15193                    break;
15194                }
15195                case sstset:
15196                case sstReset:
15197                case sstSetTimeZone:
15198                {
15199                    lcisnewsql = true;
15200                    if ( pstate != EFindSqlStateType.stnormal )
15201                    {
15202                        if ( TBaseType.assigned(lccurrentsqlstatement) )
15203                        {
15204                            lcisnewsql = false;
15205                        }
15206                    }
15207
15208                    if ( lcisnewsql )
15209                    {
15210                        ret =  new TSetStmt(pdbvendor);
15211                    }
15212                    break;
15213                }
15214                case sstcreatefunction:
15215                {
15216                    ret =  new TCreateFunctionStmt(pdbvendor);
15217                    break;
15218                }
15219                case sstTruncate:
15220                {
15221                    ret =  new TTruncateStatement(pdbvendor);
15222                    break;
15223                }
15224                case sstdescribe:
15225                {
15226                    ret =  new TDescribeStmt(pdbvendor);
15227                    break;
15228                }
15229                case sstExplain:
15230                {
15231                    ret =  new TExplainPlan(pdbvendor);
15232                    break;
15233                }
15234                case sstUse:
15235                {
15236                    ret =  new TUseDatabase(pdbvendor);
15237                    break;
15238                }
15239                case sstLoadData:
15240                {
15241                    ret =  new TLoadDataStmt(pdbvendor);
15242                    break;
15243                }
15244                case sstShowColumns:
15245                case sstShowCreateTable:
15246                case sstShowDatabases:
15247                case sstShowFunctions:
15248                case sstShowPartitions:
15249                case sstShowTableExtended:
15250                case sstShowTables:
15251                case sstShowTblProperties:
15252                case sstShowViews:
15253                case sstShowUser:
15254                    ret = new TShowStmt(pdbvendor);
15255                    ret.sqlstatementtype = gnewsqlstatementtype;
15256                    break;
15257                case sstalterdatabase:
15258                    ret =  new TAlterDatabaseStmt(pdbvendor);
15259                    break;
15260                case sstdescribeDatabase:
15261                case sstdescribeTable:
15262                case sstdescribeFunction:
15263                    ret =  new TDescribeStmt(pdbvendor);
15264                    break;
15265                case sstalterview:
15266                    ret =  new TAlterViewStatement(pdbvendor);
15267                    break;
15268                case sstAddFile:
15269                case sstAddJar:
15270                case sstListFile:
15271                case sstListJar:
15272                    ret =  new TResourceManagement(pdbvendor);
15273                    ret.sqlstatementtype = gnewsqlstatementtype;
15274                    break;
15275                case sstdropdatabase:
15276                    ret =  new TDropDatabaseStmt(pdbvendor);
15277                    break;
15278                case sstdropfunction:
15279                    ret =  new TDropFunctionStmt(pdbvendor);
15280                    break;
15281                case ssttruncatetable:
15282                    ret =  new TTruncateStatement(pdbvendor);
15283                     break;
15284                case sstmsck:
15285                {
15286                    ret = new TMSCKStmt(pdbvendor);
15287                    break;
15288                }
15289                case sstanalyzeTable:
15290                {
15291                    ret = new TAnalyzeStmt(pdbvendor);
15292                    break;
15293                }
15294                case sstCacheTable:
15295                case sstUnCacheTable:
15296                case sstClearCache:
15297                    ret = new TCacheTable(pdbvendor);
15298                    break;
15299                case sstRefreshTable:
15300                case sstRefreshFunction:
15301                case sstRefresh:
15302                    ret = new TRefresh(pdbvendor);
15303                    break;
15304                default:
15305                {
15306                    ret =  new TUnknownSqlStatement(pdbvendor);
15307                    ret.sqlstatementtype = gnewsqlstatementtype;
15308                    break;
15309                }
15310            }    // case
15311
15312            return ret;
15313
15314    }
15315
15316    TCustomSqlStatement ismysqlsql(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
15317    TCustomSqlStatement ret = null;
15318    int k;
15319    boolean lcisnewsql;
15320    TSourceToken lcpprevsolidtoken,lcnextsolidtoken;
15321
15322    gnewsqlstatementtype = ESqlStatementType.sstinvalid;
15323
15324    if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
15325       || (pcst.tokencode  == TBaseType.cmtslashstar)
15326       || (pcst.tokencode  == TBaseType.lexspace)
15327       || (pcst.tokencode  == TBaseType.lexnewline)
15328        || (pcst.tokentype == ETokenType.ttsemicolon) )
15329    {
15330      return ret;
15331    }
15332
15333    int lcpos = pcst.posinlist;
15334    TSourceTokenList lcsourcetokenlist = pcst.container;
15335    TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
15336
15337    //subquery after semicolon || at first line
15338    if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
15339      {
15340        k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
15341        if ( k >0 )
15342          {
15343            ret =  new TSelectSqlStatement(pdbvendor);
15344          }
15345
15346        return ret;
15347      }
15348
15349        //cte
15350        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
15351        {
15352            ret = findcte(pcst,pdbvendor);
15353            if ( (ret != null) )  return ret;
15354        }
15355
15356
15357    //cte
15358//  if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == rrw_with) )
15359//    {
15360//      ret = tselectsqlstatement.create(pdbvendor);
15361//      tselectsqlstatement(ret).isctequery = true;
15362//      exit;
15363//    }
15364//
15365
15366    gnewsqlstatementtype = findmysqlcmd(pcst);
15367
15368    TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
15369
15370    if ((gnewsqlstatementtype == ESqlStatementType.sstinvalid)&&(pcst.tokencode == TBaseType.rrw_create)){
15371      //if (pcst.container.nextsolidtoken(pcst.posinlist,15,))
15372        TSourceToken viewToken = pcst.container.searchToken(TBaseType.rrw_view,"",pcst,15);
15373        if (viewToken != null){
15374            gnewsqlstatementtype = ESqlStatementType.sstcreateview;
15375        }
15376    }
15377    switch (gnewsqlstatementtype){
15378        case sstinvalid:
15379          {
15380            ret = null;
15381            break;
15382          }
15383        case sstselect:
15384          {
15385            lcisnewsql = true;
15386
15387            if ( pstate != EFindSqlStateType.stnormal )
15388              {
15389                // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
15390                if ( TBaseType.assigned(lcprevsolidtoken) )
15391                  {
15392                    if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
15393                      lcisnewsql = false; //subqery
15394                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
15395                      lcisnewsql = false;
15396                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
15397                      lcisnewsql = false;
15398                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
15399                      lcisnewsql = false;
15400                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
15401                      lcisnewsql = false;
15402                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
15403                      lcisnewsql = false;
15404                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
15405                      {
15406                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
15407                          lcisnewsql = false;
15408                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
15409                          lcisnewsql = false;
15410                      }
15411
15412                    if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
15413                      {
15414                        lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
15415                        if ( TBaseType.assigned(lcpprevsolidtoken) )
15416                          {
15417                            if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
15418                              lcisnewsql = false;
15419                          }
15420                      }
15421
15422                  }
15423
15424
15425                if ( TBaseType.assigned(lccurrentsqlstatement) )
15426                  {
15427                    if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
15428                      lcisnewsql = false;
15429                  }
15430
15431              }
15432
15433            if ( lcisnewsql )
15434              ret =  new TSelectSqlStatement(pdbvendor);
15435              break;
15436          }
15437        case sstinsert:
15438        case sstmysqlreplace:
15439          {
15440            lcisnewsql = true;
15441            if ( pstate != EFindSqlStateType.stnormal )
15442              {
15443                if ( TBaseType.assigned(lccurrentsqlstatement) )
15444                  {
15445
15446                  }
15447              }
15448
15449            if ( lcisnewsql )
15450              ret =  new TInsertSqlStatement(pdbvendor);
15451              ret.sqlstatementtype = gnewsqlstatementtype;
15452              break;
15453          }
15454        case sstupdate:
15455          {
15456            lcisnewsql = true;
15457            if ( pstate != EFindSqlStateType.stnormal )
15458              {
15459                lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
15460                if ( TBaseType.assigned(lcprevsolidtoken) )
15461                  { //
15462                    if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
15463                      lcisnewsql = false;
15464                    else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
15465                      lcisnewsql = false;
15466                  }
15467
15468                lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
15469                if ( TBaseType.assigned(lcnextsolidtoken) )
15470                  {
15471                    if ( lcnextsolidtoken.tokentype == ETokenType.ttleftparenthesis)
15472                      {
15473                        k = lcsourcetokenlist.solidtokenafterpos(lcnextsolidtoken.posinlist,TBaseType.rrw_select,1,"(");
15474                        if ( k  == 0 ) lcisnewsql = false;
15475                      }
15476                  }
15477
15478
15479                if ( TBaseType.assigned(lccurrentsqlstatement) )
15480                  {
15481                  }
15482              }
15483
15484            if ( lcisnewsql )
15485              {
15486                ret =  new TUpdateSqlStatement(pdbvendor);
15487                ret.dummytag = 1; // means set clause in update is not found yet, used to seperate set clause from set statement
15488              }
15489              break;
15490          }
15491        case sstdelete:
15492          {
15493            lcisnewsql = true;
15494
15495            if ( pstate != EFindSqlStateType.stnormal )
15496              {
15497                lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
15498                if ( TBaseType.assigned(lcprevsolidtoken) )
15499                  {
15500                    if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
15501                      lcisnewsql = false;
15502                  }
15503
15504                if ( TBaseType.assigned(lccurrentsqlstatement) )
15505                  {
15506                  }
15507              }
15508
15509            if ( lcisnewsql )
15510              ret =  new TDeleteSqlStatement(pdbvendor);
15511              break;
15512          }
15513        case sstmerge:
15514          {
15515            ret =  new TMergeSqlStatement(pdbvendor);
15516            ret.sqlstatementtype = gnewsqlstatementtype;
15517              break;
15518          }
15519        case sstcommit:
15520          {
15521            ret =  new TUnknownSqlStatement(pdbvendor);
15522            ret.sqlstatementtype = gnewsqlstatementtype;
15523              break;
15524          }
15525        case sstrollback:
15526          {
15527            ret =  new TUnknownSqlStatement(pdbvendor);
15528            ret.sqlstatementtype = gnewsqlstatementtype;
15529              break;
15530          }
15531        case sstsavepoint:
15532          {
15533            ret =  new TUnknownSqlStatement(pdbvendor);
15534            ret.sqlstatementtype = gnewsqlstatementtype;
15535              break;
15536          }
15537        case sstRevoke:
15538          {
15539            ret =  new TUnknownSqlStatement(pdbvendor);
15540            ret.sqlstatementtype = gnewsqlstatementtype;
15541              break;
15542          }
15543        case sstcreatetable:
15544          {
15545            ret =  new TCreateTableSqlStatement(pdbvendor);
15546              break;
15547          }
15548        case sstcreateview:
15549          {
15550            ret =  new TCreateViewSqlStatement(pdbvendor);
15551              break;
15552          }
15553        case sstmysqlcreateindex:
15554          {
15555            ret =  new TCreateIndexSqlStatement(pdbvendor);
15556              break;
15557          }
15558        case sstcreatedatabase:
15559          {
15560            ret =  new TCreateDatabaseSqlStatement(pdbvendor);
15561              break;
15562          }
15563        case sstmysqldroptable:
15564        case sstdroptable:
15565          {
15566            ret =  new TDropTableSqlStatement(pdbvendor);
15567              break;
15568          }
15569        case sstdropview:
15570          {
15571            ret =  new TDropViewSqlStatement(pdbvendor);
15572              break;
15573          }
15574        case sstdropindex:
15575          {
15576            ret =  new TDropIndexSqlStatement(pdbvendor);
15577              break;
15578          }
15579        case sstaltertable:
15580          {
15581            ret =  new TAlterTableStatement(pdbvendor);
15582              break;
15583          }
15584        case sstaltersession:
15585          {
15586            ret =  new TAlterSessionStatement(pdbvendor);
15587              break;
15588          }
15589        case sstmysqlset:
15590          {
15591            ret =  new TSetStmt(pdbvendor);
15592              break;
15593          }
15594        case sstmysqlcreateprocedure:
15595          {
15596            ret =  new TCreateProcedureStmt(pdbvendor);
15597              break;
15598          }
15599        case sstmysqlcreatefunction:
15600          {
15601            ret =  new TCreateFunctionStmt(pdbvendor);
15602              break;
15603          }
15604        case sstcreatetrigger:
15605          {
15606            ret =  new TCreateTriggerStmt(pdbvendor);
15607              break;
15608          }
15609        case sstmysqlcall:
15610        {
15611            ret =  new TCallStatement(pdbvendor);
15612            break;
15613        }
15614        case sstmysqltruncate:
15615        {
15616            ret =  new TTruncateStatement(pdbvendor);
15617            break;
15618        }
15619        case sstmysqlprepare:
15620        {
15621            ret =  new TPrepareStmt(pdbvendor);
15622            break;
15623        }
15624        case sstdescribe:
15625        {
15626            ret =  new TDescribeStmt(pdbvendor);
15627            break;
15628        }
15629        case sstExplain:
15630        {
15631            ret =  new TExplainPlan(pdbvendor);
15632            break;
15633        }
15634        case sstmysqldropindex:
15635        {
15636            ret =  new TDropIndexSqlStatement(pdbvendor);
15637            break;
15638        }
15639        case sstmysqldropprocedure:
15640        {
15641            ret =  new TDropProcedureStmt(pdbvendor);
15642            break;
15643        }
15644        case sstmysqlsignal:
15645        {
15646            ret =  new TMySQLSignal(pdbvendor);
15647            break;
15648        }
15649        case sstmysqlstarttransaction:
15650        {
15651            if ( pstate == EFindSqlStateType.stnormal )
15652            {
15653                ret =  new TUnknownSqlStatement(pdbvendor);
15654                ret.sqlstatementtype = gnewsqlstatementtype;
15655            }
15656            break;
15657        }
15658        case sstmysqluse:
15659        {
15660            ret =  new TUseDatabase(pdbvendor);
15661          break;
15662        }
15663        case sstmysqlexecute:
15664        {
15665            ret =  new TExecuteSqlStatement(pdbvendor);
15666            ret.sqlstatementtype = gnewsqlstatementtype;
15667            break;
15668        }
15669        case sstmysqlcreatedatabase:
15670        {
15671            ret =  new TCreateDatabaseSqlStatement(pdbvendor);
15672            break;
15673        }
15674        case sstmysqlrenametable:
15675        {
15676            ret =  new TRenameStmt(pdbvendor);
15677            break;
15678        }
15679        case sstmysqlshowindex:
15680            ret =  new TShowIndexStmt(pdbvendor);
15681            break;
15682        case sstmysqlloaddatainfile:
15683            ret = new TLoadDataStmt(pdbvendor);
15684            break;
15685        case sstmysqlshowlogs:
15686        case sstmysqlshowbinlogevents:
15687        case sstmysqlshowcharacterset:
15688        case sstmysqlshowcollation:
15689        case sstmysqlshowcolumns:
15690        case sstmysqlshowwarnings:
15691        case sstmysqlshowcreatedatabase:
15692        case sstmysqlshowcreatefunction:
15693        case sstmysqlshowcreateprocedure:
15694        case sstmysqlshowcreatetable:
15695        case sstmysqlshowcreateview:
15696        case sstmysqlshowdatabases:
15697        case sstmysqlshowerrors:
15698        case sstmysqlshowfields:
15699        case sstmysqlshowprocesslist:
15700        case sstmysqlshowtables:
15701        case sstmysqlshowfunctionstatus:
15702        case sstmysqlshowstatus:
15703        case sstmysqlshowvariables:
15704        case sstmysqlshowgrants:
15705        case sstmysqlshowinnodbstatus:
15706        case sstmysqlshowmasterlogs:
15707        case sstmysqlshowplugins:
15708        case sstmysqlshowprivileges:
15709        case sstmysqlshowprofile:
15710        case sstmysqlshowprofiles:
15711        case sstmysqlshowslavehosts:
15712        case sstmysqlshowslavestatus:
15713        case sstmysqlshowtablestatus:
15714        case sstmysqlshowtriggers:
15715        case sstmysqlshowcreateschema:
15716        case sstmysqlshowengines:
15717            ret = new TMySQLShowStmt(pdbvendor);
15718            ret.sqlstatementtype = gnewsqlstatementtype;
15719            break;
15720        case sstmysqlshowengine:
15721            ret = new TShowEngineStmt(pdbvendor);
15722            break;
15723        case sstmysqlshowreplicaStatus:
15724            ret = new TShowStmt(pdbvendor);
15725            ret.sqlstatementtype = gnewsqlstatementtype;
15726            break;
15727        case sstmysqlalterfunction:
15728            ret = new TAlterFunctionStmt(pdbvendor);
15729            break;
15730        case sstmysqlalterprocedure:
15731            ret = new TAlterProcedureStmt(pdbvendor);
15732            break;
15733        case sstmysqldropfunction:
15734            ret = new TDropFunctionStmt(pdbvendor);
15735            break;
15736        case sstmysqldroptrigger:
15737            ret = new TDropTriggerSqlStatement(pdbvendor);
15738            break;
15739        case sstmysqloptimizetable:
15740            ret = new TMySQLOptimizeTableStmt(pdbvendor);
15741            break;
15742        case sstmysqlalterview:
15743            ret  = new TAlterViewStatement(pdbvendor);
15744            break;
15745        default:
15746          {
15747            ret =  new TUnknownSqlStatement(pdbvendor);
15748            ret.sqlstatementtype = gnewsqlstatementtype;
15749              break;
15750          }
15751    }    // case
15752
15753    return ret;
15754}
15755
15756TCustomSqlStatement ismdxsql(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
15757    TCustomSqlStatement ret = null;
15758
15759    gnewsqlstatementtype = ESqlStatementType.sstinvalid;
15760
15761    if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
15762       || (pcst.tokencode  == TBaseType.cmtslashstar)
15763       || (pcst.tokencode  == TBaseType.lexspace)
15764       || (pcst.tokencode  == TBaseType.lexnewline)
15765        || (pcst.tokentype == ETokenType.ttsemicolon) )
15766    {
15767      return null;
15768    }
15769
15770    int lcpos = pcst.posinlist;
15771    TSourceTokenList lcsourcetokenlist = pcst.container;
15772    TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
15773
15774
15775    //with clause before statement
15776    if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
15777      {
15778        ret = findMdxStmtBeginWithClause(pcst,pdbvendor);
15779        if ( (ret != null) )  return ret;
15780      }
15781
15782    gnewsqlstatementtype = findmdxcmd(pcst);
15783
15784    TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
15785    switch (gnewsqlstatementtype) {    //
15786        case sstinvalid:
15787          {
15788            ret = null;
15789            if ( pstate == EFindSqlStateType.stnormal )
15790              {
15791                  //treat all unregonized statement as an expression
15792                  ret = new TMdxExpression(EDbVendor.dbvmdx);
15793              }
15794              break;
15795          }
15796        case sstmdxselect:
15797          {
15798            boolean lcisnewsql = true;
15799
15800            if ( pstate != EFindSqlStateType.stnormal )
15801              {
15802                if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstselect )
15803                  {
15804                    if ( lccurrentsqlstatement.isctequery )
15805                      lcisnewsql = false;
15806                  }
15807              }
15808
15809            if ( lcisnewsql )
15810              ret = new TMdxSelect(pdbvendor);
15811
15812            break;
15813          }
15814        case sstmdxupdate:
15815          {
15816            boolean lcisnewsql = true;
15817            if ( pstate != EFindSqlStateType.stnormal )
15818              {
15819                lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
15820                if ( (lcprevsolidtoken != null) )
15821                  { //
15822                  }
15823
15824                TSourceToken lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
15825                if ( (lcnextsolidtoken != null) )
15826                  {
15827                  }
15828
15829                if ( (lccurrentsqlstatement != null) )
15830                  {
15831                  }
15832              }
15833
15834            if ( lcisnewsql )
15835              {
15836                ret = new TMdxUpdate(pdbvendor);
15837              }
15838            break;
15839          }
15840        case sstmdxaltercube:
15841          {
15842            ret = new TMdxAlterCube(pdbvendor);
15843              break;
15844          }
15845        case sstmdxcalculate:
15846          {
15847            ret = new TMdxCalculate(pdbvendor);
15848              break;
15849          }
15850        case sstmdxcall:
15851          {
15852            ret = new TMdxCall(pdbvendor);
15853              break;
15854          }
15855        case sstmdxcase:
15856          {
15857            ret = new TMdxCase(pdbvendor);
15858              break;
15859          }
15860        case sstmdxclearcalculations:
15861          {
15862            ret = new TMdxClearCalculations(pdbvendor);
15863              break;
15864          }
15865        case sstmdxcreateaction:
15866          {
15867            ret = new TMdxCreateAction(pdbvendor);
15868              break;
15869          }
15870        case sstmdxcreatemember:
15871          {
15872            ret = new TMdxCreateMember(pdbvendor);
15873              break;
15874          }
15875        case sstmdxcreatecellcalculation:
15876          {
15877            ret = new TMdxCreateCellCalculation(pdbvendor);
15878              break;
15879          }
15880        case sstmdxcreateglobalcube:
15881          {
15882            ret = new TMdxCreateGlobalCube(pdbvendor);
15883              break;
15884          }
15885        case sstmdxcreateset:
15886          {
15887            ret = new TMdxCreateSet(pdbvendor);
15888              break;
15889          }
15890        case sstmdxcreatesessioncube:
15891          {
15892            ret = new TMdxCreateSessionCube(pdbvendor);
15893              break;
15894          }
15895        case sstmdxcreatesubcube:
15896          {
15897            ret = new TMdxCreateSubCube(pdbvendor);
15898              break;
15899          }
15900        case sstmdxdrillthrough:
15901          {
15902            ret = new TMdxDrillthrough(pdbvendor);
15903              break;
15904          }
15905        case sstmdxdropaction:
15906          {
15907            ret = new TMdxDropAction(pdbvendor);
15908              break;
15909          }
15910        case sstmdxdropmember:
15911          {
15912            ret = new TMdxDropMember(pdbvendor);//ret = new TMdxCreateSessionCube(pdbvendor);
15913              break;
15914          }
15915        case sstmdxdropcellcalculation:
15916          {
15917            ret = new TMdxDropCellCalculation(pdbvendor);
15918              break;
15919          }
15920        case sstmdxdropset:
15921          {
15922            ret = new TMdxDropSet(pdbvendor);
15923              break;
15924          }
15925        case sstmdxdropsubcube:
15926          {
15927            ret = new TMdxDropSubcube(pdbvendor);
15928              break;
15929          }
15930        case sstmdxfreeze:
15931          {
15932            ret = new TMdxFreeze(pdbvendor);
15933            break;
15934          }
15935        case sstmdxif:
15936          {
15937            ret = new TMdxIf(pdbvendor);
15938              break;
15939          }
15940        case sstmdxrefreshcube:
15941          {
15942            ret = new TMdxRefreshCube(pdbvendor);
15943              break;
15944          }
15945        case sstmdxscope:
15946          {
15947            ret = new TMdxScope(pdbvendor);
15948              break;
15949          }
15950        case sstmdxcreatemeasure:
15951        {
15952            ret = new TMdxCreateMeasure(pdbvendor);
15953            break;
15954        }
15955        case sstmdxexisting:
15956        default:
15957          {
15958            ret = new TUnknownSqlStatement(pdbvendor);
15959            ret.sqlstatementtype = gnewsqlstatementtype;
15960            break;
15961          }
15962    }    // case
15963
15964    return ret;
15965}
15966
15967
15968public ESqlStatementType findsybasecmdusedbyyacc(TSourceToken pcst){
15969  ESqlStatementType ret = ESqlStatementType.sstinvalid;
15970
15971    int lcpos = pcst.posinlist;
15972    TSourceTokenList lcsourcetokenlist = pcst.container;
15973
15974    //subquery after semicolon or at first line
15975    if (  (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
15976      {
15977        int k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
15978        if ( k >0 )
15979          {
15980            ret = ESqlStatementType.sstselect;
15981          }
15982
15983        return ret;
15984      }
15985
15986
15987    ret = findsybasecmd(pcst);
15988    // execute can't be used to delimite other sql
15989    if ( ret == ESqlStatementType.sstmssqlexec )
15990      ret = ESqlStatementType.sstinvalid;
15991
15992  return ret;
15993}
15994
15995public ESqlStatementType findmssqlcmdusedbyyacc(TSourceToken pcst){
15996  ESqlStatementType ret = ESqlStatementType.sstinvalid;
15997
15998    int lcpos = pcst.posinlist;
15999    TSourceTokenList lcsourcetokenlist = pcst.container;
16000
16001    //subquery after semicolon or at first line
16002    if (  (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
16003      {
16004        int k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
16005        if ( k >0 )
16006          {
16007            ret = ESqlStatementType.sstselect;
16008          }
16009
16010        return ret;
16011      }
16012
16013
16014    ret = findmssqlcmd(pcst);
16015    // execute can't be used to delimite other sql
16016    if ( ret == ESqlStatementType.sstmssqlexec )
16017      ret = ESqlStatementType.sstinvalid;
16018
16019  return ret;
16020}
16021
16022
16023TCustomSqlStatement ishive(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
16024    TCustomSqlStatement ret = null;
16025
16026    gnewsqlstatementtype = ESqlStatementType.sstinvalid;
16027
16028    if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
16029       || (pcst.tokencode  == TBaseType.cmtslashstar)
16030       || (pcst.tokencode  == TBaseType.lexspace)
16031       || (pcst.tokencode  == TBaseType.lexnewline)
16032        || (pcst.tokentype == ETokenType.ttsemicolon) )
16033    {
16034      return null;
16035    }
16036
16037    int lcpos = pcst.posinlist;
16038    TSourceTokenList lcsourcetokenlist = pcst.container;
16039    TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
16040
16041
16042    //from query
16043    if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_from) )
16044      {
16045          if (pcst.container == null){
16046              return new TSelectSqlStatement(pdbvendor);
16047          }
16048
16049          // search select or insert who comes first,
16050          int lcpos1 = pcst.posinlist;
16051          TSourceTokenList lcsourcetokenlist1 = pcst.container;
16052          TSourceToken tmpSt;
16053          int parenthesisCnt = 0;
16054          for(int k=lcpos1+1;k<lcsourcetokenlist1.size();k++){
16055              tmpSt = lcsourcetokenlist1.get(k);
16056              if (tmpSt.tokencode == ';') break;
16057              if (tmpSt.tokencode == '(') parenthesisCnt++;
16058              if (tmpSt.tokencode == ')') parenthesisCnt--;
16059              if (parenthesisCnt == 0){
16060                  if (tmpSt.tokencode == TBaseType.rrw_select){
16061                      ret = new TSelectSqlStatement(pdbvendor);
16062                      break;
16063                  }else if (tmpSt.tokencode == TBaseType.rrw_insert){
16064                      ret = new TInsertSqlStatement(pdbvendor);
16065                      break;
16066                  }
16067              }
16068          }
16069
16070          if (ret == null){
16071              ret = new TSelectSqlStatement(pdbvendor);
16072//              FROM (
16073//                      FROM pv_users
16074//                      MAP pv_users.userid, pv_users.date
16075//                      USING 'map_script'
16076//              AS dt, uid
16077//              CLUSTER BY dt) map_output;
16078          }
16079
16080          return ret;
16081      }
16082
16083    //cte
16084    if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
16085    {
16086        ret = findcte(pcst,pdbvendor);
16087        if ( (ret != null) )  return ret;
16088    }
16089
16090    gnewsqlstatementtype = findhivecmd(pcst);
16091
16092    TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
16093    switch (gnewsqlstatementtype) {    //
16094        case sstinvalid:
16095          {
16096            ret = null;
16097            break;
16098          }
16099        case sstselect:
16100          {
16101            boolean lcisnewsql = true;
16102
16103            if ( pstate != EFindSqlStateType.stnormal )
16104              {
16105
16106                if ( (lccurrentsqlstatement != null) )
16107                  {
16108                    if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.ssthiveFromQuery )
16109                      //if (((TSelectSqlStatement)lccurrentsqlstatement).getSelectToken().tokencode == TBaseType.rrw_from)
16110                        lcisnewsql = false;
16111                  }
16112
16113              }
16114
16115            if ( lcisnewsql )
16116              ret = new TSelectSqlStatement(pdbvendor);
16117
16118            break;
16119          }
16120        case sstinsert:
16121          {
16122            boolean lcisnewsql = true;
16123            if ( pstate != EFindSqlStateType.stnormal )
16124              {
16125                if ( (lccurrentsqlstatement != null) )
16126                  {
16127                      if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.ssthiveFromQuery )
16128                         // if (((TSelectSqlStatement)lccurrentsqlstatement).getSelectToken().tokencode == TBaseType.rrw_from)
16129                             lcisnewsql = false;
16130                  }
16131              }
16132
16133            if ( lcisnewsql )
16134              ret = new TInsertSqlStatement(pdbvendor);
16135
16136            break;
16137          }
16138        case sstTruncate:
16139          {
16140              ret = new TTruncateStatement(pdbvendor);
16141              break;
16142          }
16143        case sstalterdatabase:
16144        {
16145            ret = new TAlterDatabaseStmt(pdbvendor);
16146            break;
16147        }
16148        case sstalterindex:
16149          {
16150            ret = new TAlterIndexStmt(pdbvendor);
16151              break;
16152          }
16153        case sstaltertable:
16154          {
16155            ret = new TAlterTableStatement(pdbvendor);
16156              break;
16157          }
16158        case sstalterview:
16159          {
16160            ret = new TAlterViewStatement(pdbvendor);
16161              break;
16162          }
16163        case sstanalyzeTable:
16164        {
16165            ret = new TAnalyzeStmt(pdbvendor);
16166            break;
16167        }
16168        case sstcreatedatabase:
16169          {
16170            ret = new TCreateDatabaseSqlStatement(pdbvendor);
16171              break;
16172          }
16173        case sstcreatetable:
16174          {
16175            ret = new TCreateTableSqlStatement(pdbvendor);
16176              break;
16177          }
16178        case sstcreateindex:
16179          {
16180            ret = new TCreateIndexSqlStatement(pdbvendor);
16181              break;
16182          }
16183        case sstcreateview:
16184          {
16185            ret = new TCreateViewSqlStatement(pdbvendor);
16186              break;
16187          }
16188        case ssthiveCreateRole:
16189        {
16190            ret = new THiveCreateRole(pdbvendor);
16191            break;
16192        }
16193        case ssthiveCreateFunction:
16194        {
16195            ret = new THiveCreateFunction(pdbvendor);
16196            break;
16197        }
16198        case ssthiveDesc:
16199        {
16200            ret = new THiveDescribe(pdbvendor);
16201            break;
16202        }
16203        case ssthiveDropDatabase:
16204        {
16205            ret = new THiveDropDatabase(pdbvendor);
16206            break;
16207        }
16208        case sstdropindex:
16209          {
16210            ret = new TDropIndexSqlStatement(pdbvendor);
16211              break;
16212          }
16213        case ssthiveDropRole:
16214        {
16215            ret = new THiveDropRole(pdbvendor);
16216              break;
16217        }
16218        case sstdroptable:
16219          {
16220            ret = new TDropTableSqlStatement(pdbvendor);
16221              break;
16222          }
16223        case ssthiveDropFunciton:
16224        {
16225            ret = new THiveDropFunction(pdbvendor);
16226              break;
16227        }
16228        case sstdropview:
16229          {
16230           ret = new TDropViewSqlStatement(pdbvendor);
16231              break;
16232          }
16233        case ssthiveExplain:
16234        {
16235            ret = new THiveExplain(pdbvendor);
16236            break;
16237        }
16238        case ssthiveExportTable:
16239        {
16240            ret = new THiveExportTable(pdbvendor);
16241               break;
16242        }
16243        case ssthiveGrant:
16244        {
16245            ret = new THiveGrant(pdbvendor);
16246               break;
16247        }
16248        case ssthiveGrantRole:
16249        {
16250            ret = new THiveGrantRole(pdbvendor);
16251               break;
16252        }
16253        case ssthiveImportTable:
16254        {
16255            ret = new THiveImportTable(pdbvendor);
16256               break;
16257        }
16258        case ssthiveLoad:
16259        {
16260            ret = new THiveLoad(pdbvendor);
16261               break;
16262        }
16263        case ssthiveLockTable:
16264        {
16265            ret = new TLockTableStmt(pdbvendor);
16266               break;
16267        }
16268        case sstmsck:
16269        {
16270            ret = new TMSCKStmt(pdbvendor);
16271               break;
16272        }
16273        case ssthiveRevoke:
16274        {
16275            ret = new THiveRevoke(pdbvendor);
16276               break;
16277        }
16278        case ssthiveRevokeRole:
16279        {
16280            ret = new THiveRevokeRole(pdbvendor);
16281               break;
16282        }
16283        case ssthiveSet:
16284        {
16285            ret = new THiveSet(pdbvendor);
16286               break;
16287        }
16288        case ssthiveShow:
16289        {
16290            ret = new THiveShow(pdbvendor);
16291               break;
16292        }
16293        case ssthiveShowGrants:
16294        {
16295            ret = new THiveShowGrant(pdbvendor);
16296               break;
16297        }
16298        case ssthiveShowRoleGrants:
16299        {
16300            ret = new THiveShowRoleGrant(pdbvendor);
16301               break;
16302        }
16303        case ssthiveUnlockTable:
16304        {
16305            ret = new THiveUnlockTable(pdbvendor);
16306               break;
16307        }
16308        case ssthiveSwitchDatabase:
16309        {
16310            ret = new TUseDatabase(pdbvendor);
16311               break;
16312        }
16313        case sstmerge:
16314        {
16315            ret = new TMergeSqlStatement(pdbvendor);
16316            break;
16317        }
16318        case sstupdate:
16319        {
16320            ret = new TUpdateSqlStatement(pdbvendor);
16321            break;
16322        }
16323        case sstdelete:
16324        {
16325            ret = new TDeleteSqlStatement(pdbvendor);
16326            break;
16327        }
16328        case sstCreateMacro:
16329            ret = new TCreateMacro(pdbvendor);
16330            break;
16331        case sstDropMacro:
16332            ret = new TDropMacro(pdbvendor);
16333            break;
16334        case sstcreatematerializedview:
16335            ret = new TCreateMaterializedSqlStatement(pdbvendor);
16336            break;
16337        case sstupsert:
16338            ret = new TUpsertStmt(pdbvendor);
16339            break;
16340        default:
16341          {
16342            ret = new TUnknownSqlStatement(pdbvendor);
16343            ret.sqlstatementtype = gnewsqlstatementtype;
16344            break;
16345          }
16346    }    // case
16347
16348    return ret;
16349}
16350
16351    TCustomSqlStatement isvertica(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
16352        TCustomSqlStatement ret = null;
16353
16354        gnewsqlstatementtype = ESqlStatementType.sstinvalid;
16355
16356        if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
16357                || (pcst.tokencode  == TBaseType.cmtslashstar)
16358                || (pcst.tokencode  == TBaseType.lexspace)
16359                || (pcst.tokencode  == TBaseType.lexnewline)
16360                || (pcst.tokentype == ETokenType.ttsemicolon) )
16361        {
16362            return null;
16363        }
16364
16365        int lcpos = pcst.posinlist;
16366        TSourceTokenList lcsourcetokenlist = pcst.container;
16367        TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
16368
16369        //subquery after semicolon or at first line
16370        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
16371        {
16372            int k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
16373            if ( k >0 )
16374            {
16375                ret = new TSelectSqlStatement(pdbvendor);
16376            }
16377
16378            return ret;
16379        }
16380
16381        //cte
16382        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
16383        {
16384            ret = findcte(pcst,pdbvendor);
16385            if ( (ret != null) )  return ret;
16386        }
16387
16388        gnewsqlstatementtype = findverticacmd(pcst);
16389
16390        TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
16391        switch (gnewsqlstatementtype) {    //
16392            case sstinvalid:
16393            {
16394                ret = null;
16395
16396                if ( pstate == EFindSqlStateType.stnormal )
16397                {
16398                    if ( pcst.tokencode == TBaseType.label_begin )
16399                    {
16400                        ret = new TCommonBlock(pdbvendor);
16401                        gnewsqlstatementtype = ret.sqlstatementtype;
16402                    }
16403                    else if ( pcst.tokencode == TBaseType.rrw_declare )
16404                    {
16405                        ret = new TCommonBlock(pdbvendor);
16406                        gnewsqlstatementtype = ret.sqlstatementtype;
16407                    }
16408                    else if ( pcst.tokencode == TBaseType.rrw_begin )
16409                    {
16410                        ret = new TCommonBlock(pdbvendor);
16411                        gnewsqlstatementtype = ret.sqlstatementtype;
16412                    }
16413                    else if ( pcst.tokencode == TBaseType.rrw_procedure )
16414                    {
16415                        ret = new TPlsqlCreateProcedure(pdbvendor);
16416                        // ret.sqlstatementtype = ESqlStatementType.sstplsql_createprocedure;
16417                        gnewsqlstatementtype = ret.sqlstatementtype;
16418                    }
16419                    else if ( pcst.tokencode == TBaseType.rrw_function )
16420                    {
16421                        ret = new TPlsqlCreateFunction(pdbvendor);
16422                        // ret.sqlstatementtype = ESqlStatementType.sstplsql_createfunction;
16423                        gnewsqlstatementtype = ret.sqlstatementtype;
16424                    }
16425                    else if ( pcst.tokencode == TBaseType.rrw_package )
16426                    {
16427                        ret = new TPlsqlCreatePackage(pdbvendor);
16428                        // ret.sqlstatementtype = ESqlStatementType.sstplsql_createpackage;
16429                        gnewsqlstatementtype = ret.sqlstatementtype;
16430                    }
16431                }
16432                break;
16433            }
16434            case sstselect:
16435            {
16436                boolean lcisnewsql = true;
16437
16438                if ( pstate != EFindSqlStateType.stnormal )
16439                {
16440                    // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
16441                    if ( (lcprevsolidtoken != null) )
16442                    {
16443                        if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
16444                            lcisnewsql = false; //subqery
16445                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
16446                            lcisnewsql = false;
16447                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
16448                            lcisnewsql = false;
16449                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
16450                            lcisnewsql = false;
16451                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
16452                            lcisnewsql = false;
16453                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
16454                            lcisnewsql = false;
16455                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
16456                        {
16457                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
16458                                lcisnewsql = false;
16459                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
16460                                lcisnewsql = false;
16461                        }
16462
16463                        if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
16464                        {
16465                            TSourceToken lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
16466                            if ( (lcpprevsolidtoken != null) )
16467                            {
16468                                if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
16469                                    lcisnewsql = false;
16470                            }
16471                        }
16472
16473                    }
16474
16475
16476                    if ( (lccurrentsqlstatement != null) )
16477                    {
16478                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
16479                            lcisnewsql = false;
16480                    }
16481
16482                }
16483
16484                if ( lcisnewsql )
16485                    ret = new TSelectSqlStatement(pdbvendor);
16486
16487                break;
16488            }
16489            case sstinsert:
16490            {
16491                boolean lcisnewsql = true;
16492                if ( pstate != EFindSqlStateType.stnormal )
16493                {
16494                    if ( (lccurrentsqlstatement != null) )
16495                    {
16496
16497                    }
16498                }
16499
16500                if ( lcisnewsql )
16501                    ret = new TInsertSqlStatement(pdbvendor);
16502
16503                break;
16504            }
16505            case sstupdate:
16506            {
16507                boolean lcisnewsql = true;
16508                if ( pstate != EFindSqlStateType.stnormal )
16509                {
16510                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
16511                    if ( (lcprevsolidtoken != null) )
16512                    { //
16513                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
16514                            lcisnewsql = false;
16515                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
16516                            lcisnewsql = false;
16517                    }
16518
16519                    TSourceToken lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
16520                    if ( (lcnextsolidtoken != null) )
16521                    {
16522                        if ( lcnextsolidtoken.tokentype == ETokenType.ttleftparenthesis)
16523                        {
16524                            int k = lcsourcetokenlist.solidtokenafterpos(lcnextsolidtoken.posinlist,TBaseType.rrw_select,1,"(");
16525                            if ( k  == 0 ) lcisnewsql = false;
16526                        }
16527                    }
16528
16529
16530                    if ( (lccurrentsqlstatement != null) )
16531                    {
16532                    }
16533                }
16534
16535                if ( lcisnewsql )
16536                {
16537                    ret = new TUpdateSqlStatement(pdbvendor);
16538                    ret.dummytag = 1; // means set clause in update is not found yet, used to seperate set clause from set statement
16539                }
16540                break;
16541            }
16542            case sstdelete:
16543            {
16544                boolean lcisnewsql = true;
16545
16546                if ( pstate != EFindSqlStateType.stnormal )
16547                {
16548                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
16549                    if ( (lcprevsolidtoken != null) )
16550                    {
16551                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
16552                            lcisnewsql = false;
16553                    }
16554
16555                    if ( (lccurrentsqlstatement != null) )
16556                    {
16557                    }
16558                }
16559
16560                if ( lcisnewsql )
16561                    ret = new TDeleteSqlStatement(pdbvendor);
16562
16563                break;
16564            }
16565            case sstmerge:
16566            {
16567                ret = new TMergeSqlStatement(pdbvendor);
16568                ret.sqlstatementtype = gnewsqlstatementtype;
16569                break;
16570            }
16571            case sstcommit:
16572            case sstEnd:
16573            {
16574                ret = new TCommitStmt(pdbvendor);
16575                ret.sqlstatementtype = gnewsqlstatementtype;
16576                break;
16577            }
16578            case sstrollback:
16579            {
16580                ret = new TRollbackStmt(pdbvendor);
16581                ret.sqlstatementtype = gnewsqlstatementtype;
16582                break;
16583            }
16584            case sstsavepoint:
16585            {
16586                ret = new TSavepointStmt(pdbvendor);
16587                ret.sqlstatementtype = gnewsqlstatementtype;
16588                break;
16589            }
16590            case sstRevoke:
16591            {
16592                ret = new TRevokeStmt(pdbvendor);
16593                ret.sqlstatementtype = gnewsqlstatementtype;
16594                break;
16595            }
16596            case sstGrant:
16597            {
16598                ret = new TGrantStmt(pdbvendor);
16599                ret.sqlstatementtype = gnewsqlstatementtype;
16600                break;
16601            }
16602            case sstTruncate:
16603            {
16604                ret = new TTruncateStatement(pdbvendor);
16605                ret.sqlstatementtype = gnewsqlstatementtype;
16606                break;
16607            }
16608            case sstcreatetable:
16609            {
16610                ret = new TCreateTableSqlStatement(pdbvendor);
16611                break;
16612            }
16613            case sstcreateview:
16614            {
16615                ret = new TCreateViewSqlStatement(pdbvendor);
16616                break;
16617            }
16618            case sstcreateindex:
16619            {
16620                ret = new TCreateIndexSqlStatement(pdbvendor);
16621                break;
16622            }
16623            case sstcreatedatabase:
16624            {
16625                ret = new TCreateDatabaseSqlStatement(pdbvendor);
16626                break;
16627            }
16628            case sstdroptable:
16629            {
16630                ret = new TDropTableSqlStatement(pdbvendor);
16631                break;
16632            }
16633            case sstdropview:
16634            {
16635                ret = new TDropViewSqlStatement(pdbvendor);
16636                break;
16637            }
16638            case sstdropindex:
16639            {
16640                ret = new TDropIndexSqlStatement(pdbvendor);
16641                break;
16642            }
16643            case sstaltertable:
16644            {
16645                ret = new TAlterTableStatement(pdbvendor);
16646                break;
16647            }
16648            case sstaltersession:
16649            {
16650                ret = new TAlterSessionStatement(pdbvendor);
16651                break;
16652            }
16653            case sstcreateprocedure:
16654            {
16655                ret = new TCreateProcedureStmt(pdbvendor);
16656                break;
16657            }
16658            case sstCommentOn:
16659            {
16660                ret = new TCommentOnSqlStmt(pdbvendor);
16661                break;
16662            }
16663            case sstcreatesequence:
16664            {
16665                ret = new TCreateSequenceStmt(pdbvendor);
16666                break;
16667            }
16668            case sstcreatefunction:
16669                ret = new TVerticaCreateFunction(pdbvendor);
16670                break;
16671            case sstaltersequence:
16672                ret = new TAlterSequenceStatement(pdbvendor);
16673                break;
16674            case sstAlterAccessPolicy:
16675                ret = new TAlterAccessPolicy(pdbvendor);
16676                break;
16677            case sstAlterAuthentication:
16678                ret = new TAlterAuthentication(pdbvendor);
16679                break;
16680            case sstalterdatabase:
16681                ret = new TAlterDatabaseStmt(pdbvendor);
16682                break;
16683            case sstAlterFaultGroup:
16684                ret = new TAlterFaultGroup(pdbvendor);
16685                break;
16686            case sstalterfunction:
16687                ret = new TAlterFunctionStmt(pdbvendor);
16688                break;
16689            case sstAlterLibrary:
16690                ret = new TAlterLibraryStmt(pdbvendor);
16691                break;
16692            case sstAlterNode:
16693                 ret = new TAlterNode(pdbvendor);
16694                break;
16695            case sstAlterNetworkInterface:
16696                ret = new TAlterNetworkInterface(pdbvendor);
16697                break;
16698            case sstAlterProjection:
16699                ret = new TAlterProjectionRename(pdbvendor);
16700                break;
16701            case sstAlterProfile:
16702                ret = new TAlterProfile(pdbvendor);
16703                break;
16704            case sstAlterResourcePool:
16705                ret = new TAlterResourcePool(pdbvendor);
16706                break;
16707            case sstAlterRole:
16708                ret = new TAlterRoleStmt(pdbvendor);
16709                break;
16710            case sstAlterSchema:
16711                ret = new TAlterSchemaStmt(pdbvendor);
16712                break;
16713            case sstAlterSubnet:
16714                ret = new TAlterSubnet(pdbvendor);
16715                break;
16716            case sstBegin:
16717            case sstStartTransaction:
16718                ret = new TBeginTran(pdbvendor);
16719                break;
16720            case sstReleaseSavepoint:
16721                ret = new TReleaseSavepointStmt(pdbvendor);
16722                break;
16723            case sstconnect:
16724                ret = new TConnectStmt(pdbvendor);
16725                break;
16726            case sstCreateAccessPolicy:
16727                ret = new TCreateAccessPolicy(pdbvendor);
16728                break;
16729            case sstCreateAuthentication:
16730                ret = new TCreateAuthentication(pdbvendor);
16731                break;
16732            case sstCreateFaultGroup:
16733                ret = new TCreateFaultGroup(pdbvendor);
16734                break;
16735            case sstCreateHCatalogSchema:
16736                ret = new TCreateHCatalogSchema(pdbvendor);
16737                break;
16738            case sstCreateSubnet:
16739                ret = new TCreateSubnet(pdbvendor);
16740                break;
16741            case sstcreateuser:
16742                ret = new TCreateUserStmt(pdbvendor);
16743                break;
16744            case sstDisconnect:
16745                ret = new TDisconnectStmt(pdbvendor);
16746                break;
16747            case sstDropAccessPolicy:
16748                ret = new TDropAccessPolicy(pdbvendor);
16749                break;
16750            case sstDropAggregateFunction:
16751                ret = new TDropAggregateFunction(pdbvendor);
16752                break;
16753            case sstDropAuthentication:
16754                ret = new TDropAuthentication(pdbvendor);
16755                break;
16756            case sstDropFaultGroup:
16757                ret = new TDropFaultGroup(pdbvendor);
16758                break;
16759            case sstdropfunction:
16760                ret = new TDropFunctionStmt(pdbvendor);
16761                break;
16762            case sstDropLibrary:
16763                ret = new TDropLibraryStmt(pdbvendor);
16764                break;
16765            case sstDropNetworkInterface:
16766                ret = new TDropNetworkInterface(pdbvendor);
16767                break;
16768            case sstdropprocedure:
16769                ret = new TDropProcedureStmt(pdbvendor);
16770                break;
16771            case sstDropProjection:
16772                ret = new TDropProjectionStmt(pdbvendor);
16773                break;
16774            case sstDropResourcePool:
16775                ret = new TDropResourcePool(pdbvendor);
16776                break;
16777            case sstdroprole:
16778                ret  = new TDropRoleStmt(pdbvendor);
16779                break;
16780            case sstdropschema:
16781                ret = new TDropSchemaSqlStatement(pdbvendor);
16782                break;
16783            case sstdropsequence:
16784                ret = new TDropSequenceStmt(pdbvendor);
16785                break;
16786            case sstDropSubnet:
16787                ret = new TDropSubnet(pdbvendor);
16788                break;
16789            case sstDropTextIndex:
16790                ret = new TDropTextIndex(pdbvendor);
16791                break;
16792            case sstDropTransformFunction:
16793                ret = new TDropTransformFunction(pdbvendor);
16794                break;
16795            case sstdropuser:
16796                ret = new TDropUserStmt(pdbvendor);
16797                break;
16798            case sstExplain:
16799            {
16800                ret = new TExplainPlan(pdbvendor);
16801                break;
16802            }
16803            case sstExportToVertica:
16804                ret = new TExportToVertica(pdbvendor);
16805                break;
16806            case sstProfile:
16807                ret = new TProfileStmt(pdbvendor);
16808                break;
16809            case sstset:
16810                ret = new TVerticaSetStmt(pdbvendor);
16811                break;
16812            case sstShow:
16813                ret = new TVerticaShow(pdbvendor);
16814                break;
16815            case sstcall:
16816                ret = new TCallStatement(pdbvendor);
16817                break;
16818            default:
16819            {
16820                ret = new TUnknownSqlStatement(pdbvendor);
16821                ret.sqlstatementtype = gnewsqlstatementtype;
16822                break;
16823            }
16824        }    // case
16825
16826        return ret;
16827    }
16828
16829
16830    TCustomSqlStatement iscouchbase(TSourceToken pcst, EDbVendor pdbvendor, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement ){
16831        TCustomSqlStatement ret = null;
16832
16833        gnewsqlstatementtype = ESqlStatementType.sstinvalid;
16834
16835        if ( (pcst.tokencode  == TBaseType.cmtdoublehyphen)
16836                || (pcst.tokencode  == TBaseType.cmtslashstar)
16837                || (pcst.tokencode  == TBaseType.lexspace)
16838                || (pcst.tokencode  == TBaseType.lexnewline)
16839                || (pcst.tokentype == ETokenType.ttsemicolon) )
16840        {
16841            return null;
16842        }
16843
16844        int lcpos = pcst.posinlist;
16845        TSourceTokenList lcsourcetokenlist = pcst.container;
16846        TCustomSqlStatement lccurrentsqlstatement = psqlstatement;
16847
16848        //subquery after semicolon or at first line
16849        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokentype == ETokenType.ttleftparenthesis) ) // (
16850        {
16851            int k = lcsourcetokenlist.solidtokenafterpos(lcpos,TBaseType.rrw_select,1,"(");
16852            if ( k >0 )
16853            {
16854                ret = new TSelectSqlStatement(pdbvendor);
16855            }
16856
16857            return ret;
16858        }
16859
16860        //cte
16861        if ( (pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with) )
16862        {
16863            ret = findcte(pcst,pdbvendor);
16864            if ( (ret != null) )  return ret;
16865        }
16866
16867        gnewsqlstatementtype = findcouchbasecmd(pcst);
16868
16869        TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
16870        switch (gnewsqlstatementtype) {    //
16871            case sstinvalid:
16872            {
16873                ret = null;
16874
16875                if ( pstate == EFindSqlStateType.stnormal )
16876                {
16877                    if ( pcst.tokencode == TBaseType.label_begin )
16878                    {
16879                        ret = new TCommonBlock(pdbvendor);
16880                        gnewsqlstatementtype = ret.sqlstatementtype;
16881                    }
16882                    else if ( pcst.tokencode == TBaseType.rrw_declare )
16883                    {
16884                        ret = new TCommonBlock(pdbvendor);
16885                        gnewsqlstatementtype = ret.sqlstatementtype;
16886                    }
16887                    else if ( pcst.tokencode == TBaseType.rrw_begin )
16888                    {
16889                        ret = new TCommonBlock(pdbvendor);
16890                        gnewsqlstatementtype = ret.sqlstatementtype;
16891                    }
16892                    else if ( pcst.tokencode == TBaseType.rrw_procedure )
16893                    {
16894                        ret = new TPlsqlCreateProcedure(pdbvendor);
16895                        // ret.sqlstatementtype = ESqlStatementType.sstplsql_createprocedure;
16896                        gnewsqlstatementtype = ret.sqlstatementtype;
16897                    }
16898                    else if ( pcst.tokencode == TBaseType.rrw_function )
16899                    {
16900                        ret = new TPlsqlCreateFunction(pdbvendor);
16901                        // ret.sqlstatementtype = ESqlStatementType.sstplsql_createfunction;
16902                        gnewsqlstatementtype = ret.sqlstatementtype;
16903                    }
16904                    else if ( pcst.tokencode == TBaseType.rrw_package )
16905                    {
16906                        ret = new TPlsqlCreatePackage(pdbvendor);
16907                        // ret.sqlstatementtype = ESqlStatementType.sstplsql_createpackage;
16908                        gnewsqlstatementtype = ret.sqlstatementtype;
16909                    }
16910                }
16911                break;
16912            }
16913            case sstselect:
16914            {
16915                boolean lcisnewsql = true;
16916
16917                if ( pstate != EFindSqlStateType.stnormal )
16918                {
16919                    // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
16920                    if ( (lcprevsolidtoken != null) )
16921                    {
16922                        if ( lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis)
16923                            lcisnewsql = false; //subqery
16924                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_union )
16925                            lcisnewsql = false;
16926                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_intersect )
16927                            lcisnewsql = false;
16928                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_minus )
16929                            lcisnewsql = false;
16930                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_except )
16931                            lcisnewsql = false;
16932                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_return )
16933                            lcisnewsql = false;
16934                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_as )
16935                        {
16936                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable )
16937                                lcisnewsql = false;
16938                            if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview )
16939                                lcisnewsql = false;
16940                        }
16941
16942                        if ( lcisnewsql && ( lcprevsolidtoken.tokencode == TBaseType.rrw_all) )
16943                        {
16944                            TSourceToken lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist);
16945                            if ( (lcpprevsolidtoken != null) )
16946                            {
16947                                if ( lcpprevsolidtoken.tokencode == TBaseType.rrw_union )
16948                                    lcisnewsql = false;
16949                            }
16950                        }
16951
16952                    }
16953
16954
16955                    if ( (lccurrentsqlstatement != null) )
16956                    {
16957                        if ( lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert )
16958                            lcisnewsql = false;
16959                    }
16960
16961                }
16962
16963                if ( lcisnewsql )
16964                    ret = new TSelectSqlStatement(pdbvendor);
16965
16966                break;
16967            }
16968            case sstinsert:
16969            {
16970                boolean lcisnewsql = true;
16971                if ( pstate != EFindSqlStateType.stnormal )
16972                {
16973                    if ( (lccurrentsqlstatement != null) )
16974                    {
16975
16976                    }
16977                }
16978
16979                if ( lcisnewsql )
16980                    ret = new TInsertSqlStatement(pdbvendor);
16981
16982                break;
16983            }
16984            case sstupdate:
16985            {
16986                boolean lcisnewsql = true;
16987                if ( pstate != EFindSqlStateType.stnormal )
16988                {
16989                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
16990                    if ( (lcprevsolidtoken != null) )
16991                    { //
16992                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
16993                            lcisnewsql = false;
16994                        else if ( lcprevsolidtoken.tokencode == TBaseType.rrw_for )
16995                            lcisnewsql = false;
16996                    }
16997
16998                    TSourceToken lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos,1,false);
16999                    if ( (lcnextsolidtoken != null) )
17000                    {
17001                        if ( lcnextsolidtoken.tokentype == ETokenType.ttleftparenthesis)
17002                        {
17003                            int k = lcsourcetokenlist.solidtokenafterpos(lcnextsolidtoken.posinlist,TBaseType.rrw_select,1,"(");
17004                            if ( k  == 0 ) lcisnewsql = false;
17005                        }
17006                    }
17007
17008
17009                    if ( (lccurrentsqlstatement != null) )
17010                    {
17011                    }
17012                }
17013
17014                if ( lcisnewsql )
17015                {
17016                    ret = new TUpdateSqlStatement(pdbvendor);
17017                    ret.dummytag = 1; // means set clause in update is not found yet, used to seperate set clause from set statement
17018                }
17019                break;
17020            }
17021            case sstdelete:
17022            {
17023                boolean lcisnewsql = true;
17024
17025                if ( pstate != EFindSqlStateType.stnormal )
17026                {
17027                    lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos);
17028                    if ( (lcprevsolidtoken != null) )
17029                    {
17030                        if ( lcprevsolidtoken.tokencode == TBaseType.rrw_on )
17031                            lcisnewsql = false;
17032                    }
17033
17034                    if ( (lccurrentsqlstatement != null) )
17035                    {
17036                    }
17037                }
17038
17039                if ( lcisnewsql )
17040                    ret = new TDeleteSqlStatement(pdbvendor);
17041
17042                break;
17043            }
17044            case sstmerge:
17045            {
17046                ret = new TMergeSqlStatement(pdbvendor);
17047                ret.sqlstatementtype = gnewsqlstatementtype;
17048                break;
17049            }
17050            case sstcreateindex:
17051            {
17052                ret = new TCreateIndexSqlStatement(pdbvendor);
17053                break;
17054            }
17055            case sstdropindex:
17056            {
17057                ret = new TDropIndexSqlStatement(pdbvendor);
17058                break;
17059            }
17060            case sstBuildIndex:
17061                ret = new TTBuildIndexesStmt(pdbvendor);
17062                break;
17063            case sstinfer:
17064                ret = new TInferKeyspaceStmt(pdbvendor);
17065                break;
17066            case sstupsert:
17067                ret = new TUpsertStmt(pdbvendor);
17068                break;
17069            case sstExplain:
17070            {
17071                ret = new TExplainPlan(pdbvendor);
17072                break;
17073            }
17074            case sstprepare:
17075            {
17076                ret = new TExplainPlan(pdbvendor);
17077                ret.sqlstatementtype = ESqlStatementType.sstprepare;
17078                break;
17079            }
17080            case sstExecutePreparedStmt:
17081                ret = new TExecuteSqlStatement(pdbvendor);
17082                break;
17083            default:
17084            {
17085                ret = new TUnknownSqlStatement(pdbvendor);
17086                ret.sqlstatementtype = gnewsqlstatementtype;
17087                break;
17088            }
17089        }    // case
17090
17091        return ret;
17092    }
17093
17094    /**
17095     * Generic method for yacc parsers to find SQL command type.
17096     * Delegates to vendor-specific implementations where available.
17097     * Added temporarily for revert testing - uses token's dbvendor field.
17098     */
17099    public ESqlStatementType findCmdUsedByYacc(TSourceToken token) {
17100        EDbVendor vendor = token.getDbvendor();
17101        if (vendor == null) {
17102            return ESqlStatementType.sstinvalid;
17103        }
17104
17105        // Delegate to vendor-specific methods where they exist
17106        switch (vendor) {
17107            case dbvmssql:
17108                return findmssqlcmdusedbyyacc(token);
17109            case dbvsybase:
17110                return findsybasecmdusedbyyacc(token);
17111            // For other vendors, use generic command finding
17112            default:
17113                TSqlCmdList cmdList = getSqlCmdList(vendor);
17114                if (cmdList == null || cmdList.size() == 0) {
17115                    return ESqlStatementType.sstunknown;
17116                }
17117                // Use generic finddbcmd for vendors without specific yacc methods
17118                return finddbcmd(token, cmdList);
17119        }
17120    }
17121
17122}