Skip to content

Commit 38a767d

Browse files
authored
Merge pull request #97 from ydb-platform/retry_settings
Add ability to propagate RetrySettings
2 parents 3b4c178 + 849ea5d commit 38a767d

File tree

3 files changed

+34
-1
lines changed

3 files changed

+34
-1
lines changed

requirements.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
sqlalchemy >= 1.4.0, < 3.0.0
22
ydb >= 3.21.6
3-
ydb-dbapi >= 0.1.10
3+
ydb-dbapi >= 0.1.16

ydb_sqlalchemy/sqlalchemy/__init__.py

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,19 @@ 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(self, dialect: "YqlDialect", dbapi_connection: ydb_dbapi.Connection) -> ydb.RetrySettings:
112+
return dialect.get_ydb_retry_settings(dbapi_connection)
113+
114+
102115
class YqlDialect(StrCompileDialect):
103116
name = "yql"
104117
driver = "ydb"
@@ -150,6 +163,7 @@ class YqlDialect(StrCompileDialect):
150163
{
151164
"isolation_level": characteristics.IsolationLevelCharacteristic(),
152165
"ydb_request_settings": YdbRequestSettingsCharacteristic(),
166+
"ydb_retry_settings": YdbRetrySettingsCharacteristic(),
153167
}
154168
)
155169

@@ -312,6 +326,19 @@ def reset_ydb_request_settings(self, dbapi_connection: ydb_dbapi.Connection):
312326
def get_ydb_request_settings(self, dbapi_connection: ydb_dbapi.Connection) -> ydb.BaseRequestSettings:
313327
return dbapi_connection.get_ydb_request_settings()
314328

329+
def set_ydb_retry_settings(
330+
self,
331+
dbapi_connection: ydb_dbapi.Connection,
332+
value: ydb.RetrySettings,
333+
) -> None:
334+
dbapi_connection.set_ydb_retry_settings(value)
335+
336+
def reset_ydb_retry_settings(self, dbapi_connection: ydb_dbapi.Connection):
337+
self.set_ydb_retry_settings(dbapi_connection, ydb.RetrySettings())
338+
339+
def get_ydb_retry_settings(self, dbapi_connection: ydb_dbapi.Connection) -> ydb.RetrySettings:
340+
return dbapi_connection.get_ydb_retry_settings()
341+
315342
def create_connect_args(self, url):
316343
args, kwargs = super().create_connect_args(url)
317344
# 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)