@@ -2372,6 +2372,11 @@ Y_UNIT_TEST_SUITE(KqpNewEngine) {
2372
2372
SELECT * FROM FollowersKv WHERE Key = 21;
2373
2373
)" , TTxControl::BeginTx (TTxSettings::StaleRO ()).CommitTx ()).ExtractValueSync ();
2374
2374
AssertSuccessResult (result);
2375
+ UNIT_ASSERT_UNEQUAL (0 , GetCumulativeCounterValue (
2376
+ kikimr.GetTestServer (),
2377
+ " /Root/FollowersKv" ,
2378
+ " DataShard/TxUpdateFollowerReadEdge/ExecuteCPUTime"
2379
+ ));
2375
2380
2376
2381
CompareYson (R"(
2377
2382
[
@@ -2385,6 +2390,11 @@ Y_UNIT_TEST_SUITE(KqpNewEngine) {
2385
2390
SELECT * FROM FollowersKv WHERE Value != "One" ORDER BY Key;
2386
2391
)" , TTxControl::BeginTx (TTxSettings::StaleRO ()).CommitTx ()).ExtractValueSync ();
2387
2392
AssertSuccessResult (result);
2393
+ UNIT_ASSERT_UNEQUAL (0 , GetCumulativeCounterValue (
2394
+ kikimr.GetTestServer (),
2395
+ " /Root/FollowersKv" ,
2396
+ " DataShard/TxUpdateFollowerReadEdge/ExecuteCPUTime"
2397
+ ));
2388
2398
2389
2399
CompareYson (R"(
2390
2400
[
@@ -2400,6 +2410,11 @@ Y_UNIT_TEST_SUITE(KqpNewEngine) {
2400
2410
SELECT * FROM TwoShard WHERE Key = 2;
2401
2411
)" , TTxControl::BeginTx (TTxSettings::StaleRO ()).CommitTx ()).ExtractValueSync ();
2402
2412
AssertSuccessResult (result);
2413
+ UNIT_ASSERT_EQUAL (0 , GetCumulativeCounterValue (
2414
+ kikimr.GetTestServer (),
2415
+ " /Root/TwoShard" ,
2416
+ " DataShard/TxUpdateFollowerReadEdge/ExecuteCPUTime"
2417
+ ));
2403
2418
2404
2419
CompareYson (R"(
2405
2420
[
@@ -2420,6 +2435,11 @@ Y_UNIT_TEST_SUITE(KqpNewEngine) {
2420
2435
[[4000000001u];["BigOne"];[-1]]
2421
2436
]
2422
2437
)" , FormatResultSetYson (result.GetResultSet (0 )));
2438
+ UNIT_ASSERT_EQUAL (0 , GetCumulativeCounterValue (
2439
+ kikimr.GetTestServer (),
2440
+ " /Root/TwoShard" ,
2441
+ " DataShard/TxUpdateFollowerReadEdge/ExecuteCPUTime"
2442
+ ));
2423
2443
}
2424
2444
2425
2445
Y_UNIT_TEST (StaleRO_Immediate) {
@@ -2444,6 +2464,66 @@ Y_UNIT_TEST_SUITE(KqpNewEngine) {
2444
2464
)" , FormatResultSetYson (result.GetResultSet (0 )));
2445
2465
}
2446
2466
2467
+ Y_UNIT_TEST_TWIN (StaleRO_IndexFollowers, EnableFollowers) {
2468
+ auto kikimr = DefaultKikimrRunner ();
2469
+ auto db = kikimr.GetTableClient ();
2470
+ auto session = db.CreateSession ().GetValueSync ().GetSession ();
2471
+
2472
+ AssertSuccessResult (session.ExecuteSchemeQuery (R"(
2473
+ --!syntax_v1
2474
+ CREATE TABLE `KeySubkey` (
2475
+ Key Uint64,
2476
+ Subkey Uint64,
2477
+ Value String,
2478
+ Order Uint32,
2479
+ PRIMARY KEY (Key, Subkey)
2480
+ );
2481
+
2482
+ ALTER TABLE `KeySubkey` ADD INDEX `idx` GLOBAL SYNC ON (`Key`, `Order`) COVER (`Value`);
2483
+ )" ).GetValueSync ());
2484
+
2485
+ if constexpr (EnableFollowers) {
2486
+ AssertSuccessResult (session.ExecuteSchemeQuery (R"(
2487
+ --!syntax_v1
2488
+ ALTER TABLE `KeySubkey` ALTER INDEX `idx` SET READ_REPLICAS_SETTINGS "PER_AZ:1";
2489
+ )" ).GetValueSync ());
2490
+ }
2491
+
2492
+ AssertSuccessResult (session.ExecuteDataQuery (R"(
2493
+ --!syntax_v1
2494
+
2495
+ REPLACE INTO `KeySubkey` (`Key`, `Subkey`, `Value`, `Order`) VALUES
2496
+ (1u, 2u, "One", 7u),
2497
+ (1u, 3u, "Two", 4u),
2498
+ (21u, 8u, "Three", 1u),
2499
+ (31u, 0u, "Four", 8u);
2500
+ )" , TTxControl::BeginTx ().CommitTx ()).GetValueSync ());
2501
+
2502
+ auto result = session.ExecuteDataQuery (R"(
2503
+ --!syntax_v1
2504
+ SELECT * FROM `KeySubkey` VIEW `idx` WHERE Key = 1 ORDER BY `Order`;
2505
+ )" , TTxControl::BeginTx (TTxSettings::StaleRO ()).CommitTx ()).ExtractValueSync ();
2506
+ AssertSuccessResult (result);
2507
+
2508
+ const auto FollowerCpuTime = GetCumulativeCounterValue (
2509
+ kikimr.GetTestServer (),
2510
+ " /Root/KeySubkey/idx/indexImplTable" ,
2511
+ " DataShard/TxUpdateFollowerReadEdge/ExecuteCPUTime"
2512
+ );
2513
+ if constexpr (EnableFollowers) {
2514
+ UNIT_ASSERT_UNEQUAL (0 , FollowerCpuTime);
2515
+ } else {
2516
+ UNIT_ASSERT_EQUAL (0 , FollowerCpuTime);
2517
+ }
2518
+
2519
+ CompareYson (R"(
2520
+ [
2521
+ [[1u];[4u];[3u];["Two"]];
2522
+ [[1u];[7u];[2u];["One"]];
2523
+ ]
2524
+ )" , FormatResultSetYson (result.GetResultSet (0 )));
2525
+ }
2526
+
2447
2527
Y_UNIT_TEST (ReadRangeWithParams) {
2448
2528
auto kikimr = DefaultKikimrRunner ();
2449
2529
auto db = kikimr.GetTableClient ();
0 commit comments