aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authora-romanov <Anton.Romanov@ydb.tech>2023-04-09 08:20:10 +0300
committera-romanov <Anton.Romanov@ydb.tech>2023-04-09 08:20:10 +0300
commit41d195f84607adc2883263000ecb9ba49e907ae9 (patch)
tree1a5ad70406a0c34138458f0ed86b142581a9a9e0
parent7c973fcc5aa3d41f1c2fe34e71b7d03a9be5dedc (diff)
downloadydb-41d195f84607adc2883263000ecb9ba49e907ae9.tar.gz
YQL-8971 YQL-15435 Fix unique for Condense1 corner case.
-rw-r--r--ydb/library/yql/ast/yql_constraint.cpp10
1 files changed, 4 insertions, 6 deletions
diff --git a/ydb/library/yql/ast/yql_constraint.cpp b/ydb/library/yql/ast/yql_constraint.cpp
index ac248dd7c02..190c323e83b 100644
--- a/ydb/library/yql/ast/yql_constraint.cpp
+++ b/ydb/library/yql/ast/yql_constraint.cpp
@@ -527,7 +527,7 @@ TUniqueConstraintNodeBase<Distinct>::ColumnsListToSet(const std::vector<std::str
YQL_ENSURE(!columns.empty());
TSetType set;
set.reserve(columns.size());
- std::transform(columns.cbegin(), columns.cend(), std::back_inserter(set), [](const std::string_view& column) { return TPathType(1U, column); });
+ std::transform(columns.cbegin(), columns.cend(), std::back_inserter(set), [](const std::string_view& column) { return column.empty() ? TPathType() : TPathType(1U, column); });
std::sort(set.begin(), set.end());
return set;
}
@@ -1448,15 +1448,13 @@ TPassthroughConstraintNode::TMapType TPassthroughConstraintNode::GetColumnMappin
}
TPassthroughConstraintNode::TReverseMapType TPassthroughConstraintNode::GetReverseMapping() const {
- if (1U == Mapping_.size() && 1U == Mapping_.cbegin()->second.size() && Mapping_.cbegin()->second.cbegin()->first.empty())
- return {{Mapping_.cbegin()->second.cbegin()->second, Mapping_.cbegin()->second.cbegin()->second}};
-
TReverseMapType reverseMapping;
for (const auto& part : Mapping_) {
for (const auto& item : part.second) {
- if (1U == item.first.size()) {
+ if (item.first.empty())
+ reverseMapping.emplace_back(item.second, std::string_view());
+ else if (1U == item.first.size())
reverseMapping.emplace_back(item.second, item.first.front());
- }
}
}
::Sort(reverseMapping);