001package gudusoft.gsqlparser.sqlcmds; 002 003import gudusoft.gsqlparser.*; 004import gudusoft.gsqlparser.stmt.*; 005import gudusoft.gsqlparser.stmt.oracle.*; 006import gudusoft.gsqlparser.stmt.postgresql.*; 007 008/** 009 * Greenplum SQL command resolver. 010 * Extracted from TSqlCmds monolith for modular architecture. 011 * 012 * @since 3.1.0.9 013 */ 014public class TSqlCmdsGreenplum extends AbstractSqlCmds { 015 016 public TSqlCmdsGreenplum() { 017 super(EDbVendor.dbvgreenplum); 018 } 019 020 @Override 021 protected void initializeCommands() { 022 // Commands must be sorted alphabetically 023 // Extracted from TSqlCmds.initgreenplumcmds() 024 025 addCmd(TBaseType.rrw_abort, ESqlStatementType.sstpostgresqlabort); 026 addCmd(TBaseType.rrw_alter, "aggregate", ESqlStatementType.sstpostgresqlAlterAggregate); 027 addCmd(TBaseType.rrw_alter, "collation", ESqlStatementType.sstpostgresqlAlterCollation); 028 addCmd(TBaseType.rrw_alter, "default", "privileges", ESqlStatementType.sstpostgresqlAlterDefaultPrivileges); 029 addCmd(TBaseType.rrw_alter, "extension", ESqlStatementType.sstpostgresqlAlterExtension); 030 addCmd(TBaseType.rrw_alter, "foreign", "data", "wrapper", ESqlStatementType.sstpostgresqlAlterForeignDataWrapper); 031 addCmd(TBaseType.rrw_alter, "foreign", "table", ESqlStatementType.sstpostgresqlAlterForeignTable); 032 addCmd(TBaseType.rrw_alter, "materialized", "view", ESqlStatementType.sstpostgresqlAlterMaterializedView); 033 addCmd(TBaseType.rrw_alter, "resource", "group", ESqlStatementType.sstgreenplumAlterResourceGroup); 034 addCmd(TBaseType.rrw_alter, "server", ESqlStatementType.sstpostgresqlAlterServer); 035 addCmd(TBaseType.rrw_alter, "text", "search", "configuration", ESqlStatementType.sstpostgresqlAlterTextSearchConfiguration); 036 addCmd(TBaseType.rrw_alter, "text", "search", "dictionary", ESqlStatementType.sstpostgresqlAlterTextSearchDictionary); 037 addCmd(TBaseType.rrw_alter, "text", "search", "parser", ESqlStatementType.sstpostgresqlAlterTextSearchParser); 038 addCmd(TBaseType.rrw_alter, "text", "search", "template", ESqlStatementType.sstpostgresqlAlterTextSearchTemplate); 039 addCmd(TBaseType.rrw_alter, "view", ESqlStatementType.sstpostgresqlAlterView); 040 addCmd(TBaseType.rrw_alter, "conversion", ESqlStatementType.sstpostgresqlAlterConversion); 041 addCmd(TBaseType.rrw_alter, "database", ESqlStatementType.sstpostgresqlalterdatabase); 042 addCmd(TBaseType.rrw_alter, "domain", ESqlStatementType.sstpostgresqlAlterDomain); 043 044 addCmd(TBaseType.rrw_alter, "external", "table", ESqlStatementType.sstgreenplumAlterExternalTable); 045 addCmd(TBaseType.rrw_alter, "filespace", ESqlStatementType.sstgreenplumAlterFilespace); 046 047 addCmd(TBaseType.rrw_alter, "function", ESqlStatementType.sstpostgresqlAlterfunction); 048 addCmd(TBaseType.rrw_alter, "group", ESqlStatementType.sstpostgresqlAlterGroup); 049 addCmd(TBaseType.rrw_alter, "index", ESqlStatementType.sstpostgresqlAlterIndex); 050 addCmd(TBaseType.rrw_alter, "language", ESqlStatementType.sstpostgresqlAlterLanguage); 051 addCmd(TBaseType.rrw_alter, "operator", "class", ESqlStatementType.sstpostgresqlAlterOperatorClass); 052 addCmd(TBaseType.rrw_alter, "operator", ESqlStatementType.sstpostgresqlAlterOperator); 053 addCmd(TBaseType.rrw_alter, "protocol", ESqlStatementType.sstgreenplumAlterProtocol); 054 addCmd(TBaseType.rrw_alter, "resource", "queue", ESqlStatementType.sstgreenplumAlterResourceQueue); 055 addCmd(TBaseType.rrw_alter, "role", ESqlStatementType.sstpostgresqlAlterRole); 056 addCmd(TBaseType.rrw_alter, "schema", ESqlStatementType.sstpostgresqlAlterSchema); 057 addCmd(TBaseType.rrw_alter, "sequence", ESqlStatementType.sstpostgresqlAlterSequence); 058 addCmd(TBaseType.rrw_alter, "table", ESqlStatementType.sstaltertable); 059 addCmd(TBaseType.rrw_alter, "tablespace", ESqlStatementType.sstpostgresqlAlterTablespace); 060 061 addCmd(TBaseType.rrw_alter, "trigger", ESqlStatementType.sstpostgresqlAlterTrigger); 062 063 addCmd(TBaseType.rrw_alter, "type", ESqlStatementType.sstpostgresqlAlterType); 064 addCmd(TBaseType.rrw_alter, "user", ESqlStatementType.sstpostgresqlAlterUser); 065 addCmd(TBaseType.rrw_greenplum_analyse, ESqlStatementType.sstpostgresqlAnalyze); 066 addCmd(TBaseType.rrw_analyze, ESqlStatementType.sstpostgresqlAnalyze); 067 068 addCmd(TBaseType.rrw_begin, ESqlStatementType.sstpostgresqlBegin); 069 addCmd(TBaseType.rrw_call, ESqlStatementType.sstcall); 070 071 addCmd(TBaseType.rrw_checkpoint, ESqlStatementType.sstpostgresqlCheckpoint); 072 addCmd(TBaseType.rrw_close, ESqlStatementType.sstpostgresqlClose); 073 074 addCmd(TBaseType.rrw_greenplum_cluster, ESqlStatementType.sstpostgresqlCluster); 075 076 addCmd(TBaseType.rrw_comment, "on", ESqlStatementType.sstpostgresqlComment); 077 078 addCmd(TBaseType.rrw_commit, ESqlStatementType.sstpostgresqlCommit); 079 addCmd(TBaseType.rrw_greenplum_copy, ESqlStatementType.sstpostgresqlCopy); 080 081 addCmd(TBaseType.rrw_create, "aggregate", ESqlStatementType.sstpostgresqlCreateAggregate); 082 addCmd(TBaseType.rrw_create, "cast", ESqlStatementType.sstpostgresqlCreateCast); 083 084 addCmd(TBaseType.rrw_create, "constraint", "trigger", ESqlStatementType.sstcreatetrigger); 085 086 addCmd(TBaseType.rrw_create, "conversion", ESqlStatementType.sstpostgresqlConversion); 087 addCmd(TBaseType.rrw_create, "database", ESqlStatementType.sstpostgresqlCreateDatabase); 088 addCmd(TBaseType.rrw_create, "domain", ESqlStatementType.sstpostgresqlCreateDomain); 089 addCmd(TBaseType.rrw_create, "extension", ESqlStatementType.sstcreateExtension); 090 addCmd(TBaseType.rrw_create, "collation", ESqlStatementType.sstpostgresqlCreateCollation); 091 addCmd(TBaseType.rrw_create, "foreign", "data", "wrapper", ESqlStatementType.sstpostgresqlCreateForeignDataWrapper); 092 addCmd(TBaseType.rrw_create, "foreign", "table", ESqlStatementType.sstpostgresqlCreateForeignTable); 093 addCmd(TBaseType.rrw_create, "resource", "group", ESqlStatementType.sstgreenplumCreateResourceGroup); 094 addCmd(TBaseType.rrw_create, "server", ESqlStatementType.sstpostgresqlCreateServer); 095 addCmd(TBaseType.rrw_create, "text", "search", "configuration", ESqlStatementType.sstpostgresqlCreateTextSearchConfiguration); 096 addCmd(TBaseType.rrw_create, "text", "search", "dictionary", ESqlStatementType.sstpostgresqlCreateTextSearchDictionary); 097 addCmd(TBaseType.rrw_create, "text", "search", "parser", ESqlStatementType.sstpostgresqlCreateTextSearchParser); 098 addCmd(TBaseType.rrw_create, "text", "search", "template", ESqlStatementType.sstpostgresqlCreateTextSearchTemplate); 099 addCmd(TBaseType.rrw_create, "recursive", "view", ESqlStatementType.sstpostgresqlCreateView); 100 addCmd(TBaseType.rrw_create, "or", "replace", "recursive", "view", ESqlStatementType.sstpostgresqlCreateView); 101 102 addCmd(TBaseType.rrw_create, "external", "web", "temporary", "table", ESqlStatementType.sstgreenplumCreateExternalTable); 103 addCmd(TBaseType.rrw_create, "external", "web", "temp", "table", ESqlStatementType.sstgreenplumCreateExternalTable); 104 addCmd(TBaseType.rrw_create, "external", "web", "table", ESqlStatementType.sstgreenplumCreateExternalTable); 105 addCmd(TBaseType.rrw_create, "external", "temporary", "table", ESqlStatementType.sstgreenplumCreateExternalTable); 106 addCmd(TBaseType.rrw_create, "external", "temp", "table", ESqlStatementType.sstgreenplumCreateExternalTable); 107 addCmd(TBaseType.rrw_create, "external", "table", ESqlStatementType.sstgreenplumCreateExternalTable); 108 addCmd(TBaseType.rrw_create, "filespace", ESqlStatementType.sstgreenplumCreateFilespace); 109 110 addCmd(TBaseType.rrw_create, "function", ESqlStatementType.sstpostgresqlCreateFunction); 111 112 addCmd(TBaseType.rrw_create, "global", "temporary", "table", ESqlStatementType.sstcreatetable); 113 addCmd(TBaseType.rrw_create, "global", "temp", "table", ESqlStatementType.sstcreatetable); 114 addCmd(TBaseType.rrw_create, "global", "unlocked", "table", ESqlStatementType.sstcreatetable); 115 116 addCmd(TBaseType.rrw_create, "group", ESqlStatementType.sstpostgresqlCreateGroup); 117 118 addCmd(TBaseType.rrw_create, "index", ESqlStatementType.sstpostgresqlCreateIndex); 119 addCmd(TBaseType.rrw_create, "language", ESqlStatementType.sstpostgresqlCreateLanguage); 120 121 addCmd(TBaseType.rrw_create, "local", "temporary", "table", ESqlStatementType.sstcreatetable); 122 addCmd(TBaseType.rrw_create, "local", "temp", "table", ESqlStatementType.sstcreatetable); 123 addCmd(TBaseType.rrw_create, "local", "unlocked", "table", ESqlStatementType.sstcreatetable); 124 125 addCmd(TBaseType.rrw_create, "materialized", "view", ESqlStatementType.sstpostgresqlCreateMaterializedView); 126 127 addCmd(TBaseType.rrw_create, "operator", ESqlStatementType.sstpostgresqlCreateOperator); 128 129 addCmd(TBaseType.rrw_create, "or", "replace", "trusted", "language", ESqlStatementType.sstpostgresqlCreateFunction); 130 addCmd(TBaseType.rrw_create, "or", "replace", "temporary", "view", ESqlStatementType.sstpostgresqlCreateView); 131 addCmd(TBaseType.rrw_create, "or", "replace", "temp", "view", ESqlStatementType.sstpostgresqlCreateView); 132 addCmd(TBaseType.rrw_create, "or", "replace", "role ", ESqlStatementType.sstpostgresqlCreateRole); 133 addCmd(TBaseType.rrw_create, "or", "replace", "language", ESqlStatementType.sstpostgresqlCreateLanguage); 134 addCmd(TBaseType.rrw_create, "or", "replace", "function", ESqlStatementType.sstpostgresqlCreateFunction); 135 addCmd(TBaseType.rrw_create, "or", "replace", "view", ESqlStatementType.sstpostgresqlCreateView); 136 137 addCmd(TBaseType.rrw_create, "readable", "external", "web", "temporary", "table", ESqlStatementType.sstgreenplumCreateExternalTable); 138 addCmd(TBaseType.rrw_create, "readable", "external", "web", "temp", "table", ESqlStatementType.sstgreenplumCreateExternalTable); 139 addCmd(TBaseType.rrw_create, "readable", "external", "web", "table", ESqlStatementType.sstgreenplumCreateExternalTable); 140 addCmd(TBaseType.rrw_create, "readable", "external", "temporary", "table", ESqlStatementType.sstgreenplumCreateExternalTable); 141 addCmd(TBaseType.rrw_create, "readable", "external", "temp", "table", ESqlStatementType.sstgreenplumCreateExternalTable); 142 addCmd(TBaseType.rrw_create, "readable", "external", "table", ESqlStatementType.sstgreenplumCreateExternalTable); 143 144 addCmd(TBaseType.rrw_create, "resource", "queue", ESqlStatementType.sstgreenplumCreateResourceQueue); 145 146 addCmd(TBaseType.rrw_create, "role", ESqlStatementType.sstpostgresqlCreateRole); 147 addCmd(TBaseType.rrw_create, "rule", ESqlStatementType.sstpostgresqlCreateRule); 148 149 addCmd(TBaseType.rrw_create, "schema", ESqlStatementType.sstpostgresqlCreateSchema); 150 151 addCmd(TBaseType.rrw_create, "sequence", ESqlStatementType.sstpostgresqlCreateSequence); 152 153 addCmd(TBaseType.rrw_create, "table", ESqlStatementType.sstcreatetable); 154 155 addCmd(TBaseType.rrw_create, "tablespace", ESqlStatementType.sstpostgresqlCreateTablespace); 156 157 addCmd(TBaseType.rrw_create, "temporary", "sequence", ESqlStatementType.sstpostgresqlCreateSequence); 158 addCmd(TBaseType.rrw_create, "temporary", "table", ESqlStatementType.sstcreatetable); 159 addCmd(TBaseType.rrw_create, "temporary", "view", ESqlStatementType.sstpostgresqlCreateView); 160 addCmd(TBaseType.rrw_create, "temp", "sequence", ESqlStatementType.sstpostgresqlCreateSequence); 161 addCmd(TBaseType.rrw_create, "temp", "table", ESqlStatementType.sstcreatetable); 162 addCmd(TBaseType.rrw_create, "temp", "view", ESqlStatementType.sstpostgresqlCreateView); 163 164 addCmd(TBaseType.rrw_create, "trigger", ESqlStatementType.sstcreatetrigger); 165 166 addCmd(TBaseType.rrw_create, "trusted", "language", ESqlStatementType.sstpostgresqlCreateLanguage); 167 168 addCmd(TBaseType.rrw_create, "type", ESqlStatementType.sstpostgresqlCreateType); 169 170 addCmd(TBaseType.rrw_create, "unlocked", "table", ESqlStatementType.sstcreatetable); 171 172 addCmd(TBaseType.rrw_create, "user", ESqlStatementType.sstpostgresqlCreateUser); 173 174 addCmd(TBaseType.rrw_create, "view", ESqlStatementType.sstpostgresqlCreateView); 175 176 addCmd(TBaseType.rrw_create, "unique", "index", ESqlStatementType.sstpostgresqlCreateIndex); 177 178 addCmd(TBaseType.rrw_create, "writable", "external", "web", "temporary", "table", ESqlStatementType.sstgreenplumCreateExternalTable); 179 addCmd(TBaseType.rrw_create, "writable", "external", "web", "temp", "table", ESqlStatementType.sstgreenplumCreateExternalTable); 180 addCmd(TBaseType.rrw_create, "writable", "external", "web", "table", ESqlStatementType.sstgreenplumCreateExternalTable); 181 addCmd(TBaseType.rrw_create, "writable", "external", "temporary", "table", ESqlStatementType.sstgreenplumCreateExternalTable); 182 addCmd(TBaseType.rrw_create, "writable", "external", "temp", "table", ESqlStatementType.sstgreenplumCreateExternalTable); 183 addCmd(TBaseType.rrw_create, "writable", "external", "table", ESqlStatementType.sstgreenplumCreateExternalTable); 184 185 addCmd(TBaseType.rrw_deallocate, ESqlStatementType.sstpostgresqlDeallocate); 186 187 addCmd(TBaseType.rrw_declare, ESqlStatementType.sstpostgresqlDeclare); 188 189 addCmd(TBaseType.rrw_delete, ESqlStatementType.sstdelete); 190 191 addCmd(TBaseType.rrw_do, ESqlStatementType.sstpostgresqlDo); 192 193 addCmd(TBaseType.rrw_drop, "aggregate", ESqlStatementType.sstpostgresqlDropAggregate); 194 195 addCmd(TBaseType.rrw_drop, "cast", ESqlStatementType.sstpostgresqlDropCast); 196 197 addCmd(TBaseType.rrw_drop, "conversion", ESqlStatementType.sstpostgresqlDropConversion); 198 199 addCmd(TBaseType.rrw_drop, "database", ESqlStatementType.sstpostgresqlDropDatabase); 200 201 addCmd(TBaseType.rrw_drop, "domain", ESqlStatementType.sstpostgresqlDropDomain); 202 203 addCmd(TBaseType.rrw_drop, "external", "web", "table", ESqlStatementType.sstgreenplumDropExternalTable); 204 addCmd(TBaseType.rrw_drop, "external", "table", ESqlStatementType.sstgreenplumDropExternalTable); 205 206 addCmd(TBaseType.rrw_drop, "filespace", ESqlStatementType.sstgreenplumDropFilespace); 207 208 addCmd(TBaseType.rrw_drop, "function", ESqlStatementType.sstpostgresqlDropFunction); 209 210 addCmd(TBaseType.rrw_drop, "group", ESqlStatementType.sstpostgresqlDropGroup); 211 212 addCmd(TBaseType.rrw_drop, "index", ESqlStatementType.sstdropindex); 213 214 addCmd(TBaseType.rrw_drop, "language", ESqlStatementType.sstpostgresqlDropLanguage); 215 216 addCmd(TBaseType.rrw_drop, "materialized", "view", ESqlStatementType.sstpostgresqlDropMaterializedView); 217 addCmd(TBaseType.rrw_drop, "collation", ESqlStatementType.sstpostgresqlDropCollation); 218 addCmd(TBaseType.rrw_drop, "extension", ESqlStatementType.sstpostgresqlDropExtension); 219 addCmd(TBaseType.rrw_drop, "foreign", "data", "wrapper", ESqlStatementType.sstpostgresqlDropForeignDataWrapper); 220 addCmd(TBaseType.rrw_drop, "foreign", "table", ESqlStatementType.sstpostgresqlDropForeignTable); 221 addCmd(TBaseType.rrw_drop, "protocol", ESqlStatementType.sstgreenplumDropProtocol); 222 addCmd(TBaseType.rrw_drop, "resource", "group", ESqlStatementType.sstgreenplumDropResourceGroup); 223 addCmd(TBaseType.rrw_drop, "server", ESqlStatementType.sstpostgresqlDropServer); 224 addCmd(TBaseType.rrw_drop, "text", "search", "configuration", ESqlStatementType.sstpostgresqlDropTextSearchConfiguration); 225 addCmd(TBaseType.rrw_drop, "text", "search", "dictionary", ESqlStatementType.sstpostgresqlDropTextSearchDictionary); 226 addCmd(TBaseType.rrw_drop, "text", "search", "parser", ESqlStatementType.sstpostgresqlDropTextSearchParser); 227 addCmd(TBaseType.rrw_drop, "text", "search", "template", ESqlStatementType.sstpostgresqlDropTextSearchTemplate); 228 229 addCmd(TBaseType.rrw_drop, "operator", ESqlStatementType.sstpostgresqlDropOperator); 230 231 addCmd(TBaseType.rrw_drop, "owned", ESqlStatementType.sstpostgresqlDropOwned); 232 233 addCmd(TBaseType.rrw_drop, "procedural", "language", ESqlStatementType.sstpostgresqlDropLanguage); 234 235 addCmd(TBaseType.rrw_drop, "resource", "queue", ESqlStatementType.sstgreenplumDropResourceQueue); 236 237 addCmd(TBaseType.rrw_drop, "role", ESqlStatementType.sstpostgresqlDropRole); 238 addCmd(TBaseType.rrw_drop, "rule", ESqlStatementType.sstpostgresqlDropRule); 239 addCmd(TBaseType.rrw_drop, "schema", ESqlStatementType.sstpostgresqlDropSchema); 240 addCmd(TBaseType.rrw_drop, "sequence", ESqlStatementType.sstpostgresqlDropSequence); 241 addCmd(TBaseType.rrw_drop, "table", ESqlStatementType.sstpostgresqlDropTable); 242 addCmd(TBaseType.rrw_drop, "tablespace", ESqlStatementType.sstpostgresqlDropTablespace); 243 244 addCmd(TBaseType.rrw_drop, "trigger", ESqlStatementType.sstpostgresqlDropTrigger); 245 addCmd(TBaseType.rrw_drop, "type", ESqlStatementType.sstpostgresqlDropType); 246 addCmd(TBaseType.rrw_drop, "user", ESqlStatementType.sstpostgresqlDropUser); 247 addCmd(TBaseType.rrw_drop, "view", ESqlStatementType.sstpostgresqlDropView); 248 249 addCmd(TBaseType.rrw_end, ESqlStatementType.sstpostgresqlEnd); 250 251 addCmd(TBaseType.rrw_execute, ESqlStatementType.sstpostgresqlExecute); 252 253 addCmd(TBaseType.rrw_explain, ESqlStatementType.sstpostgresqlExplain); 254 255 addCmd(TBaseType.rrw_fetch, ESqlStatementType.sstFetchFrom); 256 257 addCmd(TBaseType.rrw_grant, ESqlStatementType.sstpostgresqlGrant); 258 259 addCmd(TBaseType.rrw_insert, ESqlStatementType.sstinsert); 260 261 addCmd(TBaseType.rrw_load, ESqlStatementType.sstpostgresqlLoad); 262 263 addCmd(TBaseType.rrw_lock, ESqlStatementType.sstpostgresqlLock); 264 265 addCmd(TBaseType.rrw_move, ESqlStatementType.sstpostgresqlMove); 266 267 addCmd(TBaseType.rrw_prepare, ESqlStatementType.sstpostgresqlPrepare); 268 269 addCmd(TBaseType.rrw_greenplum_reassign, "owned", ESqlStatementType.sstpostgresqlReassignOwned); 270 271 addCmd(TBaseType.rrw_refresh, "materialized", "view", ESqlStatementType.sstpostgresqlRefreshMaterializedView); 272 273 addCmd(TBaseType.rrw_greenplum_reindex, ESqlStatementType.sstpostgresqlReindex); 274 275 addCmd(TBaseType.rrw_release, "savepoint", ESqlStatementType.sstpostgresqlReleaseSavepoint); 276 addCmd(TBaseType.rrw_release, ESqlStatementType.sstpostgresqlReleaseSavepoint); 277 278 addCmd(TBaseType.rrw_reset, ESqlStatementType.sstpostgresqlReset); 279 280 addCmd(TBaseType.rrw_revoke, ESqlStatementType.sstpostgresqlRevoke); 281 282 addCmd(TBaseType.rrw_rollback, ESqlStatementType.sstpostgresqlRollback); 283 284 addCmd(TBaseType.rrw_savepoint, ESqlStatementType.sstpostgresqlSavepoint); 285 286 addCmd(TBaseType.rrw_select, ESqlStatementType.sstselect); 287 addCmd(TBaseType.rrw_table, ESqlStatementType.sstselect); // TABLE t = SELECT * FROM t 288 289 addCmd(TBaseType.rrw_set, "session", "characteristics", "as", "transaction", ESqlStatementType.sstpostgresqlSetTransaction); 290 addCmd(TBaseType.rrw_set, "session", "session", "authorization", ESqlStatementType.sstpostgresqlSetSessionAuthorization); 291 addCmd(TBaseType.rrw_set, "session", "role", ESqlStatementType.sstpostgresqlSetRole); 292 addCmd(TBaseType.rrw_set, "session", "authorization", ESqlStatementType.sstpostgresqlSetSessionAuthorization); 293 addCmd(TBaseType.rrw_set, "transaction", ESqlStatementType.sstpostgresqlSetTransaction); 294 addCmd(TBaseType.rrw_set, "local", "role", ESqlStatementType.sstpostgresqlSetRole); 295 addCmd(TBaseType.rrw_set, "local", "session", "authorization", ESqlStatementType.sstpostgresqlSetSessionAuthorization); 296 addCmd(TBaseType.rrw_set, "role", ESqlStatementType.sstpostgresqlSetRole); 297 addCmd(TBaseType.rrw_set, ESqlStatementType.sstpostgresqlSet); 298 299 addCmd(TBaseType.rrw_show, ESqlStatementType.sstgreenplumShow); 300 301 addCmd(TBaseType.rrw_start, "transaction", ESqlStatementType.sstgreenplumStartTransaction); 302 303 addCmd(TBaseType.rrw_truncate, ESqlStatementType.sstpostgresqlTruncate); 304 305 addCmd(TBaseType.rrw_update, ESqlStatementType.sstupdate); 306 307 addCmd(TBaseType.rrw_greenplum_vacuum, ESqlStatementType.sstgreenplumVacuum); 308 addCmd(TBaseType.rrw_values, ESqlStatementType.sstValues); 309 } 310 311 @Override 312 protected String getToken1Str(int token1) { 313 // Greenplum vendor-specific token mappings 314 switch (token1) { 315 case TBaseType.rrw_greenplum_cluster: 316 return "cluster"; 317 case TBaseType.rrw_greenplum_copy: 318 return "copy"; 319 case TBaseType.rrw_greenplum_reassign: 320 return "reassign"; 321 case TBaseType.rrw_greenplum_reindex: 322 return "reindex"; 323 case TBaseType.rrw_greenplum_vacuum: 324 return "vacuum"; 325 case TBaseType.rrw_greenplum_analyse: 326 return "analyse"; 327 default: 328 return null; 329 } 330 } 331 332 @Override 333 public TCustomSqlStatement issql(TSourceToken pcst, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement) { 334 TCustomSqlStatement ret = null; 335 336 gnewsqlstatementtype = ESqlStatementType.sstinvalid; 337 338 if ((pcst.tokencode == TBaseType.cmtdoublehyphen) 339 || (pcst.tokencode == TBaseType.cmtslashstar) 340 || (pcst.tokencode == TBaseType.lexspace) 341 || (pcst.tokencode == TBaseType.lexnewline) 342 || (pcst.tokentype == ETokenType.ttsemicolon)) { 343 return null; 344 } 345 346 int lcpos = pcst.posinlist; 347 TSourceTokenList lcsourcetokenlist = pcst.container; 348 TCustomSqlStatement lccurrentsqlstatement = psqlstatement; 349 350 //subquery after semicolon or at first line 351 if ((pstate == EFindSqlStateType.stnormal) && (pcst.tokentype == ETokenType.ttleftparenthesis)) { // ( 352 int k = lcsourcetokenlist.solidtokenafterpos(lcpos, TBaseType.rrw_select, 1, "("); 353 if (k > 0) { 354 ret = new TSelectSqlStatement(this.vendor); 355 } 356 357 return ret; 358 } 359 360 //cte 361 if ((pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with)) { 362 ret = findcte(pcst); 363 if ((ret != null)) return ret; 364 } 365 366 gnewsqlstatementtype = getStatementTypeForToken(pcst); 367 368 TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos); 369 switch (gnewsqlstatementtype) { // 370 case sstinvalid: { 371 ret = null; 372 373 if (pstate == EFindSqlStateType.stnormal) { 374 if (pcst.tokencode == TBaseType.label_begin) { 375 ret = new TCommonBlock(this.vendor); 376 gnewsqlstatementtype = ret.sqlstatementtype; 377 } else if (pcst.tokencode == TBaseType.rrw_declare) { 378 ret = new TCommonBlock(this.vendor); 379 gnewsqlstatementtype = ret.sqlstatementtype; 380 } else if (pcst.tokencode == TBaseType.rrw_begin) { 381 ret = new TCommonBlock(this.vendor); 382 gnewsqlstatementtype = ret.sqlstatementtype; 383 } else if (pcst.tokencode == TBaseType.rrw_procedure) { 384 ret = new TPlsqlCreateProcedure(this.vendor); 385 gnewsqlstatementtype = ret.sqlstatementtype; 386 } else if (pcst.tokencode == TBaseType.rrw_function) { 387 ret = new TPlsqlCreateFunction(this.vendor); 388 gnewsqlstatementtype = ret.sqlstatementtype; 389 } else if (pcst.tokencode == TBaseType.rrw_package) { 390 ret = new TPlsqlCreatePackage(this.vendor); 391 gnewsqlstatementtype = ret.sqlstatementtype; 392 } 393 } 394 break; 395 } 396 case sstselect: { 397 boolean lcisnewsql = true; 398 399 if (pstate != EFindSqlStateType.stnormal) { 400 if ((lcprevsolidtoken != null)) { 401 if (lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis) 402 lcisnewsql = false; //subquery 403 else if (lcprevsolidtoken.tokencode == TBaseType.rrw_union) 404 lcisnewsql = false; 405 else if (lcprevsolidtoken.tokencode == TBaseType.rrw_intersect) 406 lcisnewsql = false; 407 else if (lcprevsolidtoken.tokencode == TBaseType.rrw_minus) 408 lcisnewsql = false; 409 else if (lcprevsolidtoken.tokencode == TBaseType.rrw_except) 410 lcisnewsql = false; 411 else if (lcprevsolidtoken.tokencode == TBaseType.rrw_return) 412 lcisnewsql = false; 413 else if (lcprevsolidtoken.tokencode == TBaseType.rrw_as) { 414 if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable) 415 lcisnewsql = false; 416 if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview) 417 lcisnewsql = false; 418 } 419 420 if (lcisnewsql && (lcprevsolidtoken.tokencode == TBaseType.rrw_all)) { 421 TSourceToken lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist); 422 if ((lcpprevsolidtoken != null)) { 423 if (lcpprevsolidtoken.tokencode == TBaseType.rrw_union) 424 lcisnewsql = false; 425 } 426 } 427 428 } 429 430 431 if ((lccurrentsqlstatement != null)) { 432 if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert) 433 lcisnewsql = false; 434 } 435 436 } 437 438 if (lcisnewsql) 439 ret = new TSelectSqlStatement(this.vendor); 440 441 break; 442 } 443 case sstinsert: { 444 boolean lcisnewsql = true; 445 if (pstate != EFindSqlStateType.stnormal) { 446 if ((lccurrentsqlstatement != null)) { 447 448 } 449 } 450 451 if (lcisnewsql) 452 ret = new TInsertSqlStatement(this.vendor); 453 454 break; 455 } 456 case sstupdate: { 457 boolean lcisnewsql = true; 458 if (pstate != EFindSqlStateType.stnormal) { 459 lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos); 460 if ((lcprevsolidtoken != null)) { // 461 if (lcprevsolidtoken.tokencode == TBaseType.rrw_on) 462 lcisnewsql = false; 463 else if (lcprevsolidtoken.tokencode == TBaseType.rrw_for) 464 lcisnewsql = false; 465 } 466 467 TSourceToken lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos, 1, false); 468 if ((lcnextsolidtoken != null)) { 469 if (lcnextsolidtoken.tokentype == ETokenType.ttleftparenthesis) { 470 int k = lcsourcetokenlist.solidtokenafterpos(lcnextsolidtoken.posinlist, TBaseType.rrw_select, 1, "("); 471 if (k == 0) lcisnewsql = false; 472 } 473 } 474 475 476 if ((lccurrentsqlstatement != null)) { 477 } 478 } 479 480 if (lcisnewsql) { 481 ret = new TUpdateSqlStatement(this.vendor); 482 ret.dummytag = 1; // means set clause in update is not found yet, used to separate set clause from set statement 483 } 484 break; 485 } 486 case sstdelete: { 487 boolean lcisnewsql = true; 488 489 if (pstate != EFindSqlStateType.stnormal) { 490 lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos); 491 if ((lcprevsolidtoken != null)) { 492 if (lcprevsolidtoken.tokencode == TBaseType.rrw_on) 493 lcisnewsql = false; 494 } 495 496 if ((lccurrentsqlstatement != null)) { 497 } 498 } 499 500 if (lcisnewsql) 501 ret = new TDeleteSqlStatement(this.vendor); 502 503 break; 504 } 505 case sstmerge: { 506 ret = new TMergeSqlStatement(this.vendor); 507 ret.sqlstatementtype = gnewsqlstatementtype; 508 break; 509 } 510 case sstoraclecommit: { 511 ret = new TUnknownSqlStatement(this.vendor); 512 ret.sqlstatementtype = gnewsqlstatementtype; 513 break; 514 } 515 case sstoraclerollback: { 516 ret = new TUnknownSqlStatement(this.vendor); 517 ret.sqlstatementtype = gnewsqlstatementtype; 518 break; 519 } 520 case sstoraclesavepoint: { 521 ret = new TUnknownSqlStatement(this.vendor); 522 ret.sqlstatementtype = gnewsqlstatementtype; 523 break; 524 } 525 case sstoraclerevoke: { 526 ret = new TUnknownSqlStatement(this.vendor); 527 ret.sqlstatementtype = gnewsqlstatementtype; 528 break; 529 } 530 case sstoraclegrant: { 531 ret = new TUnknownSqlStatement(this.vendor); 532 ret.sqlstatementtype = gnewsqlstatementtype; 533 break; 534 } 535 case sstoracleanalyze: { 536 ret = new TUnknownSqlStatement(this.vendor); 537 ret.sqlstatementtype = gnewsqlstatementtype; 538 break; 539 } 540 case sstoracletruncate: { 541 ret = new TUnknownSqlStatement(this.vendor); 542 ret.sqlstatementtype = gnewsqlstatementtype; 543 break; 544 } 545 case sstcreatetable: 546 case sstgreenplumCreateExternalTable: { 547 ret = new TCreateTableSqlStatement(this.vendor); 548 break; 549 } 550 case sstoraclecreateview: { 551 ret = new TCreateViewSqlStatement(this.vendor); 552 break; 553 } 554 case sstcreatematerializedview: { 555 ret = new TCreateMaterializedSqlStatement(this.vendor); 556 break; 557 } 558 case sstoraclecreateindex: { 559 ret = new TCreateIndexSqlStatement(this.vendor); 560 break; 561 } 562 case sstoraclecreatedatabase: { 563 ret = new TCreateDatabaseSqlStatement(this.vendor); 564 break; 565 } 566 case sstoracledroptable: { 567 ret = new TDropTableSqlStatement(this.vendor); 568 break; 569 } 570 case sstoracledropview: { 571 ret = new TDropViewSqlStatement(this.vendor); 572 break; 573 } 574 case sstoracledropindex: { 575 ret = new TDropIndexSqlStatement(this.vendor); 576 break; 577 } 578 case sstaltertable: { 579 ret = new TAlterTableStatement(this.vendor); 580 break; 581 } 582 case sstoraclealtersession: { 583 ret = new TAlterSessionStatement(this.vendor); 584 break; 585 } 586 case sstplsql_createprocedure: { 587 ret = new TPlsqlCreateProcedure(this.vendor); 588 ret.sqlstatementtype = gnewsqlstatementtype; 589 break; 590 } 591 case sstplsql_createfunction: { 592 ret = new TPlsqlCreateFunction(this.vendor); 593 ret.sqlstatementtype = gnewsqlstatementtype; 594 break; 595 } 596 case sstplsql_createpackage: { 597 ret = new TPlsqlCreatePackage(this.vendor); 598 ret.sqlstatementtype = gnewsqlstatementtype; 599 break; 600 } 601 case sstplsql_createtrigger: { 602 ret = new TPlsqlCreateTrigger(this.vendor); 603 ret.sqlstatementtype = gnewsqlstatementtype; 604 break; 605 } 606 case sstplsql_execimmestmt: { 607 ret = new TExecImmeStmt(this.vendor); 608 break; 609 } 610 case sstoraclecreatepackagebody: { 611 ret = new TPlsqlCreatePackage(this.vendor); 612 ret.sqlstatementtype = ESqlStatementType.sstplsql_createpackage; 613 break; 614 } 615 case sstplsql_createtype_placeholder: { 616 ret = new TPlsqlCreateType_Placeholder(this.vendor); 617 ret.sqlstatementtype = gnewsqlstatementtype; 618 break; 619 } 620 case sstplsql_createtypebody: { 621 ret = new TPlsqlCreateTypeBody(this.vendor); 622 ret.sqlstatementtype = gnewsqlstatementtype; 623 break; 624 } 625 case sstCommentOn: { 626 ret = new TCommentOnSqlStmt(this.vendor); 627 break; 628 } 629 case sstoraclecreatesequence: { 630 ret = new TCreateSequenceStmt(this.vendor); 631 break; 632 } 633 case sstoraclecreatesynonym: { 634 ret = new TCreateSynonymStmt(this.vendor); 635 break; 636 } 637 case sstoraclecreatedirectory: { 638 ret = new TOracleCreateDirectoryStmt(this.vendor); 639 break; 640 } 641 case sstpostgresqlCreateIndex: 642 ret = new TCreateIndexSqlStatement(this.vendor); 643 break; 644 case sstpostgresqlCreateView: 645 ret = new TCreateViewSqlStatement(this.vendor); 646 break; 647 case sstpostgresqlCreateFunction: 648 ret = new TCreateFunctionStmt(this.vendor); 649 break; 650 case sstcreatetrigger: 651 ret = new TCreateTriggerStmt(this.vendor); 652 break; 653 case sstpostgresqlMove: 654 ret = new TMoveStmt(EDbVendor.dbvgreenplum); 655 break; 656 case sstpostgresqlTruncate: 657 ret = new TTruncateStatement(EDbVendor.dbvgreenplum); 658 break; 659 case sstpostgresqlExecute: 660 ret = new TExecuteSqlStatement(EDbVendor.dbvgreenplum); 661 break; 662 case sstValues: 663 ret = new TSelectSqlStatement(EDbVendor.dbvgreenplum); 664 break; 665 case sstpostgresqlDeclare: { 666 boolean lcisnewsql = true; 667 668 TSourceToken lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos, 2, false); 669 if ((lcnextsolidtoken != null)) { 670 if (lcnextsolidtoken.tokencode == TBaseType.rrw_greenplum_CURSOR) { 671 lcisnewsql = false; 672 } 673 } 674 675 676 if (lcisnewsql) 677 ret = new TCommonBlock(this.vendor); 678 else { 679 ret = new TUnknownSqlStatement(this.vendor); 680 } 681 ret.sqlstatementtype = gnewsqlstatementtype; 682 683 break; 684 } 685 case sstpostgresqlSet: 686 ret = new TSetStmt(this.vendor); 687 break; 688 case sstcreateExtension: 689 ret = new TCreateExtensionStmt(this.vendor); 690 break; 691 case sstcall: 692 ret = new TCallStatement(this.vendor); 693 break; 694 case sstpostgresqlCreateSchema: 695 ret = new TCreateSchemaSqlStatement(this.vendor); 696 break; 697 case sstpostgresqlDo: { 698 boolean lcisnewsql = false; 699 700 if (pstate == EFindSqlStateType.stnormal) { 701 TSourceToken lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos, 1, false); 702 if ((lcnextsolidtoken != null)) { 703 if (lcnextsolidtoken.tokencode == TBaseType.rrw_greenplum_function_delimiter) 704 lcisnewsql = true; 705 } 706 } 707 708 if (lcisnewsql) 709 ret = new TDoExecuteBlockStmt(this.vendor); 710 711 break; 712 } 713 case sstpostgresqlComment: 714 ret = new TCommentOnSqlStmt(this.vendor); 715 break; 716 default: { 717 ret = new TUnknownSqlStatement(this.vendor); 718 ret.sqlstatementtype = gnewsqlstatementtype; 719 break; 720 } 721 } // case 722 723 return ret; 724 } 725}