Skip to content

Commit b147beb

Browse files
authored
Merge e99bd39 into 6ef51f6
2 parents 6ef51f6 + e99bd39 commit b147beb

File tree

1 file changed

+154
-0
lines changed

1 file changed

+154
-0
lines changed

ydb/core/kqp/ut/effects/kqp_immediate_effects_ut.cpp

Lines changed: 154 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2227,6 +2227,160 @@ Y_UNIT_TEST_SUITE(KqpImmediateEffects) {
22272227
}
22282228
}
22292229

2230+
Y_UNIT_TEST(ManyFlushes) {
2231+
NKikimrConfig::TAppConfig appConfig;
2232+
auto serverSettings = TKikimrSettings().SetAppConfig(appConfig);
2233+
TKikimrRunner kikimr(serverSettings);
2234+
auto db = kikimr.GetTableClient();
2235+
auto session = db.CreateSession().GetValueSync().GetSession();
2236+
2237+
CreateTestTable(session);
2238+
2239+
{
2240+
auto result = session.ExecuteDataQuery(R"(
2241+
--!syntax_v1
2242+
2243+
SELECT * FROM TestImmediateEffects;
2244+
UPSERT INTO TestImmediateEffects (Key, Value) VALUES
2245+
(3u, "Three"),
2246+
(4u, "Four");
2247+
2248+
SELECT * FROM TestImmediateEffects;
2249+
)", TTxControl::BeginTx().CommitTx()).ExtractValueSync();
2250+
UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, result.GetIssues().ToString());
2251+
CompareYson(R"([
2252+
[[1u];["One"]];
2253+
[[2u];["Two"]]
2254+
])", FormatResultSetYson(result.GetResultSet(0)));
2255+
CompareYson(R"([
2256+
[[1u];["One"]];
2257+
[[2u];["Two"]];
2258+
[[3u];["Three"]];
2259+
[[4u];["Four"]]
2260+
])", FormatResultSetYson(result.GetResultSet(1)));
2261+
}
2262+
2263+
{ // multiple effects
2264+
auto result = session.ExecuteDataQuery(R"(
2265+
--!syntax_v1
2266+
2267+
UPSERT INTO TestImmediateEffects (Key, Value) VALUES (5u, "Five");
2268+
SELECT * FROM TestImmediateEffects;
2269+
UPSERT INTO TestImmediateEffects (Key, Value) VALUES (6u, "Six");
2270+
SELECT * FROM TestImmediateEffects;
2271+
UPSERT INTO TestImmediateEffects (Key, Value) VALUES (7u, "Seven");
2272+
SELECT * FROM TestImmediateEffects;
2273+
)", TTxControl::BeginTx().CommitTx()).ExtractValueSync();
2274+
UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, result.GetIssues().ToString());
2275+
CompareYson(R"([
2276+
[[1u];["One"]];
2277+
[[2u];["Two"]];
2278+
[[3u];["Three"]];
2279+
[[4u];["Four"]];
2280+
[[5u];["Five"]]
2281+
])", FormatResultSetYson(result.GetResultSet(0)));
2282+
CompareYson(R"([
2283+
[[1u];["One"]];
2284+
[[2u];["Two"]];
2285+
[[3u];["Three"]];
2286+
[[4u];["Four"]];
2287+
[[5u];["Five"]];
2288+
[[6u];["Six"]]
2289+
])", FormatResultSetYson(result.GetResultSet(1)));
2290+
CompareYson(R"([
2291+
[[1u];["One"]];
2292+
[[2u];["Two"]];
2293+
[[3u];["Three"]];
2294+
[[4u];["Four"]];
2295+
[[5u];["Five"]];
2296+
[[6u];["Six"]];
2297+
[[7u];["Seven"]]
2298+
])", FormatResultSetYson(result.GetResultSet(2)));
2299+
}
2300+
}
2301+
2302+
Y_UNIT_TEST(Interactive) {
2303+
NKikimrConfig::TAppConfig appConfig;
2304+
auto serverSettings = TKikimrSettings().SetAppConfig(appConfig);
2305+
TKikimrRunner kikimr(serverSettings);
2306+
auto db = kikimr.GetTableClient();
2307+
auto session = db.CreateSession().GetValueSync().GetSession();
2308+
2309+
CreateTestTable(session);
2310+
2311+
{
2312+
auto result = session.ExecuteDataQuery(R"(
2313+
--!syntax_v1
2314+
2315+
SELECT * FROM TestImmediateEffects;
2316+
UPSERT INTO TestImmediateEffects (Key, Value) VALUES
2317+
(3u, "Three"),
2318+
(4u, "Four");
2319+
2320+
SELECT * FROM TestImmediateEffects;
2321+
)", TTxControl::BeginTx().CommitTx()).ExtractValueSync();
2322+
UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, result.GetIssues().ToString());
2323+
CompareYson(R"([
2324+
[[1u];["One"]];
2325+
[[2u];["Two"]]
2326+
])", FormatResultSetYson(result.GetResultSet(0)));
2327+
CompareYson(R"([
2328+
[[1u];["One"]];
2329+
[[2u];["Two"]];
2330+
[[3u];["Three"]];
2331+
[[4u];["Four"]]
2332+
])", FormatResultSetYson(result.GetResultSet(1)));
2333+
}
2334+
2335+
{
2336+
auto result = session.ExecuteDataQuery(R"(
2337+
--!syntax_v1
2338+
2339+
UPSERT INTO TestImmediateEffects (Key, Value) VALUES (5u, "Five");
2340+
)", TTxControl::BeginTx()).ExtractValueSync();
2341+
UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, result.GetIssues().ToString());
2342+
2343+
auto tx = result.GetTransaction();
2344+
2345+
result = session.ExecuteDataQuery(R"(
2346+
--!syntax_v1
2347+
2348+
SELECT * FROM TestImmediateEffects;
2349+
UPSERT INTO TestImmediateEffects (Key, Value) VALUES (6u, "Six");
2350+
SELECT * FROM TestImmediateEffects;
2351+
UPSERT INTO TestImmediateEffects (Key, Value) VALUES (7u, "Seven");
2352+
SELECT * FROM TestImmediateEffects;
2353+
)", TTxControl::Tx(*tx)).ExtractValueSync();
2354+
UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, result.GetIssues().ToString());
2355+
CompareYson(R"([
2356+
[[1u];["One"]];
2357+
[[2u];["Two"]];
2358+
[[3u];["Three"]];
2359+
[[4u];["Four"]];
2360+
[[5u];["Five"]]
2361+
])", FormatResultSetYson(result.GetResultSet(0)));
2362+
CompareYson(R"([
2363+
[[1u];["One"]];
2364+
[[2u];["Two"]];
2365+
[[3u];["Three"]];
2366+
[[4u];["Four"]];
2367+
[[5u];["Five"]];
2368+
[[6u];["Six"]]
2369+
])", FormatResultSetYson(result.GetResultSet(1)));
2370+
CompareYson(R"([
2371+
[[1u];["One"]];
2372+
[[2u];["Two"]];
2373+
[[3u];["Three"]];
2374+
[[4u];["Four"]];
2375+
[[5u];["Five"]];
2376+
[[6u];["Six"]];
2377+
[[7u];["Seven"]]
2378+
])", FormatResultSetYson(result.GetResultSet(2)));
2379+
2380+
auto commitResult = tx->Commit().ExtractValueSync();
2381+
UNIT_ASSERT(commitResult.IsSuccess());
2382+
}
2383+
}
22302384
}
22312385

22322386
} // namespace NKqp

0 commit comments

Comments
 (0)