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