Skip to content

release v1.10.1rc2#742

Merged
axellpadilla merged 30 commits into
release/v1.10from
master
Jul 15, 2026
Merged

release v1.10.1rc2#742
axellpadilla merged 30 commits into
release/v1.10from
master

Conversation

@axellpadilla

Copy link
Copy Markdown
Collaborator

Upgrade hotfixes control branch to v1.10.1rc2

joshmarkovic and others added 30 commits June 24, 2026 19:58
Cover SQL Server 2025 in the integration-test matrix (pyodbc and mssql-python on Python 3.13 / ODBC Driver 18) and add it to the published server CI images.

Rename the server Dockerfile build arg SQLServer_VERSION to MSSQL_VERSION to match the build-arg the workflow already passes; with the old name the matrix version was ignored and every image used the 2022 default.

Document 2025 as a supported version and refresh the stale dbt-core 0.14 compatibility note to 1.10.
Explain that table materializations build a clustered columnstore index by default, and that as_columnstore: false is required for tables with (n)varchar(max)/LOB columns such as dbt store_failures audit tables.
A passing test run with --store-failures must replace prior failures with an empty audit table rather than drop it. Adds a functional regression test for #601.
Includes bugfixes for hook transaction safety, columnstore guards, query_tag escaping, float mapping, default port, drop_schema_name, and access token errors. New features for dbt transaction handling, types, persist_docs, and mssql-python backend. Internal improvements consolidating linting to Ruff and dependency updates.
Add CHANGELOG entries for v1.10.1 release
Bumps the github-actions-updates group with 1 update: [actions/checkout](https://github.com/actions/checkout).


Updates `actions/checkout` from 6 to 7
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](actions/checkout@v6...v7)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: github-actions-updates
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Axell Padilla <68310020+axellpadilla@users.noreply.github.com>
Addresses @axellpadilla's review on #721.

- integration tests: make 2025 the matrix baseline, replacing 2022 as the
  latest tier. Keep 2017, 2019 and 2022 as single legacy rows so all four
  versions stay covered by CI.
- README: remove the duplicate "Supported SQL Server versions" heading and
  the Azure SQL Database / Managed Instance rows that were marked tested.
  Azure is now described as not covered by CI but expected to be compatible.
The index feature emits OPTIMIZE_FOR_SEQUENTIAL_KEY and RESUMABLE (plus
RESUMABLE's MAX_DURATION) unconditionally. These are only recognized on
SQL Server 2019 (major 15)+, so on a genuine 2017 engine the CREATE INDEX
fails with "is not a recognized CREATE INDEX option" (msg 155).

This was masked until now: the server-2017/2019/2022 CI images were all
built FROM ...:2022-latest because publish-docker passed build-arg
MSSQL_VERSION while server.Dockerfile declared SQLServer_VERSION. This PR
fixes that arg name, so the 2017 leg finally runs real 2017 and exposed
the incompatibility.

We support 2017 (Microsoft still does), so detect the engine major
version and, when < 15, drop these options (with a warning) and build the
index without them instead of failing. ONLINE is kept (recognized on
2017, edition-gated not version-gated). Behavior on 2019+ is unchanged.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
updates:
- [github.com/astral-sh/ruff-pre-commit: v0.15.17 → v0.15.20](astral-sh/ruff-pre-commit@v0.15.17...v0.15.20)
- README: the adapter requires dbt-core 1.10+ (pyproject pins
  >=1.10.0,<2.0), not 0.14; update the versioning example to 1.10.x.
- CONTRIBUTING: drop the `integration-tests-azure` pipeline from the
  list; no such workflow exists under .github/workflows.
- CONTRIBUTING: releases are cut by publishing a GitHub Release (the
  release-version workflow triggers on release publish, not a bare tag
  push), and the dbt-core constraint lives in pyproject.toml
  dependencies, not a `dbt_version` in a nonexistent setup.py.
docs: correct stale version, release, and CI references
feat: SQL Server 2025 support (plus as_columnstore docs and a store-failures regression test)
…b-actions-updates-640176b5ab

chore(deps): bump actions/checkout from 6 to 7 in the github-actions-updates group
Fix safe type expansion for incremental models
The pyodbc branch of format_connection_string_value wrapped values in
braces without doubling embedded closing braces, so a password like
pa}ss produced PWD={pa}ss} and the driver misparsed the rest of the
connection string. The mssql-python branch already escaped correctly.
Double the closing brace per the ODBC quoting rules and cover both
backends with unit tests.
The query-level retry in SQLServerConnectionManager.add_query had two
defects:

- A `credentials.retries > 3` guard silently ignored configured retry
  counts of 1-3 and fell back to a hardcoded limit of 2, so even the
  default `retries: 3` only attempted a query twice. Use
  `credentials.retries` directly, matching how open() drives connection
  retries.
- The retry-debug event was built as `AdapterEventDebug(message=...)`,
  but the event field is `base_msg`; constructing it raised a protobuf
  ParseError on the first retryable error, so retries crashed instead of
  retrying. Use `base_msg=` as dbt-core's base add_query does.

Add unit tests covering retry-until-success, the retries=3 regression,
no-retry at retries=1, and non-retryable errors not being retried.
Drop the event-construction comment narrating the old message= defect
and reduce the retry_limit comment to the one fact a reader needs:
retries caps total execute attempts, so retries: 1 disables retry.
The three failure-path tests differed only in retries, side effect,
expected exception and expected attempt count; collapse them into one
parametrized test. Also drop the unused connection element from the
test helper's return value.
fix: honor configured query retries and correct the retry debug event
fix: escape embedded closing braces in pyodbc connection string values
SQLServerConnectionManager.cancel() was a no-op (it only logged), so
dbt-core's cancel_open() could not stop sibling queries on Ctrl-C or
when another thread failed; in-flight statements kept running
server-side, holding locks.

Track the in-flight cursor on the Connection during add_query and call
Cursor.cancel() on it from cancel(). pyodbc exposes Cursor.cancel()
(issuing SQLCancel, designed for cross-thread use) and mssql-python's
cursor is used the same way when supported. Cancellation is best-effort:
it no-ops when no statement is in flight, the cursor is gone, or the
backend cursor lacks cancel(), and it swallows errors from a statement
that completed between lookup and cancel.

Add unit tests for cancel() (in-flight, absent, unsupported, error
paths) and for add_query registering then clearing the cursor.
fix: make cancel() actually cancel the in-flight query
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…erflow

fix: STRING_AGG 8000-byte overflow in describe_indexes on wide tables (#735)
@axellpadilla
axellpadilla merged commit cc21009 into release/v1.10 Jul 15, 2026
17 of 19 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants