in gui/frontend/src/parsing/mysql/MySQLBaseLexer.ts [320:1270]
public determineQueryType(): QueryType {
let token = this.nextDefaultChannelToken();
if (token.type === Token.EOF) {
return QueryType.Unknown;
}
switch (token.type) {
case MySQLMRSLexer.ALTER_SYMBOL:
token = this.nextDefaultChannelToken();
if (token.type === Token.EOF) {
return QueryType.Ambiguous;
}
switch (token.type) {
case MySQLMRSLexer.DATABASE_SYMBOL: {
return QueryType.AlterDatabase;
}
case MySQLMRSLexer.LOGFILE_SYMBOL: {
return QueryType.AlterLogFileGroup;
}
case MySQLMRSLexer.FUNCTION_SYMBOL: {
return QueryType.AlterFunction;
}
case MySQLMRSLexer.PROCEDURE_SYMBOL: {
return QueryType.AlterProcedure;
}
case MySQLMRSLexer.SERVER_SYMBOL: {
return QueryType.AlterServer;
}
case MySQLMRSLexer.TABLE_SYMBOL:
case MySQLMRSLexer.ONLINE_SYMBOL: // Optional part of ALTER TABLE.
case MySQLMRSLexer.OFFLINE_SYMBOL: // ditto
case MySQLMRSLexer.IGNORE_SYMBOL: {
return QueryType.AlterTable;
}
case MySQLMRSLexer.TABLESPACE_SYMBOL: {
return QueryType.AlterTableSpace;
}
case MySQLMRSLexer.EVENT_SYMBOL: {
return QueryType.AlterEvent;
}
case MySQLMRSLexer.VIEW_SYMBOL: {
return QueryType.AlterView;
}
case MySQLMRSLexer.DEFINER_SYMBOL: { // Can be both event or view.
if (!this.skipDefiner()) {
return QueryType.Ambiguous;
}
token = this.nextDefaultChannelToken();
switch (token.type) {
case MySQLMRSLexer.EVENT_SYMBOL: {
return QueryType.AlterEvent;
}
case MySQLMRSLexer.SQL_SYMBOL:
case MySQLMRSLexer.VIEW_SYMBOL: {
return QueryType.AlterView;
}
default: {
return QueryType.Unknown;
}
}
}
case MySQLMRSLexer.ALGORITHM_SYMBOL: { // Optional part of CREATE VIEW.
return QueryType.AlterView;
}
case MySQLMRSLexer.USER_SYMBOL: {
return QueryType.AlterUser;
}
case MySQLMRSLexer.REST_SYMBOL: {
return QueryType.Rest;
}
default: {
return QueryType.Unknown;
}
}
case MySQLMRSLexer.CREATE_SYMBOL: {
token = this.nextDefaultChannelToken();
// Skip OR REPLACE
if (token.type === MySQLMRSLexer.OR_SYMBOL) {
token = this.nextDefaultChannelToken();
if (token.type === MySQLMRSLexer.REPLACE_SYMBOL) {
token = this.nextDefaultChannelToken();
}
}
if (token.type === Token.EOF) {
return QueryType.Ambiguous;
}
switch (token.type) {
case MySQLMRSLexer.TEMPORARY_SYMBOL: // Optional part of CREATE TABLE.
case MySQLMRSLexer.TABLE_SYMBOL: {
return QueryType.CreateTable;
}
case MySQLMRSLexer.ONLINE_SYMBOL:
case MySQLMRSLexer.OFFLINE_SYMBOL:
case MySQLMRSLexer.INDEX_SYMBOL:
case MySQLMRSLexer.UNIQUE_SYMBOL:
case MySQLMRSLexer.FULLTEXT_SYMBOL:
case MySQLMRSLexer.SPATIAL_SYMBOL: {
return QueryType.CreateIndex;
}
case MySQLMRSLexer.DATABASE_SYMBOL: {
return QueryType.CreateDatabase;
}
case MySQLMRSLexer.TRIGGER_SYMBOL: {
return QueryType.CreateTrigger;
}
case MySQLMRSLexer.DEFINER_SYMBOL: { // Can be event, view, procedure, function, UDF, trigger.
if (!this.skipDefiner()) {
return QueryType.Ambiguous;
}
token = this.nextDefaultChannelToken();
switch (token.type) {
case MySQLMRSLexer.EVENT_SYMBOL: {
return QueryType.CreateEvent;
}
case MySQLMRSLexer.VIEW_SYMBOL:
case MySQLMRSLexer.SQL_SYMBOL: {
return QueryType.CreateView;
}
case MySQLMRSLexer.PROCEDURE_SYMBOL: {
return QueryType.CreateProcedure;
}
case MySQLMRSLexer.FUNCTION_SYMBOL: {
token = this.nextDefaultChannelToken();
if (token.type === Token.EOF) {
return QueryType.Ambiguous;
}
if (!this.isIdentifier(token.type)) {
return QueryType.Ambiguous;
}
token = this.nextDefaultChannelToken();
if (token.type === MySQLMRSLexer.RETURNS_SYMBOL) {
return QueryType.CreateUdf;
}
return QueryType.CreateFunction;
}
case MySQLMRSLexer.AGGREGATE_SYMBOL: {
return QueryType.CreateUdf;
}
case MySQLMRSLexer.TRIGGER_SYMBOL: {
return QueryType.CreateTrigger;
}
default: {
return QueryType.Unknown;
}
}
}
case MySQLMRSLexer.VIEW_SYMBOL:
case MySQLMRSLexer.ALGORITHM_SYMBOL: { // CREATE ALGORITHM ... VIEW
return QueryType.CreateView;
}
case MySQLMRSLexer.EVENT_SYMBOL: {
return QueryType.CreateEvent;
}
case MySQLMRSLexer.FUNCTION_SYMBOL: {
return QueryType.CreateFunction;
}
case MySQLMRSLexer.AGGREGATE_SYMBOL: {
return QueryType.CreateUdf;
}
case MySQLMRSLexer.PROCEDURE_SYMBOL: {
return QueryType.CreateProcedure;
}
case MySQLMRSLexer.LOGFILE_SYMBOL: {
return QueryType.CreateLogFileGroup;
}
case MySQLMRSLexer.SERVER_SYMBOL: {
return QueryType.CreateServer;
}
case MySQLMRSLexer.TABLESPACE_SYMBOL: {
return QueryType.CreateTableSpace;
}
case MySQLMRSLexer.USER_SYMBOL: {
return QueryType.CreateUser;
}
case MySQLMRSLexer.REST_SYMBOL: {
return QueryType.Rest;
}
default: {
return QueryType.Unknown;
}
}
}
case MySQLMRSLexer.DROP_SYMBOL: {
token = this.nextDefaultChannelToken();
if (token.type === Token.EOF) {
return QueryType.Ambiguous;
}
switch (token.type) {
case MySQLMRSLexer.DATABASE_SYMBOL: {
return QueryType.DropDatabase;
}
case MySQLMRSLexer.EVENT_SYMBOL: {
return QueryType.DropEvent;
}
case MySQLMRSLexer.PROCEDURE_SYMBOL: {
return QueryType.DropProcedure;
}
case MySQLMRSLexer.FUNCTION_SYMBOL: {
return QueryType.DropFunction;
}
case MySQLMRSLexer.ONLINE_SYMBOL:
case MySQLMRSLexer.OFFLINE_SYMBOL:
case MySQLMRSLexer.INDEX_SYMBOL: {
return QueryType.DropIndex;
}
case MySQLMRSLexer.LOGFILE_SYMBOL: {
return QueryType.DropLogfileGroup;
}
case MySQLMRSLexer.SERVER_SYMBOL: {
return QueryType.DropServer;
}
case MySQLMRSLexer.TEMPORARY_SYMBOL:
case MySQLMRSLexer.TABLE_SYMBOL:
case MySQLMRSLexer.TABLES_SYMBOL: {
return QueryType.DropTable;
}
case MySQLMRSLexer.TABLESPACE_SYMBOL: {
return QueryType.DropTablespace;
}
case MySQLMRSLexer.TRIGGER_SYMBOL: {
return QueryType.DropTrigger;
}
case MySQLMRSLexer.VIEW_SYMBOL: {
return QueryType.DropView;
}
case MySQLMRSLexer.PREPARE_SYMBOL: {
return QueryType.Deallocate;
}
case MySQLMRSLexer.USER_SYMBOL: {
return QueryType.DropUser;
}
case MySQLMRSLexer.REST_SYMBOL: {
return QueryType.Rest;
}
default: {
return QueryType.Unknown;
}
}
}
case MySQLMRSLexer.TRUNCATE_SYMBOL: {
return QueryType.TruncateTable;
}
case MySQLMRSLexer.CALL_SYMBOL: {
return QueryType.Call;
}
case MySQLMRSLexer.DELETE_SYMBOL: {
return QueryType.Delete;
}
case MySQLMRSLexer.DO_SYMBOL: {
return QueryType.Do;
}
case MySQLMRSLexer.HANDLER_SYMBOL: {
return QueryType.Handler;
}
case MySQLMRSLexer.INSERT_SYMBOL: {
return QueryType.Insert;
}
case MySQLMRSLexer.LOAD_SYMBOL: {
token = this.nextDefaultChannelToken();
if (token.type === Token.EOF) {
return QueryType.Ambiguous;
}
switch (token.type) {
case MySQLMRSLexer.DATA_SYMBOL: {
token = this.nextDefaultChannelToken();
if (token.type === Token.EOF) {
return QueryType.Ambiguous;
}
if (token.type === MySQLMRSLexer.FROM_SYMBOL) {
return QueryType.LoadDataMaster;
}
return QueryType.LoadData;
}
case MySQLMRSLexer.XML_SYMBOL: {
return QueryType.LoadXML;
}
case MySQLMRSLexer.TABLE_SYMBOL: {
return QueryType.LoadTableMaster;
}
case MySQLMRSLexer.INDEX_SYMBOL: {
return QueryType.LoadIndex;
}
default: {
return QueryType.Unknown;
}
}
}
case MySQLMRSLexer.REPLACE_SYMBOL: {
return QueryType.Replace;
}
case MySQLMRSLexer.SELECT_SYMBOL: {
return QueryType.Select;
}
case MySQLMRSLexer.TABLE_SYMBOL: {
return QueryType.Table;
}
case MySQLMRSLexer.VALUES_SYMBOL: {
return QueryType.Values;
}
case MySQLMRSLexer.UPDATE_SYMBOL: {
return QueryType.Update;
}
case MySQLMRSLexer.OPEN_PAR_SYMBOL: { // (((select ...)))
while (token.type === MySQLMRSLexer.OPEN_PAR_SYMBOL) {
token = this.nextDefaultChannelToken();
if (token.type === Token.EOF) {
return QueryType.Ambiguous;
}
}
if (token.type === MySQLMRSLexer.SELECT_SYMBOL) {
return QueryType.Select;
}
return QueryType.Unknown;
}
case MySQLMRSLexer.START_SYMBOL: {
token = this.nextDefaultChannelToken();
if (token.type === Token.EOF) {
return QueryType.Ambiguous;
}
if (token.type === MySQLMRSLexer.TRANSACTION_SYMBOL) {
return QueryType.StartTransaction;
}
return QueryType.StartSlave;
}
case MySQLMRSLexer.BEGIN_SYMBOL: { // Begin directly at the start of the query must be a transaction start.
return QueryType.BeginWork;
}
case MySQLMRSLexer.COMMIT_SYMBOL: {
return QueryType.Commit;
}
case MySQLMRSLexer.ROLLBACK_SYMBOL: {
// We assume a transaction statement here unless we exactly know it's about a savepoint.
token = this.nextDefaultChannelToken();
if (token.type === Token.EOF) {
return QueryType.RollbackWork;
}
if (token.type === MySQLMRSLexer.WORK_SYMBOL) {
token = this.nextDefaultChannelToken();
if (token.type === Token.EOF) {
return QueryType.RollbackWork;
}
}
if (token.type === MySQLMRSLexer.TO_SYMBOL) {
return QueryType.RollbackSavePoint;
}
return QueryType.RollbackWork;
}
case MySQLMRSLexer.SET_SYMBOL: {
token = this.nextDefaultChannelToken();
if (token.type === Token.EOF) {
return QueryType.Set;
}
switch (token.type) {
case MySQLMRSLexer.PASSWORD_SYMBOL: {
return QueryType.SetPassword;
}
case MySQLMRSLexer.GLOBAL_SYMBOL:
case MySQLMRSLexer.LOCAL_SYMBOL:
case MySQLMRSLexer.SESSION_SYMBOL: {
token = this.nextDefaultChannelToken();
if (token.type === Token.EOF) {
return QueryType.Set;
}
break;
}
case MySQLMRSLexer.IDENTIFIER: {
const text = (token.text || "").toLowerCase();
if (text === "autocommit") {
return QueryType.SetAutoCommit;
}
break;
}
case MySQLMRSLexer.TRANSACTION_SYMBOL: {
return QueryType.SetTransaction;
}
default: {
return QueryType.Set;
}
}
return QueryType.Set;
}
case MySQLMRSLexer.SAVEPOINT_SYMBOL: {
return QueryType.SavePoint;
}
case MySQLMRSLexer.RELEASE_SYMBOL: { // Release at the start of the query, obviously.
return QueryType.ReleaseSavePoint;
}
case MySQLMRSLexer.LOCK_SYMBOL: {
return QueryType.Lock;
}
case MySQLMRSLexer.UNLOCK_SYMBOL: {
return QueryType.Unlock;
}
case MySQLMRSLexer.XA_SYMBOL: {
return QueryType.XA;
}
case MySQLMRSLexer.PURGE_SYMBOL: {
return QueryType.Purge;
}
case MySQLMRSLexer.CHANGE_SYMBOL: {
return QueryType.ChangeMaster;
}
case MySQLMRSLexer.RESET_SYMBOL: {
token = this.nextDefaultChannelToken();
if (token.type === Token.EOF) {
return QueryType.Reset;
}
switch (token.type) {
case MySQLMRSLexer.MASTER_SYMBOL: {
return QueryType.ResetMaster;
}
case MySQLMRSLexer.SLAVE_SYMBOL: {
return QueryType.ResetSlave;
}
default: {
return QueryType.Reset;
}
}
}
case MySQLMRSLexer.STOP_SYMBOL: {
return QueryType.StopSlave;
}
case MySQLMRSLexer.PREPARE_SYMBOL: {
return QueryType.Prepare;
}
case MySQLMRSLexer.EXECUTE_SYMBOL: {
return QueryType.Execute;
}
case MySQLMRSLexer.DEALLOCATE_SYMBOL: {
return QueryType.Deallocate;
}
case MySQLMRSLexer.GRANT_SYMBOL: {
token = this.nextDefaultChannelToken();
if (token.type === Token.EOF) {
return QueryType.Ambiguous;
}
if (token.type === MySQLMRSLexer.PROXY_SYMBOL) {
return QueryType.GrantProxy;
}
return QueryType.Grant;
}
case MySQLMRSLexer.RENAME_SYMBOL: {
token = this.nextDefaultChannelToken();
if (token.type === Token.EOF) {
return QueryType.Ambiguous;
}
if (token.type === MySQLMRSLexer.USER_SYMBOL) {
return QueryType.RenameUser;
}
return QueryType.RenameTable;
}
case MySQLMRSLexer.REVOKE_SYMBOL: {
token = this.nextDefaultChannelToken();
if (token.type === Token.EOF) {
return QueryType.Ambiguous;
}
if (token.type === MySQLMRSLexer.PROXY_SYMBOL) {
return QueryType.RevokeProxy;
}
return QueryType.Revoke;
}
case MySQLMRSLexer.ANALYZE_SYMBOL: {
return QueryType.AnalyzeTable;
}
case MySQLMRSLexer.CHECK_SYMBOL: {
return QueryType.CheckTable;
}
case MySQLMRSLexer.CHECKSUM_SYMBOL: {
return QueryType.ChecksumTable;
}
case MySQLMRSLexer.OPTIMIZE_SYMBOL: {
return QueryType.OptimizeTable;
}
case MySQLMRSLexer.REPAIR_SYMBOL: {
return QueryType.RepairTable;
}
case MySQLMRSLexer.BACKUP_SYMBOL: {
return QueryType.BackUpTable;
}
case MySQLMRSLexer.RESTORE_SYMBOL: {
return QueryType.RestoreTable;
}
case MySQLMRSLexer.INSTALL_SYMBOL: {
return QueryType.InstallPlugin;
}
case MySQLMRSLexer.UNINSTALL_SYMBOL: {
return QueryType.UninstallPlugin;
}
case MySQLMRSLexer.SHOW_SYMBOL: {
token = this.nextDefaultChannelToken();
if (token.type === Token.EOF) {
return QueryType.Show;
}
if (token.type === MySQLMRSLexer.FULL_SYMBOL) {
// Not all SHOW cases allow an optional FULL keyword, but this is not about checking for
// a valid query but to find the most likely type.
token = this.nextDefaultChannelToken();
if (token.type === Token.EOF) {
return QueryType.Show;
}
}
switch (token.type) {
case MySQLMRSLexer.GLOBAL_SYMBOL:
case MySQLMRSLexer.LOCK_SYMBOL:
case MySQLMRSLexer.SESSION_SYMBOL: {
token = this.nextDefaultChannelToken();
if (token.type === Token.EOF) {
return QueryType.Show;
}
if (token.type === MySQLMRSLexer.STATUS_SYMBOL) {
return QueryType.ShowStatus;
}
return QueryType.ShowVariables;
}
case MySQLMRSLexer.BINARY_SYMBOL: {
return QueryType.ShowBinaryLogs;
}
case MySQLMRSLexer.BINLOG_SYMBOL: {
return QueryType.ShowBinLogEvents;
}
case MySQLMRSLexer.RELAYLOG_SYMBOL: {
return QueryType.ShowRelayLogEvents;
}
case MySQLMRSLexer.CHAR_SYMBOL:
case MySQLMRSLexer.CHARSET_SYMBOL: {
return QueryType.ShowCharset;
}
case MySQLMRSLexer.COLLATION_SYMBOL: {
return QueryType.ShowCollation;
}
case MySQLMRSLexer.COLUMNS_SYMBOL: {
return QueryType.ShowColumns;
}
case MySQLMRSLexer.COUNT_SYMBOL: {
token = this.nextDefaultChannelToken();
if (token.type !== MySQLMRSLexer.OPEN_PAR_SYMBOL) {
return QueryType.Show;
}
token = this.nextDefaultChannelToken();
if (token.type !== MySQLMRSLexer.MULT_OPERATOR) {
return QueryType.Show;
}
token = this.nextDefaultChannelToken();
if (token.type !== MySQLMRSLexer.CLOSE_PAR_SYMBOL) {
return QueryType.Show;
}
token = this.nextDefaultChannelToken();
if (token.type === Token.EOF) {
return QueryType.Show;
}
switch (token.type) {
case MySQLMRSLexer.WARNINGS_SYMBOL: {
return QueryType.ShowWarnings;
}
case MySQLMRSLexer.ERRORS_SYMBOL: {
return QueryType.ShowErrors;
}
default: {
return QueryType.Show;
}
}
}
case MySQLMRSLexer.CREATE_SYMBOL: {
token = this.nextDefaultChannelToken();
if (token.type === Token.EOF) {
return QueryType.Show;
}
switch (token.type) {
case MySQLMRSLexer.DATABASE_SYMBOL: {
return QueryType.ShowCreateDatabase;
}
case MySQLMRSLexer.EVENT_SYMBOL: {
return QueryType.ShowCreateEvent;
}
case MySQLMRSLexer.FUNCTION_SYMBOL: {
return QueryType.ShowCreateFunction;
}
case MySQLMRSLexer.PROCEDURE_SYMBOL: {
return QueryType.ShowCreateProcedure;
}
case MySQLMRSLexer.TABLE_SYMBOL: {
return QueryType.ShowCreateTable;
}
case MySQLMRSLexer.TRIGGER_SYMBOL: {
return QueryType.ShowCreateTrigger;
}
case MySQLMRSLexer.VIEW_SYMBOL: {
return QueryType.ShowCreateView;
}
case MySQLMRSLexer.REST_SYMBOL: {
return QueryType.Rest;
}
default: {
return QueryType.Show;
}
}
}
case MySQLMRSLexer.DATABASES_SYMBOL: {
return QueryType.ShowDatabases;
}
case MySQLMRSLexer.ENGINE_SYMBOL: {
return QueryType.ShowEngineStatus;
}
case MySQLMRSLexer.STORAGE_SYMBOL:
case MySQLMRSLexer.ENGINES_SYMBOL: {
return QueryType.ShowStorageEngines;
}
case MySQLMRSLexer.ERRORS_SYMBOL: {
return QueryType.ShowErrors;
}
case MySQLMRSLexer.EVENTS_SYMBOL: {
return QueryType.ShowEvents;
}
case MySQLMRSLexer.FUNCTION_SYMBOL: {
token = this.nextDefaultChannelToken();
if (token.type === Token.EOF) {
return QueryType.Ambiguous;
}
if (token.type === MySQLMRSLexer.CODE_SYMBOL) {
return QueryType.ShowFunctionCode;
}
return QueryType.ShowFunctionStatus;
}
case MySQLMRSLexer.GRANT_SYMBOL: {
return QueryType.ShowGrants;
}
case MySQLMRSLexer.INDEX_SYMBOL:
case MySQLMRSLexer.INDEXES_SYMBOL:
case MySQLMRSLexer.KEY_SYMBOL: {
return QueryType.ShowIndexes;
}
case MySQLMRSLexer.MASTER_SYMBOL: {
return QueryType.ShowMasterStatus;
}
case MySQLMRSLexer.OPEN_SYMBOL: {
return QueryType.ShowOpenTables;
}
case MySQLMRSLexer.PLUGIN_SYMBOL:
case MySQLMRSLexer.PLUGINS_SYMBOL: {
return QueryType.ShowPlugins;
}
case MySQLMRSLexer.PROCEDURE_SYMBOL: {
token = this.nextDefaultChannelToken();
if (token.type === Token.EOF) {
return QueryType.Show;
}
if (token.type === MySQLMRSLexer.STATUS_SYMBOL) {
return QueryType.ShowProcedureStatus;
}
return QueryType.ShowProcedureCode;
}
case MySQLMRSLexer.PRIVILEGES_SYMBOL: {
return QueryType.ShowPrivileges;
}
case MySQLMRSLexer.FULL_SYMBOL:
case MySQLMRSLexer.PROCESSLIST_SYMBOL: {
return QueryType.ShowProcessList;
}
case MySQLMRSLexer.PROFILE_SYMBOL: {
return QueryType.ShowProfile;
}
case MySQLMRSLexer.PROFILES_SYMBOL: {
return QueryType.ShowProfiles;
}
case MySQLMRSLexer.SLAVE_SYMBOL: {
token = this.nextDefaultChannelToken();
if (token.type === Token.EOF) {
return QueryType.Ambiguous;
}
if (token.type === MySQLMRSLexer.HOSTS_SYMBOL) {
return QueryType.ShowSlaveHosts;
}
return QueryType.ShowSlaveStatus;
}
case MySQLMRSLexer.STATUS_SYMBOL: {
return QueryType.ShowStatus;
}
case MySQLMRSLexer.VARIABLES_SYMBOL: {
return QueryType.ShowVariables;
}
case MySQLMRSLexer.TABLE_SYMBOL: {
return QueryType.ShowTableStatus;
}
case MySQLMRSLexer.TABLES_SYMBOL: {
return QueryType.ShowTables;
}
case MySQLMRSLexer.TRIGGERS_SYMBOL: {
return QueryType.ShowTriggers;
}
case MySQLMRSLexer.WARNINGS_SYMBOL: {
return QueryType.ShowWarnings;
}
case MySQLMRSLexer.REST_SYMBOL: {
return QueryType.Rest;
}
default: {
return QueryType.Unknown;
}
}
}
case MySQLMRSLexer.CACHE_SYMBOL: {
return QueryType.CacheIndex;
}
case MySQLMRSLexer.FLUSH_SYMBOL: {
return QueryType.Flush;
}
case MySQLMRSLexer.KILL_SYMBOL: {
return QueryType.Kill;
}
case MySQLMRSLexer.EXPLAIN_SYMBOL:
case MySQLMRSLexer.DESCRIBE_SYMBOL:
case MySQLMRSLexer.DESC_SYMBOL: {
token = this.nextDefaultChannelToken();
if (token.type === Token.EOF) {
return QueryType.Ambiguous;
}
if (this.isIdentifier(token.type) || token.type === MySQLMRSLexer.DOT_SYMBOL) {
return QueryType.ExplainTable;
}
// EXTENDED is a bit special as it can be both, a table identifier or the keyword.
if (token.type === MySQLMRSLexer.EXTENDED_SYMBOL) {
token = this.nextDefaultChannelToken();
if (token.type === Token.EOF) {
return QueryType.ExplainTable;
}
switch (token.type) {
case MySQLMRSLexer.DELETE_SYMBOL:
case MySQLMRSLexer.INSERT_SYMBOL:
case MySQLMRSLexer.REPLACE_SYMBOL:
case MySQLMRSLexer.UPDATE_SYMBOL: {
return QueryType.ExplainStatement;
}
default: {
return QueryType.ExplainTable;
}
}
}
return QueryType.ExplainStatement;
}
case MySQLMRSLexer.HELP_SYMBOL: {
return QueryType.Help;
}
case MySQLMRSLexer.USE_SYMBOL: {
token = this.nextDefaultChannelToken();
if (token.type === MySQLMRSLexer.REST_SYMBOL) {
return QueryType.RestUse;
}
return QueryType.Use;
}
default: {
return QueryType.Unknown;
}
}
}