@@ -8,107 +8,30 @@ using namespace NSchemeShard;
8
8
using namespace NSchemeShardUT_Private ;
9
9
10
10
11
- static void WriteRows (TTestActorRuntime& runtime, ui64 tabletId, ui32 key, ui32 index) {
12
- TString writeQuery = Sprintf (R"(
13
- (
14
- (let keyNull '( '('key (Null) ) ) )
15
- (let row0 '( '('embedding (String '%s ) ) '('value (String 'aaaa) ) ) )
16
- (let key0 '( '('key (Uint32 '%u ) ) ) )
17
- (let row0 '( '('embedding (String '%s ) ) '('value (String 'aaaa) ) ) )
18
- (let key1 '( '('key (Uint32 '%u ) ) ) )
19
- (let row1 '( '('embedding (String '%s ) ) '('value (String 'aaaa) ) ) )
20
- (let key2 '( '('key (Uint32 '%u ) ) ) )
21
- (let row2 '( '('embedding (String '%s ) ) '('value (String 'aaaa) ) ) )
22
- (let key3 '( '('key (Uint32 '%u ) ) ) )
23
- (let row3 '( '('embedding (String '%s ) ) '('value (String 'aaaa) ) ) )
24
- (let key4 '( '('key (Uint32 '%u ) ) ) )
25
- (let row4 '( '('embedding (String '%s ) ) '('value (String 'aaaa) ) ) )
26
- (let key5 '( '('key (Uint32 '%u ) ) ) )
27
- (let row5 '( '('embedding (String '%s ) ) '('value (String 'aaaa) ) ) )
28
- (let key6 '( '('key (Uint32 '%u ) ) ) )
29
- (let row6 '( '('embedding (String '%s ) ) '('value (String 'aaaa) ) ) )
30
- (let key7 '( '('key (Uint32 '%u ) ) ) )
31
- (let row7 '( '('embedding (String '%s ) ) '('value (String 'aaaa) ) ) )
32
- (let key8 '( '('key (Uint32 '%u ) ) ) )
33
- (let row8 '( '('embedding (String '%s ) ) '('value (String 'aaaa) ) ) )
34
- (let key9 '( '('key (Uint32 '%u ) ) ) )
35
- (let row9 '( '('embedding (String '%s ) ) '('value (String 'aaaa) ) ) )
36
-
37
- (return (AsList
38
- (UpdateRow '__user__Table keyNull row0)
39
- (UpdateRow '__user__Table key0 row0)
40
- (UpdateRow '__user__Table key1 row1)
41
- (UpdateRow '__user__Table key2 row2)
42
- (UpdateRow '__user__Table key3 row3)
43
- (UpdateRow '__user__Table key4 row4)
44
- (UpdateRow '__user__Table key5 row5)
45
- (UpdateRow '__user__Table key6 row6)
46
- (UpdateRow '__user__Table key7 row7)
47
- (UpdateRow '__user__Table key8 row8)
48
- (UpdateRow '__user__Table key9 row9)
49
- )
50
- )
51
- )
52
- )" ,
53
- std::to_string (1000 *index + 0 ).c_str (),
54
- 1000 *key + 0 , std::to_string (1000 *index + 0 ).c_str (),
55
- 1000 *key + 1 , std::to_string (1000 *index + 1 ).c_str (),
56
- 1000 *key + 2 , std::to_string (1000 *index + 2 ).c_str (),
57
- 1000 *key + 3 , std::to_string (1000 *index + 3 ).c_str (),
58
- 1000 *key + 4 , std::to_string (1000 *index + 4 ).c_str (),
59
- 1000 *key + 5 , std::to_string (1000 *index + 5 ).c_str (),
60
- 1000 *key + 6 , std::to_string (1000 *index + 6 ).c_str (),
61
- 1000 *key + 7 , std::to_string (1000 *index + 7 ).c_str (),
62
- 1000 *key + 8 , std::to_string (1000 *index + 8 ).c_str (),
63
- 1000 *key + 9 , std::to_string (1000 *index + 9 ).c_str ());
64
-
65
- NKikimrMiniKQL::TResult result;
66
- TString err;
67
- NKikimrProto::EReplyStatus status = LocalMiniKQL (runtime, tabletId, writeQuery, result, err);
68
- UNIT_ASSERT_VALUES_EQUAL (err, " " );
69
- UNIT_ASSERT_VALUES_EQUAL (status, NKikimrProto::EReplyStatus::OK);;
70
- }
71
-
72
11
Y_UNIT_TEST_SUITE (VectorIndexBuildTestReboots) {
73
12
Y_UNIT_TEST_WITH_REBOOTS (BaseCase) {
74
- T t;
13
+ // Without killOnCommit, the schemeshard doesn't get rebooted on TEvDataShard::Ev***KMeansResponse's,
14
+ // and thus the vector index build process is never interrupted at all because there are no other
15
+ // events to reboot on.
16
+ T t (true /* killOnCommit*/ );
75
17
t.Run ([&](TTestActorRuntime& runtime, bool & activeZone) {
76
18
{
77
19
TInactiveZone inactive (activeZone);
78
20
79
21
TestCreateTable (runtime, ++t.TxId , " /MyRoot" , R"(
80
- Name: "dir/Table"
81
- Columns { Name: "key" Type: "Uint32" }
82
- Columns { Name: "embedding" Type: "String" }
83
- Columns { Name: "value" Type: "String" }
84
- KeyColumnNames: ["key"]
85
- UniformPartitionsCount: 2
86
- )" );
22
+ Name: "dir/Table"
23
+ Columns { Name: "key" Type: "Uint32" }
24
+ Columns { Name: "embedding" Type: "String" }
25
+ Columns { Name: "value" Type: "String" }
26
+ KeyColumnNames: ["key"]
27
+ SplitBoundary { KeyPrefix { Tuple { Optional { Uint32: 50 } } } }
28
+ SplitBoundary { KeyPrefix { Tuple { Optional { Uint32: 150 } } } }
29
+ )" );
87
30
t.TestEnv ->TestWaitNotification (runtime, t.TxId );
88
31
89
- for (ui32 delta = 0 ; delta < 2 ; ++delta) {
90
- WriteRows (runtime, TTestTxConfig::FakeHiveTablets, 1 + delta, 100 + delta);
91
- }
92
-
93
- // Check src shard has the lead key as null
94
- {
95
- NKikimrMiniKQL::TResult result;
96
- TString err;
97
- ui32 status = LocalMiniKQL (runtime, TTestTxConfig::FakeHiveTablets, R"(
98
- (
99
- (let range '('('key (Null) (Void))))
100
- (let columns '('key 'embedding))
101
- (let result (SelectRange '__user__Table range columns '()))
102
- (return (AsList (SetResult 'Result result)))
103
- )
104
- )" , result, err);
105
-
106
- UNIT_ASSERT_VALUES_EQUAL_C (status, static_cast <ui32>(NKikimrProto::OK), err);
107
- UNIT_ASSERT_VALUES_EQUAL (err, " " );
108
-
109
- // V -- here the null key
110
- NKqp::CompareYson (R"( [[[[[["101000"];#];[["100000"];["1000"]];[["100001"];["1001"]];[["100002"];["1002"]];[["100003"];["1003"]];[["100004"];["1004"]];[["100005"];["1005"]];[["100006"];["1006"]];[["100007"];["1007"]];[["100008"];["1008"]];[["100009"];["1009"]];[["101000"];["2000"]];[["101001"];["2001"]];[["101002"];["2002"]];[["101003"];["2003"]];[["101004"];["2004"]];[["101005"];["2005"]];[["101006"];["2006"]];[["101007"];["2007"]];[["101008"];["2008"]];[["101009"];["2009"]]];%false]]])" , result);
111
- }
32
+ WriteVectorTableRows (runtime, TTestTxConfig::SchemeShard, ++t.TxId , " /MyRoot/dir/Table" , true , 0 , 0 , 50 );
33
+ WriteVectorTableRows (runtime, TTestTxConfig::SchemeShard, ++t.TxId , " /MyRoot/dir/Table" , true , 1 , 50 , 150 );
34
+ WriteVectorTableRows (runtime, TTestTxConfig::SchemeShard, ++t.TxId , " /MyRoot/dir/Table" , true , 2 , 150 , 200 );
112
35
}
113
36
114
37
AsyncBuildVectorIndex (runtime, ++t.TxId , TTestTxConfig::SchemeShard, " /MyRoot" , " /MyRoot/dir/Table" , " index1" , " embedding" , {" value" });
0 commit comments