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