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