aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorvvvv <vvvv@ydb.tech>2023-07-20 19:58:58 +0300
committervvvv <vvvv@ydb.tech>2023-07-20 19:58:58 +0300
commitcd1113c851988dfe1e6c1c967602d06d14e4e70f (patch)
tree743c78252e751213cadf9e95875a78330b2e7357
parent81b72a16387307cd9ee2b69e36a9bb4f85d07a65 (diff)
downloadydb-cd1113c851988dfe1e6c1c967602d06d14e4e70f.tar.gz
Fixed optimizer: == with literal bools
-rw-r--r--ydb/library/yql/core/common_opt/yql_co_simple1.cpp4
1 files changed, 2 insertions, 2 deletions
diff --git a/ydb/library/yql/core/common_opt/yql_co_simple1.cpp b/ydb/library/yql/core/common_opt/yql_co_simple1.cpp
index 7fcae969e6..4214724b1d 100644
--- a/ydb/library/yql/core/common_opt/yql_co_simple1.cpp
+++ b/ydb/library/yql/core/common_opt/yql_co_simple1.cpp
@@ -891,13 +891,13 @@ TExprNode::TPtr OptimizeEquality(const TExprNode::TPtr& node, TExprContext& ctx)
}
if (IsBoolType(*node) || IsOptBoolType(*node)) {
- if (node->Head().IsCallable("Bool")) {
+ if (node->Head().IsCallable("Bool") && (IsBoolType(node->Tail()) || IsOptBoolType(node->Tail()))) {
YQL_CLOG(DEBUG, Core) << "Compare '" << node->Content() << "' with " << node->Head().Content() << " '" << node->Head().Head().Content();
const auto value = FromString<bool>(node->Head().Head().Content());
return ctx.WrapByCallableIf(Equal != value, "Not", node->TailPtr());
}
- if (node->Tail().IsCallable("Bool")) {
+ if (node->Tail().IsCallable("Bool") && (IsBoolType(node->Head()) || IsOptBoolType(node->Head()))) {
YQL_CLOG(DEBUG, Core) << "Compare '" << node->Content() << "' with " << node->Tail().Content() << " '" << node->Tail().Head().Content();
const auto value = FromString<bool>(node->Tail().Head().Content());
return ctx.WrapByCallableIf(Equal != value, "Not", node->HeadPtr());