Skip to content

v26.49.0 release notes - #40469

Merged
maheshwarip merged 18 commits into
mainfrom
docs/v26.49.0-release-notes
Nov 6, 2026
Merged

maheshwarip merged 18 commits into
mainfrom
docs/v26.49.0-release-notes

Conversation

@bosconi

@bosconi bosconi commented Nov 4, 2026 •

Copy link
Copy Markdown
Member

Dates in RC snapshots are provisional until the release ships. One commit is added per snapshot; the final snapshot sets the real dates.

⚠️ Needs the release owner before this can merge

1. This PR conflicts with main, and the conflict is substantive. While this PR sat open, #40201 ("docs: describe which SQL Server constraint Materialize records as a key") merged to main on 2026-11-05 and independently added its own ## v26.49.0 section — an ### Advisory {#v26.49-advisory} plus an ### Improvements {#v26.49-improvements} bullet. Both sides edit the same region of _index.md, so mergeable is CONFLICTING.

Two problems ride along with the conflict:

  • The same PR is described twice. #40201 documents the behavior of #40131, which rc.1 already published here as a Bug Fix ("Reduced the risk of new SQL Server source tables returning incorrect results after a unique constraint or primary key is dropped upstream…"). Recommendation: keep #40201's Advisory and Improvement and drop the rc.1 bug-fix bullet — the hand-written pair is more complete, carries the upgrade-impact guidance, and links /ingest-data/sql-server/#unique-keys.
  • Anchor collision. main's ## v26.49.0 carries {#v26.49-advisory} and {#v26.49-improvements}; this branch's combined section carries {#v26.49-improvements}, {#v26.49-agent-skills}, and {#v26.49-bug-fixes}. Merging both defines #v26.49-improvements twice on one page. Recommendation: rename this branch's three anchors to {#v26.49.1-improvements}, {#v26.49.1-agent-skills}, {#v26.49.1-bug-fixes} — which is what the v26.49.1 snapshot's review notes intended — and leave {#v26.49-advisory} and {#v26.49-improvements} to #40201's section. #40201's review links already point at /releases/#v26.49-advisory, and the compatibility YAML's /releases/#v26491 target is unaffected.

2. Wording drift against the merged v26.49.1 snapshot. Commit 39e6b854a landed here on 2026-11-05, before MaterializeInc/mz-skills#355 merged on 2026-11-06. Two entries read differently on the branch than in the merged snapshot — the hydration improvement is "Investigate hydration on the cluster details page" here versus "See how a cluster hydrated, and why it did not" there, and the Freshness and Disk-column bullets differ likewise. Resolving the conflict above is the natural moment to decide which wording ships.

Note on the section heading

The v26.49.1 patch train reused this branch (commit 39e6b854a) rather than opening its own, so this PR now publishes a single combined ## v26.49.1 section — this train's rc.1–rc.3 entries plus the three v26.49.1 entries, with the Cloud version in parentheses. That is the house convention for a patch that ships in its parent's rollout week; compare the published ## v26.48.2 (*Released to Materialize Cloud: 2026-10-29 (v26.48.0)*). The compatibility YAML accordingly carries one v26.49.1 row dated 2026-11-06, which is what actually shipped to Self-Managed that day.

The final commit for this train is therefore empty: its increment carries no entries (MaterializeInc/release#635 states "No PRs in v26.49.0 require review", v26.49.0-rc.3...v26.49.0 is the lone version-bump commit, and the agent-skills window is empty), and the real dates — Cloud 2026-11-05, Self-Managed 2026-11-06 — were already set by 39e6b854a. It exists so the branch's commit-subject ledger records that the snapshot was applied.

Decisions required (carried over from rc.1)

  • DROP INDEX (#39098): it now rejects drops that used to succeed. Call it out as a breaking change rather than an Improvement?
  • Console on large clusters (#40306): the Cloud Console deploys separately, so this may already be live. Keep it in v26.49?
  • Maintained Objects page (#40105): omitted because it is behind a LaunchDarkly flag. Is it generally available?
  • mz profile init OAuth (#40319): omitted because the PR lists open items. Which mz release carries it?
  • Upsert v2 (#40189): still omitted because enable_upsert_v2 is false. Publish it?

Snapshot drafts (with PR links) in mz-skills

Borderline PRs omitted: rc.1: 10 — rc.1/omitted.md#borderline, rc.2: 0, rc.3: 0, final: 0

🤖 Generated with Claude Code

Adds the v26.49.0 section to doc/user/content/releases/_index.md and the
v26.49 row to the self-managed operator compatibility table.

Dates are provisional (Cloud 2026-11-05, Self-Managed 2026-11-06) and are
set for real by the final snapshot.

Draft with PR links:
https://github.com/MaterializeInc/mz-skills/blob/main/data/mz-release-notes/v26.49.0/rc.1/release_notes.md

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JqfkJZGjcpeg5eG5iNdqKH
@bosconi
bosconi requested a review from a team as a code owner November 4, 2026 14:37
claude and others added 14 commits November 4, 2026 09:42
Adds the rc.2 increment to the v26.49.0 section: one Improvement, a new
Agent Skills section, and one Bug Fix. Provisional dates are unchanged
(Cloud 2026-11-05, Self-Managed 2026-11-06).

Draft with PR links:
https://github.com/MaterializeInc/mz-skills/blob/main/data/mz-release-notes/v26.49.0/rc.2/release_notes.md

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JqfkJZGjcpeg5eG5iNdqKH
Adds the rc.3 increment to the v26.49.0 section: one Bug Fix.
Provisional dates are unchanged (Cloud 2026-11-05, Self-Managed
2026-11-06).

Draft with PR links:
https://github.com/MaterializeInc/mz-skills/blob/main/data/mz-release-notes/v26.49.0/rc.3/release_notes.md

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JqfkJZGjcpeg5eG5iNdqKH
v26.49.0 ships to Cloud on 2026-11-05, and v26.49.1 ships to Self-Managed
on 2026-11-06.

- Retitle the section v26.49.1 and mark its Cloud date as v26.49.0.
- Add the Console's Hydration tab and the Freshness page on Self-Managed
  to Improvements, and the clusters list's swap-in-Disk fix to Bug Fixes.
- Point the operator compatibility row at v26.49.1 and its #v26491 anchor.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Empty on purpose. The final snapshot of the v26.49.0 train carries no
entries: MaterializeInc/release#635 states "No PRs in v26.49.0 require
review", the compare v26.49.0-rc.3...v26.49.0 is the single version-bump
commit a14e1a0, and the agent-skills window
(2026-11-03T20:34:06Z, 2026-11-04T19:10:38Z] is empty.

The real dates (Cloud 2026-11-05, Self-Managed 2026-11-06) are already on
this branch: the v26.49.1 patch train reused this branch in 39e6b85 and
produced the combined "## v26.49.1" section the house convention calls for
when a patch ships in its parent's rollout week, with the Cloud version in
parentheses. The compatibility YAML likewise already carries the v26.49.1
row dated 2026-11-06.

This commit therefore touches no files; it exists so the branch's
commit-subject ledger records that the final snapshot was applied.

Two items still need the release owner, and are described in the PR body:
the conflict with main's own "## v26.49.0" section from #40201, and the
duplicate {#v26.49-improvements} anchor.
Adds the v26.49.0 section to doc/user/content/releases/_index.md and the
v26.49 row to the self-managed operator compatibility table.

Dates are provisional (Cloud 2026-11-05, Self-Managed 2026-11-06) and are
set for real by the final snapshot.

Draft with PR links:
https://github.com/MaterializeInc/mz-skills/blob/main/data/mz-release-notes/v26.49.0/rc.1/release_notes.md

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JqfkJZGjcpeg5eG5iNdqKH
Adds the rc.2 increment to the v26.49.0 section: one Improvement, a new
Agent Skills section, and one Bug Fix. Provisional dates are unchanged
(Cloud 2026-11-05, Self-Managed 2026-11-06).

Draft with PR links:
https://github.com/MaterializeInc/mz-skills/blob/main/data/mz-release-notes/v26.49.0/rc.2/release_notes.md

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JqfkJZGjcpeg5eG5iNdqKH
Adds the rc.3 increment to the v26.49.0 section: one Bug Fix.
Provisional dates are unchanged (Cloud 2026-11-05, Self-Managed
2026-11-06).

Draft with PR links:
https://github.com/MaterializeInc/mz-skills/blob/main/data/mz-release-notes/v26.49.0/rc.3/release_notes.md

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JqfkJZGjcpeg5eG5iNdqKH
v26.49.0 ships to Cloud on 2026-11-05, and v26.49.1 ships to Self-Managed
on 2026-11-06.

- Retitle the section v26.49.1 and mark its Cloud date as v26.49.0.
- Add the Console's Hydration tab and the Freshness page on Self-Managed
  to Improvements, and the clusters list's swap-in-Disk fix to Bug Fixes.
- Point the operator compatibility row at v26.49.1 and its #v26491 anchor.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Empty on purpose. The final snapshot of the v26.49.0 train carries no
entries: MaterializeInc/release#635 states "No PRs in v26.49.0 require
review", the compare v26.49.0-rc.3...v26.49.0 is the single version-bump
commit a14e1a0, and the agent-skills window
(2026-11-03T20:34:06Z, 2026-11-04T19:10:38Z] is empty.

The real dates (Cloud 2026-11-05, Self-Managed 2026-11-06) are already on
this branch: the v26.49.1 patch train reused this branch in 39e6b85 and
produced the combined "## v26.49.1" section the house convention calls for
when a patch ships in its parent's rollout week, with the Cloud version in
parentheses. The compatibility YAML likewise already carries the v26.49.1
row dated 2026-11-06.

This commit therefore touches no files; it exists so the branch's
commit-subject ledger records that the final snapshot was applied.

Two items still need the release owner, and are described in the PR body:
the conflict with main's own "## v26.49.0" section from #40201, and the
duplicate {#v26.49-improvements} anchor.
Keep the SQL Server Advisory and Improvements bullet from #40201 under
the v26.49.1 heading, and drop the duplicate SQL Server bug fix line.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
### Advisory {#v26.49-advisory}

- **Query plans may change when a SQL Server source table is re-created**: Starting with this release, a table created from a SQL Server source records at most one key, the `PRIMARY KEY` or `UNIQUE` constraint behind its CDC capture instance's index (see [Unique keys](/ingest-data/sql-server/#unique-keys)). Tables created before this release keep the keys they recorded at creation. If a re-created table had other `PRIMARY KEY` or `UNIQUE` constraints, views, indexes, and materialized views that depend on it can get a different plan, for example a `DISTINCT` over the columns of a no longer recorded constraint is kept instead of removed, and may use more memory or CPU as a result. Query results do not change. Before dropping a `PRIMARY KEY` or `UNIQUE` constraint that the capture instance does not use from a table created before this release, re-create the table in Materialize.
**Query plans and performance may change if a SQL Server source table is re-created**: Starting with this release, a table created from a SQL Server source records at most one key, the `PRIMARY KEY` or `UNIQUE` constraint behind its CDC capture instance's index. Previously, Materialize recorded every `PRIMARY KEY` and `UNIQUE` constraint on the upstream table. See [Unique keys](/ingest-data/sql-server/#unique-keys) to understand more.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@val-materialize could I get your eyes on this one? I changed the wording from the original note because I couldn't understand it!

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Happy to keep your wording. The one thing it misses: older tables still keep the extra keys, so they can return wrong results if one of those constraints is dropped upstream. Can you add a line like: “Tables created before this release keep every key they recorded. Before dropping a PRIMARY KEY or UNIQUE constraint that the capture instance does not use from one of these tables, re-create the table in Materialize.”

@maheshwarip
maheshwarip enabled auto-merge (squash) November 6, 2026 15:50
maheshwarip and others added 3 commits November 6, 2026 10:50
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@maheshwarip
maheshwarip merged commit 5388370 into main Nov 6, 2026
11 checks passed
@maheshwarip
maheshwarip deleted the docs/v26.49.0-release-notes branch November 6, 2026 16:00
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.

4 participants