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 * GaussDB SQL command resolver. 010 * Migrated from TSqlCmds monolithic implementation. 011 * 012 * @since 3.1.0.9 013 */ 014public class TSqlCmdsGaussdb extends AbstractSqlCmds { 015 016 public TSqlCmdsGaussdb() { 017 super(EDbVendor.dbvgaussdb); 018 } 019 020 @Override 021 protected String getToken1Str(int token1) { 022 // GaussDB uses PostgreSQL-style vendor-specific tokens 023 switch (token1) { 024 case TBaseType.rrw_postgresql_cluster: 025 return "cluster"; 026 case TBaseType.rrw_postgresql_copy: 027 return "copy"; 028 case TBaseType.rrw_postgresql_discard: 029 return "discard"; 030 case TBaseType.rrw_postgresql_listen: 031 return "listen"; 032 case TBaseType.rrw_postgresql_notify: 033 return "notify"; 034 case TBaseType.rrw_postgresql_reassign: 035 return "reassign"; 036 case TBaseType.rrw_postgresql_reindex: 037 return "reindex"; 038 case TBaseType.rrw_postgresql_security: 039 return "security"; 040 case TBaseType.rrw_postgresql_unlisten: 041 return "unlisten"; 042 case TBaseType.rrw_postgresql_vacuum: 043 return "vacuum"; 044 case TBaseType.rrw_postgresql_import: 045 return "import"; 046 default: 047 return null; 048 } 049 } 050 051 @Override 052 protected void initializeCommands() { 053 // Commands must be sorted alphabetically 054 // Extracted from TSqlCmds.initgaussdbcmds() lines 2670-3014 055 056 addCmd(TBaseType.rrw_abort, " ", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlabort); 057 addCmd(TBaseType.rrw_alter, "aggregate", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlAlterAggregate); 058 addCmd(TBaseType.rrw_alter, "collation", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlAlterCollation); 059 addCmd(TBaseType.rrw_alter, "conversion", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlAlterConversion); 060 addCmd(TBaseType.rrw_alter, "database", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlalterdatabase); 061 addCmd(TBaseType.rrw_alter, "default", "privileges", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlAlterDefaultPrivileges); 062 addCmd(TBaseType.rrw_alter, "domain", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlAlterDomain); 063 addCmd(TBaseType.rrw_alter, "event", "trigger", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlAlterEventTrigger); 064 addCmd(TBaseType.rrw_alter, "extension", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlAlterExtension); 065 addCmd(TBaseType.rrw_alter, "foreign", "data", "wrapper", " ", " ", " ", ESqlStatementType.sstpostgresqlAlterForeignDataWrapper); 066 addCmd(TBaseType.rrw_alter, "foreign", "Table", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlAlterForeignTable); 067 068 addCmd(TBaseType.rrw_alter, "function", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlAlterfunction); 069 addCmd(TBaseType.rrw_alter, "group", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlAlterGroup); 070 addCmd(TBaseType.rrw_alter, "index", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlAlterIndex); 071 addCmd(TBaseType.rrw_alter, "language", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlAlterLanguage); 072 addCmd(TBaseType.rrw_alter, "large", "object", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlAlterLargeObject); 073 addCmd(TBaseType.rrw_alter, "materialized", "view", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlAlterMaterializedView); 074 addCmd(TBaseType.rrw_alter, "operator", "family", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlAlterOperatorFamily); 075 addCmd(TBaseType.rrw_alter, "operator", "class", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlAlterOperatorClass); 076 addCmd(TBaseType.rrw_alter, "operator", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlAlterOperator); 077 addCmd(TBaseType.rrw_alter, "package", " ", " ", " ", " ", " ", ESqlStatementType.sstAlterPackage); 078 addCmd(TBaseType.rrw_alter, "policy", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlAlterPolicy); 079 addCmd(TBaseType.rrw_alter, "procedural", "language", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlAlterLanguage); 080 addCmd(TBaseType.rrw_alter, "procedure", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlAlterProcedure); 081 addCmd(TBaseType.rrw_alter, "publication", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlAlterPublication); 082 addCmd(TBaseType.rrw_alter, "role", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlAlterRole); 083 addCmd(TBaseType.rrw_alter, "routine", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlAlterRoutine); 084 addCmd(TBaseType.rrw_alter, "rule", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlAlterRule); 085 addCmd(TBaseType.rrw_alter, "schema", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlAlterSchema); 086 addCmd(TBaseType.rrw_alter, "sequence", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlAlterSequence); 087 addCmd(TBaseType.rrw_alter, "server", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlAlterServer); 088 addCmd(TBaseType.rrw_alter, "statistics", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlAlterStatistics); 089 addCmd(TBaseType.rrw_alter, "subscription", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlAlterSubscription); 090 addCmd(TBaseType.rrw_alter, "synonym", " ", " ", " ", " ", " ", ESqlStatementType.sstAlterSynonym); 091 addCmd(TBaseType.rrw_alter, "system", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlAlterSystem); 092 093 addCmd(TBaseType.rrw_alter, "table", " ", " ", " ", " ", " ", ESqlStatementType.sstaltertable); 094 addCmd(TBaseType.rrw_alter, "tablespace", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlAlterTablespace); 095 096 addCmd(TBaseType.rrw_alter, "text", "search", "configuration", " ", " ", " ", ESqlStatementType.sstpostgresqlAlterTextSearchConfiguration); 097 addCmd(TBaseType.rrw_alter, "text", "search", "dictionary", " ", " ", " ", ESqlStatementType.sstpostgresqlAlterTextSearchDictionary); 098 addCmd(TBaseType.rrw_alter, "text", "search", "parser", " ", " ", " ", ESqlStatementType.sstpostgresqlAlterTextSearchParser); 099 addCmd(TBaseType.rrw_alter, "text", "search", "template", " ", " ", " ", ESqlStatementType.sstpostgresqlAlterTextSearchTemplate); 100 addCmd(TBaseType.rrw_alter, "trigger", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlAlterTrigger); 101 addCmd(TBaseType.rrw_alter, "type", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlAlterType); 102 addCmd(TBaseType.rrw_alter, "user", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlAlterUser); 103 addCmd(TBaseType.rrw_alter, "user", "mapping", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlAlterUserMapping); 104 addCmd(TBaseType.rrw_alter, "view", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlAlterView); 105 addCmd(TBaseType.rrw_analyze, " ", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlAnalyze); 106 107 // begin is recognized in issql() method. 108 // addCmd(TBaseType.rrw_begin, " ", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlBegin); 109 110 addCmd(TBaseType.rrw_call, " ", " ", " ", " ", " ", " ", ESqlStatementType.sstcall); 111 112 addCmd(TBaseType.rrw_checkpoint, " ", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlCheckpoint); 113 addCmd(TBaseType.rrw_close, " ", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlClose); 114 115 addCmd(TBaseType.rrw_postgresql_cluster, " ", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlCluster); 116 117 addCmd(TBaseType.rrw_comment, " ", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlComment); 118 119 addCmd(TBaseType.rrw_commit, " ", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlCommit); 120 addCmd(TBaseType.rrw_commit, "prepared", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlCommitPrepared); 121 addCmd(TBaseType.rrw_postgresql_copy, " ", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlCopy); 122 123 addCmd(TBaseType.rrw_create, "access", "method", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlCreateAccessMethod); 124 addCmd(TBaseType.rrw_create, "aggregate", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlCreateAggregate); 125 addCmd(TBaseType.rrw_create, "assertion", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlCreateAssertion); 126 addCmd(TBaseType.rrw_create, "cast", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlCreateCast); 127 addCmd(TBaseType.rrw_create, "collation", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlCreateCollation); 128 129 addCmd(TBaseType.rrw_create, "constraint", "trigger", " ", " ", " ", " ", ESqlStatementType.sstcreatetrigger); 130 131 addCmd(TBaseType.rrw_create, "conversion", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlConversion); 132 addCmd(TBaseType.rrw_create, "database", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlCreateDatabase); 133 addCmd(TBaseType.rrw_create, "default", "conversion", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlConversion); 134 addCmd(TBaseType.rrw_create, "domain", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlCreateDomain); 135 addCmd(TBaseType.rrw_create, "event", "trigger", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlCreateEventTrigger); 136 addCmd(TBaseType.rrw_create, "extension", " ", " ", " ", " ", " ", ESqlStatementType.sstcreateExtension); 137 138 addCmd(TBaseType.rrw_create, "foreign", "data", "wrapper", " ", " ", " ", ESqlStatementType.sstpostgresqlCreateForeignDataWrapper); 139 addCmd(TBaseType.rrw_create, "foreign", "table", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlCreateForeignTable); 140 addCmd(TBaseType.rrw_create, "function", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlCreateFunction); 141 142 addCmd(TBaseType.rrw_create, "global", "index", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlCreateIndex); 143 144 addCmd(TBaseType.rrw_create, "global", "temp", "table", " ", " ", " ", ESqlStatementType.sstcreatetable); 145 addCmd(TBaseType.rrw_create, "global", "temporary", "table", " ", " ", " ", ESqlStatementType.sstcreatetable); 146 addCmd(TBaseType.rrw_create, "global", "unlocked", "table", " ", " ", " ", ESqlStatementType.sstcreatetable); 147 addCmd(TBaseType.rrw_create, "global", "unique", "index", " ", " ", " ", ESqlStatementType.sstpostgresqlCreateIndex); 148 149 addCmd(TBaseType.rrw_create, "group", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlCreateGroup); 150 151 addCmd(TBaseType.rrw_create, "incremental", "materialized", "view", " ", " ", " ", ESqlStatementType.sstcreatematerializedview); 152 153 addCmd(TBaseType.rrw_create, "index", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlCreateIndex); 154 addCmd(TBaseType.rrw_create, "language", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlCreateLanguage); 155 156 addCmd(TBaseType.rrw_create, "local", "temp", "table", " ", " ", " ", ESqlStatementType.sstcreatetable); 157 addCmd(TBaseType.rrw_create, "local", "temporary", "table", " ", " ", " ", ESqlStatementType.sstcreatetable); 158 addCmd(TBaseType.rrw_create, "local", "unlocked", "table", " ", " ", " ", ESqlStatementType.sstcreatetable); 159 160 addCmd(TBaseType.rrw_create, "materialized", "view", " ", " ", " ", " ", ESqlStatementType.sstcreatematerializedview); 161 162 addCmd(TBaseType.rrw_create, "operator", "family", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlCreateOperatorFimaly); 163 addCmd(TBaseType.rrw_create, "operator", "class", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlCreateOperatorClass); 164 addCmd(TBaseType.rrw_create, "operator", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlCreateOperator); 165 166 addCmd(TBaseType.rrw_create, "or", "replace", "function", " ", " ", " ", ESqlStatementType.sstpostgresqlCreateFunction); 167 addCmd(TBaseType.rrw_create, "or", "replace", "language", " ", " ", " ", ESqlStatementType.sstpostgresqlCreateLanguage); 168 169 addCmd(TBaseType.rrw_create,"or","replace","package","body"," "," ", ESqlStatementType.sstoraclecreatepackagebody); 170 addCmd(TBaseType.rrw_create,"or","replace","package"," "," "," ", ESqlStatementType.sstplsql_createpackage); 171 172 173 addCmd(TBaseType.rrw_create, "or", "replace", "procedural", "language", " ", " ", ESqlStatementType.sstpostgresqlCreateLanguage); 174 addCmd(TBaseType.rrw_create, "or", "replace", "procedure", " ", " ", " ", ESqlStatementType.sstcreateprocedure); 175 addCmd(TBaseType.rrw_create, "or", "replace", "role ", " ", " ", " ", ESqlStatementType.sstpostgresqlCreateRole); 176 addCmd(TBaseType.rrw_create, "or", "replace", "rule ", " ", " ", " ", ESqlStatementType.sstpostgresqlCreateRule); 177 addCmd(TBaseType.rrw_create,"or","replace","synonym"," "," "," ", ESqlStatementType.sstcreatesynonym); 178 179 addCmd(TBaseType.rrw_create, "or", "replace", "temp", "view", " ", " ", ESqlStatementType.sstpostgresqlCreateView); 180 addCmd(TBaseType.rrw_create, "or", "replace", "temporary", "view", " ", " ", ESqlStatementType.sstpostgresqlCreateView); 181 addCmd(TBaseType.rrw_create, "or", "replace", "trigger", " ", " ", " ", ESqlStatementType.sstcreatetrigger); 182 addCmd(TBaseType.rrw_create, "or", "replace", "trusted", "language", " ", " ", ESqlStatementType.sstpostgresqlCreateLanguage); 183 addCmd(TBaseType.rrw_create, "or", "replace", "trusted", "procedural", "language", " ", ESqlStatementType.sstpostgresqlCreateLanguage); 184 addCmd(TBaseType.rrw_create, "or", "replace", "view", " ", " ", " ", ESqlStatementType.sstpostgresqlCreateView); 185 186 addCmd(TBaseType.rrw_create,"package","body"," "," "," "," ", ESqlStatementType.sstoraclecreatepackagebody); 187 addCmd(TBaseType.rrw_create,"package"," "," "," "," "," ", ESqlStatementType.sstplsql_createpackage); 188 189 addCmd(TBaseType.rrw_create, "policy", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlCreatePolicy); 190 addCmd(TBaseType.rrw_create, "procedural", "language", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlCreateLanguage); 191 addCmd(TBaseType.rrw_create, "procedure", " ", " ", " ", " ", " ", ESqlStatementType.sstcreateprocedure); 192 addCmd(TBaseType.rrw_create, "publication", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlCreatePublication); 193 194 addCmd(TBaseType.rrw_create, "role", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlCreateRole); 195 addCmd(TBaseType.rrw_create, "rule", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlCreateRule); 196 197 198 addCmd(TBaseType.rrw_create, "schema", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlCreateSchema); 199 200 addCmd(TBaseType.rrw_create, "sequence", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlCreateSequence); 201 202 203 addCmd(TBaseType.rrw_create, "server", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlCreateServer); 204 205 addCmd(TBaseType.rrw_create, "statistics", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlCreateStatistics); 206 addCmd(TBaseType.rrw_create, "subscription", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlCreateSubscription); 207 addCmd(TBaseType.rrw_create,"synonym"," "," "," "," "," ", ESqlStatementType.sstcreatesynonym); 208 209 addCmd(TBaseType.rrw_create, "table", " ", " ", " ", " ", " ", ESqlStatementType.sstcreatetable); 210 211 addCmd(TBaseType.rrw_create, "tablespace", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlCreateTablespace); 212 213 addCmd(TBaseType.rrw_create, "temp", "sequence", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlCreateSequence); 214 addCmd(TBaseType.rrw_create, "temp", "table", " ", " ", " ", " ", ESqlStatementType.sstcreatetable); 215 addCmd(TBaseType.rrw_create, "temp", "view", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlCreateView); 216 addCmd(TBaseType.rrw_create, "temporary", "sequence", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlCreateSequence); 217 addCmd(TBaseType.rrw_create, "temporary", "table", " ", " ", " ", " ", ESqlStatementType.sstcreatetable); 218 addCmd(TBaseType.rrw_create, "temporary", "view", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlCreateView); 219 220 addCmd(TBaseType.rrw_create, "text", "search", "configuration", " ", " ", " ", ESqlStatementType.sstpostgresqlCreateTextSearchConfiguration); 221 addCmd(TBaseType.rrw_create, "text", "search", "dictionary", " ", " ", " ", ESqlStatementType.sstpostgresqlCreateTextSearchDictionary); 222 addCmd(TBaseType.rrw_create, "text", "search", "parser", " ", " ", " ", ESqlStatementType.sstpostgresqlCreateTextSearchParser); 223 addCmd(TBaseType.rrw_create, "text", "search", "template", " ", " ", " ", ESqlStatementType.sstpostgresqlCreateTextSearchTemplate); 224 225 addCmd(TBaseType.rrw_create, "transform", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlCreateTransform); 226 addCmd(TBaseType.rrw_create, "trigger", " ", " ", " ", " ", " ", ESqlStatementType.sstcreatetrigger); 227 228 addCmd(TBaseType.rrw_create, "trusted", "language", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlCreateLanguage); 229 addCmd(TBaseType.rrw_create, "trusted", "procedural", "language", " ", " ", " ", ESqlStatementType.sstpostgresqlCreateLanguage); 230 231 addCmd(TBaseType.rrw_create, "type", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlCreateType); 232 233 addCmd(TBaseType.rrw_create, "unlocked", "table", " ", " ", " ", " ", ESqlStatementType.sstcreatetable); 234 addCmd(TBaseType.rrw_create, "unlogged", "sequence", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlCreateSequence); 235 addCmd(TBaseType.rrw_create, "unlogged", "table", " ", " ", " ", " ", ESqlStatementType.sstcreatetable); 236 237 addCmd(TBaseType.rrw_create, "user", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlCreateUser); 238 239 addCmd(TBaseType.rrw_create, "user", "mapping", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlCreateUserMapping); 240 241 addCmd(TBaseType.rrw_create, "view", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlCreateView); 242 243 addCmd(TBaseType.rrw_create, "unique", "index", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlCreateIndex); 244 245 246 addCmd(TBaseType.rrw_deallocate, " ", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlDeallocate); 247 248 addCmd(TBaseType.rrw_declare, " ", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlDeclare); 249 250 addCmd(TBaseType.rrw_delete, " ", " ", " ", " ", " ", " ", ESqlStatementType.sstdelete); 251 252 addCmd(TBaseType.rrw_postgresql_discard, " ", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlDiscard); 253 254 addCmd(TBaseType.rrw_do, " ", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlDo); 255 256 addCmd(TBaseType.rrw_drop, "access", "method", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlDropAccessMethod); 257 addCmd(TBaseType.rrw_drop, "aggregate", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlDropAggregate); 258 addCmd(TBaseType.rrw_drop, "assertion", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlDropAssertion); 259 260 addCmd(TBaseType.rrw_drop, "cast", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlDropCast); 261 262 addCmd(TBaseType.rrw_drop, "collation", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlDropCollation); 263 264 addCmd(TBaseType.rrw_drop, "conversion", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlDropConversion); 265 266 addCmd(TBaseType.rrw_drop, "database", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlDropDatabase); 267 268 addCmd(TBaseType.rrw_drop, "domain", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlDropDomain); 269 addCmd(TBaseType.rrw_drop, "event", "trigger", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlDropEventTrigger); 270 addCmd(TBaseType.rrw_drop, "extension", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlDropExtension); 271 272 addCmd(TBaseType.rrw_drop, "foreign", "data", "wrapper", " ", " ", " ", ESqlStatementType.sstpostgresqlDropForeignDataWrapper); 273 274 addCmd(TBaseType.rrw_drop, "foreign", "table", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlDropForeignTable); 275 276 addCmd(TBaseType.rrw_drop, "function", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlDropFunction); 277 278 addCmd(TBaseType.rrw_drop, "group", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlDropGroup); 279 280 addCmd(TBaseType.rrw_drop, "index", " ", " ", " ", " ", " ", ESqlStatementType.sstdropindex); 281 282 addCmd(TBaseType.rrw_drop, "language", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlDropLanguage); 283 284 addCmd(TBaseType.rrw_drop, "materialized", "view", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlDropMaterializedView); 285 286 addCmd(TBaseType.rrw_drop, "operator", "family ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlDropOperatorFamily); 287 addCmd(TBaseType.rrw_drop, "operator", "class", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlDropOperatorClass); 288 addCmd(TBaseType.rrw_drop, "operator", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlDropOperator); 289 290 addCmd(TBaseType.rrw_drop, "owned", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlDropOwned); 291 addCmd(TBaseType.rrw_drop, "policy", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlDropPolicy); 292 addCmd(TBaseType.rrw_drop, "procedural", "language", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlDropLanguage); 293 addCmd(TBaseType.rrw_drop, "procedure", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlDropProcedure); 294 addCmd(TBaseType.rrw_drop, "publication", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlDropPublication); 295 296 addCmd(TBaseType.rrw_drop, "role", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlDropRole); 297 addCmd(TBaseType.rrw_drop, "routine", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlDropRoutine); 298 addCmd(TBaseType.rrw_drop, "rule", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlDropRule); 299 addCmd(TBaseType.rrw_drop, "schema", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlDropSchema); 300 addCmd(TBaseType.rrw_drop, "sequence", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlDropSequence); 301 addCmd(TBaseType.rrw_drop, "server", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlDropServer); 302 addCmd(TBaseType.rrw_drop, "statistics", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlDropStatistics); 303 addCmd(TBaseType.rrw_drop, "subscription", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlDropSubscription); 304 addCmd(TBaseType.rrw_drop,"synonym"," "," "," "," "," ", ESqlStatementType.sstdropsynonym); 305 addCmd(TBaseType.rrw_drop, "table", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlDropTable); 306 addCmd(TBaseType.rrw_drop, "tablespace", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlDropTablespace); 307 308 addCmd(TBaseType.rrw_drop, "text", "search", "configuration", " ", " ", " ", ESqlStatementType.sstpostgresqlDropTextSearchConfiguration); 309 addCmd(TBaseType.rrw_drop, "text", "search", "dictionary", " ", " ", " ", ESqlStatementType.sstpostgresqlDropTextSearchDictionary); 310 addCmd(TBaseType.rrw_drop, "text", "search", "parser", " ", " ", " ", ESqlStatementType.sstpostgresqlDropTextSearchParser); 311 addCmd(TBaseType.rrw_drop, "text", "search", "template", " ", " ", " ", ESqlStatementType.sstpostgresqlDropTextSearchTemplate); 312 addCmd(TBaseType.rrw_drop, "transform", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlDropTransform); 313 addCmd(TBaseType.rrw_drop, "trigger", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlDropTrigger); 314 addCmd(TBaseType.rrw_drop, "type", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlDropType); 315 addCmd(TBaseType.rrw_drop, "user", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlDropUser); 316 addCmd(TBaseType.rrw_drop, "user", "mapping", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlDropUserMapping); 317 addCmd(TBaseType.rrw_drop, "view", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlDropView); 318 319 addCmd(TBaseType.rrw_end, " ", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlEnd); 320 321 addCmd(TBaseType.rrw_execute, " ", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlExecute); 322 323 addCmd(TBaseType.rrw_explain, " ", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlExplain); 324 325 addCmd(TBaseType.rrw_fetch, " ", " ", " ", " ", " ", " ", ESqlStatementType.sstFetchFrom); 326 327 addCmd(TBaseType.rrw_grant, " ", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlGrant); 328 addCmd(TBaseType.rrw_postgresql_import, "foreign", "schema", " ", " ", " ", " ", ESqlStatementType.sstPostgresqlImport); 329 addCmd(TBaseType.rrw_insert, " ", " ", " ", " ", " ", " ", ESqlStatementType.sstinsert); 330 331 addCmd(TBaseType.rrw_postgresql_listen, " ", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlListen); 332 333 addCmd(TBaseType.rrw_load, " ", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlLoad); 334 335 addCmd(TBaseType.rrw_lock, " ", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlLock); 336 addCmd(TBaseType.rrw_merge," "," "," "," "," "," ", ESqlStatementType.sstmerge); 337 338 addCmd(TBaseType.rrw_move, " ", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlMove); 339 340 addCmd(TBaseType.rrw_postgresql_notify, " ", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlNotify); 341 342 addCmd(TBaseType.rrw_plpgsql_function_delimiter, " ", " ", " ", " ", " ", " ", ESqlStatementType.sstPostgresqlBlock); 343 344 345 addCmd(TBaseType.rrw_prepare, " ", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlPrepare); 346 347 addCmd(TBaseType.rrw_prepare, "transaction", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlPrepareTransaction); 348 349 addCmd(TBaseType.rrw_postgresql_reassign, "owned", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlReassignOwned); 350 351 addCmd(TBaseType.rrw_refresh, "incremental","materialized", "view", " ", " ", " ", ESqlStatementType.sstpostgresqlRefreshMaterializedView); 352 addCmd(TBaseType.rrw_refresh, "materialized", "view", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlRefreshMaterializedView); 353 354 addCmd(TBaseType.rrw_postgresql_reindex, " ", " ", " ", " ", " ", " ", ESqlStatementType.sstReindex); 355 356 addCmd(TBaseType.rrw_release, " ", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlReleaseSavepoint); 357 addCmd(TBaseType.rrw_release, "savepoint", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlReleaseSavepoint); 358 359 addCmd(TBaseType.rrw_reset, " ", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlReset); 360 361 addCmd(TBaseType.rrw_revoke, " ", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlRevoke); 362 363 addCmd(TBaseType.rrw_rollback, " ", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlRollback); 364 addCmd(TBaseType.rrw_rollback, "prepared", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlRollbackPrepared); 365 addCmd(TBaseType.rrw_rollback, "to", "savepoint", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlRollbackToSavepoint); 366 addCmd(TBaseType.rrw_savepoint, " ", " ", " ", " ", " ", " ", ESqlStatementType.sstsavepoint); 367 368 addCmd(TBaseType.rrw_postgresql_security, "label", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlSecurityLabel); 369 370 371 addCmd(TBaseType.rrw_select, " ", " ", " ", " ", " ", " ", ESqlStatementType.sstselect); 372 373 addCmd(TBaseType.rrw_set, " ", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlSet); 374 375 addCmd(TBaseType.rrw_set, "constraints", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlSetConstraints); 376 addCmd(TBaseType.rrw_set, "local", "role", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlSetRole); 377 addCmd(TBaseType.rrw_set, "local", "session", "authorization", " ", " ", " ", ESqlStatementType.sstpostgresqlSetSessionAuthorization); 378 addCmd(TBaseType.rrw_set, "role", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlSetRole); 379 addCmd(TBaseType.rrw_set, "search_path", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlSetSearchPath); 380 addCmd(TBaseType.rrw_set, "session", "authorization", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlSetSessionAuthorization); 381 addCmd(TBaseType.rrw_set, "session", "characteristics", "as", "transaction", " ", " ", ESqlStatementType.sstpostgresqlSetTransaction); 382 addCmd(TBaseType.rrw_set, "session", "role", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlSetRole); 383 addCmd(TBaseType.rrw_set, "session", "session", "authorization", " ", " ", " ", ESqlStatementType.sstpostgresqlSetSessionAuthorization); 384 385 addCmd(TBaseType.rrw_set, "transaction", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlSetTransaction); 386 addCmd(TBaseType.rrw_show, " ", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlShow); 387 addCmd(TBaseType.rrw_show, "search_path", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlShowSearchPath); 388 // addCmd(TBaseType.rrw_start, "transaction", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlStartTransaction); 389 addCmd(TBaseType.rrw_table, " ", " ", " ", " ", " ", " ", ESqlStatementType.sstPostgresqlTable); 390 addCmd(TBaseType.rrw_start, "transaction", " ", " ", " ", " ", " ", ESqlStatementType.sstStartTransaction); 391 addCmd(TBaseType.rrw_truncate, " ", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlTruncate); 392 393 addCmd(TBaseType.rrw_postgresql_unlisten, " ", " ", " ", " ", " ", " ", ESqlStatementType.sstpostgresqlUnlisten); 394 395 addCmd(TBaseType.rrw_update, " ", " ", " ", " ", " ", " ", ESqlStatementType.sstupdate); 396 addCmd(TBaseType.rrw_postgresql_vacuum, " ", " ", " ", " ", " ", " ", ESqlStatementType.sstVacuum); 397 addCmd(TBaseType.rrw_values, " ", " ", " ", " ", " ", " ", ESqlStatementType.sstValues); 398 } 399 400 @Override 401 public TCustomSqlStatement issql(TSourceToken token, EFindSqlStateType state, TCustomSqlStatement currentStatement) { 402 // Extract from TSqlCmds.isgaussdb() lines 5656-6266 403 TCustomSqlStatement ret = null; 404 ESqlStatementType gnewsqlstatementtype = ESqlStatementType.sstinvalid; 405 406 if ((token.tokencode == TBaseType.cmtdoublehyphen) 407 || (token.tokencode == TBaseType.cmtslashstar) 408 || (token.tokencode == TBaseType.lexspace) 409 || (token.tokencode == TBaseType.lexnewline) 410 || (token.tokentype == ETokenType.ttsemicolon)) { 411 return null; 412 } 413 414 int lcpos = token.posinlist; 415 TSourceTokenList lcsourcetokenlist = token.container; 416 TCustomSqlStatement lccurrentsqlstatement = currentStatement; 417 418 //subquery after semicolon or at first line 419 if ((state == EFindSqlStateType.stnormal) && (token.tokentype == ETokenType.ttleftparenthesis)) // ( 420 { 421 int k = lcsourcetokenlist.solidtokenafterpos(lcpos, TBaseType.rrw_select, 1, "("); 422 if (k > 0) { 423 ret = new TSelectSqlStatement(vendor); 424 } else { 425 k = lcsourcetokenlist.solidtokenafterpos(lcpos, TBaseType.rrw_with, 1, "("); 426 if (k > 0) { // syntax like: (with ... ) 427 ret = new TSelectSqlStatement(vendor); 428 } 429 } 430 431 return ret; 432 } 433 434 //cte 435 if ((state == EFindSqlStateType.stnormal) && (token.tokencode == TBaseType.rrw_with)) { 436 ret = findcte(token); 437 if ((ret != null)) return ret; 438 } 439 440 gnewsqlstatementtype = getStatementTypeForToken(token); 441 442 TSourceToken lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos); 443 switch (gnewsqlstatementtype) { // 444 case sstinvalid: { 445 ret = null; 446 447 if (state == EFindSqlStateType.stnormal) { 448 if (token.tokencode == TBaseType.label_begin) { 449 ret = new TCommonBlock(vendor); 450 gnewsqlstatementtype = ret.sqlstatementtype; 451 452 } else if (token.tokencode == TBaseType.rrw_declare) { 453 ret = new TCommonBlock(vendor); 454 gnewsqlstatementtype = ret.sqlstatementtype; 455 } else if (token.tokencode == TBaseType.rrw_begin) { 456 // https://support.huaweicloud.com/distributed-devg-v3-opengauss/gaussdb-12-0498.html 457 // 有两种可能 1:开启匿名块,或 2:开启事务 458 boolean isBlock = true; 459 TSourceToken st = token.nextSolidToken(); 460 if (st != null) { 461 if ((st.tokencode == ';') 462 || (st.toString().equalsIgnoreCase("work")) 463 || (st.toString().equalsIgnoreCase("transaction")) 464 ) { 465 isBlock = false; 466 } 467 } 468 if (isBlock) { 469 ret = new TCommonBlock(vendor); 470 gnewsqlstatementtype = ret.sqlstatementtype; 471 } else { 472 ret = new TStartTransactionStmt(vendor); 473 gnewsqlstatementtype = ret.sqlstatementtype; 474 token.tokencode = TBaseType.GAUSSDB_BEGIN_TRANSACTION; 475 } 476 477 } else if (token.tokencode == TBaseType.rrw_procedure) { 478 ret = new TCreateProcedureStmt(vendor); 479 // ret.sqlstatementtype = ESqlStatementType.sstplsql_createprocedure; 480 gnewsqlstatementtype = ret.sqlstatementtype; 481 } else if (token.tokencode == TBaseType.rrw_function) { 482 ret = new TPlsqlCreateFunction(vendor); 483 // ret.sqlstatementtype = ESqlStatementType.sstplsql_createfunction; 484 gnewsqlstatementtype = ret.sqlstatementtype; 485 } else if (token.tokencode == TBaseType.rrw_package) { 486 ret = new TPlsqlCreatePackage(vendor); 487 // ret.sqlstatementtype = ESqlStatementType.sstplsql_createpackage; 488 gnewsqlstatementtype = ret.sqlstatementtype; 489 } 490 } 491 break; 492 } 493 case sstpostgresqlDeclare: { 494 // https://support.huaweicloud.com/distributed-devg-v3-opengauss/gaussdb-12-0554.html 495 // declare cursor_name [ BINARY ] [ NO SCROLL ] CURSOR ..., 这是单个的定义游标语句 496 // 下面这种类型的定义才是开始一个 匿名块 497 // [DECLARE [declare_statements]] 498 //BEGIN 499 //execution_statements 500 //END; 501 502 // 判断逻辑如下: 503 // 1. 如果 declare 后直接跟 CURSOR, 那就是开启一个 匿名块 504 // 2. 如果 declare 后直接跟的是一个 identifier, 那再检查之后的第2或3或4个token是否为 CURSOR, 505 // 如果是,该语句为 单个的定义游标语句,否则为 匿名块 506 507 boolean isBlock = true; 508 TSourceToken st = token.nextSolidToken(); 509 if (st != null) { 510 if (st.tokencode == TBaseType.GAUSSDB_CURSOR) { 511 isBlock = true; 512 } else if (st.tokencode == TBaseType.ident) { 513 st = st.nextSolidToken(); 514 if (st != null) { 515 if ((st.tokencode == TBaseType.GAUSSDB_CURSOR) 516 || (st.tokencode == TBaseType.rrw_binary) 517 || (st.toString().equalsIgnoreCase("no")) 518 ) { 519 isBlock = false; 520 } 521 } 522 } 523 } 524 if (isBlock) { 525 ret = new TCommonBlock(vendor); 526 gnewsqlstatementtype = ret.sqlstatementtype; 527 } else { 528 ret = new TDeclareCursorStmt(vendor); 529 gnewsqlstatementtype = ret.sqlstatementtype; 530 token.tokencode = TBaseType.GAUSSDB_DECLARE_SINGLE_STMT; 531 } 532 533 break; 534 } 535 case sstmerge: { 536 ret = new TMergeSqlStatement(vendor); 537 ret.sqlstatementtype = gnewsqlstatementtype; 538 break; 539 } 540 case sstcreatesynonym: 541 ret = new TCreateSynonymStmt(vendor); 542 break; 543 case sstdropsynonym: 544 ret = new TDropSynonymStmt(vendor); 545 break; 546 case sstAlterPackage: 547 ret = new TAlterPackageStmt(vendor); 548 break; 549 case sstpostgresqlRefreshMaterializedView: 550 ret = new TRefreshMaterializedViewStmt(vendor); 551 break; 552 case sstAlterSynonym: 553 ret = new TAlterSynonymStmt(vendor); 554 break; 555 case sstsavepoint: { 556 ret = new TSavepointStmt(vendor); 557 ret.sqlstatementtype = gnewsqlstatementtype; 558 break; 559 } 560 case sstselect: { 561 boolean lcisnewsql = true; 562 563 if (state != EFindSqlStateType.stnormal) { 564 // lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos); 565 if ((lcprevsolidtoken != null)) { 566 if (lcprevsolidtoken.tokentype == ETokenType.ttleftparenthesis) 567 lcisnewsql = false; //subqery 568 else if (lcprevsolidtoken.tokencode == TBaseType.rrw_union) 569 lcisnewsql = false; 570 else if (lcprevsolidtoken.tokencode == TBaseType.rrw_intersect) 571 lcisnewsql = false; 572 else if (lcprevsolidtoken.tokencode == TBaseType.rrw_minus) 573 lcisnewsql = false; 574 else if (lcprevsolidtoken.tokencode == TBaseType.rrw_except) 575 lcisnewsql = false; 576 else if (lcprevsolidtoken.tokencode == TBaseType.rrw_return) 577 lcisnewsql = false; 578 else if (lcprevsolidtoken.tokencode == TBaseType.rrw_as) { 579 if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreatetable) 580 lcisnewsql = false; 581 if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstcreateview) 582 lcisnewsql = false; 583 } 584 585 if (lcisnewsql && (lcprevsolidtoken.tokencode == TBaseType.rrw_all)) { 586 TSourceToken lcpprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcprevsolidtoken.posinlist); 587 if ((lcpprevsolidtoken != null)) { 588 if (lcpprevsolidtoken.tokencode == TBaseType.rrw_union) 589 lcisnewsql = false; 590 } 591 } 592 593 } 594 595 596 if ((lccurrentsqlstatement != null)) { 597 if (lccurrentsqlstatement.sqlstatementtype == ESqlStatementType.sstinsert) 598 lcisnewsql = false; 599 } 600 601 } 602 603 if (lcisnewsql) 604 ret = new TSelectSqlStatement(vendor); 605 606 break; 607 } 608 case sstinsert: { 609 boolean lcisnewsql = true; 610 if (state != EFindSqlStateType.stnormal) { 611 if ((lccurrentsqlstatement != null)) { 612 613 } 614 } 615 616 if (lcisnewsql) 617 ret = new TInsertSqlStatement(vendor); 618 619 break; 620 } 621 case sstupdate: { 622 boolean lcisnewsql = true; 623 if (state != EFindSqlStateType.stnormal) { 624 lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos); 625 if ((lcprevsolidtoken != null)) { // 626 if (lcprevsolidtoken.tokencode == TBaseType.rrw_on) 627 lcisnewsql = false; 628 else if (lcprevsolidtoken.tokencode == TBaseType.rrw_for) 629 lcisnewsql = false; 630 } 631 632 TSourceToken lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos, 1, false); 633 if ((lcnextsolidtoken != null)) { 634 if (lcnextsolidtoken.tokentype == ETokenType.ttleftparenthesis) { 635 int k = lcsourcetokenlist.solidtokenafterpos(lcnextsolidtoken.posinlist, TBaseType.rrw_select, 1, "("); 636 if (k == 0) lcisnewsql = false; 637 } 638 } 639 640 641 if ((lccurrentsqlstatement != null)) { 642 } 643 } 644 645 if (lcisnewsql) { 646 ret = new TUpdateSqlStatement(vendor); 647 ret.dummytag = 1; // means set clause in update is not found yet, used to seperate set clause from set statement 648 } 649 break; 650 } 651 case sstdelete: { 652 boolean lcisnewsql = true; 653 654 if (state != EFindSqlStateType.stnormal) { 655 lcprevsolidtoken = lcsourcetokenlist.solidtokenbefore(lcpos); 656 if ((lcprevsolidtoken != null)) { 657 if (lcprevsolidtoken.tokencode == TBaseType.rrw_on) 658 lcisnewsql = false; 659 } 660 661 if ((lccurrentsqlstatement != null)) { 662 } 663 } 664 665 if (lcisnewsql) 666 ret = new TDeleteSqlStatement(vendor); 667 668 break; 669 } 670 case sstoraclecommit: { 671 ret = new TUnknownSqlStatement(vendor); 672 ret.sqlstatementtype = gnewsqlstatementtype; 673 break; 674 } 675 case sstoraclerollback: { 676 ret = new TUnknownSqlStatement(vendor); 677 ret.sqlstatementtype = gnewsqlstatementtype; 678 break; 679 } 680 case sstoraclesavepoint: { 681 ret = new TUnknownSqlStatement(vendor); 682 ret.sqlstatementtype = gnewsqlstatementtype; 683 break; 684 } 685 case sstoraclerevoke: { 686 ret = new TUnknownSqlStatement(vendor); 687 ret.sqlstatementtype = gnewsqlstatementtype; 688 break; 689 } 690 case sstoraclegrant: { 691 ret = new TUnknownSqlStatement(vendor); 692 //ret = new TGrantStmt(vendor); 693 ret.sqlstatementtype = gnewsqlstatementtype; 694 break; 695 } 696 case sstoracleanalyze: { 697 ret = new TUnknownSqlStatement(vendor); 698 ret.sqlstatementtype = gnewsqlstatementtype; 699 break; 700 } 701 case sstoracletruncate: { 702 ret = new TUnknownSqlStatement(vendor); 703 ret.sqlstatementtype = gnewsqlstatementtype; 704 break; 705 } 706 case sstcreatetable: { 707 ret = new TCreateTableSqlStatement(vendor); 708 break; 709 } 710 case sstoraclecreateview: { 711 ret = new TCreateViewSqlStatement(vendor); 712 break; 713 } 714 case sstcreatematerializedview: { 715 ret = new TCreateMaterializedSqlStatement(vendor); 716 break; 717 } 718 case sstoraclecreateindex: { 719 ret = new TCreateIndexSqlStatement(vendor); 720 break; 721 } 722 case sstoraclecreatedatabase: { 723 ret = new TCreateDatabaseSqlStatement(vendor); 724 break; 725 } 726 case sstoracledroptable: { 727 ret = new TDropTableSqlStatement(vendor); 728 break; 729 } 730 case sstoracledropview: { 731 ret = new TDropViewSqlStatement(vendor); 732 break; 733 } 734 case sstoracledropindex: { 735 ret = new TDropIndexSqlStatement(vendor); 736 break; 737 } 738 case sstaltertable: { 739 ret = new TAlterTableStatement(vendor); 740 break; 741 } 742 case sstoraclealtersession: { 743 ret = new TAlterSessionStatement(vendor); 744 break; 745 } 746 case sstplsql_createprocedure: { 747 ret = new TPlsqlCreateProcedure(vendor); 748 ret.sqlstatementtype = gnewsqlstatementtype; 749 // System.out.println(gnewsqlstatementtype); 750 break; 751 } 752 case sstplsql_createfunction: { 753 ret = new TPlsqlCreateFunction(vendor); 754 ret.sqlstatementtype = gnewsqlstatementtype; 755 // System.out.println(gnewsqlstatementtype); 756 break; 757 } 758 case sstplsql_createpackage: { 759 ret = new TPlsqlCreatePackage(vendor); 760 ret.sqlstatementtype = gnewsqlstatementtype; 761 // System.out.println(gnewsqlstatementtype); 762 break; 763 } 764 case sstoraclecreatepackagebody: { 765 ret = new TPlsqlCreatePackage(vendor); 766 ret.sqlstatementtype = gnewsqlstatementtype; 767 //ret.sqlstatementtype = ESqlStatementType.sstplsql_createpackage; 768 break; 769 } 770 case sstplsql_createtrigger: { 771 ret = new TPlsqlCreateTrigger(vendor); 772 ret.sqlstatementtype = gnewsqlstatementtype; 773 // System.out.println(gnewsqlstatementtype); 774 break; 775 } 776 case sstplsql_execimmestmt: { 777 ret = new TExecImmeStmt(vendor); 778 // ret.sqlstatementtype = gnewsqlstatementtype; 779 // System.out.println(gnewsqlstatementtype); 780 break; 781 } 782 case sstplsql_createtype_placeholder: { 783 ret = new TPlsqlCreateType_Placeholder(vendor); 784 ret.sqlstatementtype = gnewsqlstatementtype; 785 // System.out.println(gnewsqlstatementtype); 786 break; 787 } 788 case sstplsql_createtypebody: { 789 ret = new TPlsqlCreateTypeBody(vendor); 790 ret.sqlstatementtype = gnewsqlstatementtype; 791 break; 792 } 793 case sstCommentOn: { 794 ret = new TCommentOnSqlStmt(vendor); 795 break; 796 } 797 case sstoraclecreatesequence: { 798 ret = new TCreateSequenceStmt(vendor); 799 break; 800 } 801 case sstoraclecreatesynonym: { 802 ret = new TCreateSynonymStmt(vendor); 803 break; 804 } 805 case sstoraclecreatedirectory: { 806 ret = new TOracleCreateDirectoryStmt(vendor); 807 break; 808 } 809 case sstpostgresqlCreateIndex: 810 ret = new TCreateIndexSqlStatement(vendor); 811 break; 812 case sstpostgresqlCreateView: 813 ret = new TCreateViewSqlStatement(vendor); 814 break; 815 case sstpostgresqlCreateFunction: 816 ret = new TCreateFunctionStmt(vendor); 817 break; 818 case sstcreatetrigger: 819 ret = new TCreateTriggerStmt(vendor); 820 break; 821 case sstpostgresqlMove: 822 ret = new TMoveStmt(vendor); 823 break; 824 case sstpostgresqlTruncate: 825 ret = new TTruncateStatement(vendor); 826 break; 827 case sstpostgresqlExecute: 828 ret = new TExecuteSqlStatement(vendor); 829 break; 830 case sstpostgresqlDropTable: 831 ret = new TDropTableSqlStatement(vendor); 832 break; 833 case sstPostgresqlBlock: 834 ret = new TCommonBlock(vendor); 835 break; 836 case sstVacuum: 837 ret = new TVacuumStmt(vendor); 838 break; 839 case sstReindex: 840 ret = new TReindexStmt(vendor); 841 break; 842 case sstcreateprocedure: 843 ret = new TCreateProcedureStmt(vendor); 844 break; 845 case sstpostgresqlCommit: 846 ret = new TCommitStmt(vendor); 847 break; 848 case sstpostgresqlCreateSchema: 849 ret = new TCreateSchemaSqlStatement(vendor); 850 break; 851 case sstpostgresqlDropSchema: 852 ret = new TDropSchemaSqlStatement(vendor); 853 break; 854 case sstpostgresqlShowSearchPath: 855 ret = new TShowSearchPathStmt(vendor); 856 break; 857 case sstpostgresqlCopy: 858 ret = new TCopyStmt(vendor); 859 break; 860 case sstcall: 861 ret = new TCallStatement(vendor); 862 break; 863 case sstpostgresqlAlterSchema: 864 ret = new TAlterSchemaStmt(vendor); 865 break; 866 case sstpostgresqlAlterfunction: 867 ret = new TAlterFunctionStmt(vendor); 868 break; 869 case sstStartTransaction: { 870 ret = new TStartTransactionStmt(vendor); 871 break; 872 } 873 case sstpostgresqlComment: 874 ret = new TCommentOnSqlStmt(vendor); 875 break; 876 case sstpostgresqlShow: 877 ret = new TShowStmt(vendor); 878 break; 879 case sstpostgresqlSetSearchPath: 880 case sstpostgresqlSet: 881 ret = new TSetStmt(vendor); 882 break; 883 case sstpostgresqlDropFunction: 884 ret = new TDropFunctionStmt(vendor); 885 break; 886 case sstpostgresqlDropTrigger: 887 ret = new TDropTriggerSqlStatement(vendor); 888 break; 889 case sstpostgresqlDropProcedure: 890 ret = new TDropProcedureStmt(vendor); 891 break; 892 case sstdropindex: 893 ret = new TDropIndexSqlStatement(vendor); 894 break; 895 case sstpostgresqlDropSequence: 896 ret = new TDropSequenceStmt(vendor); 897 break; 898 case sstpostgresqlDropView: 899 ret = new TDropViewSqlStatement(vendor); 900 break; 901 case sstpostgresqlCreateSequence: 902 ret = new TCreateSequenceStmt(vendor); 903 break; 904 case sstpostgresqlCreateType: 905 ret = new TCreateTypeStmt(vendor); 906 break; 907 case sstcreateExtension: 908 ret = new TCreateExtensionStmt(vendor); 909 break; 910 case sstPostgresqlTable: 911 ret = new TPostgresqlTableStmt(vendor); 912 break; 913 case sstpostgresqlEnd: 914 ret = new TEndTran(vendor); 915 break; 916 case sstpostgresqlDo: 917 boolean lcisnewsql = false; 918 919 if (state == EFindSqlStateType.stnormal) { 920 TSourceToken lcnextsolidtoken = lcsourcetokenlist.nextsolidtoken(lcpos, 1, false); 921 if ((lcnextsolidtoken != null)) { 922 if (lcnextsolidtoken.tokencode == TBaseType.rrw_postgresql_function_delimiter) 923 lcisnewsql = true; 924 } 925 } 926 927 if (lcisnewsql) 928 ret = new TDoExecuteBlockStmt(vendor); 929 930 break; 931 default: { 932 ret = new TUnknownSqlStatement(vendor); 933 ret.sqlstatementtype = gnewsqlstatementtype; 934 break; 935 } 936 } // case 937 938 return ret; 939 } 940}