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 288 addCmd(TBaseType.rrw_set, "session", "characteristics", "as", "transaction", ESqlStatementType.sstpostgresqlSetTransaction); 289 addCmd(TBaseType.rrw_set, "session", "session", "authorization", ESqlStatementType.sstpostgresqlSetSessionAuthorization); 290 addCmd(TBaseType.rrw_set, "session", "role", ESqlStatementType.sstpostgresqlSetRole); 291 addCmd(TBaseType.rrw_set, "session", "authorization", ESqlStatementType.sstpostgresqlSetSessionAuthorization); 292 addCmd(TBaseType.rrw_set, "transaction", ESqlStatementType.sstpostgresqlSetTransaction); 293 addCmd(TBaseType.rrw_set, "local", "role", ESqlStatementType.sstpostgresqlSetRole); 294 addCmd(TBaseType.rrw_set, "local", "session", "authorization", ESqlStatementType.sstpostgresqlSetSessionAuthorization); 295 addCmd(TBaseType.rrw_set, "role", ESqlStatementType.sstpostgresqlSetRole); 296 addCmd(TBaseType.rrw_set, ESqlStatementType.sstpostgresqlSet); 297 298 addCmd(TBaseType.rrw_show, ESqlStatementType.sstgreenplumShow); 299 300 addCmd(TBaseType.rrw_start, "transaction", ESqlStatementType.sstgreenplumStartTransaction); 301 302 addCmd(TBaseType.rrw_truncate, ESqlStatementType.sstpostgresqlTruncate); 303 304 addCmd(TBaseType.rrw_update, ESqlStatementType.sstupdate); 305 306 addCmd(TBaseType.rrw_greenplum_vacuum, ESqlStatementType.sstgreenplumVacuum); 307 addCmd(TBaseType.rrw_values, ESqlStatementType.sstValues); 308 } 309 310 @Override 311 protected String getToken1Str(int token1) { 312 // Greenplum vendor-specific token mappings 313 switch (token1) { 314 case TBaseType.rrw_greenplum_cluster: 315 return "cluster"; 316 case TBaseType.rrw_greenplum_copy: 317 return "copy"; 318 case TBaseType.rrw_greenplum_reassign: 319 return "reassign"; 320 case TBaseType.rrw_greenplum_reindex: 321 return "reindex"; 322 case TBaseType.rrw_greenplum_vacuum: 323 return "vacuum"; 324 case TBaseType.rrw_greenplum_analyse: 325 return "analyse"; 326 default: 327 return null; 328 } 329 } 330 331 @Override 332 public TCustomSqlStatement issql(TSourceToken pcst, EFindSqlStateType pstate, TCustomSqlStatement psqlstatement) { 333 TCustomSqlStatement ret = null; 334 335 gnewsqlstatementtype = ESqlStatementType.sstinvalid; 336 337 if ((pcst.tokencode == TBaseType.cmtdoublehyphen) 338 || (pcst.tokencode == TBaseType.cmtslashstar) 339 || (pcst.tokencode == TBaseType.lexspace) 340 || (pcst.tokencode == TBaseType.lexnewline) 341 || (pcst.tokentype == ETokenType.ttsemicolon)) { 342 return null; 343 } 344 345 int lcpos = pcst.posinlist; 346 TSourceTokenList lcsourcetokenlist = pcst.container; 347 TCustomSqlStatement lccurrentsqlstatement = psqlstatement; 348 349 //subquery after semicolon or at first line 350 if ((pstate == EFindSqlStateType.stnormal) && (pcst.tokentype == ETokenType.ttleftparenthesis)) { // ( 351 int k = lcsourcetokenlist.solidtokenafterpos(lcpos, TBaseType.rrw_select, 1, "("); 352 if (k > 0) { 353 ret = new TSelectSqlStatement(this.vendor); 354 } 355 356 return ret; 357 } 358 359 //cte 360 if ((pstate == EFindSqlStateType.stnormal) && (pcst.tokencode == TBaseType.rrw_with)) { 361 ret = findcte(pcst); 362 if ((ret != null)) return ret; 363 } 364 365 gnewsqlstatementtype = getStatementTypeForToken(pcst); 366 367 TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos); 368 switch (gnewsqlstatementtype) { // 369 case sstinvalid: { 370 ret = null; 371 372 if (pstate == EFindSqlStateType.stnormal) { 373 if (pcst.tokencode == TBaseType.label_begin) { 374 ret = new TCommonBlock(this.vendor); 375 gnewsqlstatementtype = ret.sqlstatementtype; 376 } else if (pcst.tokencode == TBaseType.rrw_declare) { 377 ret = new TCommonBlock(this.vendor); 378 gnewsqlstatementtype = ret.sqlstatementtype; 379 } else if (pcst.tokencode == TBaseType.rrw_begin) { 380 ret = new TCommonBlock(this.vendor); 381 gnewsqlstatementtype = ret.sqlstatementtype; 382 } else if (pcst.tokencode == TBaseType.rrw_procedure) { 383 ret = new TPlsqlCreateProcedure(this.vendor); 384 gnewsqlstatementtype = ret.sqlstatementtype; 385 } else if (pcst.tokencode == TBaseType.rrw_function) { 386 ret = new TPlsqlCreateFunction(this.vendor); 387 gnewsqlstatementtype = ret.sqlstatementtype; 388 } else if (pcst.tokencode == TBaseType.rrw_package) { 389 ret = new TPlsqlCreatePackage(this.vendor); 390 gnewsqlstatementtype = ret.sqlstatementtype; 391 } 392 } 393 break; 394 } 395 case sstselect: { 396 boolean lcisnewsql = true; 397 398 if (pstate != EFindSqlStateType.stnormal) { 399 if ((lcprevsolidtoken != null)) { 400 if (lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis) 401 lcisnewsql = false; //subquery 402 else if (lcprevsolidtoken.tokencode == TBaseType.rrw_union) 403 lcisnewsql = false; 404 else if (lcprevsolidtoken.tokencode == TBaseType.rrw_intersect) 405 lcisnewsql = false; 406 else if (lcprevsolidtoken.tokencode == TBaseType.rrw_minus) 407 lcisnewsql = false; 408 else if (lcprevsolidtoken.tokencode == TBaseType.rrw_except) 409 lcisnewsql = false; 410 else if (lcprevsolidtoken.tokencode == TBaseType.rrw_return) 411 lcisnewsql = false; 412 else if (lcprevsolidtoken.tokencode == TBaseType.rrw_as) { 413 if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable) 414 lcisnewsql = false; 415 if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview) 416 lcisnewsql = false; 417 } 418 419 if (lcisnewsql && (lcprevsolidtoken.tokencode == TBaseType.rrw_all)) { 420 TSourceToken lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist); 421 if ((lcpprevsolidtoken != null)) { 422 if (lcpprevsolidtoken.tokencode == TBaseType.rrw_union) 423 lcisnewsql = false; 424 } 425 } 426 427 } 428 429 430 if ((lccurrentsqlstatement != null)) { 431 if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert) 432 lcisnewsql = false; 433 } 434 435 } 436 437 if (lcisnewsql) 438 ret = new TSelectSqlStatement(this.vendor); 439 440 break; 441 } 442 case sstinsert: { 443 boolean lcisnewsql = true; 444 if (pstate != EFindSqlStateType.stnormal) { 445 if ((lccurrentsqlstatement != null)) { 446 447 } 448 } 449 450 if (lcisnewsql) 451 ret = new TInsertSqlStatement(this.vendor); 452 453 break; 454 } 455 case sstupdate: { 456 boolean lcisnewsql = true; 457 if (pstate != EFindSqlStateType.stnormal) { 458 lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos); 459 if ((lcprevsolidtoken != null)) { // 460 if (lcprevsolidtoken.tokencode == TBaseType.rrw_on) 461 lcisnewsql = false; 462 else if (lcprevsolidtoken.tokencode == TBaseType.rrw_for) 463 lcisnewsql = false; 464 } 465 466 TSourceToken lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos, 1, false); 467 if ((lcnextsolidtoken != null)) { 468 if (lcnextsolidtoken.tokentype == ETokenType.ttleftparenthesis) { 469 int k = lcsourcetokenlist.solidtokenafterpos(lcnextsolidtoken.posinlist, TBaseType.rrw_select, 1, "("); 470 if (k == 0) lcisnewsql = false; 471 } 472 } 473 474 475 if ((lccurrentsqlstatement != null)) { 476 } 477 } 478 479 if (lcisnewsql) { 480 ret = new TUpdateSqlStatement(this.vendor); 481 ret.dummytag = 1; // means set clause in update is not found yet, used to separate set clause from set statement 482 } 483 break; 484 } 485 case sstdelete: { 486 boolean lcisnewsql = true; 487 488 if (pstate != EFindSqlStateType.stnormal) { 489 lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos); 490 if ((lcprevsolidtoken != null)) { 491 if (lcprevsolidtoken.tokencode == TBaseType.rrw_on) 492 lcisnewsql = false; 493 } 494 495 if ((lccurrentsqlstatement != null)) { 496 } 497 } 498 499 if (lcisnewsql) 500 ret = new TDeleteSqlStatement(this.vendor); 501 502 break; 503 } 504 case sstmerge: { 505 ret = new TMergeSqlStatement(this.vendor); 506 ret.sqlstatementtype = gnewsqlstatementtype; 507 break; 508 } 509 case sstoraclecommit: { 510 ret = new TUnknownSqlStatement(this.vendor); 511 ret.sqlstatementtype = gnewsqlstatementtype; 512 break; 513 } 514 case sstoraclerollback: { 515 ret = new TUnknownSqlStatement(this.vendor); 516 ret.sqlstatementtype = gnewsqlstatementtype; 517 break; 518 } 519 case sstoraclesavepoint: { 520 ret = new TUnknownSqlStatement(this.vendor); 521 ret.sqlstatementtype = gnewsqlstatementtype; 522 break; 523 } 524 case sstoraclerevoke: { 525 ret = new TUnknownSqlStatement(this.vendor); 526 ret.sqlstatementtype = gnewsqlstatementtype; 527 break; 528 } 529 case sstoraclegrant: { 530 ret = new TUnknownSqlStatement(this.vendor); 531 ret.sqlstatementtype = gnewsqlstatementtype; 532 break; 533 } 534 case sstoracleanalyze: { 535 ret = new TUnknownSqlStatement(this.vendor); 536 ret.sqlstatementtype = gnewsqlstatementtype; 537 break; 538 } 539 case sstoracletruncate: { 540 ret = new TUnknownSqlStatement(this.vendor); 541 ret.sqlstatementtype = gnewsqlstatementtype; 542 break; 543 } 544 case sstcreatetable: 545 case sstgreenplumCreateExternalTable: { 546 ret = new TCreateTableSqlStatement(this.vendor); 547 break; 548 } 549 case sstoraclecreateview: { 550 ret = new TCreateViewSqlStatement(this.vendor); 551 break; 552 } 553 case sstcreatematerializedview: { 554 ret = new TCreateMaterializedSqlStatement(this.vendor); 555 break; 556 } 557 case sstoraclecreateindex: { 558 ret = new TCreateIndexSqlStatement(this.vendor); 559 break; 560 } 561 case sstoraclecreatedatabase: { 562 ret = new TCreateDatabaseSqlStatement(this.vendor); 563 break; 564 } 565 case sstoracledroptable: { 566 ret = new TDropTableSqlStatement(this.vendor); 567 break; 568 } 569 case sstoracledropview: { 570 ret = new TDropViewSqlStatement(this.vendor); 571 break; 572 } 573 case sstoracledropindex: { 574 ret = new TDropIndexSqlStatement(this.vendor); 575 break; 576 } 577 case sstaltertable: { 578 ret = new TAlterTableStatement(this.vendor); 579 break; 580 } 581 case sstoraclealtersession: { 582 ret = new TAlterSessionStatement(this.vendor); 583 break; 584 } 585 case sstplsql_createprocedure: { 586 ret = new TPlsqlCreateProcedure(this.vendor); 587 ret.sqlstatementtype = gnewsqlstatementtype; 588 break; 589 } 590 case sstplsql_createfunction: { 591 ret = new TPlsqlCreateFunction(this.vendor); 592 ret.sqlstatementtype = gnewsqlstatementtype; 593 break; 594 } 595 case sstplsql_createpackage: { 596 ret = new TPlsqlCreatePackage(this.vendor); 597 ret.sqlstatementtype = gnewsqlstatementtype; 598 break; 599 } 600 case sstplsql_createtrigger: { 601 ret = new TPlsqlCreateTrigger(this.vendor); 602 ret.sqlstatementtype = gnewsqlstatementtype; 603 break; 604 } 605 case sstplsql_execimmestmt: { 606 ret = new TExecImmeStmt(this.vendor); 607 break; 608 } 609 case sstoraclecreatepackagebody: { 610 ret = new TPlsqlCreatePackage(this.vendor); 611 ret.sqlstatementtype = ESqlStatementType.sstplsql_createpackage; 612 break; 613 } 614 case sstplsql_createtype_placeholder: { 615 ret = new TPlsqlCreateType_Placeholder(this.vendor); 616 ret.sqlstatementtype = gnewsqlstatementtype; 617 break; 618 } 619 case sstplsql_createtypebody: { 620 ret = new TPlsqlCreateTypeBody(this.vendor); 621 ret.sqlstatementtype = gnewsqlstatementtype; 622 break; 623 } 624 case sstCommentOn: { 625 ret = new TCommentOnSqlStmt(this.vendor); 626 break; 627 } 628 case sstoraclecreatesequence: { 629 ret = new TCreateSequenceStmt(this.vendor); 630 break; 631 } 632 case sstoraclecreatesynonym: { 633 ret = new TCreateSynonymStmt(this.vendor); 634 break; 635 } 636 case sstoraclecreatedirectory: { 637 ret = new TOracleCreateDirectoryStmt(this.vendor); 638 break; 639 } 640 case sstpostgresqlCreateIndex: 641 ret = new TCreateIndexSqlStatement(this.vendor); 642 break; 643 case sstpostgresqlCreateView: 644 ret = new TCreateViewSqlStatement(this.vendor); 645 break; 646 case sstpostgresqlCreateFunction: 647 ret = new TCreateFunctionStmt(this.vendor); 648 break; 649 case sstcreatetrigger: 650 ret = new TCreateTriggerStmt(this.vendor); 651 break; 652 case sstpostgresqlMove: 653 ret = new TMoveStmt(EDbVendor.dbvgreenplum); 654 break; 655 case sstpostgresqlTruncate: 656 ret = new TTruncateStatement(EDbVendor.dbvgreenplum); 657 break; 658 case sstpostgresqlExecute: 659 ret = new TExecuteSqlStatement(EDbVendor.dbvgreenplum); 660 break; 661 case sstValues: 662 ret = new TSelectSqlStatement(EDbVendor.dbvgreenplum); 663 break; 664 case sstpostgresqlDeclare: { 665 boolean lcisnewsql = true; 666 667 TSourceToken lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos, 2, false); 668 if ((lcnextsolidtoken != null)) { 669 if (lcnextsolidtoken.tokencode == TBaseType.rrw_greenplum_CURSOR) { 670 lcisnewsql = false; 671 } 672 } 673 674 675 if (lcisnewsql) 676 ret = new TCommonBlock(this.vendor); 677 else { 678 ret = new TUnknownSqlStatement(this.vendor); 679 } 680 ret.sqlstatementtype = gnewsqlstatementtype; 681 682 break; 683 } 684 case sstpostgresqlSet: 685 ret = new TSetStmt(this.vendor); 686 break; 687 case sstcreateExtension: 688 ret = new TCreateExtensionStmt(this.vendor); 689 break; 690 case sstcall: 691 ret = new TCallStatement(this.vendor); 692 break; 693 case sstpostgresqlCreateSchema: 694 ret = new TCreateSchemaSqlStatement(this.vendor); 695 break; 696 case sstpostgresqlDo: { 697 boolean lcisnewsql = false; 698 699 if (pstate == EFindSqlStateType.stnormal) { 700 TSourceToken lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos, 1, false); 701 if ((lcnextsolidtoken != null)) { 702 if (lcnextsolidtoken.tokencode == TBaseType.rrw_greenplum_function_delimiter) 703 lcisnewsql = true; 704 } 705 } 706 707 if (lcisnewsql) 708 ret = new TDoExecuteBlockStmt(this.vendor); 709 710 break; 711 } 712 case sstpostgresqlComment: 713 ret = new TCommentOnSqlStmt(this.vendor); 714 break; 715 default: { 716 ret = new TUnknownSqlStatement(this.vendor); 717 ret.sqlstatementtype = gnewsqlstatementtype; 718 break; 719 } 720 } // case 721 722 return ret; 723 } 724}