aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authora-romanov <Anton.Romanov@ydb.tech>2023-04-26 16:12:10 +0300
committera-romanov <Anton.Romanov@ydb.tech>2023-04-26 16:12:10 +0300
commit50b1a3669d6924e89fde02dc52208d793bba1fbd (patch)
tree6f76613aff2349a13a2b32f4d23347396d23189d
parent8a554678125eeb8bb2e72567d8ea442a899400f1 (diff)
downloadydb-50b1a3669d6924e89fde02dc52208d793bba1fbd.tar.gz
YQL-8971 YQL-15876 Fix constraints on YtEquiJoin premaps.
-rw-r--r--ydb/library/yql/ast/yql_constraint.cpp9
-rw-r--r--ydb/library/yql/ast/yql_constraint.h1
2 files changed, 10 insertions, 0 deletions
diff --git a/ydb/library/yql/ast/yql_constraint.cpp b/ydb/library/yql/ast/yql_constraint.cpp
index 6aca0bb779..569d705123 100644
--- a/ydb/library/yql/ast/yql_constraint.cpp
+++ b/ydb/library/yql/ast/yql_constraint.cpp
@@ -1234,6 +1234,15 @@ TPartOfConstraintNode<TOriginalConstraintNode>::MakeComplete(TExprContext& ctx,
}
template<class TOriginalConstraintNode>
+const TOriginalConstraintNode*
+TPartOfConstraintNode<TOriginalConstraintNode>::MakeComplete(TExprContext& ctx, const TPartOfConstraintNode* partial, const TOriginalConstraintNode* original, const std::string_view& field) {
+ if (!partial)
+ return nullptr;
+
+ return MakeComplete(ctx, partial->GetColumnMapping(), original, field);
+}
+
+template<class TOriginalConstraintNode>
bool TPartOfConstraintNode<TOriginalConstraintNode>::IsApplicableToType(const TTypeAnnotationNode& type) const {
if (ETypeAnnotationKind::Dict == type.GetKind())
return true; // TODO: check for dict.
diff --git a/ydb/library/yql/ast/yql_constraint.h b/ydb/library/yql/ast/yql_constraint.h
index f189177d01..188d517f1d 100644
--- a/ydb/library/yql/ast/yql_constraint.h
+++ b/ydb/library/yql/ast/yql_constraint.h
@@ -312,6 +312,7 @@ public:
static TMapType ExtractField(const TMapType& mapping, const std::string_view& field);
static const TMainConstraint* MakeComplete(TExprContext& ctx, const TMapType& mapping, const TMainConstraint* original, const std::string_view& field = {});
+ static const TMainConstraint* MakeComplete(TExprContext& ctx, const TPartOfConstraintNode* partial, const TMainConstraint* original, const std::string_view& field = {});
bool IsApplicableToType(const TTypeAnnotationNode& type) const override;
private: