diff options
author | Nikolay Shumkov <shumkovnd@ydb.tech> | 2024-07-18 17:39:21 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-07-18 18:39:21 +0400 |
commit | 7d5ff56dd765b74c73af752795fe058715e9920f (patch) | |
tree | 2097a6b367e9284debac7326d0f310ba23d1db84 | |
parent | 15c68da8a9aa23caa1381005b78821eb7581065e (diff) | |
download | ydb-7d5ff56dd765b74c73af752795fe058715e9920f.tar.gz |
TwoJoinsWithQueryService test (#6825)
-rw-r--r-- | ydb/core/kqp/ut/join/kqp_join_ut.cpp | 65 |
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()); |