diff options
author | udovichenko-r <rvu@ydb.tech> | 2023-08-15 11:57:33 +0300 |
---|---|---|
committer | udovichenko-r <rvu@ydb.tech> | 2023-08-15 13:18:35 +0300 |
commit | 445c5470a2dc5586d6837112a9a31d0160b182ce (patch) | |
tree | c6de2e8a685fbb692f427d00a39c24fc7b021789 | |
parent | 1db49fdc7415c8a0d33c161e75d4ebc121722fff (diff) | |
download | ydb-445c5470a2dc5586d6837112a9a31d0160b182ce.tar.gz |
[yt provider] Skip range check for non existing table
YQL-16309
-rw-r--r-- | ydb/library/yql/providers/yt/provider/yql_yt_table.cpp | 7 | ||||
-rw-r--r-- | ydb/library/yql/providers/yt/provider/yql_yt_table.h | 2 |
2 files changed, 5 insertions, 4 deletions
diff --git a/ydb/library/yql/providers/yt/provider/yql_yt_table.cpp b/ydb/library/yql/providers/yt/provider/yql_yt_table.cpp index b42a182343d..d5372ad8044 100644 --- a/ydb/library/yql/providers/yt/provider/yql_yt_table.cpp +++ b/ydb/library/yql/providers/yt/provider/yql_yt_table.cpp @@ -953,7 +953,7 @@ TYtOutTableInfo& TYtOutTableInfo::SetUnique(const TDistinctConstraintNode* disti ///////////////////////////////////////////////////////////////////////////////////////////////////////// -bool TYtRangesInfo::Validate(const TExprNode& node, TExprContext& ctx, const TYqlRowSpecInfo::TPtr& rowSpec) { +bool TYtRangesInfo::Validate(const TExprNode& node, TExprContext& ctx, bool exists, const TYqlRowSpecInfo::TPtr& rowSpec) { auto validatKey = [&rowSpec, &ctx] (TExprNode& key) { if (!EnsureTupleMaxSize(key, (ui32)rowSpec->SortMembers.size(), ctx)) { return false; @@ -1029,7 +1029,7 @@ bool TYtRangesInfo::Validate(const TExprNode& node, TExprContext& ctx, const TYq return false; } } - } else { + } else if (exists) { ctx.AddError(TIssue(ctx.GetPosition(child->Pos()), TStringBuilder() << child->Content() << " cannot be used with YAMR table")); return false; @@ -2740,7 +2740,8 @@ bool TYtPathInfo::Validate(const TExprNode& node, TExprContext& ctx) { if (!node.Child(TYtPath::idx_Ranges)->IsCallable(TCoVoid::CallableName())) { TYqlRowSpecInfo::TPtr rowSpec = TYtTableBaseInfo::GetRowSpec(TExprBase(node.ChildPtr(TYtPath::idx_Table))); - if (!TYtRangesInfo::Validate(*node.Child(TYtPath::idx_Ranges), ctx, rowSpec)) { + TYtTableMetaInfo::TPtr meta = TYtTableBaseInfo::GetMeta(TExprBase(node.ChildPtr(TYtPath::idx_Table))); + if (!TYtRangesInfo::Validate(*node.Child(TYtPath::idx_Ranges), ctx, meta && meta->DoesExist, rowSpec)) { return false; } } diff --git a/ydb/library/yql/providers/yt/provider/yql_yt_table.h b/ydb/library/yql/providers/yt/provider/yql_yt_table.h index b4291c5b064..467b7366b3e 100644 --- a/ydb/library/yql/providers/yt/provider/yql_yt_table.h +++ b/ydb/library/yql/providers/yt/provider/yql_yt_table.h @@ -205,7 +205,7 @@ struct TYtRangesInfo: public TThrRefBase { { } - static bool Validate(const TExprNode& node, TExprContext& ctx, const TYqlRowSpecInfo::TPtr& rowSpec = {}); + static bool Validate(const TExprNode& node, TExprContext& ctx, bool exists, const TYqlRowSpecInfo::TPtr& rowSpec = {}); void Parse(NNodes::TExprBase node); void Parse(const TVector<NYT::TReadRange>& ranges, TExprContext& ctx, const TPositionHandle& pos = {}); void AddRowRange(const TRowRange& range); |