001package gudusoft.gsqlparser.sqlcmds; 002 003import gudusoft.gsqlparser.*; 004import gudusoft.gsqlparser.stmt.*; 005import gudusoft.gsqlparser.stmt.databricks.*; 006import gudusoft.gsqlparser.stmt.presto.TResetSessionStmt; 007 008/** 009 * Databricks SQL command resolver. 010 * Contains all Databricks-specific SQL command recognition logic. 011 * 012 * @since 3.1.0.9 013 */ 014public class TSqlCmdsDatabricks extends AbstractSqlCmds { 015 016 // Temporary field for statement type during issql processing 017 private ESqlStatementType gnewsqlstatementtype = ESqlStatementType.sstinvalid; 018 019 public TSqlCmdsDatabricks() { 020 super(EDbVendor.dbvdatabricks); 021 } 022 023 @Override 024 protected String getToken1Str(int token1) { 025 switch (token1) { 026 case TBaseType.rrw_databricks_convert: 027 return "convert"; 028 case TBaseType.rrw_databricks_copy: 029 return "copy"; 030 case TBaseType.rrw_databricks_desc: 031 return "desc"; 032 case TBaseType.rrw_databricks_fsck: 033 return "fsck"; 034 case TBaseType.rrw_databricks_list: 035 return "list"; 036 case TBaseType.rrw_databricks_msck: 037 return "msck"; 038 case TBaseType.rrw_databricks_reorg: 039 return "reorg"; 040 case TBaseType.rrw_databricks_sync: 041 return "sync"; 042 case TBaseType.rrw_databricks_uncache: 043 return "uncache"; 044 case TBaseType.rrw_databricks_vacuum: 045 return "vacuum"; 046 default: 047 return null; 048 } 049 } 050 051 @Override 052 protected void initializeCommands() { 053 // Databricks commands extracted from TSqlCmds.initdatabrickscmds() 054 // Note: Longer patterns must come BEFORE shorter patterns with the same prefix 055 056 addCmd(TBaseType.rrw_add, "archive", ESqlStatementType.sstaddAchieve); 057 addCmd(TBaseType.rrw_add, "archives", ESqlStatementType.sstaddAchieve); 058 059 addCmd(TBaseType.rrw_alter, "catalog", ESqlStatementType.sstaltercatalog); 060 addCmd(TBaseType.rrw_alter, "database", ESqlStatementType.sstalterdatabase); 061 addCmd(TBaseType.rrw_alter, "external", "location", ESqlStatementType.sstalterlocation); 062 addCmd(TBaseType.rrw_alter, "group", ESqlStatementType.sstAlterGroup); 063 addCmd(TBaseType.rrw_alter, "provider", ESqlStatementType.sstalterprovider); 064 addCmd(TBaseType.rrw_alter, "recipient", ESqlStatementType.sstalterrecipient); 065 addCmd(TBaseType.rrw_alter, "schema", ESqlStatementType.sstAlterSchema); 066 addCmd(TBaseType.rrw_alter, "share", ESqlStatementType.sstAltershare); 067 addCmd(TBaseType.rrw_alter, "storage", "credential", ESqlStatementType.sstaltercredental); 068 addCmd(TBaseType.rrw_alter, "table", ESqlStatementType.sstaltertable); 069 addCmd(TBaseType.rrw_alter, "view", ESqlStatementType.sstalterview); 070 071 addCmd(TBaseType.rrw_analyze, "table", ESqlStatementType.sstAnalyzeTable); 072 addCmd(TBaseType.rrw_analyze, "tables", ESqlStatementType.sstAnalyzeTable); 073 074 addCmd(TBaseType.rrw_cache, "select", ESqlStatementType.sstCacheSelect); 075 addCmd(TBaseType.rrw_clear, "cache", ESqlStatementType.sstClearCache); 076 addCmd(TBaseType.rrw_comment, "on", ESqlStatementType.sstCommentOn); 077 078 addCmd(TBaseType.rrw_databricks_convert, "to", "delta", ESqlStatementType.sstConvertToDelta); 079 addCmd(TBaseType.rrw_databricks_copy, "into", ESqlStatementType.sstCopyInto); 080 081 // CREATE commands - longer patterns first 082 addCmd(TBaseType.rrw_create, "bloomfilter", "index", ESqlStatementType.sstcreateindex); 083 addCmd(TBaseType.rrw_create, "catalog", ESqlStatementType.sstcreatecatalog); 084 addCmd(TBaseType.rrw_create, "database", ESqlStatementType.sstcreatedatabase); 085 addCmd(TBaseType.rrw_create, "external", "location", ESqlStatementType.sstCreateExternallocation); 086 addCmd(TBaseType.rrw_create, "group", ESqlStatementType.sstCreategroup); 087 addCmd(TBaseType.rrw_create, "or", "replace", "function", ESqlStatementType.sstcreatefunction); 088 addCmd(TBaseType.rrw_create, "or", "replace", "table", ESqlStatementType.sstcreatetable); 089 addCmd(TBaseType.rrw_create, "or", "replace", "temp", "function", ESqlStatementType.sstcreatefunction); 090 addCmd(TBaseType.rrw_create, "or", "replace", "temp", "view", ESqlStatementType.sstcreateview); 091 addCmd(TBaseType.rrw_create, "or", "replace", "temporary", "function", ESqlStatementType.sstcreatefunction); 092 addCmd(TBaseType.rrw_create, "or", "replace", "temporary", "view", ESqlStatementType.sstcreateview); 093 addCmd(TBaseType.rrw_create, "or", "replace", "view", ESqlStatementType.sstcreateview); 094 addCmd(TBaseType.rrw_create, "recipient", ESqlStatementType.sstcreaterecipient); 095 addCmd(TBaseType.rrw_create, "schema", ESqlStatementType.sstcreateschema); 096 addCmd(TBaseType.rrw_create, "share", ESqlStatementType.sstcreateshare); 097 addCmd(TBaseType.rrw_create, "temp", "function", ESqlStatementType.sstcreatefunction); 098 addCmd(TBaseType.rrw_create, "temporary", "function", ESqlStatementType.sstcreatefunction); 099 addCmd(TBaseType.rrw_create, "function", ESqlStatementType.sstcreatefunction); 100 addCmd(TBaseType.rrw_create, "role", ESqlStatementType.sstcreaterole); 101 addCmd(TBaseType.rrw_create, "table", ESqlStatementType.sstcreatetable); 102 addCmd(TBaseType.rrw_create, "view", ESqlStatementType.sstcreateview); 103 104 addCmd(TBaseType.rrw_delete, "from", ESqlStatementType.sstdelete); 105 addCmd(TBaseType.rrw_deny, ESqlStatementType.sstDeny); 106 107 // DESCRIBE commands - longer patterns first 108 addCmd(TBaseType.rrw_databricks_desc, "catalog", ESqlStatementType.sstdescribeCatalog); 109 addCmd(TBaseType.rrw_databricks_desc, "function", ESqlStatementType.sstdescribeFunction); 110 addCmd(TBaseType.rrw_databricks_desc, "provider", ESqlStatementType.sstdescribeProvider); 111 addCmd(TBaseType.rrw_databricks_desc, "query", ESqlStatementType.sstdescribeQuery); 112 addCmd(TBaseType.rrw_databricks_desc, "recipient", ESqlStatementType.sstdescribeRecipient); 113 addCmd(TBaseType.rrw_databricks_desc, "schema", ESqlStatementType.sstdescribeSchema); 114 addCmd(TBaseType.rrw_databricks_desc, "share", ESqlStatementType.sstdescribeShare); 115 addCmd(TBaseType.rrw_databricks_desc, "table", ESqlStatementType.sstdescribeTable); 116 addCmd(TBaseType.rrw_databricks_desc, ESqlStatementType.sstdescribe); 117 118 addCmd(TBaseType.rrw_describe, "catalog", ESqlStatementType.sstdescribeCatalog); 119 addCmd(TBaseType.rrw_describe, "database", ESqlStatementType.sstdescribeDatabase); 120 addCmd(TBaseType.rrw_describe, "external", "location", ESqlStatementType.sstdescribeLocation); 121 addCmd(TBaseType.rrw_describe, "function", ESqlStatementType.sstdescribeFunction); 122 addCmd(TBaseType.rrw_describe, "provider", ESqlStatementType.sstdescribeProvider); 123 addCmd(TBaseType.rrw_describe, "query", ESqlStatementType.sstdescribeQuery); 124 addCmd(TBaseType.rrw_describe, "recipient", ESqlStatementType.sstdescribeRecipient); 125 addCmd(TBaseType.rrw_describe, "schema", ESqlStatementType.sstdescribeSchema); 126 addCmd(TBaseType.rrw_describe, "share", ESqlStatementType.sstdescribeShare); 127 addCmd(TBaseType.rrw_describe, "storage", "credential", ESqlStatementType.sstdescribeCredential); 128 addCmd(TBaseType.rrw_describe, "table", ESqlStatementType.sstdescribeTable); 129 addCmd(TBaseType.rrw_describe, ESqlStatementType.sstdescribe); 130 131 // DROP commands - longer patterns first 132 addCmd(TBaseType.rrw_drop, "bloomfilter", "index", ESqlStatementType.sstdropindex); 133 addCmd(TBaseType.rrw_drop, "catalog", ESqlStatementType.sstdropcatalog); 134 addCmd(TBaseType.rrw_drop, "database", ESqlStatementType.sstdropdatabase); 135 addCmd(TBaseType.rrw_drop, "external", "location", ESqlStatementType.sstdroplocation); 136 addCmd(TBaseType.rrw_drop, "group", ESqlStatementType.sstDropGroup); 137 addCmd(TBaseType.rrw_drop, "provider", ESqlStatementType.sstdropprovider); 138 addCmd(TBaseType.rrw_drop, "recipient", ESqlStatementType.sstdroprecipient); 139 addCmd(TBaseType.rrw_drop, "schema", ESqlStatementType.sstdropschema); 140 addCmd(TBaseType.rrw_drop, "share", ESqlStatementType.sstdropshare); 141 addCmd(TBaseType.rrw_drop, "storage", "credential", ESqlStatementType.sstdropcredential); 142 addCmd(TBaseType.rrw_drop, "temp", "function", ESqlStatementType.sstdropfunction); 143 addCmd(TBaseType.rrw_drop, "temporary", "function", ESqlStatementType.sstdropfunction); 144 addCmd(TBaseType.rrw_drop, "function", ESqlStatementType.sstdropfunction); 145 addCmd(TBaseType.rrw_drop, "table", ESqlStatementType.sstdroptable); 146 addCmd(TBaseType.rrw_drop, "view", ESqlStatementType.sstdropview); 147 148 addCmd(TBaseType.rrw_explain, ESqlStatementType.sstExplain); 149 150 addCmd(TBaseType.rrw_databricks_fsck, "repair", ESqlStatementType.sstmsckrepairtable); 151 152 // GRANT commands - longer patterns first 153 addCmd(TBaseType.rrw_grant, "select", "on", "share", ESqlStatementType.sstGrant); 154 addCmd(TBaseType.rrw_grant, ESqlStatementType.sstGrant); 155 156 addCmd(TBaseType.rrw_insert, ESqlStatementType.sstinsert); 157 addCmd(TBaseType.rrw_databricks_list, ESqlStatementType.sstList); 158 addCmd(TBaseType.rrw_load, "data", ESqlStatementType.sstLoadData); 159 addCmd(TBaseType.rrw_merge, "into", ESqlStatementType.sstmerge); 160 161 // MSCK commands - longer patterns first 162 addCmd(TBaseType.rrw_databricks_msck, "repair", "table", ESqlStatementType.sstmsckrepairtable); 163 addCmd(TBaseType.rrw_databricks_msck, "repair", ESqlStatementType.sstmsckrepairtable); 164 165 addCmd(TBaseType.rrw_optimize, ESqlStatementType.sstOptimize); 166 167 addCmd(TBaseType.rrw_refresh, "function", ESqlStatementType.sstRefreshFunction); 168 addCmd(TBaseType.rrw_refresh, "table", ESqlStatementType.sstRefreshTable); 169 addCmd(TBaseType.rrw_refresh, ESqlStatementType.sstRefresh); 170 171 addCmd(TBaseType.rrw_databricks_reorg, "table", ESqlStatementType.sstReorgTable); 172 addCmd(TBaseType.rrw_replace, "table", ESqlStatementType.sstcreatetable); 173 addCmd(TBaseType.rrw_reset, "session", ESqlStatementType.sstResetSession); 174 addCmd(TBaseType.rrw_reset, ESqlStatementType.sstReset); 175 addCmd(TBaseType.rrw_restore, ESqlStatementType.sstRestoreTable); 176 177 // REVOKE commands - longer patterns first 178 addCmd(TBaseType.rrw_revoke, "select", "on", "share", ESqlStatementType.sstRevoke); 179 addCmd(TBaseType.rrw_revoke, ESqlStatementType.sstRevoke); 180 181 addCmd(TBaseType.rrw_rollback, ESqlStatementType.sstrollback); 182 addCmd(TBaseType.rrw_select, ESqlStatementType.sstselect); 183 184 // SET commands - longer patterns first 185 addCmd(TBaseType.rrw_set, "catalog", ESqlStatementType.sstUseCatalog); 186 addCmd(TBaseType.rrw_set, "role", ESqlStatementType.sstset); 187 addCmd(TBaseType.rrw_set, "session", ESqlStatementType.sstset); 188 addCmd(TBaseType.rrw_set, "time", "zone", ESqlStatementType.sstset); 189 addCmd(TBaseType.rrw_set, ESqlStatementType.sstset); 190 191 // SHOW commands - longer patterns first 192 addCmd(TBaseType.rrw_show, "all", "functions", ESqlStatementType.sstShow); 193 addCmd(TBaseType.rrw_show, "all", "in", "share", ESqlStatementType.sstShow); 194 addCmd(TBaseType.rrw_show, "catalogs", ESqlStatementType.sstShow); 195 addCmd(TBaseType.rrw_show, "columns", ESqlStatementType.sstShow); 196 addCmd(TBaseType.rrw_show, "create", "table", ESqlStatementType.sstShow); 197 addCmd(TBaseType.rrw_show, "external", "locations", ESqlStatementType.sstShow); 198 addCmd(TBaseType.rrw_show, "functions", ESqlStatementType.sstShow); 199 addCmd(TBaseType.rrw_show, "grants", "on", "share", ESqlStatementType.sstShow); 200 addCmd(TBaseType.rrw_show, "grants", "to", "recipient", ESqlStatementType.sstShow); 201 addCmd(TBaseType.rrw_show, "grants", ESqlStatementType.sstShow); 202 addCmd(TBaseType.rrw_show, "groups", ESqlStatementType.sstShow); 203 addCmd(TBaseType.rrw_show, "partitions", ESqlStatementType.sstShow); 204 addCmd(TBaseType.rrw_show, "providers", ESqlStatementType.sstShow); 205 addCmd(TBaseType.rrw_show, "recipients", ESqlStatementType.sstShow); 206 addCmd(TBaseType.rrw_show, "schemas", ESqlStatementType.sstShow); 207 addCmd(TBaseType.rrw_show, "shares", ESqlStatementType.sstShow); 208 addCmd(TBaseType.rrw_show, "storage", "credentials", ESqlStatementType.sstShow); 209 addCmd(TBaseType.rrw_show, "system", "functions", ESqlStatementType.sstShow); 210 addCmd(TBaseType.rrw_show, "table", "extended", ESqlStatementType.sstShow); 211 addCmd(TBaseType.rrw_show, "tables", ESqlStatementType.sstShow); 212 addCmd(TBaseType.rrw_show, "tblproperties", ESqlStatementType.sstShow); 213 addCmd(TBaseType.rrw_show, "user", "functions", ESqlStatementType.sstShow); 214 addCmd(TBaseType.rrw_show, "users", ESqlStatementType.sstShow); 215 addCmd(TBaseType.rrw_show, "views", ESqlStatementType.sstShow); 216 217 addCmd(TBaseType.rrw_databricks_sync, "schema", ESqlStatementType.sstsync); 218 addCmd(TBaseType.rrw_databricks_sync, "table", ESqlStatementType.sstsync); 219 220 addCmd(TBaseType.rrw_start, "transaction", ESqlStatementType.sstStartTransaction); 221 addCmd(TBaseType.rrw_truncate, "table", ESqlStatementType.ssttruncatetable); 222 addCmd(TBaseType.rrw_databricks_uncache, "table", ESqlStatementType.sstUnCacheTable); 223 addCmd(TBaseType.rrw_update, ESqlStatementType.sstupdate); 224 225 // USE commands - longer patterns first 226 addCmd(TBaseType.rrw_use, "catalog", ESqlStatementType.sstUseCatalog); 227 addCmd(TBaseType.rrw_use, "database", ESqlStatementType.sstUseSchema); 228 addCmd(TBaseType.rrw_use, "schema", ESqlStatementType.sstUseSchema); 229 addCmd(TBaseType.rrw_use, ESqlStatementType.sstUseSchema); 230 231 addCmd(TBaseType.rrw_databricks_vacuum, ESqlStatementType.sstVacuum); 232 addCmd(TBaseType.rrw_values, ESqlStatementType.sstValues); 233 addCmd(TBaseType.rrw_prepare, ESqlStatementType.sstprepare); 234 } 235 236 @Override 237 public TCustomSqlStatement issql(TSourceToken token, EFindSqlStateType state, TCustomSqlStatement currentStatement) { 238 TCustomSqlStatement ret = null; 239 int k; 240 boolean lcisnewsql; 241 TSourceToken lcpprevsolidtoken, lcnextsolidtoken; 242 243 gnewsqlstatementtype = ESqlStatementType.sstinvalid; 244 245 if ((token.tokencode == TBaseType.cmtdoublehyphen) 246 || (token.tokencode == TBaseType.cmtslashstar) 247 || (token.tokencode == TBaseType.lexspace) 248 || (token.tokencode == TBaseType.lexnewline) 249 || (token.tokentype == ETokenType.ttsemicolon)) { 250 return ret; 251 } 252 253 int lcpos = token.posinlist; 254 TSourceTokenList lcsourcetokenlist = token.container; 255 TCustomSqlStatement lccurrentsqlstatement = currentStatement; 256 257 // Subquery after semicolon || at first line 258 if ((state == EFindSqlStateType.stnormal) && (token.tokentype == ETokenType.ttleftparenthesis)) { 259 k = lcsourcetokenlist.solidtokenafterpos(lcpos, TBaseType.rrw_select, 1, "("); 260 if (k > 0) { 261 ret = new TSelectSqlStatement(vendor); 262 } 263 return ret; 264 } 265 266 // CTE 267 if ((state == EFindSqlStateType.stnormal) && (token.tokencode == TBaseType.rrw_with)) { 268 ret = findcte(token); 269 if ((ret != null)) return ret; 270 } 271 272 gnewsqlstatementtype = getStatementTypeForToken(token); 273 274 TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos); 275 276 if ((gnewsqlstatementtype == ESqlStatementType.sstinvalid) && (token.tokencode == TBaseType.rrw_create)) { 277 TSourceToken viewToken = token.container.searchToken(TBaseType.rrw_view, "", token, 15); 278 if (viewToken != null) { 279 gnewsqlstatementtype = ESqlStatementType.sstcreateview; 280 } 281 } 282 283 switch (gnewsqlstatementtype) { 284 case sstinvalid: { 285 ret = null; 286 break; 287 } 288 case sstselect: { 289 lcisnewsql = true; 290 291 if (state != EFindSqlStateType.stnormal) { 292 if (TBaseType.assigned(lcprevsolidtoken)) { 293 if (lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis) 294 lcisnewsql = false; // subquery 295 else if (lcprevsolidtoken.tokencode == TBaseType.rrw_union) 296 lcisnewsql = false; 297 else if (lcprevsolidtoken.tokencode == TBaseType.rrw_intersect) 298 lcisnewsql = false; 299 else if (lcprevsolidtoken.tokencode == TBaseType.rrw_minus) 300 lcisnewsql = false; 301 else if (lcprevsolidtoken.tokencode == TBaseType.rrw_except) 302 lcisnewsql = false; 303 else if (lcprevsolidtoken.tokencode == TBaseType.rrw_return) 304 lcisnewsql = false; 305 else if (lcprevsolidtoken.tokencode == TBaseType.rrw_as) { 306 if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable) 307 lcisnewsql = false; 308 if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview) 309 lcisnewsql = false; 310 } 311 312 if (lcisnewsql && (lcprevsolidtoken.tokencode == TBaseType.rrw_all)) { 313 lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist); 314 if (TBaseType.assigned(lcpprevsolidtoken)) { 315 if (lcpprevsolidtoken.tokencode == TBaseType.rrw_union) 316 lcisnewsql = false; 317 } 318 } 319 } 320 321 if (TBaseType.assigned(lccurrentsqlstatement)) { 322 if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert) 323 lcisnewsql = false; 324 } 325 } 326 327 if (lcisnewsql) 328 ret = new TSelectSqlStatement(vendor); 329 break; 330 } 331 case sstinsert: { 332 lcisnewsql = true; 333 if (state != EFindSqlStateType.stnormal) { 334 if (TBaseType.assigned(lccurrentsqlstatement)) { 335 } 336 } 337 338 if (lcisnewsql) 339 ret = new TInsertSqlStatement(vendor); 340 ret.sqlstatementtype = gnewsqlstatementtype; 341 break; 342 } 343 case sstdelete: { 344 lcisnewsql = true; 345 346 if (state != EFindSqlStateType.stnormal) { 347 lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos); 348 if (TBaseType.assigned(lcprevsolidtoken)) { 349 if (lcprevsolidtoken.tokencode == TBaseType.rrw_on) 350 lcisnewsql = false; 351 } 352 353 if (TBaseType.assigned(lccurrentsqlstatement)) { 354 } 355 } 356 357 if (lcisnewsql) 358 ret = new TDeleteSqlStatement(vendor); 359 break; 360 } 361 case sstaltertable: { 362 ret = new TAlterTableStatement(vendor); 363 break; 364 } 365 case sstalterfunction: { 366 ret = new TAlterFunctionStmt(vendor); 367 break; 368 } 369 case sstAlterSchema: { 370 ret = new TAlterSchemaStmt(vendor); 371 break; 372 } 373 case sstanalyzeTable: { 374 ret = new TAnalyzeStmt(vendor); 375 break; 376 } 377 case sstcall: { 378 ret = new TCallStatement(vendor); 379 break; 380 } 381 case sstcommit: { 382 ret = new TCommitStmt(vendor); 383 break; 384 } 385 case sstcreatefunction: { 386 ret = new TCreateFunctionStmt(vendor); 387 break; 388 } 389 case sstcreaterole: { 390 ret = new TCreateRoleStmt(vendor); 391 break; 392 } 393 case sstcreateschema: { 394 ret = new TCreateSchemaSqlStatement(vendor); 395 break; 396 } 397 case sstcreatetable: { 398 ret = new TCreateTableSqlStatement(vendor); 399 break; 400 } 401 case sstcreateview: { 402 ret = new TCreateViewSqlStatement(vendor); 403 break; 404 } 405 case sstpostgresqlDeallocate: { 406 ret = new TUnknownSqlStatement(vendor); 407 ret.sqlstatementtype = gnewsqlstatementtype; 408 break; 409 } 410 case sstdropfunction: { 411 ret = new TDropFunctionStmt(vendor); 412 break; 413 } 414 case sstdroprole: { 415 ret = new TDropRoleStmt(vendor); 416 break; 417 } 418 case sstdropschema: { 419 ret = new TDropSchemaSqlStatement(vendor); 420 break; 421 } 422 case sstdroptable: { 423 ret = new TDropTableSqlStatement(vendor); 424 break; 425 } 426 case sstdropview: { 427 ret = new TDropViewSqlStatement(vendor); 428 break; 429 } 430 case sstExecute: { 431 ret = new TExecuteSqlStatement(vendor); 432 break; 433 } 434 case sstExplain: { 435 ret = new TExplainPlan(vendor); 436 break; 437 } 438 case sstGrant: { 439 ret = new TGrantStmt(vendor); 440 break; 441 } 442 case sstprepare: { 443 ret = new TPrepareStmt(vendor); 444 break; 445 } 446 case sstset: 447 case sstReset: { 448 lcisnewsql = true; 449 if (state != EFindSqlStateType.stnormal) { 450 if (TBaseType.assigned(lccurrentsqlstatement)) { 451 lcisnewsql = false; 452 } 453 } 454 455 if (lcisnewsql) { 456 ret = new TSetStmt(vendor); 457 } 458 break; 459 } 460 case sstShow: { 461 ret = new TShowStmt(vendor); 462 ret.sqlstatementtype = gnewsqlstatementtype; 463 break; 464 } 465 case sstStartTransaction: { 466 ret = new TStartTransactionStmt(vendor); 467 break; 468 } 469 case sstValues: { 470 ret = new TSelectSqlStatement(vendor); 471 break; 472 } 473 case sstResetSession: { 474 ret = new TResetSessionStmt(vendor); 475 break; 476 } 477 case sstCreateExternallocation: 478 ret = new TCreateExternalLocationStmt(vendor); 479 break; 480 case sstList: { 481 ret = new TListStmt(vendor); 482 break; 483 } 484 case sstRevoke: 485 ret = new TRevokeStmt(vendor); 486 break; 487 case sstaltercredental: 488 ret = new TAlterCredentialStmt(vendor); 489 break; 490 case sstdescribeCatalog: 491 case sstdescribeFunction: 492 case sstdescribeProvider: 493 case sstdescribeQuery: 494 case sstdescribeRecipient: 495 case sstdescribeSchema: 496 case sstdescribeShare: 497 case sstdescribeTable: 498 case sstdescribeDatabase: 499 case sstdescribeLocation: 500 case sstdescribeCredential: 501 case sstdescribe: 502 ret = new TDescribeStmt(vendor); 503 break; 504 case sstUseCatalog: 505 case sstUseSchema: 506 case sstUseDatabase: 507 case sstUse: 508 ret = new TUseDatabase(vendor); 509 break; 510 case sstAnalyzeTable: 511 ret = new TAnalyzeStmt(vendor); 512 break; 513 case sstCreategroup: 514 ret = new TCreateGroup(vendor); 515 break; 516 case sstAlterGroup: 517 ret = new TAlterGroup(vendor); 518 break; 519 case sstDeny: 520 ret = new TDenyStmt(vendor); 521 break; 522 case sstDropGroup: 523 ret = new TDropGroup(vendor); 524 break; 525 case sstmsckrepairtable: 526 ret = new TMSCKStmt(vendor); 527 break; 528 case sstcreatecatalog: 529 ret = new TCreateCatalogStmt(vendor); 530 break; 531 case sstConvertToDelta: 532 ret = new TConvertToDeltaStmt(vendor); 533 break; 534 case sstOptimize: 535 ret = new TOptimizeStmt(vendor); 536 break; 537 case sstRestoreTable: 538 ret = new TRestoreTableStmt(vendor); 539 break; 540 case sstReorgTable: 541 ret = new TReorgTableStmt(vendor); 542 break; 543 case sstVacuum: 544 ret = new TVacuumStmt(vendor); 545 break; 546 case sstmerge: 547 ret = new TMergeSqlStatement(vendor); 548 break; 549 default: { 550 ret = new TUnknownSqlStatement(vendor); 551 ret.sqlstatementtype = gnewsqlstatementtype; 552 break; 553 } 554 } 555 556 return ret; 557 } 558}