@@ -210,6 +210,7 @@ def __init__(self, driver, session_state, session, tx_mode):
210210 self .session = session
211211 self ._prev_stream = None
212212 self ._external_error = None
213+ self ._last_query_stats = None
213214
214215 @property
215216 def session_id (self ) -> str :
@@ -229,6 +230,10 @@ def tx_id(self) -> Optional[str]:
229230 """
230231 return self ._tx_state .tx_id
231232
233+ @property
234+ def last_query_stats (self ):
235+ return self ._last_query_stats
236+
232237 def _tx_identity (self ) -> _ydb_topic .TransactionIdentity :
233238 if not self .tx_id :
234239 raise RuntimeError ("Unable to get tx identity without started tx." )
@@ -283,25 +288,29 @@ def _rollback_call(self, settings: Optional[BaseRequestSettings]) -> "BaseQueryT
283288 def _execute_call (
284289 self ,
285290 query : str ,
291+ parameters : Optional [dict ],
286292 commit_tx : Optional [bool ],
287293 syntax : Optional [base .QuerySyntax ],
288294 exec_mode : Optional [base .QueryExecMode ],
289- parameters : Optional [dict ],
295+ stats_mode : Optional [base . QueryStatsMode ],
290296 concurrent_result_sets : Optional [bool ],
291297 settings : Optional [BaseRequestSettings ],
292298 ) -> Iterable [_apis .ydb_query .ExecuteQueryResponsePart ]:
293299 self ._tx_state ._check_tx_ready_to_use ()
294300 self ._check_external_error_set ()
295301
302+ self ._last_query_stats = None
303+
296304 request = base .create_execute_query_request (
297305 query = query ,
298- session_id = self . _session_state . session_id ,
306+ parameters = parameters ,
299307 commit_tx = commit_tx ,
308+ session_id = self ._session_state .session_id ,
300309 tx_id = self ._tx_state .tx_id ,
301310 tx_mode = self ._tx_state .tx_mode ,
302311 syntax = syntax ,
303312 exec_mode = exec_mode ,
304- parameters = parameters ,
313+ stats_mode = stats_mode ,
305314 concurrent_result_sets = concurrent_result_sets ,
306315 )
307316
@@ -449,6 +458,7 @@ def execute(
449458 commit_tx : Optional [bool ] = False ,
450459 syntax : Optional [base .QuerySyntax ] = None ,
451460 exec_mode : Optional [base .QueryExecMode ] = None ,
461+ stats_mode : Optional [base .QueryStatsMode ] = None ,
452462 concurrent_result_sets : Optional [bool ] = False ,
453463 settings : Optional [BaseRequestSettings ] = None ,
454464 ) -> base .SyncResponseContextIterator :
@@ -465,6 +475,11 @@ def execute(
465475 2) QueryExecMode.EXPLAIN;
466476 3) QueryExecMode.VALIDATE;
467477 4) QueryExecMode.PARSE.
478+ :param stats_mode: Mode of query statistics to gather, which is a one from the following choises:
479+ 1) QueryStatsMode:NONE, which is default;
480+ 2) QueryStatsMode.BASIC;
481+ 3) QueryStatsMode.FULL;
482+ 4) QueryStatsMode.PROFILE;
468483 :param concurrent_result_sets: A flag to allow YDB mix parts of different result sets. Default is False;
469484 :param settings: An additional request settings BaseRequestSettings;
470485
@@ -477,6 +492,7 @@ def execute(
477492 commit_tx = commit_tx ,
478493 syntax = syntax ,
479494 exec_mode = exec_mode ,
495+ stats_mode = stats_mode ,
480496 parameters = parameters ,
481497 concurrent_result_sets = concurrent_result_sets ,
482498 settings = settings ,
0 commit comments