Skip to content

Commit b4d10a1

Browse files
committed
Add ability to propagate RetrySettings
1 parent 3b4c178 commit b4d10a1

File tree

2 files changed

+35
-0
lines changed

2 files changed

+35
-0
lines changed

ydb_sqlalchemy/sqlalchemy/__init__.py

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,21 @@ def get_characteristic(
9999
return dialect.get_ydb_request_settings(dbapi_connection)
100100

101101

102+
class YdbRetrySettingsCharacteristic(characteristics.ConnectionCharacteristic):
103+
def reset_characteristic(self, dialect: "YqlDialect", dbapi_connection: ydb_dbapi.Connection) -> None:
104+
dialect.reset_ydb_retry_settings(dbapi_connection)
105+
106+
def set_characteristic(
107+
self, dialect: "YqlDialect", dbapi_connection: ydb_dbapi.Connection, value: ydb.RetrySettings
108+
) -> None:
109+
dialect.set_ydb_retry_settings(dbapi_connection, value)
110+
111+
def get_characteristic(
112+
self, dialect: "YqlDialect", dbapi_connection: ydb_dbapi.Connection
113+
) -> ydb.RetrySettings:
114+
return dialect.get_ydb_retry_settings(dbapi_connection)
115+
116+
102117
class YqlDialect(StrCompileDialect):
103118
name = "yql"
104119
driver = "ydb"
@@ -150,6 +165,7 @@ class YqlDialect(StrCompileDialect):
150165
{
151166
"isolation_level": characteristics.IsolationLevelCharacteristic(),
152167
"ydb_request_settings": YdbRequestSettingsCharacteristic(),
168+
"ydb_retry_settings": YdbRetrySettingsCharacteristic(),
153169
}
154170
)
155171

@@ -312,6 +328,19 @@ def reset_ydb_request_settings(self, dbapi_connection: ydb_dbapi.Connection):
312328
def get_ydb_request_settings(self, dbapi_connection: ydb_dbapi.Connection) -> ydb.BaseRequestSettings:
313329
return dbapi_connection.get_ydb_request_settings()
314330

331+
def set_ydb_retry_settings(
332+
self,
333+
dbapi_connection: ydb_dbapi.Connection,
334+
value: ydb.RetrySettings,
335+
) -> None:
336+
dbapi_connection.set_ydb_retry_settings(value)
337+
338+
def reset_ydb_retry_settings(self, dbapi_connection: ydb_dbapi.Connection):
339+
self.set_ydb_retry_settings(dbapi_connection, ydb.RetrySettings())
340+
341+
def get_ydb_retry_settings(self, dbapi_connection: ydb_dbapi.Connection) -> ydb.RetrySettings:
342+
return dbapi_connection.get_ydb_retry_settings()
343+
315344
def create_connect_args(self, url):
316345
args, kwargs = super().create_connect_args(url)
317346
# YDB database name should start with '/'

ydb_sqlalchemy/sqlalchemy/dbapi_adapter.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,12 @@ def set_ydb_request_settings(self, value: ydb.BaseRequestSettings) -> None:
5656
def get_ydb_request_settings(self) -> ydb.BaseRequestSettings:
5757
return self._connection.get_ydb_request_settings()
5858

59+
def set_ydb_retry_settings(self, value: ydb.RetrySettings) -> None:
60+
self._connection.set_ydb_retry_settings(value)
61+
62+
def get_ydb_retry_settings(self) -> ydb.RetrySettings:
63+
return self._connection.get_ydb_retry_settings()
64+
5965
def describe(self, table_path: str):
6066
return await_only(self._connection.describe(table_path))
6167

0 commit comments

Comments
 (0)