001package gudusoft.gsqlparser.sqlcmds; 002 003import gudusoft.gsqlparser.*; 004import gudusoft.gsqlparser.stmt.*; 005import gudusoft.gsqlparser.stmt.snowflake.*; 006import gudusoft.gsqlparser.stmt.oracle.TPlsqlCreateFunction; 007import gudusoft.gsqlparser.stmt.oracle.TPlsqlCreatePackage; 008import gudusoft.gsqlparser.stmt.oracle.TPlsqlCreateProcedure; 009 010/** 011 * Snowflake SQL command resolver. 012 * Extracted from monolithic TSqlCmds for lazy loading. 013 * 014 * @since 3.1.0.9 015 */ 016public class TSqlCmdsSnowflake extends AbstractSqlCmds { 017 018 public TSqlCmdsSnowflake() { 019 super(EDbVendor.dbvsnowflake); 020 } 021 022 @Override 023 protected void initializeCommands() { 024 // Commands must be in order: longer patterns BEFORE shorter patterns with same prefix 025 026 // ALTER commands 027 addCmd(TBaseType.rrw_alter, "external", "table", ESqlStatementType.sstaltertable); 028 addCmd(TBaseType.rrw_alter, "account", ESqlStatementType.sstAlterAccount); 029 addCmd(TBaseType.rrw_alter, "database", ESqlStatementType.sstalterdatabase); 030 addCmd(TBaseType.rrw_alter, "file", "format", ESqlStatementType.sstAlterFileFormat); 031 addCmd(TBaseType.rrw_alter, "function", ESqlStatementType.sstalterfunction); 032 addCmd(TBaseType.rrw_alter, "materialized", "view", ESqlStatementType.sstAlterMaterializedView); 033 addCmd(TBaseType.rrw_alter, "network", "policy", ESqlStatementType.sstAlterNetworkPolicy); 034 addCmd(TBaseType.rrw_alter, "pipe", ESqlStatementType.sstAlterPipe); 035 addCmd(TBaseType.rrw_alter, "resource", "monitor", ESqlStatementType.sstAlterResourceMonitor); 036 addCmd(TBaseType.rrw_alter, "role", ESqlStatementType.sstAlterRole); 037 addCmd(TBaseType.rrw_alter, "task", ESqlStatementType.sstAlterTask); 038 addCmd(TBaseType.rrw_alter, "dynamic", "table", ESqlStatementType.sstAlterDynamicTable); 039 addCmd(TBaseType.rrw_alter, "schema", ESqlStatementType.sstAlterSchema); 040 addCmd(TBaseType.rrw_alter, "session", ESqlStatementType.sstaltersession); 041 addCmd(TBaseType.rrw_alter, "sequence", ESqlStatementType.sstaltersequence); 042 addCmd(TBaseType.rrw_alter, "share", ESqlStatementType.sstAlterShare); 043 addCmd(TBaseType.rrw_alter, "stage", ESqlStatementType.sstAlterStage); 044 addCmd(TBaseType.rrw_alter, "table", ESqlStatementType.sstaltertable); 045 addCmd(TBaseType.rrw_alter, "user", ESqlStatementType.sstalteruser); 046 addCmd(TBaseType.rrw_alter, "view", ESqlStatementType.sstalterview); 047 addCmd(TBaseType.rrw_alter, "warehouse", ESqlStatementType.sstAlterWarehouse); 048 049 // BEGIN commands 050 addCmd(TBaseType.rrw_begin, "work", ESqlStatementType.sstbegintran); 051 addCmd(TBaseType.rrw_begin, "transaction", ESqlStatementType.sstbegintran); 052 addCmd(TBaseType.rrw_begin, "name", ESqlStatementType.sstbegintran); 053 addCmd(TBaseType.rrw_begin, ESqlStatementType.sstBegin); 054 addCmd(TBaseType.rrw_snowflake_begin_transaction, ESqlStatementType.sstbegintran); 055 056 // PL/SQL block delimiter for procedure body reparsing 057 addCmd(TBaseType.rrw_snowflake_plpgsql_function_delimiter, ESqlStatementType.sstPostgresqlBlock); 058 059 // Other commands 060 addCmd(TBaseType.rrw_call, ESqlStatementType.sstcall); 061 addCmd(TBaseType.rrw_comment, ESqlStatementType.sstcomment); 062 addCmd(TBaseType.rrw_commit, ESqlStatementType.sstcommit); 063 addCmd(TBaseType.rrw_snowflake_copy, "into", ESqlStatementType.sstCopyInto); 064 065 // CREATE commands - longer patterns first 066 addCmd(TBaseType.rrw_create, "or", "replace", "global", "temporary", "table", ESqlStatementType.sstcreatetable); 067 addCmd(TBaseType.rrw_create, "or", "replace", "local", "temporary", "table", ESqlStatementType.sstcreatetable); 068 addCmd(TBaseType.rrw_create, "or", "replace", "transient", "dynamic", "table", ESqlStatementType.sstcreatetable); 069 addCmd(TBaseType.rrw_create, "or", "replace", "external", "table", ESqlStatementType.sstcreatetable); 070 addCmd(TBaseType.rrw_create, "or", "replace", "dynamic", "table", ESqlStatementType.sstcreatetable); 071 addCmd(TBaseType.rrw_create, "or", "replace", "file", "format", ESqlStatementType.sstCreateFileFormat); 072 addCmd(TBaseType.rrw_create, "or", "replace", "force", "view", ESqlStatementType.sstcreateview); 073 addCmd(TBaseType.rrw_create, "or", "replace", "hybrid", "table", ESqlStatementType.sstcreatetable); 074 addCmd(TBaseType.rrw_create, "or", "replace", "iceberg", "table", ESqlStatementType.sstcreatetable); 075 addCmd(TBaseType.rrw_create, "or", "replace", "materialized", "view", ESqlStatementType.sstcreatematerializedview); 076 addCmd(TBaseType.rrw_create, "or", "replace", "aggregation", "policy", ESqlStatementType.sstCreateAggregationPolicy); 077 addCmd(TBaseType.rrw_create, "or", "replace", "join", "policy", ESqlStatementType.sstCreateJoinPolicy); 078 addCmd(TBaseType.rrw_create, "or", "replace", "masking", "policy", ESqlStatementType.sstCreateMaskingPolicy); 079 addCmd(TBaseType.rrw_create, "or", "replace", "network", "policy", ESqlStatementType.sstCreateNetworkPolicy); 080 addCmd(TBaseType.rrw_create, "or", "replace", "projection", "policy", ESqlStatementType.sstCreateProjectionPolicy); 081 addCmd(TBaseType.rrw_create, "or", "replace", "row", "access", "policy", ESqlStatementType.sstCreateRowAccessPolicy); 082 addCmd(TBaseType.rrw_create, "or", "replace", "recursive", "view", ESqlStatementType.sstcreateview); 083 addCmd(TBaseType.rrw_create, "or", "replace", "resource", "monitor", ESqlStatementType.sstCreateResourceMonitor); 084 addCmd(TBaseType.rrw_create, "or", "replace", "secure", "materialized", "view", ESqlStatementType.sstcreatematerializedview); 085 addCmd(TBaseType.rrw_create, "or", "replace", "secure", "view", ESqlStatementType.sstcreateview); 086 addCmd(TBaseType.rrw_create, "or", "replace", "temp", "stage", ESqlStatementType.sstCreateStage); 087 addCmd(TBaseType.rrw_create, "or", "replace", "temporary", "stage", ESqlStatementType.sstCreateStage); 088 addCmd(TBaseType.rrw_create, "or", "replace", "temporary", "table", ESqlStatementType.sstcreatetable); 089 addCmd(TBaseType.rrw_create, "or", "replace", "temporary", "view", ESqlStatementType.sstcreateview); 090 addCmd(TBaseType.rrw_create, "or", "replace", "transient", "database", ESqlStatementType.sstcreatedatabase); 091 addCmd(TBaseType.rrw_create, "or", "replace", "transient", "schema", ESqlStatementType.sstcreateschema); 092 addCmd(TBaseType.rrw_create, "or", "replace", "transient", "table", ESqlStatementType.sstcreatetable); 093 addCmd(TBaseType.rrw_create, "or", "replace", "database", ESqlStatementType.sstcreatedatabase); 094 addCmd(TBaseType.rrw_create, "or", "replace", "function", ESqlStatementType.sstcreatefunction); 095 addCmd(TBaseType.rrw_create, "or", "replace", "secure", "function", ESqlStatementType.sstcreatefunction); 096 addCmd(TBaseType.rrw_create, "or", "replace", "temporary", "function", ESqlStatementType.sstcreatefunction); 097 addCmd(TBaseType.rrw_create, "or", "replace", "external", "function", ESqlStatementType.sstcreatefunction); 098 addCmd(TBaseType.rrw_create, "or", "replace", "pipe", ESqlStatementType.sstCreatePipe); 099 addCmd(TBaseType.rrw_create, "or", "replace", "procedure", ESqlStatementType.sstcreateprocedure); 100 addCmd(TBaseType.rrw_create, "or", "replace", "role", ESqlStatementType.sstcreaterole); 101 addCmd(TBaseType.rrw_create, "or", "replace", "schema", ESqlStatementType.sstcreateschema); 102 addCmd(TBaseType.rrw_create, "or", "replace", "semantic", "view", ESqlStatementType.sstcreatesemanticview); 103 addCmd(TBaseType.rrw_create, "or", "replace", "sequence", ESqlStatementType.sstcreatesequence); 104 addCmd(TBaseType.rrw_create, "or", "replace", "share", ESqlStatementType.sstCreateShare); 105 addCmd(TBaseType.rrw_create, "or", "replace", "tag", ESqlStatementType.sstCreateTag); 106 addCmd(TBaseType.rrw_create, "or", "replace", "stage", ESqlStatementType.sstCreateStage); 107 addCmd(TBaseType.rrw_create, "or", "replace", "stream", ESqlStatementType.sstCreateStream); 108 addCmd(TBaseType.rrw_create, "or", "replace", "table", ESqlStatementType.sstcreatetable); 109 addCmd(TBaseType.rrw_create, "or", "replace", "task", ESqlStatementType.sstCreateTask); 110 addCmd(TBaseType.rrw_create, "or", "replace", "temp", "table", ESqlStatementType.sstcreatetable); 111 addCmd(TBaseType.rrw_create, "or", "replace", "temp", "view", ESqlStatementType.sstcreateview); 112 addCmd(TBaseType.rrw_create, "or", "replace", "user", ESqlStatementType.sstcreateuser); 113 addCmd(TBaseType.rrw_create, "or", "replace", "view", ESqlStatementType.sstcreateview); 114 addCmd(TBaseType.rrw_create, "or", "replace", "warehouse", ESqlStatementType.sstCreateWarehouse); 115 116 // CREATE OR ALTER TABLE 117 addCmd(TBaseType.rrw_create, "or", "alter", "table", ESqlStatementType.sstcreatetable); 118 119 // CREATE OR ALTER VIEW 120 addCmd(TBaseType.rrw_create, "or", "alter", "secure", "view", ESqlStatementType.sstcreateview); 121 addCmd(TBaseType.rrw_create, "or", "alter", "force", "view", ESqlStatementType.sstcreateview); 122 addCmd(TBaseType.rrw_create, "or", "alter", "temporary", "view", ESqlStatementType.sstcreateview); 123 addCmd(TBaseType.rrw_create, "or", "alter", "temp", "view", ESqlStatementType.sstcreateview); 124 addCmd(TBaseType.rrw_create, "or", "alter", "recursive", "view", ESqlStatementType.sstcreateview); 125 addCmd(TBaseType.rrw_create, "or", "alter", "view", ESqlStatementType.sstcreateview); 126 127 // CREATE OR ALTER TAG 128 addCmd(TBaseType.rrw_create, "or", "alter", "tag", ESqlStatementType.sstCreateTag); 129 130 // CREATE OR ALTER FUNCTION 131 addCmd(TBaseType.rrw_create, "or", "alter", "function", ESqlStatementType.sstcreatefunction); 132 addCmd(TBaseType.rrw_create, "or", "alter", "secure", "function", ESqlStatementType.sstcreatefunction); 133 addCmd(TBaseType.rrw_create, "or", "alter", "temporary", "function", ESqlStatementType.sstcreatefunction); 134 addCmd(TBaseType.rrw_create, "or", "alter", "external", "function", ESqlStatementType.sstcreatefunction); 135 136 // CREATE without OR REPLACE - 3+ tokens 137 addCmd(TBaseType.rrw_create, "global", "temporary", "table", ESqlStatementType.sstcreatetable); 138 addCmd(TBaseType.rrw_create, "global", "temp", "table", ESqlStatementType.sstcreatetable); 139 addCmd(TBaseType.rrw_create, "local", "temporary", "table", ESqlStatementType.sstcreatetable); 140 addCmd(TBaseType.rrw_create, "local", "temp", "table", ESqlStatementType.sstcreatetable); 141 addCmd(TBaseType.rrw_create, "dynamic", "table", ESqlStatementType.sstcreatetable); 142 addCmd(TBaseType.rrw_create, "external", "table", ESqlStatementType.sstcreatetable); 143 addCmd(TBaseType.rrw_create, "external", "function", ESqlStatementType.sstcreatefunction); 144 addCmd(TBaseType.rrw_create, "file", "format", ESqlStatementType.sstCreateFileFormat); 145 addCmd(TBaseType.rrw_create, "global", "table", ESqlStatementType.sstcreatetable); 146 addCmd(TBaseType.rrw_create, "hybrid", "table", ESqlStatementType.sstcreatetable); 147 addCmd(TBaseType.rrw_create, "iceberg", "table", ESqlStatementType.sstcreatetable); 148 addCmd(TBaseType.rrw_create, "local", "table", ESqlStatementType.sstcreatetable); 149 addCmd(TBaseType.rrw_create, "materialized", "view", ESqlStatementType.sstcreatematerializedview); 150 addCmd(TBaseType.rrw_create, "aggregation", "policy", ESqlStatementType.sstCreateAggregationPolicy); 151 addCmd(TBaseType.rrw_create, "join", "policy", ESqlStatementType.sstCreateJoinPolicy); 152 addCmd(TBaseType.rrw_create, "masking", "policy", ESqlStatementType.sstCreateMaskingPolicy); 153 addCmd(TBaseType.rrw_create, "network", "policy", ESqlStatementType.sstCreateNetworkPolicy); 154 addCmd(TBaseType.rrw_create, "projection", "policy", ESqlStatementType.sstCreateProjectionPolicy); 155 addCmd(TBaseType.rrw_create, "recursive", "view", ESqlStatementType.sstcreateview); 156 addCmd(TBaseType.rrw_create, "resource", "monitor", ESqlStatementType.sstCreateResourceMonitor); 157 addCmd(TBaseType.rrw_create, "row", "access", "policy", ESqlStatementType.sstCreateRowAccessPolicy); 158 addCmd(TBaseType.rrw_create, "secure", "materialized", "view", ESqlStatementType.sstcreatematerializedview); 159 addCmd(TBaseType.rrw_create, "secure", "view", ESqlStatementType.sstcreateview); 160 addCmd(TBaseType.rrw_create, "secure", "function", ESqlStatementType.sstcreatefunction); 161 addCmd(TBaseType.rrw_create, "temp", "stage", ESqlStatementType.sstCreateStage); 162 addCmd(TBaseType.rrw_create, "temp", "table", ESqlStatementType.sstcreatetable); 163 addCmd(TBaseType.rrw_create, "temporary", "stage", ESqlStatementType.sstCreateStage); 164 addCmd(TBaseType.rrw_create, "temporary", "function", ESqlStatementType.sstcreatefunction); 165 addCmd(TBaseType.rrw_create, "temporary", "table", ESqlStatementType.sstcreatetable); 166 addCmd(TBaseType.rrw_create, "transient", "dynamic", "table", ESqlStatementType.sstcreatetable); 167 addCmd(TBaseType.rrw_create, "transient", "database", ESqlStatementType.sstcreatedatabase); 168 addCmd(TBaseType.rrw_create, "transient", "schema", ESqlStatementType.sstcreateschema); 169 addCmd(TBaseType.rrw_create, "transient", "table", ESqlStatementType.sstcreatetable); 170 171 // CREATE - 2 tokens 172 addCmd(TBaseType.rrw_create, "database", ESqlStatementType.sstcreatedatabase); 173 addCmd(TBaseType.rrw_create, "function", ESqlStatementType.sstcreatefunction); 174 addCmd(TBaseType.rrw_create, "pipe", ESqlStatementType.sstCreatePipe); 175 addCmd(TBaseType.rrw_create, "procedure", ESqlStatementType.sstcreateprocedure); 176 addCmd(TBaseType.rrw_create, "role", ESqlStatementType.sstcreaterole); 177 addCmd(TBaseType.rrw_create, "schema", ESqlStatementType.sstcreateschema); 178 addCmd(TBaseType.rrw_create, "semantic", "view", ESqlStatementType.sstcreatesemanticview); 179 addCmd(TBaseType.rrw_create, "sequence", ESqlStatementType.sstcreatesequence); 180 addCmd(TBaseType.rrw_create, "share", ESqlStatementType.sstCreateShare); 181 addCmd(TBaseType.rrw_create, "stage", ESqlStatementType.sstCreateStage); 182 addCmd(TBaseType.rrw_create, "stream", ESqlStatementType.sstCreateStream); 183 addCmd(TBaseType.rrw_create, "table", ESqlStatementType.sstcreatetable); 184 addCmd(TBaseType.rrw_create, "tag", ESqlStatementType.sstCreateTag); 185 addCmd(TBaseType.rrw_create, "task", ESqlStatementType.sstCreateTask); 186 addCmd(TBaseType.rrw_create, "user", ESqlStatementType.sstcreateuser); 187 addCmd(TBaseType.rrw_create, "view", ESqlStatementType.sstcreateview); 188 addCmd(TBaseType.rrw_create, "warehouse", ESqlStatementType.sstCreateWarehouse); 189 190 // DELETE 191 addCmd(TBaseType.rrw_delete, ESqlStatementType.sstdelete); 192 193 // DESCRIBE/DESC commands - 3 tokens 194 addCmd(TBaseType.rrw_snowflake_desc, "file", "format", ESqlStatementType.sstDescFileFormat); 195 addCmd(TBaseType.rrw_snowflake_desc, "network", "policy", ESqlStatementType.sstDescNetworkPolicy); 196 addCmd(TBaseType.rrw_describe, "file", "format", ESqlStatementType.sstDescFileFormat); 197 addCmd(TBaseType.rrw_describe, "network", "policy", ESqlStatementType.sstDescNetworkPolicy); 198 addCmd(TBaseType.rrw_describe, "user", "functions", ESqlStatementType.sstDescFunction); 199 200 // DESCRIBE/DESC commands - 2 tokens 201 addCmd(TBaseType.rrw_snowflake_desc, "function", ESqlStatementType.sstDescFunction); 202 addCmd(TBaseType.rrw_snowflake_desc, "pipe", ESqlStatementType.sstDescPipe); 203 addCmd(TBaseType.rrw_snowflake_desc, "result", ESqlStatementType.sstDescResult); 204 addCmd(TBaseType.rrw_snowflake_desc, "share", ESqlStatementType.sstDescShare); 205 addCmd(TBaseType.rrw_snowflake_desc, "stage", ESqlStatementType.sstDescStage); 206 addCmd(TBaseType.rrw_snowflake_desc, "storage", ESqlStatementType.sstDescStorage); 207 addCmd(TBaseType.rrw_snowflake_desc, "table", ESqlStatementType.sstDescTable); 208 addCmd(TBaseType.rrw_snowflake_desc, "user", ESqlStatementType.sstDescUser); 209 addCmd(TBaseType.rrw_snowflake_desc, "view", ESqlStatementType.sstDescView); 210 addCmd(TBaseType.rrw_describe, "function", ESqlStatementType.sstDescFunction); 211 addCmd(TBaseType.rrw_describe, "pipe", ESqlStatementType.sstDescPipe); 212 addCmd(TBaseType.rrw_describe, "result", ESqlStatementType.sstDescResult); 213 addCmd(TBaseType.rrw_describe, "share", ESqlStatementType.sstDescShare); 214 addCmd(TBaseType.rrw_describe, "stage", ESqlStatementType.sstDescStage); 215 addCmd(TBaseType.rrw_describe, "storage", ESqlStatementType.sstDescStorage); 216 addCmd(TBaseType.rrw_describe, "table", ESqlStatementType.sstDescTable); 217 addCmd(TBaseType.rrw_describe, "user", ESqlStatementType.sstDescUser); 218 addCmd(TBaseType.rrw_describe, "view", ESqlStatementType.sstDescView); 219 220 // DROP commands - 3 tokens 221 addCmd(TBaseType.rrw_drop, "file", "format", ESqlStatementType.sstDropFileFormat); 222 addCmd(TBaseType.rrw_drop, "materialized", "view", ESqlStatementType.sstDropMaterializedView); 223 addCmd(TBaseType.rrw_drop, "network", "policy", ESqlStatementType.sstDropNetworkPolicy); 224 addCmd(TBaseType.rrw_drop, "resource", "monitor", ESqlStatementType.sstDropResourceMonitor); 225 226 // DROP commands - 2 tokens 227 addCmd(TBaseType.rrw_drop, "database", ESqlStatementType.sstdropdatabase); 228 addCmd(TBaseType.rrw_drop, "function", ESqlStatementType.sstdropfunction); 229 addCmd(TBaseType.rrw_drop, "pipe", ESqlStatementType.sstDropPipe); 230 addCmd(TBaseType.rrw_drop, "procedure", ESqlStatementType.sstdropprocedure); 231 addCmd(TBaseType.rrw_drop, "role", ESqlStatementType.sstdroprole); 232 addCmd(TBaseType.rrw_drop, "schema", ESqlStatementType.sstdropschema); 233 addCmd(TBaseType.rrw_drop, "share", ESqlStatementType.sstDropShare); 234 addCmd(TBaseType.rrw_drop, "stage", ESqlStatementType.sstDropStage); 235 addCmd(TBaseType.rrw_drop, "stream", ESqlStatementType.sstDropStream); 236 addCmd(TBaseType.rrw_drop, "streamlit", ESqlStatementType.sstDropStreamlit); 237 addCmd(TBaseType.rrw_drop, "task", ESqlStatementType.sstDropTask); 238 addCmd(TBaseType.rrw_drop, "table", ESqlStatementType.sstdroptable); 239 addCmd(TBaseType.rrw_drop, "user", ESqlStatementType.sstdropuser); 240 addCmd(TBaseType.rrw_drop, "view", ESqlStatementType.sstdropview); 241 addCmd(TBaseType.rrw_drop, "warehouse", ESqlStatementType.sstDropWarehouse); 242 243 // EXECUTE 244 addCmd(TBaseType.rrw_execute, "immediate", ESqlStatementType.sstExecute); 245 addCmd(TBaseType.rrw_execute, "task", ESqlStatementType.sstExecute); 246 247 // Other commands 248 addCmd(TBaseType.rrw_get, ESqlStatementType.sstGet); 249 addCmd(TBaseType.rrw_grant, ESqlStatementType.sstGrant); 250 addCmd(TBaseType.rrw_insert, ESqlStatementType.sstinsert); 251 addCmd(TBaseType.rrw_snowflake_list, ESqlStatementType.sstList); 252 addCmd(TBaseType.rrw_snowflake_ls, ESqlStatementType.sstList); 253 addCmd(TBaseType.rrw_merge, ESqlStatementType.sstmerge); 254 addCmd(TBaseType.rrw_snowflake_pseudo_stmt_sign, ESqlStatementType.sstSnowflakePseudoExprStmt); 255 addCmd(TBaseType.rrw_snowflake_put, ESqlStatementType.sstPut); 256 addCmd(TBaseType.rrw_snowflake_remove, ESqlStatementType.sstRemove); 257 addCmd(TBaseType.rrw_revoke, ESqlStatementType.sstRevoke); 258 addCmd(TBaseType.rrw_snowflake_rm, ESqlStatementType.sstRemove); 259 addCmd(TBaseType.rrw_rollback, ESqlStatementType.sstrollback); 260 addCmd(TBaseType.rrw_select, ESqlStatementType.sstselect); 261 addCmd(TBaseType.rrw_set, ESqlStatementType.sstset); 262 263 // SHOW commands - 3+ tokens 264 addCmd(TBaseType.rrw_show, "terse", "databases", ESqlStatementType.sstShowDatabases); 265 addCmd(TBaseType.rrw_show, "terse", "streams", ESqlStatementType.sstShowStreams); 266 addCmd(TBaseType.rrw_show, "terse", "tasks", ESqlStatementType.sstShowTasks); 267 addCmd(TBaseType.rrw_show, "file", "formats", ESqlStatementType.sstShowFileFormats); 268 addCmd(TBaseType.rrw_show, "network", "policies", ESqlStatementType.sstShowNetworkPolicies); 269 addCmd(TBaseType.rrw_show, "resource", "monitors", ESqlStatementType.sstShowResourceMonitors); 270 addCmd(TBaseType.rrw_show, "user", "functions", ESqlStatementType.sstShowUserFunctions); 271 272 // SHOW commands - 2 tokens 273 addCmd(TBaseType.rrw_show, "columns", ESqlStatementType.sstShowColumns); 274 addCmd(TBaseType.rrw_show, "databases", ESqlStatementType.sstShowDatabases); 275 addCmd(TBaseType.rrw_show, "functions", ESqlStatementType.sstShowFunctions); 276 addCmd(TBaseType.rrw_show, "grants", ESqlStatementType.sstShowGrants); 277 addCmd(TBaseType.rrw_show, "locks", ESqlStatementType.sstShowLocks); 278 addCmd(TBaseType.rrw_show, "objects", ESqlStatementType.sstShowObjects); 279 addCmd(TBaseType.rrw_show, "parameters", ESqlStatementType.sstShowParameters); 280 addCmd(TBaseType.rrw_show, "pipes", ESqlStatementType.sstShowPipes); 281 addCmd(TBaseType.rrw_show, "procedures", ESqlStatementType.sstShowProcedures); 282 addCmd(TBaseType.rrw_show, "roles", ESqlStatementType.sstShowRoles); 283 addCmd(TBaseType.rrw_show, "schemas", ESqlStatementType.sstShowSchemas); 284 addCmd(TBaseType.rrw_show, "sequences", ESqlStatementType.sstShowSequences); 285 addCmd(TBaseType.rrw_show, "shares", ESqlStatementType.sstShowShares); 286 addCmd(TBaseType.rrw_show, "stages", ESqlStatementType.sstShowStages); 287 addCmd(TBaseType.rrw_show, "streams", ESqlStatementType.sstShowStreams); 288 addCmd(TBaseType.rrw_show, "tables", ESqlStatementType.sstShowTables); 289 addCmd(TBaseType.rrw_show, "tasks", ESqlStatementType.sstShowTasks); 290 addCmd(TBaseType.rrw_show, "transactions", ESqlStatementType.sstShowTransactions); 291 addCmd(TBaseType.rrw_show, "users", ESqlStatementType.sstShowUsers); 292 addCmd(TBaseType.rrw_show, "variables", ESqlStatementType.sstShowVariables); 293 addCmd(TBaseType.rrw_show, "views", ESqlStatementType.sstShowViews); 294 addCmd(TBaseType.rrw_show, "warehouses", ESqlStatementType.sstShowWarehouses); 295 296 // START, TRUNCATE, UNDROP, UNSET, UPDATE, USE 297 addCmd(TBaseType.rrw_start, "transaction", ESqlStatementType.sstbegintran); 298 addCmd(TBaseType.rrw_truncate, ESqlStatementType.sstpostgresqlTruncate); 299 addCmd(TBaseType.rrw_snowflake_undrop, "database", ESqlStatementType.sstUndropDatabase); 300 addCmd(TBaseType.rrw_snowflake_undrop, "schema", ESqlStatementType.sstUndropSchema); 301 addCmd(TBaseType.rrw_snowflake_undrop, "table", ESqlStatementType.sstUndropTable); 302 addCmd(TBaseType.rrw_snowflake_unset, ESqlStatementType.sstunset); 303 addCmd(TBaseType.rrw_update, ESqlStatementType.sstupdate); 304 addCmd(TBaseType.rrw_use, "secondary", "roles", ESqlStatementType.sstUseSecondaryRoles); 305 addCmd(TBaseType.rrw_use, ESqlStatementType.sstUse); 306 } 307 308 @Override 309 protected String getToken1Str(int token1) { 310 // Map vendor-specific token codes to their string representations 311 switch (token1) { 312 case TBaseType.rrw_snowflake_list: 313 return "list"; 314 case TBaseType.rrw_snowflake_remove: 315 return "remove"; 316 case TBaseType.rrw_snowflake_undrop: 317 return "undrop"; 318 case TBaseType.rrw_snowflake_copy: 319 return "copy"; 320 case TBaseType.rrw_snowflake_desc: 321 return "desc"; 322 case TBaseType.rrw_snowflake_ls: 323 return "ls"; 324 case TBaseType.rrw_snowflake_put: 325 return "put"; 326 case TBaseType.rrw_snowflake_rm: 327 return "rm"; 328 case TBaseType.rrw_snowflake_unset: 329 return "unset"; 330 default: 331 return null; 332 } 333 } 334 335 @Override 336 public TCustomSqlStatement issql(TSourceToken pcst, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement) { 337 TCustomSqlStatement ret = null; 338 339 gnewsqlstatementtype = ESqlStatementType.sstinvalid; 340 341 if ((pcst.tokencode == TBaseType.cmtdoublehyphen) 342 || (pcst.tokencode == TBaseType.cmtslashstar) 343 || (pcst.tokencode == TBaseType.lexspace) 344 || (pcst.tokencode == TBaseType.lexnewline) 345 || (pcst.tokentype == ETokenType.ttsemicolon)) { 346 return null; 347 } 348 349 int lcpos = pcst.posinlist; 350 TSourceTokenList lcsourcetokenlist = pcst.container; 351 TCustomSqlStatement lccurrentsqlstatement = psqlstatement; 352 353 // Subquery after semicolon or at first line 354 if ((pstate == EFindSqlStateType.stnormal) && (pcst.tokentype == ETokenType.ttleftparenthesis)) { 355 int k = lcsourcetokenlist.solidtokenafterpos(lcpos, TBaseType.rrw_select, 1, "("); 356 if (k > 0) { 357 ret = new TSelectSqlStatement(this.vendor); 358 } else { 359 k = lcsourcetokenlist.solidtokenafterpos(lcpos, TBaseType.rrw_with, 1, "("); 360 int k2 = lcsourcetokenlist.solidtokenafterpos(lcpos, TBaseType.rrw_as, 3, "("); 361 if ((k > 0) && (k2 > 2)) { 362 ret = new TSelectSqlStatement(this.vendor); 363 } 364 } 365 return ret; 366 } 367 368 // WITH name(...) AS PROCEDURE (anonymous procedure call) 369 if ((pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with)) { 370 TSourceToken t1 = pcst.nextSolidToken(); // name 371 if (t1 != null) { 372 TSourceToken t2 = t1.nextSolidToken(); // ( or AS 373 // Skip past parenthesized parameter list if present: WITH name(...) AS PROCEDURE 374 if (t2 != null && t2.tokentype == ETokenType.ttleftparenthesis) { 375 int parenDepth = 1; 376 TSourceToken t = t2.nextSolidToken(); 377 while (t != null && parenDepth > 0) { 378 if (t.tokentype == ETokenType.ttleftparenthesis) parenDepth++; 379 else if (t.tokentype == ETokenType.ttrightparenthesis) parenDepth--; 380 if (parenDepth > 0) t = t.nextSolidToken(); 381 } 382 if (t != null) t2 = t.nextSolidToken(); // AS after ) 383 else t2 = null; 384 } 385 if (t2 != null && t2.tokencode == TBaseType.rrw_as) { 386 TSourceToken t3 = t2.nextSolidToken(); // PROCEDURE 387 if (t3 != null && t3.tokencode == TBaseType.rrw_procedure) { 388 ret = new TCreateProcedureStmt(this.vendor); 389 ret.sqlstatementtype = ESqlStatementType.sstcreateprocedure; 390 return ret; 391 } 392 } 393 } 394 } 395 396 // CTE 397 if ((pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with)) { 398 ret = findcte(pcst); 399 if (ret != null) return ret; 400 } 401 402 gnewsqlstatementtype = getStatementTypeForToken(pcst); 403 404 TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos); 405 switch (gnewsqlstatementtype) { 406 case sstinvalid: { 407 ret = null; 408 409 if (pstate == EFindSqlStateType.stnormal) { 410 if (pcst.tokencode == TBaseType.label_begin) { 411 ret = new TCommonBlock(this.vendor); 412 gnewsqlstatementtype = ret.sqlstatementtype; 413 } else if (pcst.tokencode == TBaseType.rrw_declare) { 414 ret = new TCommonBlock(this.vendor); 415 gnewsqlstatementtype = ret.sqlstatementtype; 416 } else if (pcst.tokencode == TBaseType.rrw_begin) { 417 ret = new TCommonBlock(this.vendor); 418 gnewsqlstatementtype = ret.sqlstatementtype; 419 } else if (pcst.tokencode == TBaseType.rrw_procedure) { 420 ret = new TPlsqlCreateProcedure(this.vendor); 421 gnewsqlstatementtype = ret.sqlstatementtype; 422 } else if (pcst.tokencode == TBaseType.rrw_function) { 423 ret = new TPlsqlCreateFunction(this.vendor); 424 gnewsqlstatementtype = ret.sqlstatementtype; 425 } else if (pcst.tokencode == TBaseType.rrw_package) { 426 ret = new TPlsqlCreatePackage(this.vendor); 427 gnewsqlstatementtype = ret.sqlstatementtype; 428 } 429 } 430 break; 431 } 432 case sstselect: { 433 boolean lcisnewsql = true; 434 435 if (pstate != EFindSqlStateType.stnormal) { 436 if (lcprevsolidtoken != null) { 437 if (lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis) 438 lcisnewsql = false; // subquery 439 else if (lcprevsolidtoken.tokencode == TBaseType.rrw_union) 440 lcisnewsql = false; 441 else if (lcprevsolidtoken.tokencode == TBaseType.rrw_intersect) 442 lcisnewsql = false; 443 else if (lcprevsolidtoken.tokencode == TBaseType.rrw_minus) 444 lcisnewsql = false; 445 else if (lcprevsolidtoken.tokencode == TBaseType.rrw_except) 446 lcisnewsql = false; 447 else if (lcprevsolidtoken.tokencode == TBaseType.rrw_return) 448 lcisnewsql = false; 449 else if (lcprevsolidtoken.tokencode == TBaseType.rrw_as) { 450 if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable) 451 lcisnewsql = false; 452 if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview) 453 lcisnewsql = false; 454 } 455 456 if (lcisnewsql && (lcprevsolidtoken.tokencode == TBaseType.rrw_all)) { 457 TSourceToken lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist); 458 if (lcpprevsolidtoken != null) { 459 if (lcpprevsolidtoken.tokencode == TBaseType.rrw_union) 460 lcisnewsql = false; 461 } 462 } 463 } 464 465 if (lccurrentsqlstatement != null) { 466 if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert) 467 lcisnewsql = false; 468 } 469 } 470 471 if (lcisnewsql) 472 ret = new TSelectSqlStatement(this.vendor); 473 474 break; 475 } 476 case sstinsert: { 477 boolean lcisnewsql = true; 478 if (pstate != EFindSqlStateType.stnormal) { 479 if (lccurrentsqlstatement != null) { 480 } 481 } 482 483 if (lcisnewsql) 484 ret = new TInsertSqlStatement(this.vendor); 485 486 break; 487 } 488 case sstupdate: { 489 boolean lcisnewsql = true; 490 if (pstate != EFindSqlStateType.stnormal) { 491 lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos); 492 if (lcprevsolidtoken != null) { 493 if (lcprevsolidtoken.tokencode == TBaseType.rrw_on) 494 lcisnewsql = false; 495 else if (lcprevsolidtoken.tokencode == TBaseType.rrw_for) 496 lcisnewsql = false; 497 } 498 499 TSourceToken lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos, 1, false); 500 if (lcnextsolidtoken != null) { 501 if (lcnextsolidtoken.tokentype == ETokenType.ttleftparenthesis) { 502 int k = lcsourcetokenlist.solidtokenafterpos(lcnextsolidtoken.posinlist, TBaseType.rrw_select, 1, "("); 503 if (k == 0) lcisnewsql = false; 504 } 505 } 506 507 if (lccurrentsqlstatement != null) { 508 } 509 } 510 511 if (lcisnewsql) { 512 ret = new TUpdateSqlStatement(this.vendor); 513 ret.dummytag = 1; // means set clause in update is not found yet, used to separate set clause from set statement 514 } 515 break; 516 } 517 case sstdelete: { 518 boolean lcisnewsql = true; 519 520 if (pstate != EFindSqlStateType.stnormal) { 521 lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos); 522 if (lcprevsolidtoken != null) { 523 if (lcprevsolidtoken.tokencode == TBaseType.rrw_on) 524 lcisnewsql = false; 525 } 526 527 if (lccurrentsqlstatement != null) { 528 } 529 } 530 531 if (lcisnewsql) 532 ret = new TDeleteSqlStatement(this.vendor); 533 534 break; 535 } 536 case sstmerge: { 537 ret = new TMergeSqlStatement(this.vendor); 538 ret.sqlstatementtype = gnewsqlstatementtype; 539 break; 540 } 541 case sstoraclecommit: { 542 ret = new TUnknownSqlStatement(this.vendor); 543 ret.sqlstatementtype = gnewsqlstatementtype; 544 break; 545 } 546 case sstoraclerollback: { 547 ret = new TUnknownSqlStatement(this.vendor); 548 ret.sqlstatementtype = gnewsqlstatementtype; 549 break; 550 } 551 case sstoraclerevoke: { 552 ret = new TUnknownSqlStatement(this.vendor); 553 ret.sqlstatementtype = gnewsqlstatementtype; 554 break; 555 } 556 case sstoraclegrant: { 557 ret = new TUnknownSqlStatement(this.vendor); 558 ret.sqlstatementtype = gnewsqlstatementtype; 559 break; 560 } 561 case sstcreatetable: { 562 ret = new TCreateTableSqlStatement(this.vendor); 563 break; 564 } 565 case sstoraclecreateview: { 566 ret = new TCreateViewSqlStatement(this.vendor); 567 break; 568 } 569 case sstAlterAccount: { 570 ret = new TAlterAccountStmt(this.vendor); 571 break; 572 } 573 case sstalterdatabase: { 574 ret = new TAlterDatabaseStmt(this.vendor); 575 break; 576 } 577 case sstAlterFileFormat: { 578 ret = new TAlterFileFormatStmt(this.vendor); 579 break; 580 } 581 case sstalterfunction: { 582 ret = new TAlterFunctionStmt(this.vendor); 583 break; 584 } 585 case sstAlterNetworkPolicy: { 586 ret = new TAlterNetworkPolicyStmt(this.vendor); 587 break; 588 } 589 case sstAlterPipe: { 590 ret = new TAlterPipeStmt(this.vendor); 591 break; 592 } 593 case sstAlterResourceMonitor: { 594 ret = new TAlterResourceMonitorStmt(this.vendor); 595 break; 596 } 597 case sstAlterRole: { 598 ret = new TAlterRoleStmt(this.vendor); 599 break; 600 } 601 case sstAlterSchema: { 602 ret = new TAlterSchemaStmt(this.vendor); 603 break; 604 } 605 case sstaltersequence: { 606 ret = new TAlterSequenceStatement(this.vendor); 607 break; 608 } 609 case sstaltersession: { 610 ret = new TAlterSessionStatement(this.vendor); 611 break; 612 } 613 case sstAlterStage: { 614 ret = new TAlterStageStmt(this.vendor); 615 break; 616 } 617 case sstalteruser: { 618 ret = new TAlterUserStmt(this.vendor); 619 break; 620 } 621 case sstAlterShare: { 622 ret = new TAlterShareStmt(this.vendor); 623 break; 624 } 625 case sstalterview: { 626 ret = new TAlterViewStatement(this.vendor); 627 break; 628 } 629 case sstAlterWarehouse: { 630 ret = new TAlterWarehouseStmt(this.vendor); 631 break; 632 } 633 case sstBegin: { 634 // Distinguish BEGIN...END scripting block from BEGIN [name] transaction. 635 // Pre-processing already converts BEGIN; to rrw_snowflake_begin_transaction. 636 // BEGIN WORK/TRANSACTION/NAME are handled by sstbegintran via addCmd. 637 // Remaining cases: BEGIN <ident> (transaction with name) vs BEGIN <keyword> (block). 638 boolean isblock = false; 639 TSourceToken firstSolid = null; 640 641 if (lcpos < lcsourcetokenlist.size() - 1) { 642 for (int i = lcpos + 1; i < lcsourcetokenlist.size(); i++) { 643 TSourceToken st = lcsourcetokenlist.get(i); 644 if (st.issolidtoken()) { 645 if (firstSolid == null) { 646 firstSolid = st; 647 } 648 } 649 // Newline before first semicolon means multiline block 650 if (st.tokencode == TBaseType.lexnewline) { 651 isblock = true; 652 break; 653 } 654 if (st.tokencode == ';') { 655 break; 656 } 657 } 658 } 659 660 // If no newline found, check if the first solid token is a keyword. 661 // Transaction names are identifiers (BEGIN my_txn;), not keywords. 662 // If it's a keyword (RETURN, SELECT, IF, LOOP, etc.), it's a block. 663 if (!isblock && firstSolid != null && firstSolid.tokencode != TBaseType.ident) { 664 isblock = true; 665 } 666 667 if (isblock) { 668 ret = new TCommonBlock(this.vendor); 669 gnewsqlstatementtype = ret.sqlstatementtype; 670 } else { 671 ret = new TBeginTran(this.vendor); 672 pcst.tokencode = TBaseType.rrw_snowflake_begin_transaction; 673 } 674 675 break; 676 } 677 case sstbegintran: { 678 ret = new TBeginTran(this.vendor); 679 if (pcst.tokencode == TBaseType.rrw_begin) { 680 pcst.tokencode = TBaseType.rrw_snowflake_begin_transaction; 681 } 682 break; 683 } 684 case sstcomment: { 685 ret = new TCommentOnSqlStmt(this.vendor); 686 break; 687 } 688 case sstcommit: { 689 ret = new TCommitStmt(this.vendor); 690 break; 691 } 692 case sstCopyInto: { 693 ret = new TSnowflakeCopyIntoStmt(this.vendor); 694 break; 695 } 696 case sstcreatedatabase: { 697 ret = new TCreateDatabaseSqlStatement(this.vendor); 698 break; 699 } 700 case sstCreateFileFormat: { 701 ret = new TCreateFileFormatStmt(this.vendor); 702 break; 703 } 704 case sstcreatefunction: { 705 ret = new TCreateFunctionStmt(this.vendor); 706 break; 707 } 708 case sstCreateAggregationPolicy: { 709 ret = new TCreateAggregationPolicyStmt(this.vendor); 710 break; 711 } 712 case sstCreateJoinPolicy: { 713 ret = new TCreateJoinPolicyStmt(this.vendor); 714 break; 715 } 716 case sstCreateMaskingPolicy: { 717 ret = new TCreateMaskingPolicyStmt(this.vendor); 718 break; 719 } 720 case sstCreateNetworkPolicy: { 721 ret = new TCreateNetworkPolicyStmt(this.vendor); 722 break; 723 } 724 case sstCreateProjectionPolicy: { 725 ret = new TCreateProjectionPolicyStmt(this.vendor); 726 break; 727 } 728 case sstCreateRowAccessPolicy: { 729 ret = new TCreateRowAccessPolicyStmt(this.vendor); 730 break; 731 } 732 case sstCreateTag: { 733 ret = new TCreateTagStmt(this.vendor); 734 break; 735 } 736 case sstCreatePipe: { 737 ret = new TCreatePipeStmt(this.vendor); 738 break; 739 } 740 case sstCreateResourceMonitor: { 741 ret = new TCreateResourceMonitorStmt(this.vendor); 742 break; 743 } 744 case sstcreaterole: { 745 ret = new TCreateRoleStmt(this.vendor); 746 break; 747 } 748 case sstcreateschema: { 749 ret = new TCreateSchemaSqlStatement(this.vendor); 750 break; 751 } 752 case sstcreatesequence: { 753 ret = new TCreateSequenceStmt(this.vendor); 754 break; 755 } 756 case sstCreateShare: { 757 ret = new TCreateShareStmt(this.vendor); 758 break; 759 } 760 case sstCreateStage: { 761 ret = new TCreateStageStmt(this.vendor); 762 break; 763 } 764 case sstcreateuser: { 765 ret = new TCreateUserStmt(this.vendor); 766 break; 767 } 768 case sstCreateWarehouse: { 769 ret = new TCreateWarehouseStmt(this.vendor); 770 break; 771 } 772 case sstDescFileFormat: 773 case sstDescFunction: 774 case sstDescNetworkPolicy: 775 case sstDescPipe: 776 case sstDescResult: 777 case sstDescShare: 778 case sstDescStage: 779 case sstDescTable: 780 case sstDescUser: 781 case sstDescView: 782 case sstDescStorage: { 783 ret = new TDescribeStmt(this.vendor); 784 break; 785 } 786 case sstdropfunction: { 787 ret = new TDropFunctionStmt(this.vendor); 788 break; 789 } 790 case sstdropdatabase: { 791 ret = new TDropDatabaseStmt(this.vendor); 792 break; 793 } 794 case sstDropFileFormat: { 795 ret = new TDropStmt(this.vendor); 796 ret.sqlstatementtype = gnewsqlstatementtype; 797 break; 798 } 799 case sstDropNetworkPolicy: { 800 ret = new TDropStmt(this.vendor); 801 ret.sqlstatementtype = gnewsqlstatementtype; 802 break; 803 } 804 case sstDropPipe: { 805 ret = new TDropStmt(this.vendor); 806 ret.sqlstatementtype = gnewsqlstatementtype; 807 break; 808 } 809 case sstDropResourceMonitor: { 810 ret = new TDropStmt(this.vendor); 811 ret.sqlstatementtype = gnewsqlstatementtype; 812 break; 813 } 814 case sstdroprole: { 815 ret = new TDropRoleStmt(this.vendor); 816 break; 817 } 818 case sstdropschema: { 819 ret = new TDropSchemaSqlStatement(this.vendor); 820 break; 821 } 822 case sstDropShare: { 823 ret = new TDropStmt(this.vendor); 824 ret.sqlstatementtype = gnewsqlstatementtype; 825 break; 826 } 827 case sstDropStage: { 828 ret = new TDropStmt(this.vendor); 829 ret.sqlstatementtype = gnewsqlstatementtype; 830 break; 831 } 832 case sstdroptable: { 833 ret = new TDropTableSqlStatement(this.vendor); 834 break; 835 } 836 case sstdropuser: { 837 ret = new TDropUserStmt(this.vendor); 838 break; 839 } 840 case sstdropview: { 841 ret = new TDropViewSqlStatement(this.vendor); 842 break; 843 } 844 case sstDropWarehouse: { 845 ret = new TDropStmt(this.vendor); 846 ret.sqlstatementtype = gnewsqlstatementtype; 847 break; 848 } 849 case sstGet: { 850 ret = new TGetStmt(this.vendor); 851 break; 852 } 853 case sstGrant: { 854 ret = new TGrantStmt(this.vendor); 855 break; 856 } 857 case sstList: { 858 ret = new TListStmt(this.vendor); 859 break; 860 } 861 case sstPut: { 862 ret = new TPutStmt(this.vendor); 863 break; 864 } 865 case sstRemove: { 866 ret = new TRemoveStmt(this.vendor); 867 break; 868 } 869 case sstRevoke: { 870 ret = new TRevokeStmt(this.vendor); 871 break; 872 } 873 case sstrollback: { 874 ret = new TRollbackStmt(this.vendor); 875 break; 876 } 877 case sstset: { 878 ret = new TSetStmt(this.vendor); 879 break; 880 } 881 case sstShowColumns: 882 case sstShowDatabases: 883 case sstShowFileFormats: 884 case sstShowFunctions: 885 case sstShowGrants: 886 case sstShowNetworkPolicies: 887 case sstShowObjects: 888 case sstShowParameters: 889 case sstShowPipes: 890 case sstShowResourceMonitors: 891 case sstShowRoles: 892 case sstShowSchemas: 893 case sstShowSequences: 894 case sstShowShares: 895 case sstShowStages: 896 case sstShowTables: 897 case sstShowTransactions: 898 case sstShowUserFunctions: 899 case sstShowUsers: 900 case sstShowVariables: 901 case sstShowViews: 902 case sstShowWarehouses: 903 case sstShowProcedures: 904 case sstShowTasks: 905 case sstShowStreams: { 906 ret = new TShowStmt(this.vendor); 907 ret.sqlstatementtype = gnewsqlstatementtype; 908 break; 909 } 910 case sstTruncate: { 911 ret = new TTruncateStatement(this.vendor); 912 break; 913 } 914 case sstUndropDatabase: 915 case sstUndropSchema: 916 case sstUndropTable: { 917 ret = new TUndropStmt(this.vendor); 918 ret.sqlstatementtype = gnewsqlstatementtype; 919 break; 920 } 921 case sstunset: { 922 ret = new TUnsetStmt(this.vendor); 923 break; 924 } 925 case sstcreatematerializedview: { 926 ret = new TCreateMaterializedSqlStatement(this.vendor); 927 break; 928 } 929 case sstoraclecreateindex: { 930 ret = new TCreateIndexSqlStatement(this.vendor); 931 break; 932 } 933 case sstoracledroptable: { 934 ret = new TDropTableSqlStatement(this.vendor); 935 break; 936 } 937 case sstoracledropview: { 938 ret = new TDropViewSqlStatement(this.vendor); 939 break; 940 } 941 case sstoracledropindex: { 942 ret = new TDropIndexSqlStatement(this.vendor); 943 break; 944 } 945 case sstaltertable: { 946 ret = new TAlterTableStatement(this.vendor); 947 break; 948 } 949 case sstoraclealtersession: { 950 ret = new TAlterSessionStatement(this.vendor); 951 break; 952 } 953 case sstplsql_createfunction: { 954 ret = new TPlsqlCreateFunction(this.vendor); 955 ret.sqlstatementtype = gnewsqlstatementtype; 956 break; 957 } 958 case sstCommentOn: { 959 ret = new TCommentOnSqlStmt(this.vendor); 960 break; 961 } 962 case sstoraclecreatesequence: { 963 ret = new TCreateSequenceStmt(this.vendor); 964 break; 965 } 966 case sstpostgresqlCreateIndex: 967 ret = new TCreateIndexSqlStatement(this.vendor); 968 break; 969 case sstpostgresqlCreateView: 970 ret = new TCreateViewSqlStatement(this.vendor); 971 break; 972 case sstpostgresqlCreateFunction: 973 ret = new TCreateFunctionStmt(this.vendor); 974 break; 975 case sstpostgresqlTruncate: 976 ret = new TTruncateStatement(this.vendor); 977 break; 978 case sstpostgresqlDropTable: 979 ret = new TDropTableSqlStatement(this.vendor); 980 break; 981 case sstcreateview: 982 ret = new TCreateViewSqlStatement(this.vendor); 983 break; 984 case sstcall: 985 ret = new TCallStatement(this.vendor); 986 break; 987 case sstSnowflakePseudoExprStmt: 988 ret = new TPseudoExprStmt(this.vendor); 989 break; 990 case sstcreateprocedure: 991 ret = new TCreateProcedureStmt(this.vendor); 992 break; 993 case sstCreateStream: 994 ret = new TCreateStreamStmt(this.vendor); 995 break; 996 case sstUse: 997 TSourceToken lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos, 1, false); 998 if (lcnextsolidtoken != null) { 999 if (lcnextsolidtoken.toString().equalsIgnoreCase("database")) { 1000 ret = new TUseDatabase(this.vendor); 1001 } else if (lcnextsolidtoken.toString().equalsIgnoreCase("role")) { 1002 ret = new TUseRole(this.vendor); 1003 } else if (lcnextsolidtoken.toString().equalsIgnoreCase("warehouse")) { 1004 ret = new TUseWarehouse(this.vendor); 1005 } else { 1006 ret = new TUseSchema(this.vendor); 1007 } 1008 } else { 1009 ret = new TUnknownSqlStatement(this.vendor); 1010 ret.sqlstatementtype = gnewsqlstatementtype; 1011 } 1012 break; 1013 case sstExecute: { 1014 ret = new TExecuteSqlStatement(this.vendor); 1015 break; 1016 } 1017 case sstAlterTask: 1018 ret = new TAlterTaskStmt(this.vendor); 1019 break; 1020 case sstAlterDynamicTable: 1021 ret = new TAlterDynamicTableStmt(this.vendor); 1022 break; 1023 case sstCreateTask: 1024 ret = new TCreateTaskStmt(this.vendor); 1025 break; 1026 case sstcreatesemanticview: 1027 ret = new TCreateSemanticViewStmt(this.vendor); 1028 break; 1029 case sstAlterMaterializedView: 1030 ret = new TAlterMaterializedViewStmt(this.vendor); 1031 break; 1032 case sstDropMaterializedView: 1033 ret = new TDropMaterializedViewStmt(this.vendor); 1034 break; 1035 case sstdropprocedure: 1036 ret = new TDropProcedureStmt(this.vendor); 1037 break; 1038 case sstUseSecondaryRoles: 1039 ret = new TUseSecondaryRolesStmt(this.vendor); 1040 break; 1041 case sstDropStreamlit: 1042 ret = new TDropStmt(this.vendor); 1043 break; 1044 case sstDropStream: 1045 ret = new TDropStreamStmt(this.vendor); 1046 break; 1047 case sstDropTask: 1048 ret = new TDropTaskStmt(this.vendor); 1049 break; 1050 default: { 1051 ret = new TUnknownSqlStatement(this.vendor); 1052 ret.sqlstatementtype = gnewsqlstatementtype; 1053 break; 1054 } 1055 } 1056 1057 return ret; 1058 } 1059}