aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoraozeritsky <aozeritsky@ydb.tech>2023-09-21 02:15:26 +0300
committeraozeritsky <aozeritsky@ydb.tech>2023-09-21 02:35:17 +0300
commitc2623eb8e9f055dc28b3db3462c582dc92a585cd (patch)
treed68b5a7c88b94f0ad6ee563a57d5f5f839900b21
parentb89ab1155cb686da74ce470dfcc133a51b850bd7 (diff)
downloadydb-c2623eb8e9f055dc28b3db3462c582dc92a585cd.tar.gz
Add tests with native CBO
-rw-r--r--ydb/library/yql/providers/yt/provider/ut/yql_yt_cbo_ut.cpp32
1 files changed, 24 insertions, 8 deletions
diff --git a/ydb/library/yql/providers/yt/provider/ut/yql_yt_cbo_ut.cpp b/ydb/library/yql/providers/yt/provider/ut/yql_yt_cbo_ut.cpp
index 39e8720f1b..b61e0246a4 100644
--- a/ydb/library/yql/providers/yt/provider/ut/yql_yt_cbo_ut.cpp
+++ b/ydb/library/yql/providers/yt/provider/ut/yql_yt_cbo_ut.cpp
@@ -69,14 +69,24 @@ Y_UNIT_TEST(OrderJoinsDoesNothingWhenCBODisabled) {
UNIT_ASSERT_VALUES_EQUAL(tree, optimizedTree);
}
-Y_UNIT_TEST(OrderJoins2Tables) {
+#define ADD_TEST(Name) \
+ Y_UNIT_TEST(Name ## _PG) { \
+ Name(ECostBasedOptimizer::PG); \
+ } \
+ Y_UNIT_TEST(Name ## _Native) { \
+ Name(ECostBasedOptimizer::Native); \
+ }
+
+
+void OrderJoins2Tables(ECostBasedOptimizer optimizerType) {
TExprContext exprCtx;
auto tree = MakeOp({"c", "c_nationkey"}, {"n", "n_nationkey"}, {"c", "n"}, exprCtx);
- tree->Left = MakeLeaf({"c"}, {"c"}, 1000000, 1233333, exprCtx);
- tree->Right = MakeLeaf({"n"}, {"n"}, 10000, 12333, exprCtx);
+ // TODO: check join order with different table sizes
+ tree->Left = MakeLeaf({"c"}, {"c"}, 100000, 12333, exprCtx);
+ tree->Right = MakeLeaf({"n"}, {"n"}, 100000, 12333, exprCtx);
TYtState::TPtr state = MakeIntrusive<TYtState>();
- state->Configuration->CostBasedOptimizer = ECostBasedOptimizer::PG;
+ state->Configuration->CostBasedOptimizer = optimizerType;
auto optimizedTree = OrderJoins(tree, state, exprCtx, true);
UNIT_ASSERT(optimizedTree != tree);
UNIT_ASSERT(optimizedTree->Left);
@@ -92,7 +102,9 @@ Y_UNIT_TEST(OrderJoins2Tables) {
UNIT_ASSERT_VALUES_EQUAL("n_nationkey", optimizedTree->RightLabel->Child(1)->Content());
}
-Y_UNIT_TEST(OrderJoins2TablesComplexLabel)
+ADD_TEST(OrderJoins2Tables)
+
+void OrderJoins2TablesComplexLabel(ECostBasedOptimizer optimizerType)
{
TExprContext exprCtx;
auto tree = MakeOp({"c", "c_nationkey"}, {"n", "n_nationkey"}, {"c", "n", "e"}, exprCtx);
@@ -100,12 +112,14 @@ Y_UNIT_TEST(OrderJoins2TablesComplexLabel)
tree->Right = MakeLeaf({"n"}, {"n", "e"}, 10000, 12333, exprCtx);
TYtState::TPtr state = MakeIntrusive<TYtState>();
- state->Configuration->CostBasedOptimizer = ECostBasedOptimizer::PG;
+ state->Configuration->CostBasedOptimizer = optimizerType;
auto optimizedTree = OrderJoins(tree, state, exprCtx, true);
UNIT_ASSERT(optimizedTree != tree);
}
-Y_UNIT_TEST(OrderJoins2TablesTableIn2Rels)
+ADD_TEST(OrderJoins2TablesComplexLabel)
+
+void OrderJoins2TablesTableIn2Rels(ECostBasedOptimizer optimizerType)
{
TExprContext exprCtx;
auto tree = MakeOp({"c", "c_nationkey"}, {"n", "n_nationkey"}, {"c", "n", "e"}, exprCtx);
@@ -113,11 +127,13 @@ Y_UNIT_TEST(OrderJoins2TablesTableIn2Rels)
tree->Right = MakeLeaf({"n"}, {"n", "c"}, 10000, 12333, exprCtx);
TYtState::TPtr state = MakeIntrusive<TYtState>();
- state->Configuration->CostBasedOptimizer = ECostBasedOptimizer::PG;
+ state->Configuration->CostBasedOptimizer = optimizerType;
auto optimizedTree = OrderJoins(tree, state, exprCtx, true);
UNIT_ASSERT(optimizedTree != tree);
}
+ADD_TEST(OrderJoins2TablesTableIn2Rels)
+
Y_UNIT_TEST(OrderLeftJoin)
{
TExprContext exprCtx;