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