From 957bbfc7b0c8e003fdebfd51fe77382e98afdfd9 Mon Sep 17 00:00:00 2001 From: Vasily Nemkov Date: Mon, 7 Dec 2020 13:18:54 +0300 Subject: [PATCH] Fixed parsing invalid cases: prohibit empty lists and APPLY/REPLACE column transformers --- src/Parsers/ExpressionElementParsers.cpp | 4 ++-- src/Parsers/ParserOptimizeQuery.cpp | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Parsers/ExpressionElementParsers.cpp b/src/Parsers/ExpressionElementParsers.cpp index 6bb131cca9c..6a56940c5df 100644 --- a/src/Parsers/ExpressionElementParsers.cpp +++ b/src/Parsers/ExpressionElementParsers.cpp @@ -1254,7 +1254,7 @@ bool ParserColumnsMatcher::parseImpl(Pos & pos, ASTPtr & node, Expected & expect res->children.push_back(regex_node); } - ParserColumnsTransformers transformers_p; + ParserColumnsTransformers transformers_p(allowed_transformers); ASTPtr transformer; while (transformers_p.parse(pos, transformer, expected)) { @@ -1429,7 +1429,7 @@ bool ParserAsterisk::parseImpl(Pos & pos, ASTPtr & node, Expected & expected) { ++pos; auto asterisk = std::make_shared(); - ParserColumnsTransformers transformers_p; + ParserColumnsTransformers transformers_p(allowed_transformers); ASTPtr transformer; while (transformers_p.parse(pos, transformer, expected)) { diff --git a/src/Parsers/ParserOptimizeQuery.cpp b/src/Parsers/ParserOptimizeQuery.cpp index a16030cd56b..629b88adb88 100644 --- a/src/Parsers/ParserOptimizeQuery.cpp +++ b/src/Parsers/ParserOptimizeQuery.cpp @@ -72,7 +72,7 @@ bool ParserOptimizeQuery::parseImpl(Pos & pos, ASTPtr & node, Expected & expecte ASTPtr deduplicate_by_columns; if (deduplicate && s_by.ignore(pos, expected)) { - if (!ParserList(std::make_unique(), std::make_unique(TokenType::Comma)) + if (!ParserList(std::make_unique(), std::make_unique(TokenType::Comma), false) .parse(pos, deduplicate_by_columns, expected)) return false; }