@@ -222,6 +222,56 @@ static NYdb::TStatus SimpleSelect(TSession session, const TString& query) {
222
222
}
223
223
224
224
Y_UNIT_TEST_SUITE (ClientStatsCollector) {
225
+ Y_UNIT_TEST (PrepareQuery) {
226
+ NYdb::TKikimrWithGrpcAndRootSchema server;
227
+ auto endpoint = TStringBuilder () << " localhost:" << server.GetPort ();
228
+ NYdb::TDriver driver (NYdb::TDriverConfig ().SetEndpoint (endpoint));
229
+ TCountersExtractor extractor;
230
+ driver.AddExtension <TCountersExtractExtension>(TCountersExtractExtension::TParams ().SetExtractor (&extractor));
231
+ auto clSettings = NYdb::NTable::TClientSettings ().UseQueryCache (true );
232
+ NYdb::NTable::TTableClient client (driver, clSettings);
233
+
234
+ auto createSessionResult = client.GetSession (TCreateSessionSettings ().ClientTimeout (OPERATION_TIMEOUT)).GetValueSync ();
235
+ UNIT_ASSERT (createSessionResult.IsSuccess ());
236
+
237
+ auto session = createSessionResult.GetSession ();
238
+
239
+ {
240
+ auto prepareResult = session.PrepareDataQuery (" SELECT 1" ).GetValueSync ();
241
+ UNIT_ASSERT_VALUES_EQUAL (prepareResult.IsQueryFromCache (), false );
242
+
243
+ TStatCounters counters = extractor.Extract ();
244
+ UNIT_ASSERT_VALUES_EQUAL (counters.CacheMiss , 1 );
245
+
246
+ UNIT_ASSERT (prepareResult.IsSuccess ());
247
+
248
+ {
249
+ auto executeResult = prepareResult.GetQuery ().Execute (
250
+ TTxControl::BeginTx (TTxSettings::SerializableRW ())).GetValueSync ();
251
+
252
+ UNIT_ASSERT (executeResult.IsSuccess ());
253
+ UNIT_ASSERT_VALUES_EQUAL (executeResult.IsQueryFromCache (), false ); // <- explicit prepared query
254
+ counters = extractor.Extract ();
255
+ UNIT_ASSERT_VALUES_EQUAL (counters.CacheMiss , 1 );
256
+ }
257
+
258
+ auto executeResult = session.ExecuteDataQuery (" SELECT 1" ,
259
+ TTxControl::BeginTx (TTxSettings::SerializableRW ()).CommitTx ()).GetValueSync ();
260
+
261
+ UNIT_ASSERT (executeResult.IsSuccess ());
262
+ UNIT_ASSERT_VALUES_EQUAL (executeResult.IsQueryFromCache (), true );
263
+ counters = extractor.Extract ();
264
+ UNIT_ASSERT_VALUES_EQUAL (counters.CacheMiss , 1 );
265
+ }
266
+
267
+ {
268
+ auto prepareResult = session.PrepareDataQuery (" SELECT 1" ).GetValueSync ();
269
+ UNIT_ASSERT_VALUES_EQUAL (prepareResult.IsQueryFromCache (), true );
270
+ auto counters = extractor.Extract ();
271
+ UNIT_ASSERT_VALUES_EQUAL (counters.CacheMiss , 1 );
272
+ }
273
+ }
274
+
225
275
Y_UNIT_TEST (CounterCacheMiss) {
226
276
NYdb::TKikimrWithGrpcAndRootSchema server;
227
277
auto endpoint = TStringBuilder () << " localhost:" << server.GetPort ();
0 commit comments