From 73c5fbcba57ddd38312d652f98de211dcfb1eca2 Mon Sep 17 00:00:00 2001 From: hcz Date: Fri, 21 Aug 2020 16:11:49 +0800 Subject: [PATCH] Fix create table as table function with engine --- src/Parsers/ASTCreateQuery.cpp | 11 ++++++----- src/Parsers/ParserCreateQuery.cpp | 3 ++- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/Parsers/ASTCreateQuery.cpp b/src/Parsers/ASTCreateQuery.cpp index 16cc16ac2e..73903e28f8 100644 --- a/src/Parsers/ASTCreateQuery.cpp +++ b/src/Parsers/ASTCreateQuery.cpp @@ -265,11 +265,6 @@ void ASTCreateQuery::formatQueryImpl(const FormatSettings & settings, FormatStat formatOnCluster(settings); } - if (as_table_function) - { - settings.ostr << (settings.hilite ? hilite_keyword : "") << " AS " << (settings.hilite ? hilite_none : ""); - as_table_function->formatImpl(settings, state, frame); - } if (to_table_id) { settings.ostr @@ -285,6 +280,12 @@ void ASTCreateQuery::formatQueryImpl(const FormatSettings & settings, FormatStat << (!as_database.empty() ? backQuoteIfNeed(as_database) + "." : "") << backQuoteIfNeed(as_table); } + if (as_table_function) + { + settings.ostr << (settings.hilite ? hilite_keyword : "") << " AS " << (settings.hilite ? hilite_none : ""); + as_table_function->formatImpl(settings, state, frame); + } + frame.expression_list_always_start_on_new_line = true; if (columns_list) diff --git a/src/Parsers/ParserCreateQuery.cpp b/src/Parsers/ParserCreateQuery.cpp index 463d2ae8f3..55208ca413 100644 --- a/src/Parsers/ParserCreateQuery.cpp +++ b/src/Parsers/ParserCreateQuery.cpp @@ -427,7 +427,8 @@ bool ParserCreateTableQuery::parseImpl(Pos & pos, ASTPtr & node, Expected & expe if (!select_p.parse(pos, select, expected)) /// AS SELECT ... { - if (!table_function_p.parse(pos, as_table_function, expected)) + /// ENGINE can not be specified for table functions. + if (storage || !table_function_p.parse(pos, as_table_function, expected)) { /// AS [db.]table if (!name_p.parse(pos, as_table, expected)) -- GitLab