diff options
author | pavelvelikhov <pavelvelikhov@yandex-team.com> | 2023-11-28 21:31:15 +0300 |
---|---|---|
committer | pavelvelikhov <pavelvelikhov@yandex-team.com> | 2023-11-28 22:09:33 +0300 |
commit | e8a0c86dbc96b09c83c35e403b5b00b3a397e063 (patch) | |
tree | 86d7745edf7421e8fc6d19913c5bdeb3e07d0687 | |
parent | b988e45fba370446d83c456dacf9cbe463fc2bcf (diff) | |
download | ydb-e8a0c86dbc96b09c83c35e403b5b00b3a397e063.tar.gz |
Improved cardinality estimation
Improved predicate selectivity and constant detection
37 files changed, 439 insertions, 296 deletions
diff --git a/ydb/core/kqp/opt/kqp_statistics_transformer.cpp b/ydb/core/kqp/opt/kqp_statistics_transformer.cpp index dc95487448..22fec88eb7 100644 --- a/ydb/core/kqp/opt/kqp_statistics_transformer.cpp +++ b/ydb/core/kqp/opt/kqp_statistics_transformer.cpp @@ -38,7 +38,7 @@ void InferStatisticsForReadTable(const TExprNode::TPtr& input, TTypeAnnotationCo YQL_CLOG(TRACE, CoreDq) << "Infer statistics for read table, nrows:" << nRows << ", nattrs: " << nAttrs; - auto outputStats = TOptimizerStatistics(nRows, nAttrs, 0.0); + auto outputStats = TOptimizerStatistics(EStatisticsType::BaseTable, nRows, nAttrs, 0.0, tableData.Metadata->KeyColumnNames); typeCtx->SetStats(input.Get(), std::make_shared<TOptimizerStatistics>(outputStats)); } @@ -57,7 +57,7 @@ void InferStatisticsForKqpTable(const TExprNode::TPtr& input, TTypeAnnotationCon int nAttrs = tableData.Metadata->Columns.size(); YQL_CLOG(TRACE, CoreDq) << "Infer statistics for table: " << path.Value() << ", nrows: " << nRows << ", nattrs: " << nAttrs; - auto outputStats = TOptimizerStatistics(nRows, nAttrs, 0.0); + auto outputStats = TOptimizerStatistics(EStatisticsType::BaseTable, nRows, nAttrs, 0.0, tableData.Metadata->KeyColumnNames); typeCtx->SetStats(input.Get(), std::make_shared<TOptimizerStatistics>(outputStats)); } @@ -86,7 +86,7 @@ void InferStatisticsForLookupTable(const TExprNode::TPtr& input, TTypeAnnotation nRows = 1; } - auto outputStats = TOptimizerStatistics(nRows, nAttrs, 0); + auto outputStats = TOptimizerStatistics(EStatisticsType::BaseTable, nRows, nAttrs, 0, inputStats->KeyColumns); typeCtx->SetStats(input.Get(), std::make_shared<TOptimizerStatistics>(outputStats)); } @@ -120,7 +120,7 @@ void InferStatisticsForRowsSourceSettings(const TExprNode::TPtr& input, TTypeAnn int nAttrs = sourceSettings.Columns().Size(); double cost = inputStats->Cost; - auto outputStats = TOptimizerStatistics(nRows, nAttrs, cost); + auto outputStats = TOptimizerStatistics(EStatisticsType::BaseTable, nRows, nAttrs, cost, inputStats->KeyColumns); typeCtx->SetStats(input.Get(), std::make_shared<TOptimizerStatistics>(outputStats)); } diff --git a/ydb/library/yql/core/common_opt/yql_co_extr_members.cpp b/ydb/library/yql/core/common_opt/yql_co_extr_members.cpp index ef6a42beda..2386e72336 100644 --- a/ydb/library/yql/core/common_opt/yql_co_extr_members.cpp +++ b/ydb/library/yql/core/common_opt/yql_co_extr_members.cpp @@ -503,6 +503,7 @@ TExprNode::TPtr ApplyExtractMembersToMapJoinCore(const TExprNode::TPtr& node, co .RightDict(mapJoin.RightDict()) .JoinKind(mapJoin.JoinKind()) .LeftKeysColumns(mapJoin.LeftKeysColumns()) + .RightKeysColumns(mapJoin.RightKeysColumns()) .LeftRenames(ctx.NewList(mapJoin.LeftInput().Pos(), std::move(left))) .RightRenames(ctx.NewList(mapJoin.RightRenames().Pos(), std::move(right))) .Done().Ptr(); diff --git a/ydb/library/yql/core/expr_nodes/yql_expr_nodes.json b/ydb/library/yql/core/expr_nodes/yql_expr_nodes.json index 05746ecc75..09f1cb27f4 100644 --- a/ydb/library/yql/core/expr_nodes/yql_expr_nodes.json +++ b/ydb/library/yql/core/expr_nodes/yql_expr_nodes.json @@ -1518,8 +1518,9 @@ {"Index": 1, "Name": "RightDict", "Type": "TExprBase"}, {"Index": 2, "Name": "JoinKind", "Type": "TCoAtom"}, {"Index": 3, "Name": "LeftKeysColumns", "Type": "TCoAtomList"}, - {"Index": 4, "Name": "LeftRenames", "Type": "TCoAtomList"}, - {"Index": 5, "Name": "RightRenames", "Type": "TCoAtomList"} + {"Index": 4, "Name": "RightKeysColumns", "Type": "TCoAtomList"}, + {"Index": 5, "Name": "LeftRenames", "Type": "TCoAtomList"}, + {"Index": 6, "Name": "RightRenames", "Type": "TCoAtomList"} ] }, { diff --git a/ydb/library/yql/core/peephole_opt/yql_opt_peephole_physical.cpp b/ydb/library/yql/core/peephole_opt/yql_opt_peephole_physical.cpp index 5ca01d899d..9899691d71 100644 --- a/ydb/library/yql/core/peephole_opt/yql_opt_peephole_physical.cpp +++ b/ydb/library/yql/core/peephole_opt/yql_opt_peephole_physical.cpp @@ -2969,13 +2969,13 @@ TExprNode::TPtr MakeWideMapJoinCore(const TExprNode& mapjoin, TExprNode::TPtr&& }); TExprNode::TListType leftRenames; - leftRenames.reserve(mapjoin.Child(4)->ChildrenSize()); + leftRenames.reserve(mapjoin.Child(5)->ChildrenSize()); bool split = false; - mapjoin.Child(4)->ForEachChild([&](const TExprNode& item){ + mapjoin.Child(5)->ForEachChild([&](const TExprNode& item){ leftRenames.emplace_back(ctx.NewAtom(item.Pos(), *GetFieldPosition(*((split = !split) ? inStructType : outStructType), item.Content()))); }); - auto rightRenames = mapjoin.Child(5)->ChildrenList(); + auto rightRenames = mapjoin.Child(6)->ChildrenList(); for (auto i = 1U; i < rightRenames.size(); ++++i) rightRenames[i] = ctx.NewAtom(rightRenames[i]->Pos(), *GetFieldPosition(*outStructType, rightRenames[i]->Content())); @@ -2984,8 +2984,8 @@ TExprNode::TPtr MakeWideMapJoinCore(const TExprNode& mapjoin, TExprNode::TPtr&& children.front() = std::move(input); children[3] = ctx.ChangeChildren(*children[3], std::move(indexes)); - children[4] = ctx.ChangeChildren(*children[4], std::move(leftRenames)); - children[5] = ctx.ChangeChildren(*children[5], std::move(rightRenames)); + children[5] = ctx.ChangeChildren(*children[5], std::move(leftRenames)); + children[6] = ctx.ChangeChildren(*children[6], std::move(rightRenames)); return ctx.ChangeChildren(mapjoin, std::move(children)); } diff --git a/ydb/library/yql/core/type_ann/type_ann_join.cpp b/ydb/library/yql/core/type_ann/type_ann_join.cpp index 1e01773482..cfe98decda 100644 --- a/ydb/library/yql/core/type_ann/type_ann_join.cpp +++ b/ydb/library/yql/core/type_ann/type_ann_join.cpp @@ -335,6 +335,10 @@ namespace NTypeAnnImpl { } } + if (!EnsureTupleOfAtoms(*input->Child(4), ctx.Expr)) { + return IGraphTransformer::TStatus::Error; + } + const TStructExprType* rightStructType = nullptr; const TTupleExprType* rightTupleType = nullptr; if (joinKind != "LeftSemi" && joinKind != "LeftOnly") { @@ -357,8 +361,8 @@ namespace NTypeAnnImpl { } } - auto& leftRenames = *input->Child(4); - auto& rightRenames = *input->Child(5); + auto& leftRenames = *input->Child(5); + auto& rightRenames = *input->Child(6); if (!EnsureTupleOfAtoms(leftRenames, ctx.Expr)) { return IGraphTransformer::TStatus::Error; } @@ -470,17 +474,9 @@ namespace NTypeAnnImpl { } IGraphTransformer::TStatus MapJoinCoreWrapper(const TExprNode::TPtr& input, TExprNode::TPtr& output, TContext& ctx) { - if (input->ChildrenSize() == 7U) { - // Drop unused argument: right key. - auto children = input->ChildrenList(); - auto it = children.cbegin(); - std::advance(it, 4U); - children.erase(it); - output = ctx.Expr.ChangeChildren(*input, std::move(children)); - return IGraphTransformer::TStatus::Repeat; - } - - if (!EnsureArgsCount(*input, 6, ctx.Expr)) { + Y_UNUSED(output); + + if (!EnsureArgsCount(*input, 7, ctx.Expr)) { return IGraphTransformer::TStatus::Error; } diff --git a/ydb/library/yql/core/ut/yql_expr_constraint_ut.cpp b/ydb/library/yql/core/ut/yql_expr_constraint_ut.cpp index 5db588bc5b..3b9fd351ca 100644 --- a/ydb/library/yql/core/ut/yql_expr_constraint_ut.cpp +++ b/ydb/library/yql/core/ut/yql_expr_constraint_ut.cpp @@ -2104,7 +2104,7 @@ Y_UNIT_TEST_SUITE(TYqlExprConstraints) { (let dict (ToDict list2 (lambda '(item) '((Member item 'key2) (Member item 'subkey2))) (lambda '(item) '((Member item 'subkey2) (Member item 'value2))) '('One 'Hashed))) - (let join (MapJoinCore (ToFlow list1) dict 'Inner '('key1 'subkey1) '('key1 'key 'subkey1 'subkey 'value1 'value) '('0 's '1 'v))) + (let join (MapJoinCore (ToFlow list1) dict 'Inner '('key1 'subkey1) '('key2 'subkey2) '('key1 'key 'subkey1 'subkey 'value1 'value) '('0 's '1 'v))) (let list (Collect join)) (let res_sink (DataSink 'yt (quote plato))) @@ -2146,7 +2146,7 @@ Y_UNIT_TEST_SUITE(TYqlExprConstraints) { (let dict (ToDict list2 (lambda '(item) '((Member item 'key2) (Member item 'subkey2))) (lambda '(item) '((Member item 'subkey2) (Member item 'value2))) '('Many 'Hashed))) - (let join (MapJoinCore (ToFlow list1) dict 'Inner '('key1 'subkey1) '('key1 'key 'subkey1 'subkey 'value1 'value) '('0 's '1 'v))) + (let join (MapJoinCore (ToFlow list1) dict 'Inner '('key1 'subkey1) '('key2 'subkey2) '('key1 'key 'subkey1 'subkey 'value1 'value) '('0 's '1 'v))) (let list (Collect join)) (let res_sink (DataSink 'yt (quote plato))) @@ -2188,7 +2188,7 @@ Y_UNIT_TEST_SUITE(TYqlExprConstraints) { (let dict (ToDict list2 (lambda '(item) '((Member item 'key2) (Member item 'subkey2))) (lambda '(item) '((Member item 'subkey2) (Member item 'value2))) '('One 'Hashed))) - (let join (MapJoinCore (ToFlow list1) dict 'Left '('key1 'subkey1) '('key1 'key 'subkey1 'subkey 'value1 'value) '('0 's '1 'v))) + (let join (MapJoinCore (ToFlow list1) dict 'Left '('key1 'subkey1) '('key2 'subkey2) '('key1 'key 'subkey1 'subkey 'value1 'value) '('0 's '1 'v))) (let list (Collect join)) (let res_sink (DataSink 'yt (quote plato))) @@ -2230,7 +2230,7 @@ Y_UNIT_TEST_SUITE(TYqlExprConstraints) { (let dict (ToDict list2 (lambda '(item) '((Member item 'key2) (Member item 'subkey2))) (lambda '(item) '((Member item 'subkey2) (Member item 'value2))) '('Many 'Hashed))) - (let join (MapJoinCore (ToFlow list1) dict 'Left '('key1 'subkey1) '('key1 'key 'subkey1 'subkey 'value1 'value) '('0 's '1 'v))) + (let join (MapJoinCore (ToFlow list1) dict 'Left '('key1 'subkey1) '('key2 'subkey2) '('key1 'key 'subkey1 'subkey 'value1 'value) '('0 's '1 'v))) (let list (Collect join)) (let res_sink (DataSink 'yt (quote plato))) @@ -2272,7 +2272,7 @@ Y_UNIT_TEST_SUITE(TYqlExprConstraints) { (let dict (ToDict list2 (lambda '(item) '((Member item 'key2) (Member item 'subkey2))) (lambda '(item) '()) '('One 'Hashed))) - (let join (MapJoinCore (ToFlow list1) dict 'LeftSemi '('key1 'subkey1) '('key1 'key 'subkey1 'subkey 'value1 'value) '())) + (let join (MapJoinCore (ToFlow list1) dict 'LeftSemi '('key1 'subkey1) '('key2 'subkey2) '('key1 'key 'subkey1 'subkey 'value1 'value) '())) (let list (Collect join)) (let res_sink (DataSink 'yt (quote plato))) @@ -2314,7 +2314,7 @@ Y_UNIT_TEST_SUITE(TYqlExprConstraints) { (let dict (ToDict list2 (lambda '(item) '((Member item 'key2) (Member item 'subkey2))) (lambda '(item) '()) '('One 'Hashed))) - (let join (MapJoinCore (ToFlow list1) dict 'LeftOnly '('key1 'subkey1) '('key1 'key 'value1 'value) '())) + (let join (MapJoinCore (ToFlow list1) dict 'LeftOnly '('key1 'subkey1) '('key2 'subkey2) '('key1 'key 'value1 'value) '())) (let list (Collect join)) (let res_sink (DataSink 'yt (quote plato))) diff --git a/ydb/library/yql/core/yql_cost_function.cpp b/ydb/library/yql/core/yql_cost_function.cpp index f42c95164b..7dfc5189b5 100644 --- a/ydb/library/yql/core/yql_cost_function.cpp +++ b/ydb/library/yql/core/yql_cost_function.cpp @@ -2,6 +2,22 @@ using namespace NYql; +namespace { + +bool IsPKJoin(const TOptimizerStatistics& stats, const TVector<TString>& joinKeys) { + if (stats.KeyColumns.size()==0) { + return false; + } + + for(size_t i=0; i<stats.KeyColumns.size(); i++){ + if (std::find(joinKeys.begin(), joinKeys.end(), stats.KeyColumns[i]) == joinKeys.end()) { + return false; + } + } + return true; +} +} + /** * Compute the cost and output cardinality of a join * @@ -9,14 +25,54 @@ using namespace NYql; * * The build is on the right side, so we make the build side a bit more expensive than the probe */ -TOptimizerStatistics NYql::ComputeJoinStats(TOptimizerStatistics leftStats, TOptimizerStatistics rightStats, EJoinImplType joinImpl) { + +TOptimizerStatistics NYql::ComputeJoinStats(const TOptimizerStatistics& leftStats, const TOptimizerStatistics& rightStats, + const TVector<TString>& leftJoinKeys, const TVector<TString>& rightJoinKeys, EJoinImplType joinImpl) { Y_UNUSED(joinImpl); - double newCard = 0.2 * leftStats.Nrows * rightStats.Nrows; + double newCard; + EStatisticsType outputType; + + if (IsPKJoin(rightStats,rightJoinKeys)) { + newCard = std::max(leftStats.Nrows,rightStats.Nrows); + if (leftStats.Type == EStatisticsType::BaseTable){ + outputType = EStatisticsType::FilteredFactTable; + } else { + outputType = leftStats.Type; + } + } + else if (IsPKJoin(leftStats,leftJoinKeys)) { + newCard = std::max(leftStats.Nrows,rightStats.Nrows); + if (rightStats.Type == EStatisticsType::BaseTable){ + outputType = EStatisticsType::FilteredFactTable; + } else { + outputType = rightStats.Type; + } + } + else { + newCard = 0.2 * leftStats.Nrows * rightStats.Nrows; + outputType = EStatisticsType::ManyManyJoin; + } + int newNCols = leftStats.Ncols + rightStats.Ncols; + double cost = leftStats.Nrows + 2.0 * rightStats.Nrows - + newCard - + leftStats.Cost + rightStats.Cost; + + newCard + + leftStats.Cost + rightStats.Cost; + + return TOptimizerStatistics(outputType, newCard, newNCols, cost); +} + +TOptimizerStatistics NYql::ComputeJoinStats(const TOptimizerStatistics& leftStats, const TOptimizerStatistics& rightStats, + const std::set<std::pair<NDq::TJoinColumn, NDq::TJoinColumn>>& joinConditions, EJoinImplType joinImpl) { + + TVector<TString> leftJoinKeys; + TVector<TString> rightJoinKeys; + + for (auto c : joinConditions) { + leftJoinKeys.emplace_back(c.first.AttributeName); + rightJoinKeys.emplace_back(c.second.AttributeName); + } - return TOptimizerStatistics(newCard, newNCols, cost); + return ComputeJoinStats(leftStats, rightStats, leftJoinKeys, rightJoinKeys, joinImpl); } diff --git a/ydb/library/yql/core/yql_cost_function.h b/ydb/library/yql/core/yql_cost_function.h index eedd8034b9..42e715fc8b 100644 --- a/ydb/library/yql/core/yql_cost_function.h +++ b/ydb/library/yql/core/yql_cost_function.h @@ -2,18 +2,54 @@ #include "yql_statistics.h" +#include <util/generic/hash.h> +#include <util/generic/vector.h> +#include <util/generic/string.h> + +#include <set> + /** * The cost function for cost based optimizer currently consists of methods for computing * both the cost and cardinalities of individual plan operators */ namespace NYql { +namespace NDq { +/** + * Join column is a struct that records the relation label and + * attribute name, used in join conditions +*/ +struct TJoinColumn { + TString RelName; + TString AttributeName; + + TJoinColumn(TString relName, TString attributeName) : RelName(relName), + AttributeName(attributeName) {} + + bool operator == (const TJoinColumn& other) const { + return RelName == other.RelName && AttributeName == other.AttributeName; + } + + struct HashFunction + { + size_t operator()(const TJoinColumn& c) const + { + return THash<TString>{}(c.RelName) ^ THash<TString>{}(c.AttributeName); + } + }; +}; +} + enum EJoinImplType { DictJoin, MapJoin, GraceJoin }; -TOptimizerStatistics ComputeJoinStats(TOptimizerStatistics leftStats, TOptimizerStatistics rightStats, EJoinImplType joinType); +TOptimizerStatistics ComputeJoinStats(const TOptimizerStatistics& leftStats, const TOptimizerStatistics& rightStats, + const std::set<std::pair<NDq::TJoinColumn, NDq::TJoinColumn>>& joinConditions, EJoinImplType joinType); + +TOptimizerStatistics ComputeJoinStats(const TOptimizerStatistics& leftStats, const TOptimizerStatistics& rightStats, + const TVector<TString>& leftJoinKeys, const TVector<TString>& rightJoinKeys, EJoinImplType joinType); }
\ No newline at end of file diff --git a/ydb/library/yql/core/yql_statistics.cpp b/ydb/library/yql/core/yql_statistics.cpp index 30d8dcd26b..24033b5088 100644 --- a/ydb/library/yql/core/yql_statistics.cpp +++ b/ydb/library/yql/core/yql_statistics.cpp @@ -3,7 +3,7 @@ using namespace NYql; std::ostream& NYql::operator<<(std::ostream& os, const TOptimizerStatistics& s) { - os << "Nrows: " << s.Nrows << ", Ncols: " << s.Ncols << ", Cost: " << s.Cost ; + os << "Type: " << s.Type << ", Nrows: " << s.Nrows << ", Ncols: " << s.Ncols << ", Cost: " << s.Cost ; return os; } diff --git a/ydb/library/yql/core/yql_statistics.h b/ydb/library/yql/core/yql_statistics.h index 7564a751a1..77eff37837 100644 --- a/ydb/library/yql/core/yql_statistics.h +++ b/ydb/library/yql/core/yql_statistics.h @@ -1,11 +1,18 @@ #pragma once +#include <util/generic/vector.h> #include <util/generic/string.h> #include <optional> #include <iostream> namespace NYql { +enum EStatisticsType : ui32 { + BaseTable, + FilteredFactTable, + ManyManyJoin +}; + /** * Optimizer Statistics struct records per-table and per-column statistics * for the current operator in the plan. Currently, only Nrows and Ncols are @@ -14,14 +21,19 @@ namespace NYql { * all of the time. */ struct TOptimizerStatistics { + EStatisticsType Type = BaseTable; double Nrows = 0; int Ncols = 0; double Cost; + TVector<TString> KeyColumns; + TString Descr; TOptimizerStatistics() {} - TOptimizerStatistics(double nrows,int ncols): Nrows(nrows), Ncols(ncols) {} - TOptimizerStatistics(double nrows,int ncols, double cost): Nrows(nrows), Ncols(ncols), Cost(cost) {} + TOptimizerStatistics(double nrows, int ncols): Nrows(nrows), Ncols(ncols) {} + TOptimizerStatistics(double nrows, int ncols, double cost): Nrows(nrows), Ncols(ncols), Cost(cost) {} + TOptimizerStatistics(EStatisticsType type, double nrows, int ncols, double cost): Type(type), Nrows(nrows), Ncols(ncols), Cost(cost) {} + TOptimizerStatistics(EStatisticsType type, double nrows, int ncols, double cost, TVector<TString> keyColumns): Type(type), Nrows(nrows), Ncols(ncols), Cost(cost), KeyColumns(keyColumns) {} TOptimizerStatistics(double nrows,int ncols, double cost, TString descr): Nrows(nrows), Ncols(ncols), Cost(cost), Descr(descr) {} diff --git a/ydb/library/yql/dq/opt/dq_opt_join.cpp b/ydb/library/yql/dq/opt/dq_opt_join.cpp index bf950ff54c..e4cbcb364b 100644 --- a/ydb/library/yql/dq/opt/dq_opt_join.cpp +++ b/ydb/library/yql/dq/opt/dq_opt_join.cpp @@ -1309,6 +1309,14 @@ TExprBase DqBuildHashJoin(const TDqJoin& join, EHashJoinMode mode, TExprContext& .Seal() .List(4) .Do([&](TExprNodeBuilder& parent) -> TExprNodeBuilder& { + for (ui32 i = 0U; i < rightKeys.size(); ++i) { + parent.Atom(i, ctx.GetIndexAsString(rightKeys[i]), TNodeFlags::Default); + } + return parent; + }) + .Seal() + .List(5) + .Do([&](TExprNodeBuilder& parent) -> TExprNodeBuilder& { for (ui32 i = 0U; i < leftNames.size(); ++i) { parent.Atom(2*i, ctx.GetIndexAsString(i), TNodeFlags::Default); parent.Atom(2*i + 1, ctx.GetIndexAsString(i), TNodeFlags::Default); @@ -1316,7 +1324,7 @@ TExprBase DqBuildHashJoin(const TDqJoin& join, EHashJoinMode mode, TExprContext& return parent; }) .Seal() - .List(5) + .List(6) .Do([&](TExprNodeBuilder& parent) -> TExprNodeBuilder& { for (ui32 i = 0U; i < rightNames.size(); ++i) { parent.Atom(2*i, ctx.GetIndexAsString(i), TNodeFlags::Default); @@ -1349,6 +1357,14 @@ TExprBase DqBuildHashJoin(const TDqJoin& join, EHashJoinMode mode, TExprContext& .Seal() .List(4) .Do([&](TExprNodeBuilder& parent) -> TExprNodeBuilder& { + for (ui32 i = 0U; i < leftKeys.size(); ++i) { + parent.Atom(i, ctx.GetIndexAsString(leftKeys[i]), TNodeFlags::Default); + } + return parent; + }) + .Seal() + .List(5) + .Do([&](TExprNodeBuilder& parent) -> TExprNodeBuilder& { for (ui32 i = 0U; i < rightNames.size(); ++i) { parent.Atom(2*i, ctx.GetIndexAsString(i), TNodeFlags::Default); parent.Atom(2*i + 1, ctx.GetIndexAsString(i + leftNames.size()), TNodeFlags::Default); @@ -1356,7 +1372,7 @@ TExprBase DqBuildHashJoin(const TDqJoin& join, EHashJoinMode mode, TExprContext& return parent; }) .Seal() - .List(5) + .List(6) .Do([&](TExprNodeBuilder& parent) -> TExprNodeBuilder& { for (ui32 i = 0U; i < leftNames.size(); ++i) { parent.Atom(2*i, ctx.GetIndexAsString(i), TNodeFlags::Default); diff --git a/ydb/library/yql/dq/opt/dq_opt_join_cost_based.cpp b/ydb/library/yql/dq/opt/dq_opt_join_cost_based.cpp index 96e8dce4a5..ba698a6acb 100644 --- a/ydb/library/yql/dq/opt/dq_opt_join_cost_based.cpp +++ b/ydb/library/yql/dq/opt/dq_opt_join_cost_based.cpp @@ -29,31 +29,6 @@ namespace NYql::NDq { using namespace NYql::NNodes; - -/** - * Join column is a struct that records the relation label and - * attribute name, used in join conditions -*/ -struct TJoinColumn { - TString RelName; - TString AttributeName; - - TJoinColumn(TString relName, TString attributeName) : RelName(relName), - AttributeName(attributeName) {} - - bool operator == (const TJoinColumn& other) const { - return RelName == other.RelName && AttributeName == other.AttributeName; - } - - struct HashFunction - { - size_t operator()(const TJoinColumn& c) const - { - return THash<TString>{}(c.RelName) ^ THash<TString>{}(c.AttributeName); - } - }; -}; - bool operator < (const TJoinColumn& c1, const TJoinColumn& c2) { if (c1.RelName < c2.RelName){ return true; @@ -247,7 +222,7 @@ std::shared_ptr<TJoinOptimizerNode> MakeJoin(std::shared_ptr<IBaseOptimizerNode> EJoinImplType joinImpl) { auto res = std::make_shared<TJoinOptimizerNode>(left, right, joinConditions, "Inner"); - res->Stats = std::make_shared<TOptimizerStatistics>( ComputeJoinStats(*left->Stats, *right->Stats, joinImpl)); + res->Stats = std::make_shared<TOptimizerStatistics>( ComputeJoinStats(*left->Stats, *right->Stats, joinConditions, joinImpl)); return res; } @@ -1072,7 +1047,7 @@ void ComputeStatistics(const std::shared_ptr<TJoinOptimizerNode>& join) { if (join->RightArg->Kind == EOptimizerNodeKind::JoinNodeType) { ComputeStatistics(static_pointer_cast<TJoinOptimizerNode>(join->RightArg)); } - join->Stats = std::make_shared<TOptimizerStatistics>(ComputeJoinStats(*join->LeftArg->Stats, *join->RightArg->Stats, EJoinImplType::DictJoin)); + join->Stats = std::make_shared<TOptimizerStatistics>(ComputeJoinStats(*join->LeftArg->Stats, *join->RightArg->Stats, join->JoinConditions, EJoinImplType::DictJoin)); } /** @@ -1082,7 +1057,7 @@ void ComputeStatistics(const std::shared_ptr<TJoinOptimizerNode>& join) { */ std::shared_ptr<TJoinOptimizerNode> OptimizeSubtree(const std::shared_ptr<TJoinOptimizerNode>& joinTree, ui32 maxDPccpDPTableSize) { if (!joinTree->Reorderable()) { - joinTree->Stats = std::make_shared<TOptimizerStatistics>(ComputeJoinStats(*joinTree->LeftArg->Stats, *joinTree->RightArg->Stats, EJoinImplType::DictJoin)); + joinTree->Stats = std::make_shared<TOptimizerStatistics>(ComputeJoinStats(*joinTree->LeftArg->Stats, *joinTree->RightArg->Stats, joinTree->JoinConditions, EJoinImplType::DictJoin)); return joinTree; } @@ -1208,7 +1183,7 @@ TExprBase DqOptimizeEquiJoinWithCosts(const TExprBase& node, TExprContext& ctx, if (join->RightArg->Kind == EOptimizerNodeKind::JoinNodeType) { join->RightArg = OptimizeSubtree(static_pointer_cast<TJoinOptimizerNode>(join->RightArg), maxDPccpDPTableSize); } - join->Stats = std::make_shared<TOptimizerStatistics>(ComputeJoinStats(*join->LeftArg->Stats, *join->RightArg->Stats, EJoinImplType::DictJoin)); + join->Stats = std::make_shared<TOptimizerStatistics>(ComputeJoinStats(*join->LeftArg->Stats, *join->RightArg->Stats, join->JoinConditions, EJoinImplType::DictJoin)); } // Optimize the root diff --git a/ydb/library/yql/dq/opt/dq_opt_peephole.cpp b/ydb/library/yql/dq/opt/dq_opt_peephole.cpp index 651882897e..b817211743 100644 --- a/ydb/library/yql/dq/opt/dq_opt_peephole.cpp +++ b/ydb/library/yql/dq/opt/dq_opt_peephole.cpp @@ -292,6 +292,8 @@ TExprBase DqPeepholeRewriteMapJoin(const TExprBase& node, TExprContext& ctx) { const bool payloads = !rightPayloads.empty(); rightInput = MakeDictForJoin<true>(PrepareListForJoin(std::move(rightInput), keyTypes, rightKeyColumnNodes, rightPayloads, payloads, false, true, ctx), payloads, withRightSide, ctx); leftInput = AddConvertedKeys(std::move(leftInput), ctx, leftKeyColumnNodes, keyTypesLeft, itemTypeLeft); + auto [_, rightKeyColumnNodesCopy] = JoinKeysToAtoms(ctx, mapJoin, leftTableLabel, rightTableLabel); + return Build<TCoExtractMembers>(ctx, pos) .Input<TCoFlatMap>() .Input(std::move(rightInput)) @@ -302,6 +304,7 @@ TExprBase DqPeepholeRewriteMapJoin(const TExprBase& node, TExprContext& ctx) { .RightDict("dict") .JoinKind(mapJoin.JoinType()) .LeftKeysColumns(ctx.NewList(pos, std::move(leftKeyColumnNodes))) + .RightKeysColumns(ctx.NewList(pos, std::move(rightKeyColumnNodesCopy))) .LeftRenames(ctx.NewList(pos, std::move(leftRenames))) .RightRenames(ctx.NewList(pos, std::move(rightRenames))) .Build() diff --git a/ydb/library/yql/dq/opt/dq_opt_predicate_selectivity.cpp b/ydb/library/yql/dq/opt/dq_opt_predicate_selectivity.cpp index dc49f2bfab..8ed335e94d 100644 --- a/ydb/library/yql/dq/opt/dq_opt_predicate_selectivity.cpp +++ b/ydb/library/yql/dq/opt/dq_opt_predicate_selectivity.cpp @@ -8,19 +8,20 @@ using namespace NYql::NNodes; namespace { - THashSet<TString> exprCallables = {"SafeCast", "Int32", "Date", "Interval", "String"}; + THashSet<TString> exprCallables = {"SafeCast"}; /** * Check if a callable is an attribute of some table * Currently just return a boolean and cover only basic cases */ - bool IsAttribute(const TExprBase& input) { - if (input.Maybe<TCoMember>()) { + bool IsAttribute(const TExprBase& input, TString& attributeName) { + if (auto member = input.Maybe<TCoMember>()) { + attributeName = member.Cast().Raw()->Content(); return true; } else if (auto cast = input.Maybe<TCoSafeCast>()) { - return IsAttribute(cast.Cast().Value()); + return IsAttribute(cast.Cast().Value(), attributeName); } else if (auto ifPresent = input.Maybe<TCoIfPresent>()) { - return IsAttribute(ifPresent.Cast().Optional()); + return IsAttribute(ifPresent.Cast().Optional(), attributeName); } return false; @@ -31,12 +32,17 @@ namespace { * We use a whitelist of callables */ bool IsConstant(const TExprBase& input) { - if (input.Maybe<TCoAtom>()) { + if (input.Maybe<TCoDataCtor>()){ return true; } else if (input.Ref().IsCallable(exprCallables)) { if (input.Ref().ChildrenSize() >= 1) { - auto callableInput = TExprBase(input.Ref().Child(0)); - return IsConstant(callableInput); + for (size_t i = 0; i < input.Ref().ChildrenSize(); i++) { + auto callableInput = TExprBase(input.Ref().Child(i)); + if (!IsConstant(callableInput)) { + return false; + } + } + return true; } else { return false; } @@ -92,23 +98,37 @@ double NYql::NDq::ComputePredicateSelectivity(const TExprBase& input, const std: auto left = equality.Cast().Left(); auto right = equality.Cast().Right(); - if (IsAttribute(right) && IsConstant(left)) { + TString attributeName; + + if (IsAttribute(right, attributeName) && IsConstant(left)) { std::swap(left, right); } - if (IsAttribute(left)) { + + if (IsAttribute(left, attributeName)) { // In case both arguments refer to an attribute, return 0.2 - if (IsAttribute(right)) { - result = 0.2; + TString rightAttributeName; + if (IsAttribute(right, rightAttributeName)) { + result = 0.3; } // In case the right side is a constant that can be extracted, compute the selectivity using statistics // Currently, with the basic statistics we just return 1/nRows else if (IsConstant(right)) { - if (stats->Nrows > 1) { - result = 1.0 / stats->Nrows; + if (stats->KeyColumns.size()==1 && attributeName==stats->KeyColumns[0]) { + if (stats->Nrows > 1) { + result = 1.0 / stats->Nrows; + } + else { + result = 1.0; + } } else { - result = 1.0; + if (stats->Nrows > 1) { + result = stats->Nrows / 10; + } + else { + result = 1.0; + } } } } @@ -120,14 +140,15 @@ double NYql::NDq::ComputePredicateSelectivity(const TExprBase& input, const std: auto left = comparison.Cast().Left(); auto right = comparison.Cast().Right(); - if (IsAttribute(right) && IsConstant(left)) { + TString attributeName; + if (IsAttribute(right, attributeName) && IsConstant(left)) { std::swap(left, right); } - if (IsAttribute(left)) { + if (IsAttribute(left, attributeName)) { // In case both arguments refer to an attribute, return 0.2 - if (IsAttribute(right)) { - result = 0.2; + if (IsAttribute(right, attributeName)) { + result = 0.3; } // In case the right side is a constant that can be extracted, compute the selectivity using statistics // Currently, with the basic statistics we just return 0.5 diff --git a/ydb/library/yql/dq/opt/dq_opt_stat.cpp b/ydb/library/yql/dq/opt/dq_opt_stat.cpp index 3e838da4b9..db45e4f3e3 100644 --- a/ydb/library/yql/dq/opt/dq_opt_stat.cpp +++ b/ydb/library/yql/dq/opt/dq_opt_stat.cpp @@ -9,6 +9,7 @@ namespace NYql::NDq { using namespace NNodes; + /** * Compute statistics for map join * FIX: Currently we treat all join the same from the cost perspective, need to refine cost function @@ -27,8 +28,20 @@ void InferStatisticsForMapJoin(const TExprNode::TPtr& input, TTypeAnnotationCont return; } + YQL_CLOG(TRACE, CoreDq) << "Right side of the map join: " << rightArg.Raw()->Dump(); + + TVector<TString> leftJoinKeys; + TVector<TString> rightJoinKeys; + + for (size_t i=0; i<join.LeftKeysColumns().Size(); i++) { + leftJoinKeys.push_back(join.LeftKeysColumns().Item(i).StringValue()); + } + for (size_t i=0; i<join.RightKeysColumns().Size(); i++) { + rightJoinKeys.push_back(join.RightKeysColumns().Item(i).StringValue()); + } + typeCtx->SetStats(join.Raw(), std::make_shared<TOptimizerStatistics>( - ComputeJoinStats(*leftStats, *rightStats, MapJoin))); + ComputeJoinStats(*leftStats, *rightStats, leftJoinKeys, rightJoinKeys, MapJoin))); } /** @@ -49,8 +62,18 @@ void InferStatisticsForGraceJoin(const TExprNode::TPtr& input, TTypeAnnotationCo return; } + TVector<TString> leftJoinKeys; + TVector<TString> rightJoinKeys; + + for (size_t i=0; i<join.LeftKeysColumns().Size(); i++) { + leftJoinKeys.push_back(join.LeftKeysColumns().Item(i).StringValue()); + } + for (size_t i=0; i<join.RightKeysColumns().Size(); i++) { + rightJoinKeys.push_back(join.RightKeysColumns().Item(i).StringValue()); + } + typeCtx->SetStats(join.Raw(), std::make_shared<TOptimizerStatistics>( - ComputeJoinStats(*leftStats, *rightStats, GraceJoin))); + ComputeJoinStats(*leftStats, *rightStats, leftJoinKeys, rightJoinKeys, GraceJoin))); } /** @@ -94,7 +117,7 @@ void InferStatisticsForFlatMap(const TExprNode::TPtr& input, TTypeAnnotationCont double selectivity = ComputePredicateSelectivity(flatmap.Lambda().Body(), inputStats); - auto outputStats = TOptimizerStatistics(inputStats->Nrows * selectivity, inputStats->Ncols, inputStats->Cost ); + auto outputStats = TOptimizerStatistics(inputStats->Type, inputStats->Nrows * selectivity, inputStats->Ncols, inputStats->Cost ); typeCtx->SetStats(input.Get(), std::make_shared<TOptimizerStatistics>(outputStats) ); } @@ -135,7 +158,7 @@ void InferStatisticsForFilter(const TExprNode::TPtr& input, TTypeAnnotationConte double selectivity = ComputePredicateSelectivity(filterBody, inputStats); - auto outputStats = TOptimizerStatistics(inputStats->Nrows * selectivity, inputStats->Ncols, inputStats->Cost); + auto outputStats = TOptimizerStatistics(inputStats->Type, inputStats->Nrows * selectivity, inputStats->Ncols, inputStats->Cost); typeCtx->SetStats(input.Get(), std::make_shared<TOptimizerStatistics>(outputStats) ); } diff --git a/ydb/library/yql/providers/common/mkql/yql_provider_mkql.cpp b/ydb/library/yql/providers/common/mkql/yql_provider_mkql.cpp index 3669bcaf62..4bc9a93c77 100644 --- a/ydb/library/yql/providers/common/mkql/yql_provider_mkql.cpp +++ b/ydb/library/yql/providers/common/mkql/yql_provider_mkql.cpp @@ -1549,23 +1549,23 @@ TMkqlCommonCallableCompiler::TShared::TShared() { node.Child(3)->ForEachChild([&](const TExprNode& child){ leftKeyColumns.emplace_back(*GetFieldPosition(*inputStructType, child.Content())); }); bool s = false; - node.Child(4)->ForEachChild([&](const TExprNode& child){ leftRenames.emplace_back(*GetFieldPosition((s = !s) ? *inputStructType : *outputStructType, child.Content())); }); + node.Child(5)->ForEachChild([&](const TExprNode& child){ leftRenames.emplace_back(*GetFieldPosition((s = !s) ? *inputStructType : *outputStructType, child.Content())); }); switch (rightItemType->GetKind()) { case ETypeAnnotationKind::Struct: { const auto rightStructType = rightItemType->Cast<TStructExprType>(); - node.Child(5)->ForEachChild([&](const TExprNode& child){ + node.Child(6)->ForEachChild([&](const TExprNode& child){ rightRenames.emplace_back(*GetFieldPosition((s = !s) ? *rightStructType : *outputStructType, child.Content())); }); } break; case ETypeAnnotationKind::Tuple: { const auto rightTupleType = rightItemType->Cast<TTupleExprType>(); - node.Child(5)->ForEachChild([&](const TExprNode& child){ + node.Child(6)->ForEachChild([&](const TExprNode& child){ rightRenames.emplace_back((s = !s) ? *GetFieldPosition(*rightTupleType, child.Content()) : *GetFieldPosition(*outputStructType, child.Content())); }); } break; default: - MKQL_ENSURE(!node.Child(5)->ChildrenSize(), "Expected empty right output columns."); + MKQL_ENSURE(!node.Child(6)->ChildrenSize(), "Expected empty right output columns."); } break; } @@ -1575,23 +1575,23 @@ TMkqlCommonCallableCompiler::TShared::TShared() { node.Child(3)->ForEachChild([&](const TExprNode& child){ leftKeyColumns.emplace_back(*GetFieldPosition(*inputTupleType, child.Content())); }); bool s = false; - node.Child(4)->ForEachChild([&](const TExprNode& child){ leftRenames.emplace_back(*GetFieldPosition((s = !s) ? *inputTupleType : *outputTupleType, child.Content())); }); + node.Child(5)->ForEachChild([&](const TExprNode& child){ leftRenames.emplace_back(*GetFieldPosition((s = !s) ? *inputTupleType : *outputTupleType, child.Content())); }); switch (rightItemType->GetKind()) { case ETypeAnnotationKind::Tuple: { const auto rightTupleType = rightItemType->Cast<TTupleExprType>(); - node.Child(5)->ForEachChild([&](const TExprNode& child){ + node.Child(6)->ForEachChild([&](const TExprNode& child){ rightRenames.emplace_back(*GetFieldPosition((s = !s) ? *rightTupleType : *outputTupleType, child.Content())); }); } break; case ETypeAnnotationKind::Struct: { const auto rightStructType = rightItemType->Cast<TStructExprType>(); - node.Child(5)->ForEachChild([&](const TExprNode& child){ + node.Child(6)->ForEachChild([&](const TExprNode& child){ rightRenames.emplace_back((s = !s) ? *GetFieldPosition(*rightStructType, child.Content()) : *GetFieldPosition(*outputTupleType, child.Content())); }); } break; default: - MKQL_ENSURE(!node.Child(5)->ChildrenSize(), "Expected empty right output columns."); + MKQL_ENSURE(!node.Child(6)->ChildrenSize(), "Expected empty right output columns."); } break; } @@ -1601,23 +1601,23 @@ TMkqlCommonCallableCompiler::TShared::TShared() { node.Child(3)->ForEachChild([&](const TExprNode& child){ leftKeyColumns.emplace_back(*GetFieldPosition(*inputMultiType, child.Content())); }); bool s = false; - node.Child(4)->ForEachChild([&](const TExprNode& child){ leftRenames.emplace_back(*GetFieldPosition((s = !s) ? *inputMultiType : *outputMultiType, child.Content())); }); + node.Child(5)->ForEachChild([&](const TExprNode& child){ leftRenames.emplace_back(*GetFieldPosition((s = !s) ? *inputMultiType : *outputMultiType, child.Content())); }); switch (rightItemType->GetKind()) { case ETypeAnnotationKind::Tuple: { const auto rightTupleType = rightItemType->Cast<TTupleExprType>(); - node.Child(5)->ForEachChild([&](const TExprNode& child){ + node.Child(6)->ForEachChild([&](const TExprNode& child){ rightRenames.emplace_back((s = !s) ? *GetFieldPosition(*rightTupleType, child.Content()) : *GetFieldPosition(*outputMultiType, child.Content())); }); } break; case ETypeAnnotationKind::Struct: { const auto rightStructType = rightItemType->Cast<TStructExprType>(); - node.Child(5)->ForEachChild([&](const TExprNode& child){ + node.Child(6)->ForEachChild([&](const TExprNode& child){ rightRenames.emplace_back((s = !s) ? *GetFieldPosition(*rightStructType, child.Content()) : *GetFieldPosition(*outputMultiType, child.Content())); }); } break; default: - MKQL_ENSURE(!node.Child(5)->ChildrenSize(), "Expected empty right output columns."); + MKQL_ENSURE(!node.Child(6)->ChildrenSize(), "Expected empty right output columns."); } break; } diff --git a/ydb/library/yql/providers/yt/provider/yql_yt_join_impl.cpp b/ydb/library/yql/providers/yt/provider/yql_yt_join_impl.cpp index 23f17ccbf0..977a81cb16 100644 --- a/ydb/library/yql/providers/yt/provider/yql_yt_join_impl.cpp +++ b/ydb/library/yql/providers/yt/provider/yql_yt_join_impl.cpp @@ -1703,10 +1703,11 @@ bool RewriteYtMapJoin(TYtEquiJoin equiJoin, const TJoinLabels& labels, bool isLo const bool needPayload = joinType->IsAtom({"Inner", "Left"}); // don't produce nulls + TExprNode::TListType remappedMembers; + TExprNode::TListType remappedMembersToSkipNull; + TExprNode::TPtr smallKeySelector; if (!isCross) { - TExprNode::TListType remappedMembers; - TExprNode::TListType remappedMembersToSkipNull; tableContent = RemapNonConvertibleItems(tableContent, smallLabel, *rightKeyColumns, outputKeyType, remappedMembers, remappedMembersToSkipNull, ctx); if (!remappedMembersToSkipNull.empty()) { tableContent = ctx.NewCallable(pos, "SkipNullMembers", { tableContent, ctx.NewList(pos, std::move(remappedMembersToSkipNull)) }); @@ -1883,8 +1884,9 @@ bool RewriteYtMapJoin(TYtEquiJoin equiJoin, const TJoinLabels& labels, bool isLo .Arg(1, "dict") .Add(2, joinType) .Add(3, ctx.NewList(pos, std::move(leftKeyColumnNodes))) - .Add(4, ctx.NewList(pos, std::move(leftRenameNodes))) - .Add(5, ctx.NewList(pos, std::move(rightRenameNodes))) + .Add(4, ctx.NewList(pos, std::move(remappedMembers))) + .Add(5, ctx.NewList(pos, std::move(leftRenameNodes))) + .Add(6, ctx.NewList(pos, std::move(rightRenameNodes))) .Seal() .Seal() .Seal() @@ -1896,8 +1898,9 @@ bool RewriteYtMapJoin(TYtEquiJoin equiJoin, const TJoinLabels& labels, bool isLo .Add(1, dict) .Add(2, joinType) .Add(3, ctx.NewList(pos, std::move(leftKeyColumnNodes))) - .Add(4, ctx.NewList(pos, std::move(leftRenameNodes))) - .Add(5, ctx.NewList(pos, std::move(rightRenameNodes))) + .Add(4, ctx.NewList(pos, std::move(remappedMembers))) + .Add(5, ctx.NewList(pos, std::move(leftRenameNodes))) + .Add(6, ctx.NewList(pos, std::move(rightRenameNodes))) .Seal() .Build(); } diff --git a/ydb/library/yql/tests/s-expressions/yt_native_file/part0/canondata/result.json b/ydb/library/yql/tests/s-expressions/yt_native_file/part0/canondata/result.json index 7c119b9262..edd8d834d9 100644 --- a/ydb/library/yql/tests/s-expressions/yt_native_file/part0/canondata/result.json +++ b/ydb/library/yql/tests/s-expressions/yt_native_file/part0/canondata/result.json @@ -1124,9 +1124,9 @@ ], "test.test[EquiJoinAny-MapAllAny-Debug]": [ { - "checksum": "4154439121a537950b396af0061664bd", - "size": 16445, - "uri": "https://{canondata_backend}/1775059/3fefb549fd47c5ea8445d0ae57e6925d43865d9f/resource.tar.gz#test.test_EquiJoinAny-MapAllAny-Debug_/opt.yql" + "checksum": "3e336855b745e76c1fff5db0f2384b9d", + "size": 16461, + "uri": "https://{canondata_backend}/1942525/2625516bd6b4d87e6907d69736714a878bb99eda/resource.tar.gz#test.test_EquiJoinAny-MapAllAny-Debug_/opt.yql" }, { "checksum": "cc642a4c9bb547af7576be99222b9a6c", @@ -1496,9 +1496,9 @@ ], "test.test[EquiJoinMap-JoinMapOpt1Key2-Debug]": [ { - "checksum": "59c430609357b87dc36659a9aa583fde", - "size": 12103, - "uri": "https://{canondata_backend}/1773845/ba06ae96da6e76a7d25bd8ae8d601ae7ff05b01a/resource.tar.gz#test.test_EquiJoinMap-JoinMapOpt1Key2-Debug_/opt.yql" + "checksum": "15d06561217eef9ed61e75fea8b54f75", + "size": 12131, + "uri": "https://{canondata_backend}/1942525/2625516bd6b4d87e6907d69736714a878bb99eda/resource.tar.gz#test.test_EquiJoinMap-JoinMapOpt1Key2-Debug_/opt.yql" }, { "checksum": "23adb645dca07b689d9cb40adc75b885", diff --git a/ydb/library/yql/tests/s-expressions/yt_native_file/part1/canondata/result.json b/ydb/library/yql/tests/s-expressions/yt_native_file/part1/canondata/result.json index 5dae1ebaa7..5433fde963 100644 --- a/ydb/library/yql/tests/s-expressions/yt_native_file/part1/canondata/result.json +++ b/ydb/library/yql/tests/s-expressions/yt_native_file/part1/canondata/result.json @@ -1444,9 +1444,9 @@ ], "test.test[EquiJoinMap-JoinMapOpt2Key2-Debug]": [ { - "checksum": "5a776cbcff0524e58b7324c55a82bc29", - "size": 11413, - "uri": "https://{canondata_backend}/1597364/e4cad1f4b51fc37bc3141a2ef34a3c7b91db5eb3/resource.tar.gz#test.test_EquiJoinMap-JoinMapOpt2Key2-Debug_/opt.yql" + "checksum": "8f48c716970314b675cfdc4ef96f2ab7", + "size": 11441, + "uri": "https://{canondata_backend}/1925821/d77dfb0724f257da04acc048da686ded70b7674d/resource.tar.gz#test.test_EquiJoinMap-JoinMapOpt2Key2-Debug_/opt.yql" }, { "checksum": "f8276d6bca57d02de485b933b276bca1", @@ -3060,9 +3060,9 @@ ], "test.test[Join-MapJoinCore_Flow-Debug]": [ { - "checksum": "4d92e75360489d03205f586f96efb0ab", - "size": 1822, - "uri": "https://{canondata_backend}/1784117/2a668f6ac19ea766e68b95d7d011daa663f18019/resource.tar.gz#test.test_Join-MapJoinCore_Flow-Debug_/opt.yql" + "checksum": "981099c5a1398d3e3fe2380069257815", + "size": 1865, + "uri": "https://{canondata_backend}/1925821/d77dfb0724f257da04acc048da686ded70b7674d/resource.tar.gz#test.test_Join-MapJoinCore_Flow-Debug_/opt.yql" } ], "test.test[Join-MapJoinCore_Flow-Plan]": [ diff --git a/ydb/library/yql/tests/s-expressions/yt_native_file/part2/canondata/result.json b/ydb/library/yql/tests/s-expressions/yt_native_file/part2/canondata/result.json index 42453fc18c..5ed52d009d 100644 --- a/ydb/library/yql/tests/s-expressions/yt_native_file/part2/canondata/result.json +++ b/ydb/library/yql/tests/s-expressions/yt_native_file/part2/canondata/result.json @@ -969,9 +969,9 @@ ], "test.test[EquiJoin-EquiJoinConvertMapI8U8-Debug]": [ { - "checksum": "18ad2373a2ddd9b8c7e555b68dd34abe", - "size": 52767, - "uri": "https://{canondata_backend}/1784826/c542c09b6560f5325cde5c3af8d515884014a60d/resource.tar.gz#test.test_EquiJoin-EquiJoinConvertMapI8U8-Debug_/opt.yql" + "checksum": "b1d084d7d7753d7346abb75224fce171", + "size": 52886, + "uri": "https://{canondata_backend}/1784117/329ac28d12d307d2cf29fc397e08cb08d9401dee/resource.tar.gz#test.test_EquiJoin-EquiJoinConvertMapI8U8-Debug_/opt.yql" }, { "checksum": "de438775b4de1b6e9e8e2a94418df106", diff --git a/ydb/library/yql/tests/s-expressions/yt_native_file/part3/canondata/result.json b/ydb/library/yql/tests/s-expressions/yt_native_file/part3/canondata/result.json index 286642b0cf..bff3cacb21 100644 --- a/ydb/library/yql/tests/s-expressions/yt_native_file/part3/canondata/result.json +++ b/ydb/library/yql/tests/s-expressions/yt_native_file/part3/canondata/result.json @@ -2579,9 +2579,9 @@ ], "test.test[EquiJoinMap-JoinMap-Debug]": [ { - "checksum": "d898d53a6c8bc753bb387aa5ee267477", - "size": 11342, - "uri": "https://{canondata_backend}/1871002/f4a0c13366cf282b8f245d4ad386f0ea871fb4d4/resource.tar.gz#test.test_EquiJoinMap-JoinMap-Debug_/opt.yql" + "checksum": "d4c24d241eb73bd0fc03e2d82087b468", + "size": 11370, + "uri": "https://{canondata_backend}/1942525/56ab242c36f63ffdebf5ab3621cf76b5a6e1582b/resource.tar.gz#test.test_EquiJoinMap-JoinMap-Debug_/opt.yql" }, { "checksum": "2d03e58540254763262f2e979bc02598", @@ -2700,9 +2700,9 @@ ], "test.test[EquiJoinMap-JoinMapOpt1-Debug]": [ { - "checksum": "c71583e21bb202a6724f8c20649d867b", - "size": 11761, - "uri": "https://{canondata_backend}/1871002/f4a0c13366cf282b8f245d4ad386f0ea871fb4d4/resource.tar.gz#test.test_EquiJoinMap-JoinMapOpt1-Debug_/opt.yql" + "checksum": "2e5b0d0714819d2dd282cd2cbc1b186f", + "size": 11789, + "uri": "https://{canondata_backend}/1942525/56ab242c36f63ffdebf5ab3621cf76b5a6e1582b/resource.tar.gz#test.test_EquiJoinMap-JoinMapOpt1-Debug_/opt.yql" }, { "checksum": "2d03e58540254763262f2e979bc02598", diff --git a/ydb/library/yql/tests/s-expressions/yt_native_file/part4/canondata/result.json b/ydb/library/yql/tests/s-expressions/yt_native_file/part4/canondata/result.json index b9f5fa127c..e41d2e536f 100644 --- a/ydb/library/yql/tests/s-expressions/yt_native_file/part4/canondata/result.json +++ b/ydb/library/yql/tests/s-expressions/yt_native_file/part4/canondata/result.json @@ -1035,9 +1035,9 @@ ], "test.test[EquiJoin-EquiJoinConvertMapI8U32-Debug]": [ { - "checksum": "01ba99bfae352c4769a26601e6e8a68c", - "size": 18304, - "uri": "https://{canondata_backend}/937458/a77ccfcf109d2b41551e8163a6093a624611962e/resource.tar.gz#test.test_EquiJoin-EquiJoinConvertMapI8U32-Debug_/opt.yql" + "checksum": "4fa66375333a1f35aac4b52533a69e8d", + "size": 18332, + "uri": "https://{canondata_backend}/212715/995f69379fcdd3b61fbbb822de048b2ffe81c81f/resource.tar.gz#test.test_EquiJoin-EquiJoinConvertMapI8U32-Debug_/opt.yql" }, { "checksum": "b3ad6c26babf882b76373f6084dbf37c", @@ -2055,9 +2055,9 @@ ], "test.test[EquiJoinMap-JoinMapOpt12-Debug]": [ { - "checksum": "41fcb70f268d265ca9af6211ac76f6e2", - "size": 11287, - "uri": "https://{canondata_backend}/995452/9f84757198887543cf5c001886084f60d55f61e3/resource.tar.gz#test.test_EquiJoinMap-JoinMapOpt12-Debug_/opt.yql" + "checksum": "f6a7e48b4f5de06461c055d5a4e035a0", + "size": 11315, + "uri": "https://{canondata_backend}/212715/995f69379fcdd3b61fbbb822de048b2ffe81c81f/resource.tar.gz#test.test_EquiJoinMap-JoinMapOpt12-Debug_/opt.yql" }, { "checksum": "b74c80ac0ad5d13bd4367a827b9cb52e", diff --git a/ydb/library/yql/tests/s-expressions/yt_native_file/part5/canondata/result.json b/ydb/library/yql/tests/s-expressions/yt_native_file/part5/canondata/result.json index dfcd7eb334..89200d42bb 100644 --- a/ydb/library/yql/tests/s-expressions/yt_native_file/part5/canondata/result.json +++ b/ydb/library/yql/tests/s-expressions/yt_native_file/part5/canondata/result.json @@ -787,9 +787,9 @@ ], "test.test[EquiJoin-Bug2566-Debug]": [ { - "checksum": "3074d29bdf312b10a82e26f2935e4c94", - "size": 3692, - "uri": "https://{canondata_backend}/1936997/df914dc4d1504bb370ae32df7d583a29dbce7f12/resource.tar.gz#test.test_EquiJoin-Bug2566-Debug_/opt.yql" + "checksum": "e56c1a6435d395e0dbde68ff799488f1", + "size": 3712, + "uri": "https://{canondata_backend}/1880306/2b4f005974b24222919b5e116add03374f16e485/resource.tar.gz#test.test_EquiJoin-Bug2566-Debug_/opt.yql" }, { "checksum": "633c5e7d2f9bcdd1b37e8bd6a4c9dfa0", @@ -2247,9 +2247,9 @@ ], "test.test[EquiJoinMap-JoinMapOpt12Key2-Debug]": [ { - "checksum": "eff2639a99b310fb8b429c3a44ba6d3c", - "size": 11395, - "uri": "https://{canondata_backend}/1871002/b3a03d6e11eb1e5350e9cb4a421ad1b99cac351a/resource.tar.gz#test.test_EquiJoinMap-JoinMapOpt12Key2-Debug_/opt.yql" + "checksum": "f798ac0ea66d51971b4aee241d677d34", + "size": 11423, + "uri": "https://{canondata_backend}/1880306/2b4f005974b24222919b5e116add03374f16e485/resource.tar.gz#test.test_EquiJoinMap-JoinMapOpt12Key2-Debug_/opt.yql" }, { "checksum": "f8276d6bca57d02de485b933b276bca1", @@ -2368,9 +2368,9 @@ ], "test.test[EquiJoinMap-bug3054-Debug]": [ { - "checksum": "6e8a15e01e649570b2833873d2cccc4e", - "size": 3047, - "uri": "https://{canondata_backend}/1936997/df914dc4d1504bb370ae32df7d583a29dbce7f12/resource.tar.gz#test.test_EquiJoinMap-bug3054-Debug_/opt.yql" + "checksum": "db5d94e3ef2214eb89460a44fe3046ed", + "size": 3069, + "uri": "https://{canondata_backend}/1880306/2b4f005974b24222919b5e116add03374f16e485/resource.tar.gz#test.test_EquiJoinMap-bug3054-Debug_/opt.yql" }, { "checksum": "c8561fd25062f8bc1f51ae454d9d4d40", @@ -3491,9 +3491,9 @@ ], "test.test[Join-MapJoinCore-Debug]": [ { - "checksum": "7cace149cabffe64d8154f99db16126b", - "size": 2087, - "uri": "https://{canondata_backend}/1942415/da4afe2ddfdd76777c86f89941fb73da3d79d32e/resource.tar.gz#test.test_Join-MapJoinCore-Debug_/opt.yql" + "checksum": "be163fc2b4acd9a3f9e755b2ae83b78f", + "size": 2130, + "uri": "https://{canondata_backend}/1880306/2b4f005974b24222919b5e116add03374f16e485/resource.tar.gz#test.test_Join-MapJoinCore-Debug_/opt.yql" } ], "test.test[Join-MapJoinCore-Plan]": [ diff --git a/ydb/library/yql/tests/s-expressions/yt_native_file/part6/canondata/result.json b/ydb/library/yql/tests/s-expressions/yt_native_file/part6/canondata/result.json index 26323d1885..2586f929f2 100644 --- a/ydb/library/yql/tests/s-expressions/yt_native_file/part6/canondata/result.json +++ b/ydb/library/yql/tests/s-expressions/yt_native_file/part6/canondata/result.json @@ -1829,9 +1829,9 @@ ], "test.test[EquiJoin-HintLeftUniqueRightMap-Debug]": [ { - "checksum": "2a57ac196e0b6aa8af383a49a4ab812b", - "size": 3662, - "uri": "https://{canondata_backend}/995452/7d3cbc2e7a01dab7003c15afa53ce8fb13d40d8e/resource.tar.gz#test.test_EquiJoin-HintLeftUniqueRightMap-Debug_/opt.yql" + "checksum": "f656cc1c70d0a3c5715dcede0bf613dc", + "size": 3684, + "uri": "https://{canondata_backend}/1925842/6cda52b754dfbf22f4689dab1717eebd26ae88d6/resource.tar.gz#test.test_EquiJoin-HintLeftUniqueRightMap-Debug_/opt.yql" }, { "checksum": "a95bc48c26607bf8d91d4b24d31e8329", @@ -1880,9 +1880,9 @@ ], "test.test[EquiJoin-HintRightUniqueInnerMap-Debug]": [ { - "checksum": "9409de50296a88fc0fbdee4dfc3fae6c", - "size": 3661, - "uri": "https://{canondata_backend}/995452/7d3cbc2e7a01dab7003c15afa53ce8fb13d40d8e/resource.tar.gz#test.test_EquiJoin-HintRightUniqueInnerMap-Debug_/opt.yql" + "checksum": "d0bfec608a5d22ad63bb3dc1a122410d", + "size": 3683, + "uri": "https://{canondata_backend}/1925842/6cda52b754dfbf22f4689dab1717eebd26ae88d6/resource.tar.gz#test.test_EquiJoin-HintRightUniqueInnerMap-Debug_/opt.yql" }, { "checksum": "a95bc48c26607bf8d91d4b24d31e8329", @@ -1931,9 +1931,9 @@ ], "test.test[EquiJoin-HintRightUniqueLeftMap-Debug]": [ { - "checksum": "a4bba576b0ed86b4fbcc6589d2c33936", - "size": 3660, - "uri": "https://{canondata_backend}/995452/7d3cbc2e7a01dab7003c15afa53ce8fb13d40d8e/resource.tar.gz#test.test_EquiJoin-HintRightUniqueLeftMap-Debug_/opt.yql" + "checksum": "3c0b890c0cf1b2ff872dfe3a2849b463", + "size": 3682, + "uri": "https://{canondata_backend}/1925842/6cda52b754dfbf22f4689dab1717eebd26ae88d6/resource.tar.gz#test.test_EquiJoin-HintRightUniqueLeftMap-Debug_/opt.yql" }, { "checksum": "a95bc48c26607bf8d91d4b24d31e8329", @@ -2470,9 +2470,9 @@ ], "test.test[EquiJoinMap-JoinMapKey2-Debug]": [ { - "checksum": "f3bbbcdd10a8bc69dd60c7c2c76d9da3", - "size": 11552, - "uri": "https://{canondata_backend}/1773845/7339f5732a02aa11f5b7da59a88b7cc0a817ad92/resource.tar.gz#test.test_EquiJoinMap-JoinMapKey2-Debug_/opt.yql" + "checksum": "05935b86d737d8915bb32047d27db597", + "size": 11580, + "uri": "https://{canondata_backend}/1925842/6cda52b754dfbf22f4689dab1717eebd26ae88d6/resource.tar.gz#test.test_EquiJoinMap-JoinMapKey2-Debug_/opt.yql" }, { "checksum": "23adb645dca07b689d9cb40adc75b885", diff --git a/ydb/library/yql/tests/s-expressions/yt_native_file/part7/canondata/result.json b/ydb/library/yql/tests/s-expressions/yt_native_file/part7/canondata/result.json index fb6e9b3210..5a8b0e3950 100644 --- a/ydb/library/yql/tests/s-expressions/yt_native_file/part7/canondata/result.json +++ b/ydb/library/yql/tests/s-expressions/yt_native_file/part7/canondata/result.json @@ -2841,9 +2841,9 @@ ], "test.test[Join-MapJoinCoreOnStrings-Debug]": [ { - "checksum": "a31b774ac7de7e960f507cc42dda5f1e", - "size": 2215, - "uri": "https://{canondata_backend}/1889210/66cfb0637a884123d7213c55c2d2571368fb2504/resource.tar.gz#test.test_Join-MapJoinCoreOnStrings-Debug_/opt.yql" + "checksum": "a56222ed992e716d7da0b6c70d8b88e7", + "size": 2258, + "uri": "https://{canondata_backend}/937458/0247422c71a54b963096179ffcfee626d399f24c/resource.tar.gz#test.test_Join-MapJoinCoreOnStrings-Debug_/opt.yql" } ], "test.test[Join-MapJoinCoreOnStrings-Plan]": [ @@ -2862,9 +2862,9 @@ ], "test.test[Join-MapJoinCoreOnStrings_Flow-Debug]": [ { - "checksum": "fa32bd48d1987ef50acc76138b90db74", - "size": 1952, - "uri": "https://{canondata_backend}/1937429/f0a91bf5cdb3d134af8fff5d1ad973e3883b5ab1/resource.tar.gz#test.test_Join-MapJoinCoreOnStrings_Flow-Debug_/opt.yql" + "checksum": "4611394783bbcb085fcca9a98ef7db66", + "size": 1995, + "uri": "https://{canondata_backend}/937458/0247422c71a54b963096179ffcfee626d399f24c/resource.tar.gz#test.test_Join-MapJoinCoreOnStrings_Flow-Debug_/opt.yql" } ], "test.test[Join-MapJoinCoreOnStrings_Flow-Plan]": [ @@ -2883,9 +2883,9 @@ ], "test.test[Join-MapJoinCore_FlowOfTuples-Debug]": [ { - "checksum": "15ffe16a5630f7519166b79325b04047", - "size": 1432, - "uri": "https://{canondata_backend}/1916746/c3b7afaaaf932fcb7a3232164d1dfde8aefdf84b/resource.tar.gz#test.test_Join-MapJoinCore_FlowOfTuples-Debug_/opt.yql" + "checksum": "fa0cf8d3511d8f697cff262a5fb78426", + "size": 1456, + "uri": "https://{canondata_backend}/937458/0247422c71a54b963096179ffcfee626d399f24c/resource.tar.gz#test.test_Join-MapJoinCore_FlowOfTuples-Debug_/opt.yql" } ], "test.test[Join-MapJoinCore_FlowOfTuples-Plan]": [ diff --git a/ydb/library/yql/tests/s-expressions/yt_native_file/part8/canondata/result.json b/ydb/library/yql/tests/s-expressions/yt_native_file/part8/canondata/result.json index 375d6bf250..6a5dc407d4 100644 --- a/ydb/library/yql/tests/s-expressions/yt_native_file/part8/canondata/result.json +++ b/ydb/library/yql/tests/s-expressions/yt_native_file/part8/canondata/result.json @@ -866,9 +866,9 @@ ], "test.test[EquiJoin-HintRightUniqueLeftSemiShardedMap-Debug]": [ { - "checksum": "cd9b8cd816bee03e230408ee5b692ba9", - "size": 4608, - "uri": "https://{canondata_backend}/1773845/236c9627e15574ab1245e8d0c9aedda0f655d080/resource.tar.gz#test.test_EquiJoin-HintRightUniqueLeftSemiShardedMap-Debug_/opt.yql" + "checksum": "de9ec11eb66d887beef2c2e888357394", + "size": 4616, + "uri": "https://{canondata_backend}/1784117/baace651ee706ace7f8ee7f7567cf33040313ab5/resource.tar.gz#test.test_EquiJoin-HintRightUniqueLeftSemiShardedMap-Debug_/opt.yql" }, { "checksum": "ccc02c6a5a4970bb10f98a02fb46614f", @@ -1419,9 +1419,9 @@ ], "test.test[EquiJoinAny-MapAnyAll-Debug]": [ { - "checksum": "0e1100ed9788abd4e49d1bf362b2799c", - "size": 16489, - "uri": "https://{canondata_backend}/1817427/1c44a48642239f59625b961129df9702e514a0e5/resource.tar.gz#test.test_EquiJoinAny-MapAnyAll-Debug_/opt.yql" + "checksum": "11bc5d7d2b43ee3e71cd61dcb91b774f", + "size": 16505, + "uri": "https://{canondata_backend}/1784117/baace651ee706ace7f8ee7f7567cf33040313ab5/resource.tar.gz#test.test_EquiJoinAny-MapAnyAll-Debug_/opt.yql" }, { "checksum": "1f417d417653fa79b794e6e159152b7e", @@ -1911,9 +1911,9 @@ ], "test.test[EquiJoinMap-JoinMapOpt2-Debug]": [ { - "checksum": "1f3ff39731499d4a09a6211d694a169a", - "size": 11220, - "uri": "https://{canondata_backend}/1784826/fedf2a670f2380935915bdc0027b0813c1a1053f/resource.tar.gz#test.test_EquiJoinMap-JoinMapOpt2-Debug_/opt.yql" + "checksum": "ef832238b3376c061a6d9bee384e8c10", + "size": 11248, + "uri": "https://{canondata_backend}/1784117/baace651ee706ace7f8ee7f7567cf33040313ab5/resource.tar.gz#test.test_EquiJoinMap-JoinMapOpt2-Debug_/opt.yql" }, { "checksum": "b74c80ac0ad5d13bd4367a827b9cb52e", @@ -3021,9 +3021,9 @@ ], "test.test[Join-EmptyLeftJoin-Debug]": [ { - "checksum": "b4166e62d07871d39c5a64408daa6706", - "size": 508, - "uri": "https://{canondata_backend}/1942525/41ab42969fbc475ccdde85fbfa88eb17cfb43d86/resource.tar.gz#test.test_Join-EmptyLeftJoin-Debug_/opt.yql" + "checksum": "a7f3c23b34156c770b6681831d1891d3", + "size": 517, + "uri": "https://{canondata_backend}/1784117/baace651ee706ace7f8ee7f7567cf33040313ab5/resource.tar.gz#test.test_Join-EmptyLeftJoin-Debug_/opt.yql" } ], "test.test[Join-EmptyLeftJoin-Plan]": [ diff --git a/ydb/library/yql/tests/sql/dq_file/part5/canondata/result.json b/ydb/library/yql/tests/sql/dq_file/part5/canondata/result.json index 04b3f51528..b099532a2f 100644 --- a/ydb/library/yql/tests/sql/dq_file/part5/canondata/result.json +++ b/ydb/library/yql/tests/sql/dq_file/part5/canondata/result.json @@ -2306,14 +2306,14 @@ { "checksum": "08feb3c2ad2bee9d5746f3c1d62f5214", "size": 7091, - "uri": "https://{canondata_backend}/1773845/f65b350fb47bed5d03233e7ed3b1ef256d9abd32/resource.tar.gz#test.test_join-grace_join1-map-Analyze_/plan.txt" + "uri": "https://{canondata_backend}/1942671/9453685c6af2be2d06777e78a99d9db8738ffcc0/resource.tar.gz#test.test_join-grace_join1-map-Analyze_/plan.txt" } ], "test.test[join-grace_join1-map-Debug]": [ { - "checksum": "9e684c9b5d95ed12bd278c3223de6227", - "size": 3115, - "uri": "https://{canondata_backend}/1689644/0237dc143f231e4673d5cf207336f86d8d4035f4/resource.tar.gz#test.test_join-grace_join1-map-Debug_/opt.yql_patched" + "checksum": "364edabe894457a73f9365d8004e0ca9", + "size": 3137, + "uri": "https://{canondata_backend}/1942671/9453685c6af2be2d06777e78a99d9db8738ffcc0/resource.tar.gz#test.test_join-grace_join1-map-Debug_/opt.yql_patched" } ], "test.test[join-grace_join1-map-Plan]": [ diff --git a/ydb/library/yql/tests/sql/yt_native_file/part0/canondata/result.json b/ydb/library/yql/tests/sql/yt_native_file/part0/canondata/result.json index 0ba5172cdb..43ff070ecf 100644 --- a/ydb/library/yql/tests/sql/yt_native_file/part0/canondata/result.json +++ b/ydb/library/yql/tests/sql/yt_native_file/part0/canondata/result.json @@ -2406,9 +2406,9 @@ ], "test.test[join-mapjoin_unused_keys--Debug]": [ { - "checksum": "ff2fb4b0f3f0d092f6db866e608ac722", - "size": 4354, - "uri": "https://{canondata_backend}/1936842/df61754fc6ce55a2acf2161cf73d3d703a8f5a11/resource.tar.gz#test.test_join-mapjoin_unused_keys--Debug_/opt.yql" + "checksum": "1dce180d91035f7989aacb02d5aa4297", + "size": 4383, + "uri": "https://{canondata_backend}/1880306/c4e7680c1c690089c4e7c65afc416f8e47154ffa/resource.tar.gz#test.test_join-mapjoin_unused_keys--Debug_/opt.yql" } ], "test.test[join-mapjoin_unused_keys--Plan]": [ @@ -2619,9 +2619,9 @@ ], "test.test[join-yql-16011--Debug]": [ { - "checksum": "075cb96b1c61e3b33bd5ffce5c54e89f", - "size": 6204, - "uri": "https://{canondata_backend}/1784826/e9750740d08fbf06f169b410f17b106c0ebb4171/resource.tar.gz#test.test_join-yql-16011--Debug_/opt.yql" + "checksum": "8653453f880273322c51a9bc67437c2e", + "size": 6215, + "uri": "https://{canondata_backend}/1880306/c4e7680c1c690089c4e7c65afc416f8e47154ffa/resource.tar.gz#test.test_join-yql-16011--Debug_/opt.yql" } ], "test.test[join-yql-16011--Plan]": [ diff --git a/ydb/library/yql/tests/sql/yt_native_file/part1/canondata/result.json b/ydb/library/yql/tests/sql/yt_native_file/part1/canondata/result.json index 33223baf58..26d3550ebf 100644 --- a/ydb/library/yql/tests/sql/yt_native_file/part1/canondata/result.json +++ b/ydb/library/yql/tests/sql/yt_native_file/part1/canondata/result.json @@ -2145,9 +2145,9 @@ ], "test.test[join-convert_key--Debug]": [ { - "checksum": "2bf8c1ec0588c5d8ed77e1d09cf74852", - "size": 3511, - "uri": "https://{canondata_backend}/1031349/ae73c5d8d7d1b2af37a639a88f21b418d6242e18/resource.tar.gz#test.test_join-convert_key--Debug_/opt.yql" + "checksum": "27592bc0476bc2f153b9dd9a29d30ea2", + "size": 3533, + "uri": "https://{canondata_backend}/1880306/5943c0be93d87630d332e1bfbd7c544ecdabb04b/resource.tar.gz#test.test_join-convert_key--Debug_/opt.yql" } ], "test.test[join-convert_key--Plan]": [ @@ -2295,9 +2295,9 @@ ], "test.test[join-lookupjoin_inner_1o2o--Debug]": [ { - "checksum": "76c72bae52dc677f8d083f1aa3f31853", - "size": 2745, - "uri": "https://{canondata_backend}/1031349/ae73c5d8d7d1b2af37a639a88f21b418d6242e18/resource.tar.gz#test.test_join-lookupjoin_inner_1o2o--Debug_/opt.yql" + "checksum": "74e9e2f24d2b199816cb21ee2c23cadc", + "size": 2760, + "uri": "https://{canondata_backend}/1880306/5943c0be93d87630d332e1bfbd7c544ecdabb04b/resource.tar.gz#test.test_join-lookupjoin_inner_1o2o--Debug_/opt.yql" } ], "test.test[join-lookupjoin_inner_1o2o--Plan]": [ @@ -2316,9 +2316,9 @@ ], "test.test[join-mapjoin_early_rewrite_star--Debug]": [ { - "checksum": "248033caee3dd93420a1a4fcc8e2412a", - "size": 3252, - "uri": "https://{canondata_backend}/1031349/ae73c5d8d7d1b2af37a639a88f21b418d6242e18/resource.tar.gz#test.test_join-mapjoin_early_rewrite_star--Debug_/opt.yql" + "checksum": "d6e6feb892dcf57a249150d0f581a7dd", + "size": 3259, + "uri": "https://{canondata_backend}/1880306/5943c0be93d87630d332e1bfbd7c544ecdabb04b/resource.tar.gz#test.test_join-mapjoin_early_rewrite_star--Debug_/opt.yql" } ], "test.test[join-mapjoin_early_rewrite_star--Plan]": [ @@ -2435,9 +2435,9 @@ ], "test.test[join-premap_map_semi--Debug]": [ { - "checksum": "a6882d1f607788a5a1ce56ac1aadf421", - "size": 3041, - "uri": "https://{canondata_backend}/1031349/ae73c5d8d7d1b2af37a639a88f21b418d6242e18/resource.tar.gz#test.test_join-premap_map_semi--Debug_/opt.yql" + "checksum": "e6dc24ae6a648f0bfc43e25febb2840d", + "size": 3061, + "uri": "https://{canondata_backend}/1880306/5943c0be93d87630d332e1bfbd7c544ecdabb04b/resource.tar.gz#test.test_join-premap_map_semi--Debug_/opt.yql" } ], "test.test[join-premap_map_semi--Plan]": [ diff --git a/ydb/library/yql/tests/sql/yt_native_file/part2/canondata/result.json b/ydb/library/yql/tests/sql/yt_native_file/part2/canondata/result.json index 1c7005c587..7f1a7a5da0 100644 --- a/ydb/library/yql/tests/sql/yt_native_file/part2/canondata/result.json +++ b/ydb/library/yql/tests/sql/yt_native_file/part2/canondata/result.json @@ -2506,9 +2506,9 @@ ], "test.test[join-lookupjoin_inner--Debug]": [ { - "checksum": "4420cb2f2a84fd4a00aa56e9f61a5271", - "size": 2664, - "uri": "https://{canondata_backend}/1942173/9a6f6334e651491b441984c4ddd245333e46d62d/resource.tar.gz#test.test_join-lookupjoin_inner--Debug_/opt.yql" + "checksum": "6126ca0f7bc87752edeb5079d68e7874", + "size": 2679, + "uri": "https://{canondata_backend}/1903885/9f3cc059d0dff973193fe9dfe5618178bac27a80/resource.tar.gz#test.test_join-lookupjoin_inner--Debug_/opt.yql" } ], "test.test[join-lookupjoin_inner--Plan]": [ @@ -2527,9 +2527,9 @@ ], "test.test[join-lookupjoin_semi_1o2o--Debug]": [ { - "checksum": "90667f3f606d8cf728de688b555634ce", - "size": 2725, - "uri": "https://{canondata_backend}/1942173/9a6f6334e651491b441984c4ddd245333e46d62d/resource.tar.gz#test.test_join-lookupjoin_semi_1o2o--Debug_/opt.yql" + "checksum": "fce7c9508eee239911d0de45b9c1609b", + "size": 2734, + "uri": "https://{canondata_backend}/1903885/9f3cc059d0dff973193fe9dfe5618178bac27a80/resource.tar.gz#test.test_join-lookupjoin_semi_1o2o--Debug_/opt.yql" } ], "test.test[join-lookupjoin_semi_1o2o--Plan]": [ @@ -2548,9 +2548,9 @@ ], "test.test[join-lookupjoin_semi_subq--Debug]": [ { - "checksum": "12ec90ad9b9248df93b763adae7f8f7f", - "size": 2578, - "uri": "https://{canondata_backend}/1942173/9a6f6334e651491b441984c4ddd245333e46d62d/resource.tar.gz#test.test_join-lookupjoin_semi_subq--Debug_/opt.yql" + "checksum": "061ed54e879344d7ef7ae518e53e7c19", + "size": 2587, + "uri": "https://{canondata_backend}/1903885/9f3cc059d0dff973193fe9dfe5618178bac27a80/resource.tar.gz#test.test_join-lookupjoin_semi_subq--Debug_/opt.yql" } ], "test.test[join-lookupjoin_semi_subq--Plan]": [ @@ -2569,9 +2569,9 @@ ], "test.test[join-lookupjoin_with_cache--Debug]": [ { - "checksum": "7d85b3cf35961bfbb9948f37ace1959f", - "size": 3956, - "uri": "https://{canondata_backend}/1784826/63f3b28bd4f7c5701138f9b10fc4c3b5fb306744/resource.tar.gz#test.test_join-lookupjoin_with_cache--Debug_/opt.yql" + "checksum": "0e002fc6410b0ccb395b4e8394b6cfc5", + "size": 3960, + "uri": "https://{canondata_backend}/1903885/9f3cc059d0dff973193fe9dfe5618178bac27a80/resource.tar.gz#test.test_join-lookupjoin_with_cache--Debug_/opt.yql" } ], "test.test[join-lookupjoin_with_cache--Plan]": [ @@ -2590,9 +2590,9 @@ ], "test.test[join-mapjoin_early_rewrite_sequence--Debug]": [ { - "checksum": "8e7a61b569799dafb3c81597a4c6cd8e", - "size": 4668, - "uri": "https://{canondata_backend}/1942173/9a6f6334e651491b441984c4ddd245333e46d62d/resource.tar.gz#test.test_join-mapjoin_early_rewrite_sequence--Debug_/opt.yql" + "checksum": "8de013ae532bf9151a5307feed346a37", + "size": 4679, + "uri": "https://{canondata_backend}/1903885/9f3cc059d0dff973193fe9dfe5618178bac27a80/resource.tar.gz#test.test_join-mapjoin_early_rewrite_sequence--Debug_/opt.yql" } ], "test.test[join-mapjoin_early_rewrite_sequence--Plan]": [ @@ -4464,9 +4464,9 @@ ], "test.test[sampling-mapjoin_left_sample-default.txt-Debug]": [ { - "checksum": "dfe130de2b0dfad09b19489ab783eab4", - "size": 2412, - "uri": "https://{canondata_backend}/1600758/d903106d62cd4c0b1dbdbaee71226b04f4247597/resource.tar.gz#test.test_sampling-mapjoin_left_sample-default.txt-Debug_/opt.yql" + "checksum": "e8d25bff3c97ae684d7e0b0117104772", + "size": 2432, + "uri": "https://{canondata_backend}/1903885/9f3cc059d0dff973193fe9dfe5618178bac27a80/resource.tar.gz#test.test_sampling-mapjoin_left_sample-default.txt-Debug_/opt.yql" } ], "test.test[sampling-mapjoin_left_sample-default.txt-Plan]": [ diff --git a/ydb/library/yql/tests/sql/yt_native_file/part3/canondata/result.json b/ydb/library/yql/tests/sql/yt_native_file/part3/canondata/result.json index c21144b0c9..903d5b34e2 100644 --- a/ydb/library/yql/tests/sql/yt_native_file/part3/canondata/result.json +++ b/ydb/library/yql/tests/sql/yt_native_file/part3/canondata/result.json @@ -2149,9 +2149,9 @@ ], "test.test[join-lookupjoin_inner_2o--Debug]": [ { - "checksum": "6ca77c127fce9ddd7fcc7b0a42acc06b", - "size": 3004, - "uri": "https://{canondata_backend}/1937424/2742e76fa6399a6dda2abe132fbf9df8f714765f/resource.tar.gz#test.test_join-lookupjoin_inner_2o--Debug_/opt.yql" + "checksum": "5e9f35e9fc3161651a5479319bd3ad95", + "size": 3019, + "uri": "https://{canondata_backend}/1936842/fab2fef3f906a5afbc02b8ac3c5121b8eb14dff2/resource.tar.gz#test.test_join-lookupjoin_inner_2o--Debug_/opt.yql" } ], "test.test[join-lookupjoin_inner_2o--Plan]": [ @@ -2170,9 +2170,9 @@ ], "test.test[join-lookupjoin_unused_keys--Debug]": [ { - "checksum": "ae71ec54ac76822e0387ebd280bb53a3", - "size": 5026, - "uri": "https://{canondata_backend}/1937424/2742e76fa6399a6dda2abe132fbf9df8f714765f/resource.tar.gz#test.test_join-lookupjoin_unused_keys--Debug_/opt.yql" + "checksum": "0659a1353f7830f19e78a7243d47486b", + "size": 5042, + "uri": "https://{canondata_backend}/1936842/fab2fef3f906a5afbc02b8ac3c5121b8eb14dff2/resource.tar.gz#test.test_join-lookupjoin_unused_keys--Debug_/opt.yql" } ], "test.test[join-lookupjoin_unused_keys--Plan]": [ @@ -2212,9 +2212,9 @@ ], "test.test[join-mapjoin_opt_vs_2xopt--Debug]": [ { - "checksum": "c785f368254151eb3f5485ec8e506bb6", - "size": 4102, - "uri": "https://{canondata_backend}/1936997/43379553890a43c724981724c68f89a1aa3f693b/resource.tar.gz#test.test_join-mapjoin_opt_vs_2xopt--Debug_/opt.yql" + "checksum": "98080425aa7b359a7345d75f5bb6faf7", + "size": 4106, + "uri": "https://{canondata_backend}/1936842/fab2fef3f906a5afbc02b8ac3c5121b8eb14dff2/resource.tar.gz#test.test_join-mapjoin_opt_vs_2xopt--Debug_/opt.yql" } ], "test.test[join-mapjoin_opt_vs_2xopt--Plan]": [ @@ -3899,9 +3899,9 @@ ], "test.test[sampling-subquery_mapjoin-default.txt-Debug]": [ { - "checksum": "78bfaed415a12dc9228e7e094ee7c8b3", - "size": 2461, - "uri": "https://{canondata_backend}/1936842/cbce9dda2baeb4df36d9ccfc918ac348e610bfad/resource.tar.gz#test.test_sampling-subquery_mapjoin-default.txt-Debug_/opt.yql" + "checksum": "26d750d8f1c50a376072539d94fc20ba", + "size": 2481, + "uri": "https://{canondata_backend}/1936842/fab2fef3f906a5afbc02b8ac3c5121b8eb14dff2/resource.tar.gz#test.test_sampling-subquery_mapjoin-default.txt-Debug_/opt.yql" } ], "test.test[sampling-subquery_mapjoin-default.txt-Plan]": [ diff --git a/ydb/library/yql/tests/sql/yt_native_file/part4/canondata/result.json b/ydb/library/yql/tests/sql/yt_native_file/part4/canondata/result.json index 00719d85eb..579203812d 100644 --- a/ydb/library/yql/tests/sql/yt_native_file/part4/canondata/result.json +++ b/ydb/library/yql/tests/sql/yt_native_file/part4/canondata/result.json @@ -2283,9 +2283,9 @@ ], "test.test[join-mapjoin_dup_key--Debug]": [ { - "checksum": "c18a349168f306c60a8e8df72041c872", - "size": 2325, - "uri": "https://{canondata_backend}/1937027/b2b2e339d1731355b04f7a42a585329c3bc93458/resource.tar.gz#test.test_join-mapjoin_dup_key--Debug_/opt.yql" + "checksum": "56b68742c193bbfac9c78e138f8e01be", + "size": 2342, + "uri": "https://{canondata_backend}/1903885/357a4fea0449e98db159f5a087a2bdeb6fb084ab/resource.tar.gz#test.test_join-mapjoin_dup_key--Debug_/opt.yql" } ], "test.test[join-mapjoin_dup_key--Plan]": [ @@ -2304,9 +2304,9 @@ ], "test.test[join-mapjoin_with_anonymous--Debug]": [ { - "checksum": "b650762d853850d03da8d775bc774ec7", - "size": 3025, - "uri": "https://{canondata_backend}/1773845/4175f39a505b153d67edfa8f510ce5f8374a0bf8/resource.tar.gz#test.test_join-mapjoin_with_anonymous--Debug_/opt.yql" + "checksum": "6ba412b13b3ac405f60039850aebf4c6", + "size": 3047, + "uri": "https://{canondata_backend}/1903885/357a4fea0449e98db159f5a087a2bdeb6fb084ab/resource.tar.gz#test.test_join-mapjoin_with_anonymous--Debug_/opt.yql" } ], "test.test[join-mapjoin_with_anonymous--Plan]": [ @@ -4184,9 +4184,9 @@ ], "test.test[sampling-mapjoin_right_sample-default.txt-Debug]": [ { - "checksum": "1420b856d968fd1517cde027ef4cc4c7", - "size": 2412, - "uri": "https://{canondata_backend}/1871182/3929b8a840fb48e36816b5c322ab881c6e5a7107/resource.tar.gz#test.test_sampling-mapjoin_right_sample-default.txt-Debug_/opt.yql" + "checksum": "7bb4043f46133bad675c58a49853b2f7", + "size": 2432, + "uri": "https://{canondata_backend}/1903885/357a4fea0449e98db159f5a087a2bdeb6fb084ab/resource.tar.gz#test.test_sampling-mapjoin_right_sample-default.txt-Debug_/opt.yql" } ], "test.test[sampling-mapjoin_right_sample-default.txt-Plan]": [ diff --git a/ydb/library/yql/tests/sql/yt_native_file/part5/canondata/result.json b/ydb/library/yql/tests/sql/yt_native_file/part5/canondata/result.json index dd716cdfb1..fe50e052cc 100644 --- a/ydb/library/yql/tests/sql/yt_native_file/part5/canondata/result.json +++ b/ydb/library/yql/tests/sql/yt_native_file/part5/canondata/result.json @@ -2534,9 +2534,9 @@ ], "test.test[join-lookupjoin_bug7646_subst--Debug]": [ { - "checksum": "310ab0b2777f1d05a8ad23f344032388", - "size": 4737, - "uri": "https://{canondata_backend}/1942671/3ee939ba8b1a570964ff0417df5011a751b80c17/resource.tar.gz#test.test_join-lookupjoin_bug7646_subst--Debug_/opt.yql" + "checksum": "5c5d5af9acb6c231b2f3d7c08fc532b5", + "size": 4762, + "uri": "https://{canondata_backend}/1924537/a1724f09c61ca2d7b118f636b56ba6ad473f8d09/resource.tar.gz#test.test_join-lookupjoin_bug7646_subst--Debug_/opt.yql" } ], "test.test[join-lookupjoin_bug7646_subst--Plan]": [ @@ -2576,9 +2576,9 @@ ], "test.test[join-lookupjoin_semi--Debug]": [ { - "checksum": "669e5cf9c54824b1d5b23d8dfe07192d", - "size": 2677, - "uri": "https://{canondata_backend}/1903885/bd6e40235810a6cb73de23553bbd4f90ac78f7e5/resource.tar.gz#test.test_join-lookupjoin_semi--Debug_/opt.yql" + "checksum": "83627adab1bf041fb3f13893fc5da1c2", + "size": 2686, + "uri": "https://{canondata_backend}/1924537/a1724f09c61ca2d7b118f636b56ba6ad473f8d09/resource.tar.gz#test.test_join-lookupjoin_semi--Debug_/opt.yql" } ], "test.test[join-lookupjoin_semi--Plan]": [ @@ -2597,9 +2597,9 @@ ], "test.test[join-mapjoin_early_rewrite--Debug]": [ { - "checksum": "5d0de73ad42467d5d9044819fe33cc73", - "size": 3169, - "uri": "https://{canondata_backend}/1903885/bd6e40235810a6cb73de23553bbd4f90ac78f7e5/resource.tar.gz#test.test_join-mapjoin_early_rewrite--Debug_/opt.yql" + "checksum": "920d09852bfb8ff3a5746e7b84a2dde5", + "size": 3176, + "uri": "https://{canondata_backend}/1924537/a1724f09c61ca2d7b118f636b56ba6ad473f8d09/resource.tar.gz#test.test_join-mapjoin_early_rewrite--Debug_/opt.yql" } ], "test.test[join-mapjoin_early_rewrite--Plan]": [ diff --git a/ydb/library/yql/tests/sql/yt_native_file/part6/canondata/result.json b/ydb/library/yql/tests/sql/yt_native_file/part6/canondata/result.json index 04a7013495..5a7c0d5d3d 100644 --- a/ydb/library/yql/tests/sql/yt_native_file/part6/canondata/result.json +++ b/ydb/library/yql/tests/sql/yt_native_file/part6/canondata/result.json @@ -2170,9 +2170,9 @@ ], "test.test[join-join_comp_map_table--Debug]": [ { - "checksum": "a984f84354e7a4b5cc4f107f10d33b9c", - "size": 7719, - "uri": "https://{canondata_backend}/1942415/0635ef51f0b6002d70ba427ff40b36c9d813025f/resource.tar.gz#test.test_join-join_comp_map_table--Debug_/opt.yql" + "checksum": "686f41aa5e5d7dcac8f4441e4e24bbfa", + "size": 7747, + "uri": "https://{canondata_backend}/1936842/f78569e172299b7a2aee3d6ade84c2cc02cc5940/resource.tar.gz#test.test_join-join_comp_map_table--Debug_/opt.yql" } ], "test.test[join-join_comp_map_table--Plan]": [ @@ -2215,9 +2215,9 @@ ], "test.test[join-lookupjoin_inner_1o--Debug]": [ { - "checksum": "d3d2510dbb1028c714aca27684d8e902", - "size": 3184, - "uri": "https://{canondata_backend}/1942415/0635ef51f0b6002d70ba427ff40b36c9d813025f/resource.tar.gz#test.test_join-lookupjoin_inner_1o--Debug_/opt.yql" + "checksum": "c536b12b798d9e9b1a4fce43b40a61df", + "size": 3195, + "uri": "https://{canondata_backend}/1936842/f78569e172299b7a2aee3d6ade84c2cc02cc5940/resource.tar.gz#test.test_join-lookupjoin_inner_1o--Debug_/opt.yql" } ], "test.test[join-lookupjoin_inner_1o--Plan]": [ @@ -2383,9 +2383,9 @@ ], "test.test[join-premap_map_inner--Debug]": [ { - "checksum": "67a03c9703235b5e5cf1ecf81c456cc3", - "size": 3184, - "uri": "https://{canondata_backend}/1942415/0635ef51f0b6002d70ba427ff40b36c9d813025f/resource.tar.gz#test.test_join-premap_map_inner--Debug_/opt.yql" + "checksum": "8a6f86726e00e9533d6348e1ba66a572", + "size": 3193, + "uri": "https://{canondata_backend}/1936842/f78569e172299b7a2aee3d6ade84c2cc02cc5940/resource.tar.gz#test.test_join-premap_map_inner--Debug_/opt.yql" } ], "test.test[join-premap_map_inner--Plan]": [ diff --git a/ydb/library/yql/tests/sql/yt_native_file/part7/canondata/result.json b/ydb/library/yql/tests/sql/yt_native_file/part7/canondata/result.json index b8cfc4038a..5428231c69 100644 --- a/ydb/library/yql/tests/sql/yt_native_file/part7/canondata/result.json +++ b/ydb/library/yql/tests/sql/yt_native_file/part7/canondata/result.json @@ -1884,9 +1884,9 @@ ], "test.test[in-yql-14677-default.txt-Debug]": [ { - "checksum": "8677ba071f2caa6ccd06dc197332090c", - "size": 1787, - "uri": "https://{canondata_backend}/1937367/9644b01b81adf761b50e9caf623277023268e252/resource.tar.gz#test.test_in-yql-14677-default.txt-Debug_/opt.yql" + "checksum": "ce09ebeff7ee7a89c91197677669b441", + "size": 1791, + "uri": "https://{canondata_backend}/1936947/1a2ec30f6c678213d458879d62698daad5e086d0/resource.tar.gz#test.test_in-yql-14677-default.txt-Debug_/opt.yql" } ], "test.test[in-yql-14677-default.txt-Plan]": [ @@ -2020,9 +2020,9 @@ ], "test.test[join-lookupjoin_semi_1o--Debug]": [ { - "checksum": "079d946ab36f070a2a5243b00aee14eb", - "size": 2896, - "uri": "https://{canondata_backend}/1937424/844c51c227824880c7225d0ff864a8ccce1a32b7/resource.tar.gz#test.test_join-lookupjoin_semi_1o--Debug_/opt.yql" + "checksum": "c29b3dc95f12c3bedf3901adf7e53e99", + "size": 2903, + "uri": "https://{canondata_backend}/1936947/1a2ec30f6c678213d458879d62698daad5e086d0/resource.tar.gz#test.test_join-lookupjoin_semi_1o--Debug_/opt.yql" } ], "test.test[join-lookupjoin_semi_1o--Plan]": [ @@ -2062,9 +2062,9 @@ ], "test.test[join-mapjoin_partial_uniq_keys--Debug]": [ { - "checksum": "529eb999fa6fbd53789b782a7ab93f78", - "size": 2109, - "uri": "https://{canondata_backend}/1937424/844c51c227824880c7225d0ff864a8ccce1a32b7/resource.tar.gz#test.test_join-mapjoin_partial_uniq_keys--Debug_/opt.yql" + "checksum": "e3ea7295e3094a88421bc83d7cc9f59e", + "size": 2113, + "uri": "https://{canondata_backend}/1936947/1a2ec30f6c678213d458879d62698daad5e086d0/resource.tar.gz#test.test_join-mapjoin_partial_uniq_keys--Debug_/opt.yql" } ], "test.test[join-mapjoin_partial_uniq_keys--Plan]": [ diff --git a/ydb/library/yql/tests/sql/yt_native_file/part8/canondata/result.json b/ydb/library/yql/tests/sql/yt_native_file/part8/canondata/result.json index 61a73ed420..7f55711627 100644 --- a/ydb/library/yql/tests/sql/yt_native_file/part8/canondata/result.json +++ b/ydb/library/yql/tests/sql/yt_native_file/part8/canondata/result.json @@ -2451,9 +2451,9 @@ ], "test.test[join-lookupjoin_semi_2o--Debug]": [ { - "checksum": "1f9981f85091ddd820e57e9bf74e7de5", - "size": 2895, - "uri": "https://{canondata_backend}/995452/1bbbc95795bf855675e4ef6b7b15d2ab4c6ee367/resource.tar.gz#test.test_join-lookupjoin_semi_2o--Debug_/opt.yql" + "checksum": "64f200e4e8720ee054f9aeb2ba5b4f4c", + "size": 2904, + "uri": "https://{canondata_backend}/1773845/c865fc3a6f63b56097b2e5205cf04a3ce881c52d/resource.tar.gz#test.test_join-lookupjoin_semi_2o--Debug_/opt.yql" } ], "test.test[join-lookupjoin_semi_2o--Plan]": [ @@ -2472,9 +2472,9 @@ ], "test.test[join-mapjoin_left_null_column--Debug]": [ { - "checksum": "d35159fc6691ac1a229cdda0dfc4be0d", - "size": 3216, - "uri": "https://{canondata_backend}/995452/1bbbc95795bf855675e4ef6b7b15d2ab4c6ee367/resource.tar.gz#test.test_join-mapjoin_left_null_column--Debug_/opt.yql" + "checksum": "d5d1f8254d9624f59025bbc7abaa35b8", + "size": 3224, + "uri": "https://{canondata_backend}/1773845/c865fc3a6f63b56097b2e5205cf04a3ce881c52d/resource.tar.gz#test.test_join-mapjoin_left_null_column--Debug_/opt.yql" } ], "test.test[join-mapjoin_left_null_column--Plan]": [ @@ -4714,14 +4714,14 @@ { "checksum": "cec4d1db686e561cada1094e26e47a24", "size": 6092, - "uri": "https://{canondata_backend}/1784117/983ca2360ac31c365938bcff5f15cccb51a3c68c/resource.tar.gz#test.test_tpch-q15-default.txt-Debug_/opt.yql" + "uri": "https://{canondata_backend}/1925842/983ca2360ac31c365938bcff5f15cccb51a3c68c/resource.tar.gz#test.test_tpch-q15-default.txt-Debug_/opt.yql" } ], "test.test[tpch-q15-default.txt-Plan]": [ { "checksum": "da4939e401c68b6ddb9a3f316a073be2", "size": 10685, - "uri": "https://{canondata_backend}/1784117/983ca2360ac31c365938bcff5f15cccb51a3c68c/resource.tar.gz#test.test_tpch-q15-default.txt-Plan_/plan.txt" + "uri": "https://{canondata_backend}/1925842/983ca2360ac31c365938bcff5f15cccb51a3c68c/resource.tar.gz#test.test_tpch-q15-default.txt-Plan_/plan.txt" } ], "test.test[tpch-q15-default.txt-Results]": [ diff --git a/ydb/library/yql/tests/sql/yt_native_file/part9/canondata/result.json b/ydb/library/yql/tests/sql/yt_native_file/part9/canondata/result.json index b2d0e77df8..5e55d14ea8 100644 --- a/ydb/library/yql/tests/sql/yt_native_file/part9/canondata/result.json +++ b/ydb/library/yql/tests/sql/yt_native_file/part9/canondata/result.json @@ -2364,9 +2364,9 @@ ], "test.test[join-lookupjoin_bug8533--Debug]": [ { - "checksum": "51fea0ad6219e315726c653ebf25a53b", - "size": 2730, - "uri": "https://{canondata_backend}/1937027/ab18864157a845ae3a4207c01e0bb0d1138bdbca/resource.tar.gz#test.test_join-lookupjoin_bug8533--Debug_/opt.yql" + "checksum": "5a22252f40278687c7d7ac93f5554bb3", + "size": 2739, + "uri": "https://{canondata_backend}/1937429/1ca07da234d7bcc8f0a3159b3e1bfcdf4830cdde/resource.tar.gz#test.test_join-lookupjoin_bug8533--Debug_/opt.yql" } ], "test.test[join-lookupjoin_bug8533--Plan]": [ @@ -2406,16 +2406,16 @@ ], "test.test[join-lookupjoin_take_skip--Debug]": [ { - "checksum": "5bbc81dd43e2b3ed08c44957065628a0", - "size": 4607, - "uri": "https://{canondata_backend}/1925842/97ff5031d7caf3812b5fbe98b2a6aa20a0d2be28/resource.tar.gz#test.test_join-lookupjoin_take_skip--Debug_/opt.yql" + "checksum": "bf77f32fb3039f89c54a527d9cbfc616", + "size": 5941, + "uri": "https://{canondata_backend}/1937429/1ca07da234d7bcc8f0a3159b3e1bfcdf4830cdde/resource.tar.gz#test.test_join-lookupjoin_take_skip--Debug_/opt.yql" } ], "test.test[join-lookupjoin_take_skip--Plan]": [ { - "checksum": "e2744532509846d2ed662f28e9045eb6", - "size": 11185, - "uri": "https://{canondata_backend}/1925842/97ff5031d7caf3812b5fbe98b2a6aa20a0d2be28/resource.tar.gz#test.test_join-lookupjoin_take_skip--Plan_/plan.txt" + "checksum": "df5032781677c3905611d4fa79831cc9", + "size": 11503, + "uri": "https://{canondata_backend}/1937429/1ca07da234d7bcc8f0a3159b3e1bfcdf4830cdde/resource.tar.gz#test.test_join-lookupjoin_take_skip--Plan_/plan.txt" } ], "test.test[join-lookupjoin_take_skip--Results]": [ @@ -2427,9 +2427,9 @@ ], "test.test[join-mapjoin_on_tablerecord--Debug]": [ { - "checksum": "be7db24b4238eae64d6a61ed475deb64", - "size": 3647, - "uri": "https://{canondata_backend}/1937027/ab18864157a845ae3a4207c01e0bb0d1138bdbca/resource.tar.gz#test.test_join-mapjoin_on_tablerecord--Debug_/opt.yql" + "checksum": "3b497f4710d5a847eb8f44f8c586261e", + "size": 3667, + "uri": "https://{canondata_backend}/1937429/1ca07da234d7bcc8f0a3159b3e1bfcdf4830cdde/resource.tar.gz#test.test_join-mapjoin_on_tablerecord--Debug_/opt.yql" } ], "test.test[join-mapjoin_on_tablerecord--Plan]": [ @@ -2532,9 +2532,9 @@ ], "test.test[join-yql-14847--Debug]": [ { - "checksum": "5339cca574f87e6476794bcf370b7ca7", - "size": 4522, - "uri": "https://{canondata_backend}/995452/cd254528d9e703d6d7ebf5812a6ebd477f85ee58/resource.tar.gz#test.test_join-yql-14847--Debug_/opt.yql" + "checksum": "10b406ebcf3eac463d2b639d45bc781b", + "size": 4529, + "uri": "https://{canondata_backend}/1937429/1ca07da234d7bcc8f0a3159b3e1bfcdf4830cdde/resource.tar.gz#test.test_join-yql-14847--Debug_/opt.yql" } ], "test.test[join-yql-14847--Plan]": [ @@ -3938,14 +3938,14 @@ { "checksum": "611865b874769778b378f7ed6b111e10", "size": 7515, - "uri": "https://{canondata_backend}/995452/9b59108eaef82bae6928efcaeab50e441de256db/resource.tar.gz#test.test_pg-tpch-q15-default.txt-Debug_/opt.yql" + "uri": "https://{canondata_backend}/1942100/9b59108eaef82bae6928efcaeab50e441de256db/resource.tar.gz#test.test_pg-tpch-q15-default.txt-Debug_/opt.yql" } ], "test.test[pg-tpch-q15-default.txt-Plan]": [ { "checksum": "329cac6de52744d0274c26a6b794ec8b", "size": 10566, - "uri": "https://{canondata_backend}/995452/9b59108eaef82bae6928efcaeab50e441de256db/resource.tar.gz#test.test_pg-tpch-q15-default.txt-Plan_/plan.txt" + "uri": "https://{canondata_backend}/1942100/9b59108eaef82bae6928efcaeab50e441de256db/resource.tar.gz#test.test_pg-tpch-q15-default.txt-Plan_/plan.txt" } ], "test.test[pg-tpch-q15-default.txt-Results]": [ |