v26.40.0 release notes - #38552
Open
bosconi wants to merge 4 commits into
Open
Conversation
Adds the v26.40.0 section to doc/user/content/releases/_index.md and a v26.40 row to the self-managed operator compatibility table. Dates are provisional (Cloud 2026-09-03, Self-Managed 2026-09-04), estimated from the release cadence; the final snapshot sets the real ones. Draft with PR links: https://github.com/MaterializeInc/mz-skills/blob/main/data/mz-release-notes/v26.40.0/rc.1/release_notes.md Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Adds the rc.2 increment: one bug fix, the `ALTER MATERIALIZED VIEW ... APPLY REPLACEMENT` stale expression-cache crash loop (#38545). Provisional dates are unchanged from rc.1 (Cloud 2026-09-03, Self-Managed 2026-09-04) — both are anchored on the v26.40.0-rc.1 tag's commit date, and the first Thursday strictly after it has not yet passed, so the operator-compatibility table needs no edit this snapshot.
Adds the rc.3 increment to the v26.40.0 section: one Agent Skills entry (mz-optimize-memory) and one Bug Fixes entry (MCP servers rejecting requests that carry params). Provisional dates are unchanged (Cloud 2026-09-03, Self-Managed 2026-09-04).
The final snapshot adds no entries: `v26.40.0` is one commit ahead of `v26.40.0-rc.3`, and that commit is the version bump. The release's 19 published entries all landed in the rc.1, rc.2, and rc.3 increments. Its substantive job is the dates. Replace the provisional pair the three RC snapshots carried (Cloud 2026-09-03, Self-Managed 2026-09-04, anchored on the rc.1 tag) with the real pair inferred from the `v26.40.0` tag's commit date: Cloud 2026-09-02, Self-Managed 2026-09-03. The train shipped a day earlier than the cadence estimate, as v26.37.0, v26.38.0, and v26.39.0 each did.
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.
Release notes for the v26.40.0 train. Dates in RC snapshots are provisional until the release ships. One commit is added per snapshot; the final snapshot sets the real dates.
Applied so far:
rc.1,rc.2,rc.3,final— the train is complete.finaladds no entries:v26.40.0is exactly one commit ahead ofv26.40.0-rc.3, and that commit is the version bump. Nothing shipped between the last RC and the release tag, so the increment is genuinely empty rather than a gap; the release's 19 published entries all live in therc.1,rc.2, andrc.3increments.Dates are now real, not provisional — please confirm them. Cloud 2026-09-02, Self-Managed 2026-09-03. No dates were supplied, so these come from the
v26.40.0tag's commit date (2026-09-02T17:06:24Z) and+1 day. Two checks support them: v26.39.0's tag date was exactly its published Cloud date, and the+1Self-Managed offset matches v26.39.0, v26.37.0, v26.35.0, and v26.33.0. They supersede the provisional pair (Cloud 2026-09-03 / Self-Managed 2026-09-04) that all three RC snapshots carried, anchored on therc.1tag. The release shipped one day earlier than the cadence estimate — the directionrc.1predicted, since v26.37.0, v26.38.0, and v26.39.0 each did the same.Merge ordering — this PR currently conflicts with
main, by design of how the branch was cut. It was branched from amainthat contained none of the v26.38.0, v26.38.1, or v26.39.0 sections, so## v26.40.0sits directly above## v26.38.2here. Since then #38204 (v26.38.0) and #38383 (v26.39.0) have merged, andmainnow opens with## v26.39.0— hence the conflict. #38365 (v26.38.1) is still open, so resolving the conflict now would only reintroduce it when that PR merges. The resolution is mechanical and belongs to whichever of these merges last:## v26.40.0must end up above all of those sections, and its operator-compatibility row at the top ofrows:. Left unresolved deliberately rather than by oversight.For the release owner — decisions worth a look before merge.
rc.3's narrowed bug fix is the correct final statement.rc.3published mcp: accept and ignore params on tools/list so clients sending _meta work (MZC-59) #38558, the second of two MZC-59 commits, but not mcp: return 202 for notifications so MCP SDK clients complete the handshake (MZC-59) #38556 ("return 202 for notifications so MCP SDK clients complete the handshake"), and deliberately narrowed its entry to the transport-level fact that build delivers, naming no client as fixed. The open question was whether mcp: return 202 for notifications so MCP SDK clients complete the handshake (MZC-59) #38556 would land in anrc.4or infinal. It did not: nov26.40.0-rc.4tag exists, the final tag adds only the version bump, and mcp: return 202 for notifications so MCP SDK clients complete the handshake (MZC-59) #38556 is still not an ancestor of it. So no supersession and no merged bullet — the entry stands as written. MZC-59 remains open for SDK-based MCP clients such as Codex in v26.40.0 and should carry to a later train.rc.3could not settle at the time. agent-skills#55 flagged that its claim aboutmz_dataflow_arrangement_sizeson pre-v26.40 servers assumed mcp: correct the developer endpoint's mz_introspection guidance #38462 would ship in v26.40, when no v26.40 tag yet existed. The tag now exists and mcp: correct the developer endpoint's mz_introspection guidance #38462 is an ancestor of it, so themz-optimize-memoryentry needs no change. mcp: correct the developer endpoint's mz_introspection guidance #38462 itself stays omitted —rc.1classified it Borderline as instruction text with no server behavior change, and seeing the whole release does not disturb that call.grep -rn "ACCESS DELEGATION\|OAUTH2 SERVER URL" doc/user/content/returns nothing, thoughdoc/user/content/sql/create-connection.mdis where they belong. The feature section is published anyway because the SQL surface is reachable, unflagged, and tested against a real catalog — but if the docs are not landing in this release, hold the section for the release that documents them.CREATE TABLE ... FROM SOURCEnow requiresSELECTon the source andUSAGEon its schema. It is published as a bug fix; you may want it called out more prominently than the Bug Fixes list, since affected admins have to grantSELECTbefore upgrading.rc.2's recovery path is deliberately not in the release note. adapter: invalidate expression cache on MV replacement apply #38545 fixes the root cause of a production incident in whichenvironmentdentered a deterministic crash loop. A deployment that applied a replacement on v26.39.x or earlier keeps the stale cache entries until it upgrades, and one already crash-looping needs anenable_expression_cache=falseboot to come up at all. Consider whether the upgrade guide or a support note should carry that.rc.1pending a call on whether their flags are on in production:CREATE METRIC SINK(enable_metric_sink,falseat the tag), object hydration history (hydration_history_collection_interval,Duration::ZERO, which disables collection), hedged persist blob gets (persist_blob_hedged_get_enabled,false), three upsert/batcher spill optimizations (enable_column_paged_batcher/enable_upsert_chunked_stash/enable_upsert_paged_spill, allfalse), the columnar merge batcher (enable_columnar_merge_batcher,false), the peek row-iteration limit (enable_compute_peek_row_iteration_limit,false), parallel MySQL snapshots (mysql_source_snapshot_parallelism,false), and Console cluster-list usage metrics (usage-metrics-in-cluster-list-CNS121, off). No published entry in any snapshot is behind an off-by-default flag.mainmerge, but v26.39.0rc.2already published it (v26.39.0 release notes #38383), so restating it under v26.40.0 would show the reader the same fix twice in_index.md. Override if you would rather it appear here.mz-optimize-memorythenmcp-developer-analysis— newest increment first, an artifact of each snapshot prepending into the existing list. Both entries are correct; flagging only in case you prefer them reordered before merge.rc.123 of 86 PRs (26.7% — a property of a small single-week denominator carrying two penetration-test security fixes, a GA graduation, and two multi-PR capabilities, not a loosened bar);rc.21 of 1;rc.32 of 4;final0 of 3.finalStep 5 verification pass ran in its widened form over all four snapshot directories and the assembled section on this branch, since the increment had no entries of its own: 0 cut, 0 rewritten, 0 merged. All 19 published entries stand as reviewed, and no RC-time Borderline call flipped when re-read with the full release in view.Snapshot drafts (with PR links) in mz-skills:
Borderline PRs omitted: rc.1: 17 — review borderline calls, rc.2: 0 — none, rc.3: 0 — none, final: 0 — none