mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-22 07:31:57 +00:00
Check where and prewhere identifiers exist.
This commit is contained in:
parent
3296ad29e2
commit
e2ade3c574
@ -844,7 +844,12 @@ ActionsDAGPtr SelectQueryExpressionAnalyzer::appendPrewhere(
|
|||||||
step.required_output.push_back(prewhere_column_name);
|
step.required_output.push_back(prewhere_column_name);
|
||||||
step.can_remove_required_output.push_back(true);
|
step.can_remove_required_output.push_back(true);
|
||||||
|
|
||||||
auto filter_type = (*step.actions()->getIndex().find(prewhere_column_name))->result_type;
|
const auto & index = step.actions()->getIndex();
|
||||||
|
auto it = index.find(prewhere_column_name);
|
||||||
|
if (it == index.end())
|
||||||
|
throw Exception(ErrorCodes::UNKNOWN_IDENTIFIER, "Unknown identifier: '{}'", prewhere_column_name);
|
||||||
|
|
||||||
|
auto filter_type = (*it)->result_type;
|
||||||
if (!filter_type->canBeUsedInBooleanContext())
|
if (!filter_type->canBeUsedInBooleanContext())
|
||||||
throw Exception("Invalid type for filter in PREWHERE: " + filter_type->getName(),
|
throw Exception("Invalid type for filter in PREWHERE: " + filter_type->getName(),
|
||||||
ErrorCodes::ILLEGAL_TYPE_OF_COLUMN_FOR_FILTER);
|
ErrorCodes::ILLEGAL_TYPE_OF_COLUMN_FOR_FILTER);
|
||||||
@ -944,7 +949,12 @@ bool SelectQueryExpressionAnalyzer::appendWhere(ExpressionActionsChain & chain,
|
|||||||
step.required_output.push_back(where_column_name);
|
step.required_output.push_back(where_column_name);
|
||||||
step.can_remove_required_output = {true};
|
step.can_remove_required_output = {true};
|
||||||
|
|
||||||
auto filter_type = (*step.actions()->getIndex().find(where_column_name))->result_type;
|
const auto & index = step.actions()->getIndex();
|
||||||
|
auto it = index.find(where_column_name);
|
||||||
|
if (it == index.end())
|
||||||
|
throw Exception(ErrorCodes::UNKNOWN_IDENTIFIER, "Unknown identifier: '{}'", where_column_name);
|
||||||
|
|
||||||
|
auto filter_type = (*it)->result_type;
|
||||||
if (!filter_type->canBeUsedInBooleanContext())
|
if (!filter_type->canBeUsedInBooleanContext())
|
||||||
throw Exception("Invalid type for filter in WHERE: " + filter_type->getName(),
|
throw Exception("Invalid type for filter in WHERE: " + filter_type->getName(),
|
||||||
ErrorCodes::ILLEGAL_TYPE_OF_COLUMN_FOR_FILTER);
|
ErrorCodes::ILLEGAL_TYPE_OF_COLUMN_FOR_FILTER);
|
||||||
|
Loading…
Reference in New Issue
Block a user