fix typo
This commit is contained in:
fenglv 2022-04-17 14:32:26 +00:00 committed by alesapin
parent 72b0aa18e7
commit ee3e366356
2 changed files with 12 additions and 3 deletions

View File

@ -41,6 +41,7 @@ bool ParserInsertQuery::parseImpl(Pos & pos, ASTPtr & node, Expected & expected)
ParserKeyword s_with("WITH"); ParserKeyword s_with("WITH");
ParserToken s_lparen(TokenType::OpeningRoundBracket); ParserToken s_lparen(TokenType::OpeningRoundBracket);
ParserToken s_rparen(TokenType::ClosingRoundBracket); ParserToken s_rparen(TokenType::ClosingRoundBracket);
ParserToken s_semicolon(TokenType::Semicolon);
ParserIdentifier name_p(true); ParserIdentifier name_p(true);
ParserList columns_p(std::make_unique<ParserInsertElement>(), std::make_unique<ParserToken>(TokenType::Comma), false); ParserList columns_p(std::make_unique<ParserInsertElement>(), std::make_unique<ParserToken>(TokenType::Comma), false);
ParserFunction table_function_p{false}; ParserFunction table_function_p{false};
@ -146,8 +147,10 @@ bool ParserInsertQuery::parseImpl(Pos & pos, ASTPtr & node, Expected & expected)
/// After FROM INFILE we expect FORMAT, SELECT, WITH or nothing. /// After FROM INFILE we expect FORMAT, SELECT, WITH or nothing.
if (!infile && s_values.ignore(pos, expected)) if (!infile && s_values.ignore(pos, expected))
{ {
/// If VALUES is defined in query, everything except setting will be parsed as data /// If VALUES is defined in query, everything except setting will be parsed as data,
data = pos->begin; /// and if values followed by semicolon, the data should be null.
if (!s_semicolon.checkWithoutMoving(pos, expected))
data = pos->begin;
format_str = "Values"; format_str = "Values";
} }
else if (s_format.ignore(pos, expected)) else if (s_format.ignore(pos, expected))

View File

@ -956,7 +956,13 @@ namespace
if (!insert_query) if (!insert_query)
throw Exception("Query requires data to insert, but it is not an INSERT query", ErrorCodes::NO_DATA_TO_INSERT); throw Exception("Query requires data to insert, but it is not an INSERT query", ErrorCodes::NO_DATA_TO_INSERT);
else else
throw Exception("No data to insert", ErrorCodes::NO_DATA_TO_INSERT); {
const auto & settings = query_context->getSettingsRef();
if (settings.throw_if_no_data_to_insert)
throw Exception("No data to insert", ErrorCodes::NO_DATA_TO_INSERT);
else
return;
}
} }
/// This is significant, because parallel parsing may be used. /// This is significant, because parallel parsing may be used.