@@ -2307,6 +2307,11 @@ Y_UNIT_TEST_SUITE(KqpNewEngine) {
2307
2307
SELECT * FROM FollowersKv WHERE Key = 21;
2308
2308
)" , TTxControl::BeginTx (TTxSettings::StaleRO ()).CommitTx ()).ExtractValueSync ();
2309
2309
AssertSuccessResult (result);
2310
+ UNIT_ASSERT_UNEQUAL (0 , GetCumulativeCounterValue (
2311
+ kikimr.GetTestServer (),
2312
+ " /Root/FollowersKv" ,
2313
+ " DataShard/TxUpdateFollowerReadEdge/ExecuteCPUTime"
2314
+ ));
2310
2315
2311
2316
CompareYson (R"(
2312
2317
[
@@ -2320,6 +2325,11 @@ Y_UNIT_TEST_SUITE(KqpNewEngine) {
2320
2325
SELECT * FROM FollowersKv WHERE Value != "One" ORDER BY Key;
2321
2326
)" , TTxControl::BeginTx (TTxSettings::StaleRO ()).CommitTx ()).ExtractValueSync ();
2322
2327
AssertSuccessResult (result);
2328
+ UNIT_ASSERT_UNEQUAL (0 , GetCumulativeCounterValue (
2329
+ kikimr.GetTestServer (),
2330
+ " /Root/FollowersKv" ,
2331
+ " DataShard/TxUpdateFollowerReadEdge/ExecuteCPUTime"
2332
+ ));
2323
2333
2324
2334
CompareYson (R"(
2325
2335
[
@@ -2335,6 +2345,11 @@ Y_UNIT_TEST_SUITE(KqpNewEngine) {
2335
2345
SELECT * FROM TwoShard WHERE Key = 2;
2336
2346
)" , TTxControl::BeginTx (TTxSettings::StaleRO ()).CommitTx ()).ExtractValueSync ();
2337
2347
AssertSuccessResult (result);
2348
+ UNIT_ASSERT_EQUAL (0 , GetCumulativeCounterValue (
2349
+ kikimr.GetTestServer (),
2350
+ " /Root/TwoShard" ,
2351
+ " DataShard/TxUpdateFollowerReadEdge/ExecuteCPUTime"
2352
+ ));
2338
2353
2339
2354
CompareYson (R"(
2340
2355
[
@@ -2355,6 +2370,11 @@ Y_UNIT_TEST_SUITE(KqpNewEngine) {
2355
2370
[[4000000001u];["BigOne"];[-1]]
2356
2371
]
2357
2372
)" , FormatResultSetYson (result.GetResultSet (0 )));
2373
+ UNIT_ASSERT_EQUAL (0 , GetCumulativeCounterValue (
2374
+ kikimr.GetTestServer (),
2375
+ " /Root/TwoShard" ,
2376
+ " DataShard/TxUpdateFollowerReadEdge/ExecuteCPUTime"
2377
+ ));
2358
2378
}
2359
2379
2360
2380
Y_UNIT_TEST (StaleRO_Immediate) {
@@ -2379,6 +2399,66 @@ Y_UNIT_TEST_SUITE(KqpNewEngine) {
2379
2399
)" , FormatResultSetYson (result.GetResultSet (0 )));
2380
2400
}
2381
2401
2402
+ Y_UNIT_TEST_TWIN (StaleRO_IndexFollowers, EnableFollowers) {
2403
+ auto kikimr = DefaultKikimrRunner ();
2404
+ auto db = kikimr.GetTableClient ();
2405
+ auto session = db.CreateSession ().GetValueSync ().GetSession ();
2406
+
2407
+ AssertSuccessResult (session.ExecuteSchemeQuery (R"(
2408
+ --!syntax_v1
2409
+ CREATE TABLE `KeySubkey` (
2410
+ Key Uint64,
2411
+ Subkey Uint64,
2412
+ Value String,
2413
+ Order Uint32,
2414
+ PRIMARY KEY (Key, Subkey)
2415
+ );
2416
+
2417
+ ALTER TABLE `KeySubkey` ADD INDEX `idx` GLOBAL SYNC ON (`Key`, `Order`) COVER (`Value`);
2418
+ )" ).GetValueSync ());
2419
+
2420
+ if constexpr (EnableFollowers) {
2421
+ AssertSuccessResult (session.ExecuteSchemeQuery (R"(
2422
+ --!syntax_v1
2423
+ ALTER TABLE `KeySubkey` ALTER INDEX `idx` SET READ_REPLICAS_SETTINGS "PER_AZ:1";
2424
+ )" ).GetValueSync ());
2425
+ }
2426
+
2427
+ AssertSuccessResult (session.ExecuteDataQuery (R"(
2428
+ --!syntax_v1
2429
+
2430
+ REPLACE INTO `KeySubkey` (`Key`, `Subkey`, `Value`, `Order`) VALUES
2431
+ (1u, 2u, "One", 7u),
2432
+ (1u, 3u, "Two", 4u),
2433
+ (21u, 8u, "Three", 1u),
2434
+ (31u, 0u, "Four", 8u);
2435
+ )" , TTxControl::BeginTx ().CommitTx ()).GetValueSync ());
2436
+
2437
+ auto result = session.ExecuteDataQuery (R"(
2438
+ --!syntax_v1
2439
+ SELECT * FROM `KeySubkey` VIEW `idx` WHERE Key = 1 ORDER BY `Order`;
2440
+ )" , TTxControl::BeginTx (TTxSettings::StaleRO ()).CommitTx ()).ExtractValueSync ();
2441
+ AssertSuccessResult (result);
2442
+
2443
+ const auto FollowerCpuTime = GetCumulativeCounterValue (
2444
+ kikimr.GetTestServer (),
2445
+ " /Root/KeySubkey/idx/indexImplTable" ,
2446
+ " DataShard/TxUpdateFollowerReadEdge/ExecuteCPUTime"
2447
+ );
2448
+ if constexpr (EnableFollowers) {
2449
+ UNIT_ASSERT_UNEQUAL (0 , FollowerCpuTime);
2450
+ } else {
2451
+ UNIT_ASSERT_EQUAL (0 , FollowerCpuTime);
2452
+ }
2453
+
2454
+ CompareYson (R"(
2455
+ [
2456
+ [[1u];[4u];[3u];["Two"]];
2457
+ [[1u];[7u];[2u];["One"]];
2458
+ ]
2459
+ )" , FormatResultSetYson (result.GetResultSet (0 )));
2460
+ }
2461
+
2382
2462
Y_UNIT_TEST (ReadRangeWithParams) {
2383
2463
auto kikimr = DefaultKikimrRunner ();
2384
2464
auto db = kikimr.GetTableClient ();
0 commit comments