diff options
author | vvvv <vvvv@ydb.tech> | 2023-07-20 19:58:58 +0300 |
---|---|---|
committer | vvvv <vvvv@ydb.tech> | 2023-07-20 19:58:58 +0300 |
commit | cd1113c851988dfe1e6c1c967602d06d14e4e70f (patch) | |
tree | 743c78252e751213cadf9e95875a78330b2e7357 | |
parent | 81b72a16387307cd9ee2b69e36a9bb4f85d07a65 (diff) | |
download | ydb-cd1113c851988dfe1e6c1c967602d06d14e4e70f.tar.gz |
Fixed optimizer: == with literal bools
-rw-r--r-- | ydb/library/yql/core/common_opt/yql_co_simple1.cpp | 4 |
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()); |