aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNikolay Shumkov <shumkovnd@ydb.tech>2024-07-18 17:39:21 +0300
committerGitHub <noreply@github.com>2024-07-18 18:39:21 +0400
commit7d5ff56dd765b74c73af752795fe058715e9920f (patch)
tree2097a6b367e9284debac7326d0f310ba23d1db84
parent15c68da8a9aa23caa1381005b78821eb7581065e (diff)
downloadydb-7d5ff56dd765b74c73af752795fe058715e9920f.tar.gz
TwoJoinsWithQueryService test (#6825)
-rw-r--r--ydb/core/kqp/ut/join/kqp_join_ut.cpp65
1 files changed, 65 insertions, 0 deletions
diff --git a/ydb/core/kqp/ut/join/kqp_join_ut.cpp b/ydb/core/kqp/ut/join/kqp_join_ut.cpp
index 1208d6ff9d..b8e5b4adaa 100644
--- a/ydb/core/kqp/ut/join/kqp_join_ut.cpp
+++ b/ydb/core/kqp/ut/join/kqp_join_ut.cpp
@@ -816,6 +816,71 @@ Y_UNIT_TEST_SUITE(KqpJoin) {
}
}
+ Y_UNIT_TEST(TwoJoinsWithQueryService) {
+ NKikimrConfig::TAppConfig appConfig;
+ auto serverSettings = TKikimrSettings()
+ .SetAppConfig(appConfig)
+ .SetWithSampleTables(false);
+
+ TKikimrRunner kikimr(serverSettings);
+ auto client = kikimr.GetTableClient();
+ auto db = kikimr.GetQueryClient();
+ auto settings = NYdb::NQuery::TExecuteQuerySettings();
+
+ {
+ auto session = client.CreateSession().GetValueSync().GetSession();
+ const auto query = Q_(R"(
+ CREATE TABLE ta(
+ a Int64,
+ b Int64,
+ c Int64,
+ PRIMARY KEY(a)
+ );
+ )");
+ auto result = session.ExecuteSchemeQuery(query).ExtractValueSync();
+ UNIT_ASSERT_C(result.IsSuccess(), result.GetIssues().ToString());
+ }
+ {
+ auto session = client.CreateSession().GetValueSync().GetSession();
+ const auto query = Q_(R"(
+ CREATE TABLE tb(
+ b Int64,
+ bval Int64,
+ PRIMARY KEY(b)
+ );
+ )");
+ auto result = session.ExecuteSchemeQuery(query).ExtractValueSync();
+ UNIT_ASSERT_C(result.IsSuccess(), result.GetIssues().ToString());
+ }
+ {
+ auto session = client.CreateSession().GetValueSync().GetSession();
+ const auto query = Q_(R"(
+ CREATE TABLE tc(
+ c Int64,
+ cval Int64,
+ PRIMARY KEY(c)
+ );
+ )");
+ auto result = session.ExecuteSchemeQuery(query).ExtractValueSync();
+ UNIT_ASSERT_C(result.IsSuccess(), result.GetIssues().ToString());
+ }
+ {
+ auto result = db.ExecuteQuery(R"(
+ UPSERT INTO ta(a, b, c) VALUES (1, 1001, 2001), (2, 1002, 2002), (3, 1003, 2003);
+ UPSERT INTO tb(b, bval) VALUES (1001, 1001), (1002, 1002), (1003, 1003);
+ UPSERT INTO tc(c, cval) VALUES (2001, 2001), (2002, 2002), (2003, 2003);
+ )", NYdb::NQuery::TTxControl::BeginTx().CommitTx(), settings).ExtractValueSync();
+ UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, result.GetIssues().ToString());
+ }
+ {
+ auto result = db.ExecuteQuery(R"(
+ 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;
+ )", NYdb::NQuery::TTxControl::BeginTx().CommitTx(), settings).ExtractValueSync();
+ UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, result.GetIssues().ToString());
+ CompareYson(R"([[[1];[1001];[2001]];[[3];[1003];[2003]];[[2];[1002];[2002]]])", FormatResultSetYson(result.GetResultSet(0)));
+ }
+ }
+
// join on key prefix => index-lookup
Y_UNIT_TEST(RightSemiJoin_KeyPrefix) {
TKikimrRunner kikimr(SyntaxV1Settings());