@@ -147,6 +147,12 @@ def __init__(self, driver: common_utils.SupportedDriverType, settings: Optional[
147147 .with_timeout (DEFAULT_ATTACH_LONG_TIMEOUT )
148148 )
149149
150+ self ._last_query_stats = None
151+
152+ @property
153+ def last_query_stats (self ):
154+ return self ._last_query_stats
155+
150156 def _get_client_settings (
151157 self ,
152158 driver : common_utils .SupportedDriverType ,
@@ -189,22 +195,26 @@ def _attach_call(self) -> Iterable[_apis.ydb_query.SessionState]:
189195 def _execute_call (
190196 self ,
191197 query : str ,
198+ parameters : dict = None ,
192199 commit_tx : bool = False ,
193200 syntax : base .QuerySyntax = None ,
194201 exec_mode : base .QueryExecMode = None ,
195- parameters : dict = None ,
202+ stats_mode : Optional [ base . QueryStatsMode ] = None ,
196203 concurrent_result_sets : bool = False ,
197204 settings : Optional [BaseRequestSettings ] = None ,
198205 ) -> Iterable [_apis .ydb_query .ExecuteQueryResponsePart ]:
206+ self ._last_query_stats = None
207+
199208 request = base .create_execute_query_request (
200209 query = query ,
201- session_id = self . _state . session_id ,
210+ parameters = parameters ,
202211 commit_tx = commit_tx ,
212+ session_id = self ._state .session_id ,
203213 tx_mode = None ,
204214 tx_id = None ,
205215 syntax = syntax ,
206216 exec_mode = exec_mode ,
207- parameters = parameters ,
217+ stats_mode = stats_mode ,
208218 concurrent_result_sets = concurrent_result_sets ,
209219 )
210220
@@ -293,7 +303,7 @@ def create(self, settings: Optional[BaseRequestSettings] = None) -> "QuerySessio
293303 def transaction (self , tx_mode : Optional [base .BaseQueryTxMode ] = None ) -> QueryTxContext :
294304 """Creates a transaction context manager with specified transaction mode.
295305
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 :
297307 1) QuerySerializableReadWrite() which is default mode;
298308 2) QueryOnlineReadOnly(allow_inconsistent_reads=False);
299309 3) QuerySnapshotReadOnly();
@@ -321,26 +331,34 @@ def execute(
321331 exec_mode : base .QueryExecMode = None ,
322332 concurrent_result_sets : bool = False ,
323333 settings : Optional [BaseRequestSettings ] = None ,
334+ * ,
335+ stats_mode : Optional [base .QueryStatsMode ] = None ,
324336 ) -> base .SyncResponseContextIterator :
325337 """Sends a query to Query Service
326338
327339 :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 :
329341 1) QuerySyntax.YQL_V1, which is default;
330342 2) QuerySyntax.PG.
331343 :param parameters: dict with parameters and YDB types;
332344 :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;
333350
334351 :return: Iterator with result sets
335352 """
336353 self ._state ._check_session_ready_to_use ()
337354
338355 stream_it = self ._execute_call (
339356 query = query ,
357+ parameters = parameters ,
340358 commit_tx = True ,
341359 syntax = syntax ,
342360 exec_mode = exec_mode ,
343- parameters = parameters ,
361+ stats_mode = stats_mode ,
344362 concurrent_result_sets = concurrent_result_sets ,
345363 settings = settings ,
346364 )
@@ -351,6 +369,7 @@ def execute(
351369 rpc_state = None ,
352370 response_pb = resp ,
353371 session_state = self ._state ,
372+ session = self ,
354373 settings = self ._settings ,
355374 ),
356375 )
0 commit comments