@@ -588,6 +588,71 @@ Y_UNIT_TEST_SUITE(KqpJoin) {
588
588
}
589
589
}
590
590
591
+ Y_UNIT_TEST (TwoJoinsWithQueryService) {
592
+ NKikimrConfig::TAppConfig appConfig;
593
+ auto serverSettings = TKikimrSettings ()
594
+ .SetAppConfig (appConfig)
595
+ .SetWithSampleTables (false );
596
+
597
+ TKikimrRunner kikimr (serverSettings);
598
+ auto client = kikimr.GetTableClient ();
599
+ auto db = kikimr.GetQueryClient ();
600
+ auto settings = NYdb::NQuery::TExecuteQuerySettings ();
601
+
602
+ {
603
+ auto session = client.CreateSession ().GetValueSync ().GetSession ();
604
+ const auto query = Q_ (R"(
605
+ CREATE TABLE ta(
606
+ a Int64,
607
+ b Int64,
608
+ c Int64,
609
+ PRIMARY KEY(a)
610
+ );
611
+ )" );
612
+ auto result = session.ExecuteSchemeQuery (query).ExtractValueSync ();
613
+ UNIT_ASSERT_C (result.IsSuccess (), result.GetIssues ().ToString ());
614
+ }
615
+ {
616
+ auto session = client.CreateSession ().GetValueSync ().GetSession ();
617
+ const auto query = Q_ (R"(
618
+ CREATE TABLE tb(
619
+ b Int64,
620
+ bval Int64,
621
+ PRIMARY KEY(b)
622
+ );
623
+ )" );
624
+ auto result = session.ExecuteSchemeQuery (query).ExtractValueSync ();
625
+ UNIT_ASSERT_C (result.IsSuccess (), result.GetIssues ().ToString ());
626
+ }
627
+ {
628
+ auto session = client.CreateSession ().GetValueSync ().GetSession ();
629
+ const auto query = Q_ (R"(
630
+ CREATE TABLE tc(
631
+ c Int64,
632
+ cval Int64,
633
+ PRIMARY KEY(c)
634
+ );
635
+ )" );
636
+ auto result = session.ExecuteSchemeQuery (query).ExtractValueSync ();
637
+ UNIT_ASSERT_C (result.IsSuccess (), result.GetIssues ().ToString ());
638
+ }
639
+ {
640
+ auto result = db.ExecuteQuery (R"(
641
+ UPSERT INTO ta(a, b, c) VALUES (1, 1001, 2001), (2, 1002, 2002), (3, 1003, 2003);
642
+ UPSERT INTO tb(b, bval) VALUES (1001, 1001), (1002, 1002), (1003, 1003);
643
+ UPSERT INTO tc(c, cval) VALUES (2001, 2001), (2002, 2002), (2003, 2003);
644
+ )" , NYdb::NQuery::TTxControl::BeginTx ().CommitTx (), settings).ExtractValueSync ();
645
+ UNIT_ASSERT_VALUES_EQUAL_C (result.GetStatus (), EStatus::SUCCESS, result.GetIssues ().ToString ());
646
+ }
647
+ {
648
+ auto result = db.ExecuteQuery (R"(
649
+ SELECT ta.a, tb.bval, tc.cval FROM ta INNER JOIN tb ON ta.b = tb.b LEFT JOIN tc ON ta.c = tc.cval;
650
+ )" , NYdb::NQuery::TTxControl::BeginTx ().CommitTx (), settings).ExtractValueSync ();
651
+ UNIT_ASSERT_VALUES_EQUAL_C (result.GetStatus (), EStatus::SUCCESS, result.GetIssues ().ToString ());
652
+ CompareYson (R"( [[[3];[1003];[2003]];[[2];[1002];[2002]];[[1];[1001];[2001]]])" , FormatResultSetYson (result.GetResultSet (0 )));
653
+ }
654
+ }
655
+
591
656
// join on key prefix => index-lookup
592
657
Y_UNIT_TEST (RightSemiJoin_KeyPrefix) {
593
658
TKikimrRunner kikimr (SyntaxV1Settings ());
0 commit comments