@@ -147,6 +147,12 @@ def __init__(self, driver: common_utils.SupportedDriverType, settings: Optional[
147
147
.with_timeout (DEFAULT_ATTACH_LONG_TIMEOUT )
148
148
)
149
149
150
+ self ._last_query_stats = None
151
+
152
+ @property
153
+ def last_query_stats (self ):
154
+ return self ._last_query_stats
155
+
150
156
def _get_client_settings (
151
157
self ,
152
158
driver : common_utils .SupportedDriverType ,
@@ -189,22 +195,26 @@ def _attach_call(self) -> Iterable[_apis.ydb_query.SessionState]:
189
195
def _execute_call (
190
196
self ,
191
197
query : str ,
198
+ parameters : dict = None ,
192
199
commit_tx : bool = False ,
193
200
syntax : base .QuerySyntax = None ,
194
201
exec_mode : base .QueryExecMode = None ,
195
- parameters : dict = None ,
202
+ stats_mode : Optional [ base . QueryStatsMode ] = None ,
196
203
concurrent_result_sets : bool = False ,
197
204
settings : Optional [BaseRequestSettings ] = None ,
198
205
) -> Iterable [_apis .ydb_query .ExecuteQueryResponsePart ]:
206
+ self ._last_query_stats = None
207
+
199
208
request = base .create_execute_query_request (
200
209
query = query ,
201
- session_id = self . _state . session_id ,
210
+ parameters = parameters ,
202
211
commit_tx = commit_tx ,
212
+ session_id = self ._state .session_id ,
203
213
tx_mode = None ,
204
214
tx_id = None ,
205
215
syntax = syntax ,
206
216
exec_mode = exec_mode ,
207
- parameters = parameters ,
217
+ stats_mode = stats_mode ,
208
218
concurrent_result_sets = concurrent_result_sets ,
209
219
)
210
220
@@ -293,7 +303,7 @@ def create(self, settings: Optional[BaseRequestSettings] = None) -> "QuerySessio
293
303
def transaction (self , tx_mode : Optional [base .BaseQueryTxMode ] = None ) -> QueryTxContext :
294
304
"""Creates a transaction context manager with specified transaction mode.
295
305
296
- :param tx_mode: Transaction mode, which is a one from the following choises :
306
+ :param tx_mode: Transaction mode, which is a one from the following choices :
297
307
1) QuerySerializableReadWrite() which is default mode;
298
308
2) QueryOnlineReadOnly(allow_inconsistent_reads=False);
299
309
3) QuerySnapshotReadOnly();
@@ -321,26 +331,34 @@ def execute(
321
331
exec_mode : base .QueryExecMode = None ,
322
332
concurrent_result_sets : bool = False ,
323
333
settings : Optional [BaseRequestSettings ] = None ,
334
+ * ,
335
+ stats_mode : Optional [base .QueryStatsMode ] = None ,
324
336
) -> base .SyncResponseContextIterator :
325
337
"""Sends a query to Query Service
326
338
327
339
:param query: (YQL or SQL text) to be executed.
328
- :param syntax: Syntax of the query, which is a one from the following choises :
340
+ :param syntax: Syntax of the query, which is a one from the following choices :
329
341
1) QuerySyntax.YQL_V1, which is default;
330
342
2) QuerySyntax.PG.
331
343
:param parameters: dict with parameters and YDB types;
332
344
:param concurrent_result_sets: A flag to allow YDB mix parts of different result sets. Default is False;
345
+ :param stats_mode: Mode of query statistics to gather, which is a one from the following choices:
346
+ 1) QueryStatsMode:NONE, which is default;
347
+ 2) QueryStatsMode.BASIC;
348
+ 3) QueryStatsMode.FULL;
349
+ 4) QueryStatsMode.PROFILE;
333
350
334
351
:return: Iterator with result sets
335
352
"""
336
353
self ._state ._check_session_ready_to_use ()
337
354
338
355
stream_it = self ._execute_call (
339
356
query = query ,
357
+ parameters = parameters ,
340
358
commit_tx = True ,
341
359
syntax = syntax ,
342
360
exec_mode = exec_mode ,
343
- parameters = parameters ,
361
+ stats_mode = stats_mode ,
344
362
concurrent_result_sets = concurrent_result_sets ,
345
363
settings = settings ,
346
364
)
@@ -351,6 +369,7 @@ def execute(
351
369
rpc_state = None ,
352
370
response_pb = resp ,
353
371
session_state = self ._state ,
372
+ session = self ,
354
373
settings = self ._settings ,
355
374
),
356
375
)
0 commit comments