Skip to content

Commit 8bd366a

Browse files
committed
chore: add changelog fragment for PR #8
1 parent 5321928 commit 8bd366a

5 files changed

Lines changed: 5 additions & 0 deletions

File tree

‎changelog.d/8.added.md‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Implement core's ColumnTypeSupport protocol for SQL Server through SQLServerColumnTypeMixin and the SQLSERVER_COLUMN_TYPES table, an eighteen-entry answer for every common Python type — str is a StringColumn, list/dict/tuple/set/frozenset are JSONColumns (this server has no array type on any version, and a document is text in NVARCHAR(MAX) that the 2016 function family reads), uuid.UUID a UUIDColumn, enum.Enum a StringColumn and datetime.timedelta a NumericColumn (a span here is a DATEDIFF count) — with each deviation recorded against its measured 2019 / 2022 / 2025 evidence and each deliberate omission stated in the module docstring rather than left to be inferred. Also declare the SQLServerTypeSupport protocol, the stated shape of the sqlserver_-prefixed type family (whether xml is a real type here, whether BIT is a boolean, whether tinyint is signed); render the new trim node through SQLServerTrimMixin, which keeps the operand order this server had first (BOTH becomes TRIM(chars FROM x) / TRIM(x), LEADING becomes LTRIM, TRAILING becomes RTRIM) and records its compatibility-level limits instead of gating them; compose SQLServerUUIDMixin so this backend's NEWID and UNIQUEIDENTIFIER spellings win over core's single fixed spelling; declare STRING_CONCATENATION = "CONCAT", because T-SQL reads || as logical OR; and add the column-type table, node-class enumeration and table-type definition round-trip test coverage.

‎changelog.d/8.changed.md‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Rework suggested_data_types() into a documented answer to "concepts SQL Server cannot spell, and what it stores instead": the keys are exactly the core types this dialect does not render (binary and varbinary as BlobType, interval as BigIntType, array and jsonb as JsonType, enum as VarCharType, timetz as TimeType, and uuid under this backend's own SQLServerUniqueIdentifierType, because T-SQL writes UNIQUEIDENTIFIER and the dispatch key has to be a word this backend can produce), while xml and timestamptz stay out of the table because the server has native types for them. Follow the core's renames of DateTimeColumn to TimestampColumn and DateTimeSupport to TimestampSupport, and migrate the tests to the rebuilt DDL-source accessors (column_type() / columns_type() become column_data_type() / columns_data_type()) and to building predicates, DDL check conditions and index conditions as explicit nodes now that the bare Column offers no operators.

‎changelog.d/8.docs.md‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Record in the README why there is no Python 3.15 CI leg: pyodbc 5.3.0 ships no cp315 wheel (source tarball only, with no Python :: 3.15 classifier), so a 3.15 leg would fail at install while pip compiles the driver, and adding one awaits a pyodbc release rather than anything in this repository.

‎changelog.d/8.fixed.md‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Fix sqlserver_-prefixed DataType names silently dropping out of supports_data_types(): the resolver walks the live DataType subclass tree, so a name whose own class nothing had imported yet resolved to None and vanished from the mapping — unnoticed, because every test that looked at the mapping had happened to import a SQLServer* class in its own import block first, which is exactly the load that was missing. The type-formatter registration path now imports this backend's own DataType classes before resolution runs.

‎changelog.d/8.internal.md‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Enumerate every core node class in the expression round-trip matrix by walking the package deterministically instead of the process-global ExpressionRegistry, whose contents depended on which sibling test modules pytest happened to import first, and pin UNMODELLED_FORMATTERS and UNCONSTRUCTIBLE in both directions so a dispatch refusal must be a row with a stated reason (SQL Server has no LPAD / RPAD / REPEAT functions, no SQL/XML feature set and no DOMAIN object) instead of passing as "unsupported". Point the CI core install at release/v1.0.0.dev30 now that typed-columns has merged there, and pin pydantic 2.12.2 / pydantic-core 2.41.4 on Python 3.13 and 3.13t, mirroring the core's pins.

0 commit comments

Comments
 (0)