@@ -374,40 +374,15 @@ Y_UNIT_TEST_SUITE(KqpJoinOrder) {
374
374
375
375
Y_UNIT_TEST_XOR_OR_BOTH_FALSE (TestJoinOrderHintsComplex, StreamLookupJoin, ColumnStore) {
376
376
auto plan = ExecuteJoinOrderTestDataQueryWithStats (" queries/join_order_hints_complex.sql" , " stats/basic.json" , StreamLookupJoin, ColumnStore);
377
- UNIT_ASSERT_VALUES_EQUAL (GetJoinOrder (plan).GetStringRobust (), R"( [[["R","S"],["T","U"]],"V"])" ) ;
378
- }
379
-
380
- void TraverseJoinTree (
381
- const NJson::TJsonValue& tree,
382
- std::function<void (const NJson::TJsonValue&, const NJson::TJsonValue&)> joinVisitFunc
383
- ) {
384
- if (tree.IsArray ()) {
385
- auto join = tree.GetArray ();
386
- Y_ENSURE (join.size () == 2 , Sprintf (" Incorrect join tree piece, expected 2 children for join, got : %s" , tree.GetStringRobust ().c_str ()));
387
- joinVisitFunc (join[0 ], join[1 ]);
388
- TraverseJoinTree (join[0 ], joinVisitFunc);
389
- TraverseJoinTree (join[1 ], joinVisitFunc);
390
- } else if (tree.IsString ()) {
391
- } else {
392
- Y_ENSURE (false , Sprintf (" Incorrect join tree piece: %s" , tree.GetStringRobust ().c_str ()));
393
- }
377
+ auto joinOrder = GetJoinOrder (plan).GetStringRobust ();
378
+ UNIT_ASSERT_C (joinOrder.find (R"( [["R","S"],["T","U"]])" ) != TString::npos, joinOrder);
394
379
}
395
380
396
381
Y_UNIT_TEST_XOR_OR_BOTH_FALSE (TestJoinOrderHintsManyHintTrees, StreamLookupJoin, ColumnStore) {
397
382
auto plan = ExecuteJoinOrderTestDataQueryWithStats (" queries/join_order_hints_many_hint_trees.sql" , " stats/basic.json" , StreamLookupJoin, ColumnStore);
398
- auto joinOrder = GetJoinOrder (plan);
399
-
400
- THashSet<TString> expectedJoins = { " R, S" , " T, U" };
401
- TraverseJoinTree (
402
- joinOrder,
403
- [&expectedJoins](const NJson::TJsonValue& joinLhs, const NJson::TJsonValue& joinRhs){
404
- if (joinLhs.IsString () && joinRhs.IsString ()) {
405
- expectedJoins.erase (Sprintf (" %s, %s" , joinLhs.GetString ().c_str (), joinRhs.GetString ().c_str ()));
406
- }
407
- }
408
- );
409
-
410
- UNIT_ASSERT_C (expectedJoins.empty (), Sprintf (" %s wasn't found in '%s' join order!" , JoinSeq (" , " , expectedJoins).c_str (), joinOrder.GetStringRobust ().c_str ()));
383
+ auto joinOrder = GetJoinOrder (plan).GetStringRobust ();
384
+ UNIT_ASSERT_C (joinOrder.find (R"( ["R","S"])" ) != TString::npos, joinOrder);
385
+ UNIT_ASSERT_C (joinOrder.find (R"( ["T","U"])" ) != TString::npos, joinOrder);
411
386
}
412
387
413
388
void JoinOrderTestWithOverridenStats (const TString& queryPath, const TString& statsPath, TString correctJoinOrderPath, bool useStreamLookupJoin, bool useColumnStore
0 commit comments