Skip to content

Commit 099240b

Browse files
committed
Improve DeriveClusterFromSection
commit_hash:5ee418dc34c9158f4567ba43a2353d33de45d02e
1 parent de15d8e commit 099240b

9 files changed

+74
-44
lines changed

yt/yql/providers/yt/provider/phy_opt/yql_yt_phy_opt_join.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ TMaybeNode<TExprBase> TYtPhysicalOptProposalTransformer::EquiJoin(TExprBase node
5050
} else {
5151
hasYtInput = true;
5252
auto cluster = DeriveClusterFromInput(list, selectionMode);
53-
if (!UpdateUsedCluster(inputClusters[i], cluster, selectionMode)) {
53+
if (!cluster || !UpdateUsedCluster(inputClusters[i], *cluster, selectionMode)) {
5454
return node;
5555
}
5656
}

yt/yql/providers/yt/provider/phy_opt/yql_yt_phy_opt_map.cpp

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ TMaybeNode<TExprBase> TYtPhysicalOptProposalTransformer::FlatMap(TExprBase node,
6464
const ERuntimeClusterSelectionMode selectionMode =
6565
State_->Configuration->RuntimeClusterSelection.Get().GetOrElse(DEFAULT_RUNTIME_CLUSTER_SELECTION);
6666
auto cluster = DeriveClusterFromInput(input, selectionMode);
67-
if (!IsYtCompleteIsolatedLambda(flatMap.Lambda().Ref(), syncList, cluster, false, selectionMode)) {
67+
if (!cluster || !IsYtCompleteIsolatedLambda(flatMap.Lambda().Ref(), syncList, *cluster, false, selectionMode)) {
6868
return node;
6969
}
7070

@@ -120,7 +120,7 @@ TMaybeNode<TExprBase> TYtPhysicalOptProposalTransformer::FlatMap(TExprBase node,
120120

121121
auto ytMap = Build<TYtMap>(ctx, node.Pos())
122122
.World(ApplySyncListToWorld(GetWorld(input, {}, ctx).Ptr(), syncList, ctx))
123-
.DataSink(MakeDataSink(node.Pos(), cluster, ctx))
123+
.DataSink(MakeDataSink(node.Pos(), *cluster, ctx))
124124
.Input(ConvertInputTable(input, ctx))
125125
.Output()
126126
.Add(outTables)
@@ -160,7 +160,7 @@ TMaybeNode<TExprBase> TYtPhysicalOptProposalTransformer::LMap(TExprBase node, TE
160160
const ERuntimeClusterSelectionMode selectionMode =
161161
State_->Configuration->RuntimeClusterSelection.Get().GetOrElse(DEFAULT_RUNTIME_CLUSTER_SELECTION);
162162
auto cluster = DeriveClusterFromInput(lmap.Input(), selectionMode);
163-
if (!IsYtCompleteIsolatedLambda(lmap.Lambda().Ref(), syncList, cluster, false, selectionMode)) {
163+
if (!cluster || !IsYtCompleteIsolatedLambda(lmap.Lambda().Ref(), syncList, *cluster, false, selectionMode)) {
164164
return node;
165165
}
166166

@@ -197,7 +197,7 @@ TMaybeNode<TExprBase> TYtPhysicalOptProposalTransformer::LMap(TExprBase node, TE
197197

198198
auto map = Build<TYtMap>(ctx, lmap.Pos())
199199
.World(ApplySyncListToWorld(NPrivate::GetWorld(lmap.Input(), {}, ctx).Ptr(), syncList, ctx))
200-
.DataSink(MakeDataSink(lmap.Pos(), cluster, ctx))
200+
.DataSink(MakeDataSink(lmap.Pos(), *cluster, ctx))
201201
.Input(NPrivate::ConvertInputTable(lmap.Input(), ctx))
202202
.Output()
203203
.Add(outTables)
@@ -243,19 +243,22 @@ TMaybeNode<TExprBase> TYtPhysicalOptProposalTransformer::CombineByKey(TExprBase
243243
const ERuntimeClusterSelectionMode selectionMode =
244244
State_->Configuration->RuntimeClusterSelection.Get().GetOrElse(DEFAULT_RUNTIME_CLUSTER_SELECTION);
245245
auto cluster = DeriveClusterFromInput(input, selectionMode);
246-
if (!IsYtCompleteIsolatedLambda(combineByKey.PreMapLambda().Ref(), syncList, cluster, false, selectionMode)) {
246+
if (!cluster) {
247247
return node;
248248
}
249-
if (!IsYtCompleteIsolatedLambda(combineByKey.KeySelectorLambda().Ref(), syncList, cluster, false, selectionMode)) {
249+
if (!IsYtCompleteIsolatedLambda(combineByKey.PreMapLambda().Ref(), syncList, *cluster, false, selectionMode)) {
250250
return node;
251251
}
252-
if (!IsYtCompleteIsolatedLambda(combineByKey.InitHandlerLambda().Ref(), syncList, cluster, false, selectionMode)) {
252+
if (!IsYtCompleteIsolatedLambda(combineByKey.KeySelectorLambda().Ref(), syncList, *cluster, false, selectionMode)) {
253253
return node;
254254
}
255-
if (!IsYtCompleteIsolatedLambda(combineByKey.UpdateHandlerLambda().Ref(), syncList, cluster, false, selectionMode)) {
255+
if (!IsYtCompleteIsolatedLambda(combineByKey.InitHandlerLambda().Ref(), syncList, *cluster, false, selectionMode)) {
256256
return node;
257257
}
258-
if (!IsYtCompleteIsolatedLambda(combineByKey.FinishHandlerLambda().Ref(), syncList, cluster, false, selectionMode)) {
258+
if (!IsYtCompleteIsolatedLambda(combineByKey.UpdateHandlerLambda().Ref(), syncList, *cluster, false, selectionMode)) {
259+
return node;
260+
}
261+
if (!IsYtCompleteIsolatedLambda(combineByKey.FinishHandlerLambda().Ref(), syncList, *cluster, false, selectionMode)) {
259262
return node;
260263
}
261264

@@ -394,7 +397,7 @@ TMaybeNode<TExprBase> TYtPhysicalOptProposalTransformer::CombineByKey(TExprBase
394397
return Build<TYtOutput>(ctx, combineByKey.Pos())
395398
.Operation<TYtMap>()
396399
.World(ApplySyncListToWorld(GetWorld(input, {}, ctx).Ptr(), syncList, ctx))
397-
.DataSink(MakeDataSink(combineByKey.Pos(), cluster, ctx))
400+
.DataSink(MakeDataSink(combineByKey.Pos(), *cluster, ctx))
398401
.Input(ConvertInputTable(input, ctx))
399402
.Output()
400403
.Add(combineOut.ToExprNode(ctx, combineByKey.Pos()).Cast<TYtOutTable>())

yt/yql/providers/yt/provider/phy_opt/yql_yt_phy_opt_misc.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -326,7 +326,7 @@ TMaybeNode<TExprBase> TYtPhysicalOptProposalTransformer::TakeOrSkip(TExprBase no
326326
const ERuntimeClusterSelectionMode selectionMode =
327327
State_->Configuration->RuntimeClusterSelection.Get().GetOrElse(DEFAULT_RUNTIME_CLUSTER_SELECTION);
328328
auto cluster = DeriveClusterFromInput(input, selectionMode);
329-
if (!IsYtCompleteIsolatedLambda(countBase.Count().Ref(), syncList, cluster, false, selectionMode)) {
329+
if (!cluster || !IsYtCompleteIsolatedLambda(countBase.Count().Ref(), syncList, *cluster, false, selectionMode)) {
330330
return node;
331331
}
332332

@@ -937,7 +937,7 @@ TMaybeNode<TExprBase> TYtPhysicalOptProposalTransformer::UpdateDataSinkCluster(T
937937
return node;
938938
}
939939

940-
TString cluster = DeriveClusterFromSectionList(op.Input(), selectionMode);
940+
TString cluster = GetClusterFromSectionList(op.Input());
941941
if (cluster == op.DataSink().Cluster().Value()) {
942942
return node;
943943
}
@@ -956,7 +956,7 @@ TMaybeNode<TExprBase> TYtPhysicalOptProposalTransformer::UpdateDataSourceCluster
956956
}
957957

958958
auto op = node.Cast<TYtReadTable>();
959-
TString cluster = DeriveClusterFromSectionList(op.Input(), ERuntimeClusterSelectionMode::Auto);
959+
TString cluster = GetClusterFromSectionList(op.Input());
960960
if (cluster == op.DataSource().Cluster().Value()) {
961961
return node;
962962
}

yt/yql/providers/yt/provider/phy_opt/yql_yt_phy_opt_partition.cpp

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,9 @@ TMaybeNode<TExprBase> TYtPhysicalOptProposalTransformer::PartitionByKey(TExprBas
4040
const ERuntimeClusterSelectionMode selectionMode =
4141
State_->Configuration->RuntimeClusterSelection.Get().GetOrElse(DEFAULT_RUNTIME_CLUSTER_SELECTION);
4242
auto cluster = DeriveClusterFromInput(input, selectionMode);
43-
if (!IsYtCompleteIsolatedLambda(keySelectorLambda.Ref(), syncList, cluster, false, selectionMode)
44-
|| !IsYtCompleteIsolatedLambda(handlerLambda.Ref(), syncList, cluster, false, selectionMode)) {
43+
if (!cluster
44+
|| !IsYtCompleteIsolatedLambda(keySelectorLambda.Ref(), syncList, *cluster, false, selectionMode)
45+
|| !IsYtCompleteIsolatedLambda(handlerLambda.Ref(), syncList, *cluster, false, selectionMode)) {
4546
return node;
4647
}
4748

@@ -99,7 +100,7 @@ TMaybeNode<TExprBase> TYtPhysicalOptProposalTransformer::PartitionByKey(TExprBas
99100
}
100101

101102
TCoLambda sortKeySelectorLambda = partByKey.SortKeySelectorLambda().Cast<TCoLambda>();
102-
if (!IsYtCompleteIsolatedLambda(sortKeySelectorLambda.Ref(), syncList, cluster, false, selectionMode)) {
103+
if (!IsYtCompleteIsolatedLambda(sortKeySelectorLambda.Ref(), syncList, *cluster, false, selectionMode)) {
103104
return node;
104105
}
105106

@@ -732,7 +733,7 @@ TMaybeNode<TExprBase> TYtPhysicalOptProposalTransformer::PartitionByKey(TExprBas
732733
if (canUseReduce) {
733734
auto reduce = Build<TYtReduce>(ctx, node.Pos())
734735
.World(ApplySyncListToWorld(GetWorld(input, {}, ctx).Ptr(), syncList, ctx))
735-
.DataSink(MakeDataSink(node.Pos(), cluster, ctx))
736+
.DataSink(MakeDataSink(node.Pos(), *cluster, ctx))
736737
.Input(ConvertInputTable(input, ctx))
737738
.Output()
738739
.Add(ConvertOutTables(node.Pos(), outItemType, ctx, State_, &partByKey.Ref().GetConstraintSet()))
@@ -783,7 +784,7 @@ TMaybeNode<TExprBase> TYtPhysicalOptProposalTransformer::PartitionByKey(TExprBas
783784
input = Build<TYtOutput>(ctx, node.Pos())
784785
.Operation<TYtMap>()
785786
.World(world)
786-
.DataSink(MakeDataSink(node.Pos(), cluster, ctx))
787+
.DataSink(MakeDataSink(node.Pos(), *cluster, ctx))
787788
.Input(ConvertInputTable(input, ctx, TConvertInputOpts().MakeUnordered(unordered)))
788789
.Output()
789790
.Add(ConvertOutTables(node.Pos(), mapOutputType ? mapOutputType : inputItemType, ctx, State_))
@@ -807,7 +808,7 @@ TMaybeNode<TExprBase> TYtPhysicalOptProposalTransformer::PartitionByKey(TExprBas
807808
input = Build<TYtOutput>(ctx, node.Pos())
808809
.Operation<TYtMerge>()
809810
.World(world)
810-
.DataSink(MakeDataSink(node.Pos(), cluster, ctx))
811+
.DataSink(MakeDataSink(node.Pos(), *cluster, ctx))
811812
.Input(ConvertInputTable(input, ctx, opts.MakeUnordered(unordered)))
812813
.Output()
813814
.Add(ConvertOutTables(node.Pos(), inputItemType, ctx, State_))
@@ -832,7 +833,7 @@ TMaybeNode<TExprBase> TYtPhysicalOptProposalTransformer::PartitionByKey(TExprBas
832833
input = Build<TYtOutput>(ctx, node.Pos())
833834
.Operation<TYtMap>()
834835
.World(world)
835-
.DataSink(MakeDataSink(node.Pos(), cluster, ctx))
836+
.DataSink(MakeDataSink(node.Pos(), *cluster, ctx))
836837
.Input(ConvertInputTable(input, ctx, TConvertInputOpts().MakeUnordered(unordered)))
837838
.Output()
838839
.Add(ConvertOutTables(node.Pos(), mapOutputType, ctx, State_))
@@ -861,7 +862,7 @@ TMaybeNode<TExprBase> TYtPhysicalOptProposalTransformer::PartitionByKey(TExprBas
861862

862863
auto result = Build<TYtMap>(ctx, node.Pos())
863864
.World(ApplySyncListToWorld(world.Ptr(), syncList, ctx))
864-
.DataSink(MakeDataSink(node.Pos(), cluster, ctx))
865+
.DataSink(MakeDataSink(node.Pos(), *cluster, ctx))
865866
.Input(ConvertInputTable(input, ctx, TConvertInputOpts().MakeUnordered(unordered)))
866867
.Output()
867868
.Add(ConvertOutTables(node.Pos(), outItemType, ctx, State_, &partByKey.Ref().GetConstraintSet()))
@@ -877,7 +878,7 @@ TMaybeNode<TExprBase> TYtPhysicalOptProposalTransformer::PartitionByKey(TExprBas
877878
}
878879
auto mapReduce = Build<TYtMapReduce>(ctx, node.Pos())
879880
.World(ApplySyncListToWorld(world.Ptr(), syncList, ctx))
880-
.DataSink(MakeDataSink(node.Pos(), cluster, ctx))
881+
.DataSink(MakeDataSink(node.Pos(), *cluster, ctx))
881882
.Input(ConvertInputTable(input, ctx, TConvertInputOpts().MakeUnordered(unordered)))
882883
.Output()
883884
.Add(ConvertOutTables(node.Pos(), outItemType, ctx, State_, &partByKey.Ref().GetConstraintSet()))

yt/yql/providers/yt/provider/phy_opt/yql_yt_phy_opt_sort.cpp

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ TMaybeNode<TExprBase> TYtPhysicalOptProposalTransformer::Sort(TExprBase node, TE
7676
auto cluster = DeriveClusterFromInput(sort.Input(), selectionMode);
7777

7878
TSyncMap syncList;
79-
if (!IsYtCompleteIsolatedLambda(keySelectorLambda.Ref(), syncList, cluster, false, selectionMode)) {
79+
if (!cluster || !IsYtCompleteIsolatedLambda(keySelectorLambda.Ref(), syncList, *cluster, false, selectionMode)) {
8080
return node;
8181
}
8282

@@ -136,7 +136,7 @@ TMaybeNode<TExprBase> TYtPhysicalOptProposalTransformer::Sort(TExprBase node, TE
136136
sortInput = Build<TYtOutput>(ctx, node.Pos())
137137
.Operation<TYtMap>()
138138
.World(world)
139-
.DataSink(MakeDataSink(node.Pos(), cluster, ctx))
139+
.DataSink(MakeDataSink(node.Pos(), *cluster, ctx))
140140
.Input(NPrivate::ConvertInputTable(sort.Input(), ctx, NPrivate::TConvertInputOpts().MakeUnordered(unordered)))
141141
.Output()
142142
.Add(mapOut.ToExprNode(ctx, node.Pos()).Cast<TYtOutTable>())
@@ -168,7 +168,7 @@ TMaybeNode<TExprBase> TYtPhysicalOptProposalTransformer::Sort(TExprBase node, TE
168168
sortInput = Build<TYtOutput>(ctx, node.Pos())
169169
.Operation<TYtMerge>()
170170
.World(world)
171-
.DataSink(MakeDataSink(node.Pos(), cluster, ctx))
171+
.DataSink(MakeDataSink(node.Pos(), *cluster, ctx))
172172
.Input(NPrivate::ConvertInputTable(sort.Input(), ctx, opts.MakeUnordered(unordered)))
173173
.Output()
174174
.Add(mergeOut.ToExprNode(ctx, node.Pos()).Cast<TYtOutTable>())
@@ -219,7 +219,7 @@ TMaybeNode<TExprBase> TYtPhysicalOptProposalTransformer::Sort(TExprBase node, TE
219219
auto res = canUseMerge ?
220220
TExprBase(Build<TYtMerge>(ctx, node.Pos())
221221
.World(world)
222-
.DataSink(MakeDataSink(node.Pos(), cluster, ctx))
222+
.DataSink(MakeDataSink(node.Pos(), *cluster, ctx))
223223
.Input(NPrivate::ConvertInputTable(sortInput, ctx, opts.ClearUnordered()))
224224
.Output()
225225
.Add(sortOut.ToExprNode(ctx, node.Pos()).Cast<TYtOutTable>())
@@ -234,7 +234,7 @@ TMaybeNode<TExprBase> TYtPhysicalOptProposalTransformer::Sort(TExprBase node, TE
234234
.Done()):
235235
TExprBase(Build<TYtSort>(ctx, node.Pos())
236236
.World(world)
237-
.DataSink(MakeDataSink(node.Pos(), cluster, ctx))
237+
.DataSink(MakeDataSink(node.Pos(), *cluster, ctx))
238238
.Input(NPrivate::ConvertInputTable(sortInput, ctx, opts.MakeUnordered(unordered)))
239239
.Output()
240240
.Add(sortOut.ToExprNode(ctx, node.Pos()).Cast<TYtOutTable>())
@@ -563,7 +563,7 @@ TMaybeNode<TExprBase> TYtPhysicalOptProposalTransformer::AssumeConstraints(TExpr
563563
return Build<TYtOutput>(ctx, assume.Pos())
564564
.Operation<TYtMerge>()
565565
.World(GetWorld(input, {}, ctx))
566-
.DataSink(MakeDataSink(assume.Pos(), cluster, ctx))
566+
.DataSink(MakeDataSink(assume.Pos(), *cluster, ctx))
567567
.Input(ConvertInputTable(input, ctx, opts))
568568
.Output()
569569
.Add(outTable.ToExprNode(ctx, assume.Pos()).Cast<TYtOutTable>())
@@ -624,7 +624,7 @@ TMaybeNode<TExprBase> TYtPhysicalOptProposalTransformer::AssumeConstraints(TExpr
624624
return Build<TYtOutput>(ctx, assume.Pos())
625625
.Operation<TYtMap>()
626626
.World(GetWorld(input, {}, ctx))
627-
.DataSink(MakeDataSink(assume.Pos(), cluster, ctx))
627+
.DataSink(MakeDataSink(assume.Pos(), *cluster, ctx))
628628
.Input(ConvertInputTable(input, ctx))
629629
.Output()
630630
.Add(outTable.ToExprNode(ctx, assume.Pos()).Cast<TYtOutTable>())

yt/yql/providers/yt/provider/phy_opt/yql_yt_phy_opt_write.cpp

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -342,9 +342,12 @@ TMaybeNode<TExprBase> TYtPhysicalOptProposalTransformer::Write(TExprBase node, T
342342
auto cluster = TString{write.DataSink().Cluster().Value()};
343343
const auto selectionMode = State_->Configuration->RuntimeClusterSelection.Get().GetOrElse(DEFAULT_RUNTIME_CLUSTER_SELECTION);
344344
const auto srcCluster = DeriveClusterFromInput(write.Content(), selectionMode);
345-
if (selectionMode == ERuntimeClusterSelectionMode::Disable && cluster != srcCluster) {
345+
if (!srcCluster) {
346+
return node;
347+
}
348+
if (selectionMode == ERuntimeClusterSelectionMode::Disable && cluster != *srcCluster) {
346349
ctx.AddError(TIssue(ctx.GetPosition(node.Pos()), TStringBuilder()
347-
<< "Result from cluster " << TString{srcCluster}.Quote()
350+
<< "Result from cluster " << srcCluster->Quote()
348351
<< " cannot be written to a different destination cluster " << cluster.Quote()));
349352
return {};
350353
}
@@ -660,7 +663,11 @@ TMaybeNode<TExprBase> TYtPhysicalOptProposalTransformer::ReplaceStatWriteTable(T
660663

661664
auto section = read.Input().Item(0);
662665
auto scheme = section.Ptr()->GetTypeAnn()->Cast<TListExprType>()->GetItemType();
663-
cluster = DeriveClusterFromInput(input, selectionMode);
666+
auto srcCluster = DeriveClusterFromInput(input, selectionMode);
667+
if (!srcCluster) {
668+
return node;
669+
}
670+
cluster = *srcCluster;
664671

665672
auto path = CopyOrTrivialMap(section.Pos(),
666673
GetWorld(input, {}, ctx),

yt/yql/providers/yt/provider/yql_yt_helpers.cpp

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -374,35 +374,47 @@ TExprNode::TPtr ToOutTable(TYtOutput output, TExprContext& ctx) {
374374
.Done().Ptr();
375375
}
376376

377-
TString DeriveClusterFromSection(const NNodes::TYtSection& section, ERuntimeClusterSelectionMode mode) {
377+
TMaybe<TString> DeriveClusterFromSection(const NNodes::TYtSection& section, ERuntimeClusterSelectionMode mode) {
378378
TString result;
379379
for (const auto& path : section.Paths()) {
380380
auto info = TYtTableBaseInfo::Parse(path.Table());
381381
YQL_ENSURE(info->Cluster, "Unexpected TYtOutTable in input section");
382-
YQL_ENSURE(UpdateUsedCluster(result, info->Cluster, mode));
382+
if (!UpdateUsedCluster(result, info->Cluster, mode)) {
383+
return {};
384+
}
383385
}
384386
return result;
385387
}
386388

387389
} // unnamed
388390

389391
TString GetClusterFromSection(const NNodes::TYtSection& section) {
390-
return DeriveClusterFromSection(section, ERuntimeClusterSelectionMode::Auto);
392+
auto result = DeriveClusterFromSection(section, ERuntimeClusterSelectionMode::Auto);
393+
YQL_ENSURE(result);
394+
return *result;
391395
}
392396

393397
TString GetClusterFromSectionList(const NNodes::TYtSectionList& sectionList) {
394-
return DeriveClusterFromSectionList(sectionList, ERuntimeClusterSelectionMode::Auto);
398+
auto result = DeriveClusterFromSectionList(sectionList, ERuntimeClusterSelectionMode::Auto);
399+
YQL_ENSURE(result);
400+
return *result;
395401
}
396402

397-
TString DeriveClusterFromSectionList(const NNodes::TYtSectionList& sectionList, ERuntimeClusterSelectionMode mode) {
403+
TMaybe<TString> DeriveClusterFromSectionList(const NNodes::TYtSectionList& sectionList, ERuntimeClusterSelectionMode mode) {
398404
TString result;
399405
for (const auto& section : sectionList) {
400-
YQL_ENSURE(UpdateUsedCluster(result, DeriveClusterFromSection(section, mode), mode));
406+
auto sectionCluster = DeriveClusterFromSection(section, mode);
407+
if (!sectionCluster.Defined()) {
408+
return {};
409+
}
410+
if (!UpdateUsedCluster(result, *sectionCluster, mode)) {
411+
return {};
412+
}
401413
}
402414
return result;
403415
}
404416

405-
TString DeriveClusterFromInput(const NNodes::TExprBase& input, ERuntimeClusterSelectionMode mode) {
417+
TMaybe<TString> DeriveClusterFromInput(const NNodes::TExprBase& input, ERuntimeClusterSelectionMode mode) {
406418
if (auto read = input.Maybe<TCoRight>().Input().Maybe<TYtReadTable>()) {
407419
return DeriveClusterFromSectionList(read.Cast().Input(), mode);
408420
} else if (auto output = input.Maybe<TYtOutput>()) {

yt/yql/providers/yt/provider/yql_yt_helpers.h

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,14 @@ namespace NYql {
2121

2222
constexpr TStringBuf YtUnspecifiedCluster = "$runtime";
2323

24+
// Equivalent to Derive* with mode=Auto
2425
TString GetClusterFromSection(const NNodes::TYtSection& section);
2526
TString GetClusterFromSectionList(const NNodes::TYtSectionList& sectionList);
26-
TString DeriveClusterFromSectionList(const NNodes::TYtSectionList& sectionList, ERuntimeClusterSelectionMode mode);
27-
TString DeriveClusterFromInput(const NNodes::TExprBase& input, ERuntimeClusterSelectionMode mode);
27+
28+
// Derive cluster according to mode. Will return empty optional for mode=Disable if input contains multiple clusters
29+
TMaybe<TString> DeriveClusterFromSectionList(const NNodes::TYtSectionList& sectionList, ERuntimeClusterSelectionMode mode);
30+
TMaybe<TString> DeriveClusterFromInput(const NNodes::TExprBase& input, ERuntimeClusterSelectionMode mode);
31+
2832
TString GetRuntimeCluster(const TExprNode& op, const TYtState::TPtr& state);
2933

3034
bool UpdateUsedCluster(TString& usedCluster, const TString& newCluster, ERuntimeClusterSelectionMode mode);

0 commit comments

Comments
 (0)