aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorudovichenko-r <rvu@ydb.tech>2023-08-15 11:57:33 +0300
committerudovichenko-r <rvu@ydb.tech>2023-08-15 13:18:35 +0300
commit445c5470a2dc5586d6837112a9a31d0160b182ce (patch)
treec6de2e8a685fbb692f427d00a39c24fc7b021789
parent1db49fdc7415c8a0d33c161e75d4ebc121722fff (diff)
downloadydb-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.cpp7
-rw-r--r--ydb/library/yql/providers/yt/provider/yql_yt_table.h2
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);