release v1.10.1rc2#742
Merged
Merged
Conversation
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.
for more information, see https://pre-commit.ci
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)
…and add test for widening
…b-actions-updates-640176b5ab chore(deps): bump actions/checkout from 6 to 7 in the github-actions-updates group
[pre-commit.ci] pre-commit autoupdate
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)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Upgrade hotfixes control branch to v1.10.1rc2