You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
sql: graduate the bounded staleness isolation level (#38414)
### Motivation
`bounded staleness <duration>` shipped in v26.29 behind
`enable_bounded_staleness_isolation`, which has been defaulting on
since. The
level is documented as public preview and still carries the gating
machinery
that a preview needs. This graduates it: the flag goes away and the docs
drop
the preview annotation, so bounded staleness is a supported part of the
`transaction_isolation` surface.
### Description
* Removes `enable_bounded_staleness_isolation` from the feature-flag
table.
`check_transaction_isolation_feature_flag` now gates only `strong
session
serializable`, which is still flagged behind `enable_session_timelines`.
The
shared check and the session-default scrub in `command_handler`
therefore
stay in place; only the bounded staleness arm and the comment's example
change.
* An environment that persisted the removed parameter via `ALTER SYSTEM`
is
unaffected: an unknown system parameter in catalog storage is warned
about
and ignored at startup (`catalog/apply.rs`, `catalog/open.rs`).
* Drops `{{< public-preview />}}` and the **Public preview.** cell from
the
isolation-level reference. The `{{< if-released "v26.29" >}}` guards are
kept,
since older Self-Managed versions still lack the level entirely.
* Parallel workload no longer gates `BoundedStalenessReadAction` on the
flag or
flips the flag, and the flag leaves the LaunchDarkly consistency
allowlist
(it never had an LD flag, so it was listed under
`KNOWN_MISSING_FROM_LD`).
Not included: a release-note entry in
`doc/user/content/releases/_index.md`.
That file has no section for the in-flight version, so the GA note
belongs with
the release-notes commit for whichever release this lands in.
### Verification
* `test/sqllogictest/bounded_staleness.slt` loses the feature-flag
sections and
keeps the role-default coverage: `ALTER ROLE ... SET` of the level, and
a
fresh session picking it up as its starting isolation.
* `test/testdrive/bounded-staleness.td` no longer enables the flag; the
happy-path coverage is otherwise unchanged.
* The `mz-sql` unit test for the shared isolation gate now exercises
`strong
session serializable` (rejected with the flag off, accepted with it on)
and
asserts bounded staleness passes ungated.
Release note: This release makes the bounded staleness isolation level
generally available.
---
_Generated by [Claude
Code](https://claude.ai/code/session_01PfeCp5oXaZ9RayUSdD5aJb)_
Co-authored-by: Claude <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: doc/user/content/reference/isolation-level.md
+1-3Lines changed: 1 addition & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -33,7 +33,7 @@ against Materialize:
33
33
| --- | --- |
34
34
|[**Strict Serializable**](#strict-serializable)|**Default.** Provides serializability and linearizability. |
35
35
|[**Serializable**](#serializable)| Provides serializability but not linearizability. |
36
-
|[**Bounded Staleness `<duration>`**](#bounded-staleness)|**Public preview.**Serves reads at a timestamp at most `<duration>` stale; never blocks, errors if the bound cannot be met. |
36
+
|[**Bounded Staleness `<duration>`**](#bounded-staleness)| Serves reads at a timestamp at most `<duration>` stale; never blocks, errors if the bound cannot be met. |
37
37
| Read Uncommitted, Read Committed, Repeatable Read | Accepted for compatibility; treated as Serializable. |
38
38
{{< /if-released >}}
39
39
@@ -156,8 +156,6 @@ made available to us (e.g., querying PostgreSQL for the replication slot's LSN).
156
156
{{< if-released "v26.29" >}}
157
157
## Bounded Staleness
158
158
159
-
{{< public-preview />}}
160
-
161
159
The Bounded Staleness isolation level lets you trade exact freshness for
162
160
predictable latency. A query under bounded staleness is served at a timestamp
163
161
that is at most `<duration>` stale—but never blocks waiting for input
0 commit comments