diff options
author | aozeritsky <aozeritsky@ydb.tech> | 2023-09-21 02:15:26 +0300 |
---|---|---|
committer | aozeritsky <aozeritsky@ydb.tech> | 2023-09-21 02:35:17 +0300 |
commit | c2623eb8e9f055dc28b3db3462c582dc92a585cd (patch) | |
tree | d68b5a7c88b94f0ad6ee563a57d5f5f839900b21 | |
parent | b89ab1155cb686da74ce470dfcc133a51b850bd7 (diff) | |
download | ydb-c2623eb8e9f055dc28b3db3462c582dc92a585cd.tar.gz |
Add tests with native CBO
-rw-r--r-- | ydb/library/yql/providers/yt/provider/ut/yql_yt_cbo_ut.cpp | 32 |
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; |