From c4cd8c6da49570dd2734e9e8b979361a1657bc23 Mon Sep 17 00:00:00 2001 From: avogar Date: Wed, 19 Jan 2022 14:22:32 +0300 Subject: [PATCH] Fix parsing query INSERT INTO ... VALUES SETTINGS ... (...), ... --- src/Parsers/ParserInsertQuery.cpp | 4 ++++ .../0_stateless/02180_insert_into_values_settings.reference | 0 .../queries/0_stateless/02180_insert_into_values_settings.sql | 4 ++++ 3 files changed, 8 insertions(+) create mode 100644 tests/queries/0_stateless/02180_insert_into_values_settings.reference create mode 100644 tests/queries/0_stateless/02180_insert_into_values_settings.sql diff --git a/src/Parsers/ParserInsertQuery.cpp b/src/Parsers/ParserInsertQuery.cpp index 568f486a5cf..44db07278c2 100644 --- a/src/Parsers/ParserInsertQuery.cpp +++ b/src/Parsers/ParserInsertQuery.cpp @@ -184,6 +184,10 @@ bool ParserInsertQuery::parseImpl(Pos & pos, ASTPtr & node, Expected & expected) ParserSetQuery parser_settings(true); if (!parser_settings.parse(pos, settings_ast, expected)) return false; + /// In case of INSERT INTO ... VALUES SETTINGS ... (...), (...), ... + /// we should move data pointer after all settings. + if (data != nullptr) + data = pos->begin; } if (select) diff --git a/tests/queries/0_stateless/02180_insert_into_values_settings.reference b/tests/queries/0_stateless/02180_insert_into_values_settings.reference new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/queries/0_stateless/02180_insert_into_values_settings.sql b/tests/queries/0_stateless/02180_insert_into_values_settings.sql new file mode 100644 index 00000000000..0a1468070c1 --- /dev/null +++ b/tests/queries/0_stateless/02180_insert_into_values_settings.sql @@ -0,0 +1,4 @@ +drop table if exists t; +create table t (x Bool) engine=Memory(); +insert into t values settings bool_true_representation='да' ('да'); +drop table t;