From f3466679562c4e409c90cf3c5c29aab82ca94a25 Mon Sep 17 00:00:00 2001 From: joelynch Date: Mon, 4 Dec 2023 20:13:53 +0100 Subject: [PATCH] Simpler fix --- src/Parsers/ParserSystemQuery.cpp | 44 ++++++++++++------------------- src/Server/ServerType.h | 2 +- 2 files changed, 18 insertions(+), 28 deletions(-) diff --git a/src/Parsers/ParserSystemQuery.cpp b/src/Parsers/ParserSystemQuery.cpp index cdc058a166b..2f6a1142a8f 100644 --- a/src/Parsers/ParserSystemQuery.cpp +++ b/src/Parsers/ParserSystemQuery.cpp @@ -481,40 +481,30 @@ bool ParserSystemQuery::parseImpl(IParser::Pos & pos, ASTPtr & node, Expected & { type = ServerType::Type::END; custom_name = ""; - ParserKeyword except("EXCEPT"); for (const auto & cur_type : magic_enum::enum_values()) { - // Backtracking is required here in the case of TCP, TCP SECURE and TCP WITH PROXY - Pos pos_copy = pos; - ParserKeyword keyword(ServerType::serverTypeToString(cur_type)); - if (keyword.ignore(pos_copy, expected)) + if (ParserKeyword{ServerType::serverTypeToString(cur_type)}.ignore(pos, expected)) { - if (cur_type == ServerType::CUSTOM) - { - ASTPtr ast; - keyword.ignore(pos, expected); - type = cur_type; - if (!ParserStringLiteral{}.parse(pos, ast, expected)) - return false; - - custom_name = ast->as().value.get(); - break; - } - - if (pos_copy.get().type == TokenType::EndOfStream - || pos_copy.get().type == TokenType::Comma - || except.checkWithoutMoving(pos_copy, expected)) - { - keyword.ignore(pos, expected); - type = cur_type; - break; - } - + type = cur_type; + break; } } - return type != ServerType::Type::END; + if (type == ServerType::Type::END) + return false; + + if (type == ServerType::CUSTOM) + { + ASTPtr ast; + + if (!ParserStringLiteral{}.parse(pos, ast, expected)) + return false; + + custom_name = ast->as().value.get(); + } + + return true; }; ServerType::Type base_type; diff --git a/src/Server/ServerType.h b/src/Server/ServerType.h index e3544fe6a28..07bb74ea009 100644 --- a/src/Server/ServerType.h +++ b/src/Server/ServerType.h @@ -11,9 +11,9 @@ class ServerType public: enum Type { - TCP, TCP_WITH_PROXY, TCP_SECURE, + TCP, HTTP, HTTPS, MYSQL,