Skip to content

Commit c64e8e9

Browse files
committed
Miscellaneous changes
1 parent 833f191 commit c64e8e9

File tree

4 files changed

+19
-3
lines changed

4 files changed

+19
-3
lines changed

pysqlsync/connection.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,5 +96,5 @@ def __str__(self) -> str:
9696
port = f":{self.port}" if self.port else ""
9797
username = f"{quote(self.username, safe='')}@" if self.username else ""
9898
database = f"/{quote(self.database, safe='')}" if self.database else ""
99-
ssl = f"?ssl={self.ssl}" if self.ssl else ""
99+
ssl = f"?ssl={self.ssl.value}" if self.ssl else ""
100100
return f"{username}{host}{port}{database}{ssl}"

pysqlsync/dialect/mssql/discovery.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,9 +47,21 @@ async def get_columns(self, table_id: SupportsQualifiedId) -> list[Column]:
4747
" INNER JOIN sys.columns AS c ON c.object_id = t.object_id\n"
4848
f"WHERE s.name = {quote(table_id.scope_id or 'dbo')} AND t.name = {quote(table_id.local_id)} AND c.is_identity = 1;",
4949
)
50+
default_columns = await self.conn.query_all(
51+
tuple[str, str],
52+
"SELECT c.name, d.definition\n"
53+
"FROM sys.schemas AS s\n"
54+
" INNER JOIN sys.tables AS t ON t.schema_id = s.schema_id\n"
55+
" INNER JOIN sys.columns AS c ON c.object_id = t.object_id\n"
56+
" INNER JOIN sys.default_constraints AS d ON d.object_id = c.default_object_id\n"
57+
f"WHERE s.name = {quote(table_id.scope_id or 'dbo')} AND t.name = {quote(table_id.local_id)} AND c.default_object_id != 0;",
58+
)
59+
default_values = dict(default_columns)
5060
for c in columns:
5161
if c.name.id in identity_columns:
5262
c.identity = True
63+
if c.name.id in default_values:
64+
c.default = default_values[c.name.id]
5365

5466
return columns
5567

setup.cfg

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,9 @@ include_package_data = True
2929
packages = find:
3030
python_requires = >=3.9
3131
install_requires =
32-
certifi >= 2024.8.30
33-
truststore >= 0.9; python_version>="3.10"
3432
json_strong_typing >= 0.3.2
33+
certifi >= 2024.8.30; python_version<"3.10"
34+
truststore >= 0.9; python_version>="3.10"
3535
typing_extensions >= 4.8; python_version<"3.12"
3636

3737
[options.extras_require]

tests/test_api.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ def test_connection_query_parameters(self) -> None:
4646
self.assertEqual(params.port, port)
4747
self.assertEqual(params.database, database)
4848
self.assertEqual(params.ssl, None)
49+
self.assertEqual(str(params), r"server.example.com:2310/database")
4950

5051
url = f"{url_prefix}?ssl=verify-full"
5152
dialect, params = get_parameters(url)
@@ -54,6 +55,9 @@ def test_connection_query_parameters(self) -> None:
5455
self.assertEqual(params.port, port)
5556
self.assertEqual(params.database, database)
5657
self.assertEqual(params.ssl, ConnectionSSLMode.verify_full)
58+
self.assertEqual(
59+
str(params), r"server.example.com:2310/database?ssl=verify-full"
60+
)
5761

5862

5963
if __name__ == "__main__":

0 commit comments

Comments
 (0)