@@ -2372,6 +2372,11 @@ Y_UNIT_TEST_SUITE(KqpNewEngine) {
23722372 SELECT * FROM FollowersKv WHERE Key = 21;
23732373 )" , TTxControl::BeginTx (TTxSettings::StaleRO ()).CommitTx ()).ExtractValueSync ();
23742374 AssertSuccessResult (result);
2375+ UNIT_ASSERT_UNEQUAL (0 , GetCumulativeCounterValue (
2376+ kikimr.GetTestServer (),
2377+ " /Root/FollowersKv" ,
2378+ " DataShard/TxUpdateFollowerReadEdge/ExecuteCPUTime"
2379+ ));
23752380
23762381 CompareYson (R"(
23772382 [
@@ -2385,6 +2390,11 @@ Y_UNIT_TEST_SUITE(KqpNewEngine) {
23852390 SELECT * FROM FollowersKv WHERE Value != "One" ORDER BY Key;
23862391 )" , TTxControl::BeginTx (TTxSettings::StaleRO ()).CommitTx ()).ExtractValueSync ();
23872392 AssertSuccessResult (result);
2393+ UNIT_ASSERT_UNEQUAL (0 , GetCumulativeCounterValue (
2394+ kikimr.GetTestServer (),
2395+ " /Root/FollowersKv" ,
2396+ " DataShard/TxUpdateFollowerReadEdge/ExecuteCPUTime"
2397+ ));
23882398
23892399 CompareYson (R"(
23902400 [
@@ -2400,6 +2410,11 @@ Y_UNIT_TEST_SUITE(KqpNewEngine) {
24002410 SELECT * FROM TwoShard WHERE Key = 2;
24012411 )" , TTxControl::BeginTx (TTxSettings::StaleRO ()).CommitTx ()).ExtractValueSync ();
24022412 AssertSuccessResult (result);
2413+ UNIT_ASSERT_EQUAL (0 , GetCumulativeCounterValue (
2414+ kikimr.GetTestServer (),
2415+ " /Root/TwoShard" ,
2416+ " DataShard/TxUpdateFollowerReadEdge/ExecuteCPUTime"
2417+ ));
24032418
24042419 CompareYson (R"(
24052420 [
@@ -2420,6 +2435,11 @@ Y_UNIT_TEST_SUITE(KqpNewEngine) {
24202435 [[4000000001u];["BigOne"];[-1]]
24212436 ]
24222437 )" , FormatResultSetYson (result.GetResultSet (0 )));
2438+ UNIT_ASSERT_EQUAL (0 , GetCumulativeCounterValue (
2439+ kikimr.GetTestServer (),
2440+ " /Root/TwoShard" ,
2441+ " DataShard/TxUpdateFollowerReadEdge/ExecuteCPUTime"
2442+ ));
24232443 }
24242444
24252445 Y_UNIT_TEST (StaleRO_Immediate) {
@@ -2444,6 +2464,66 @@ Y_UNIT_TEST_SUITE(KqpNewEngine) {
24442464 )" , FormatResultSetYson (result.GetResultSet (0 )));
24452465 }
24462466
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+
24472527 Y_UNIT_TEST (ReadRangeWithParams) {
24482528 auto kikimr = DefaultKikimrRunner ();
24492529 auto db = kikimr.GetTableClient ();
0 commit comments