diff options
author | a-romanov <Anton.Romanov@ydb.tech> | 2023-04-04 19:04:18 +0300 |
---|---|---|
committer | a-romanov <Anton.Romanov@ydb.tech> | 2023-04-04 19:04:18 +0300 |
commit | eacce0097cb55d01d55c0da863f59edd2d9f0d1f (patch) | |
tree | a11e029ebd1b4afb4bb7a2f51f5b7871336d0191 | |
parent | aef659b030e121f88e0f2f7d72ed739880cedb9c (diff) | |
download | ydb-eacce0097cb55d01d55c0da863f59edd2d9f0d1f.tar.gz |
YQL-8971 YQL-15555 Fix constraints for EquiJoin with renames.
-rw-r--r-- | ydb/library/yql/core/yql_expr_constraint.cpp | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/ydb/library/yql/core/yql_expr_constraint.cpp b/ydb/library/yql/core/yql_expr_constraint.cpp index d0db56f85de..025b503c4f5 100644 --- a/ydb/library/yql/core/yql_expr_constraint.cpp +++ b/ydb/library/yql/core/yql_expr_constraint.cpp @@ -523,6 +523,12 @@ private: input->AddConstraint(filtered); } } + + if (const auto part = input->Head().GetConstraint<TPartOfDistinctConstraintNode>()) { + if (const auto filtered = part->FilterFields(ctx, filter)) { + input->AddConstraint(filtered); + } + } } return TStatus::Ok; @@ -2286,7 +2292,9 @@ private: return {}; const auto it = renames.find(path.front()); - if (renames.cend() == it || it->second.empty()) + if (renames.cend() == it) + return {path}; + if (it->second.empty()) return {}; std::vector<TConstraintNode::TPathType> res(it->second.size()); |