diff options
author | a-romanov <Anton.Romanov@ydb.tech> | 2023-04-26 16:12:10 +0300 |
---|---|---|
committer | a-romanov <Anton.Romanov@ydb.tech> | 2023-04-26 16:12:10 +0300 |
commit | 50b1a3669d6924e89fde02dc52208d793bba1fbd (patch) | |
tree | 6f76613aff2349a13a2b32f4d23347396d23189d | |
parent | 8a554678125eeb8bb2e72567d8ea442a899400f1 (diff) | |
download | ydb-50b1a3669d6924e89fde02dc52208d793bba1fbd.tar.gz |
YQL-8971 YQL-15876 Fix constraints on YtEquiJoin premaps.
-rw-r--r-- | ydb/library/yql/ast/yql_constraint.cpp | 9 | ||||
-rw-r--r-- | ydb/library/yql/ast/yql_constraint.h | 1 |
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: |