Skip to content

[pull] main from MaterializeInc:main - #1363

Merged
pull[bot] merged 2 commits into
transparencies:mainfrom
MaterializeInc:main
Sep 8, 2026
Merged

pull[bot] merged 2 commits into
transparencies:mainfrom
MaterializeInc:main

Conversation

@pull

@pull pull Bot commented Sep 8, 2026 •

Copy link
Copy Markdown

See Commits and Changes for more details.


Created by pull[bot] (v2.0.0-alpha.4)

Can you help keep this open source service alive? 💖 Please sponsor : )

aljoscha and others added 2 commits September 8, 2026 15:40
### Motivation

Related to [CPU-247](https://linear.app/materializeinc/issue/CPU-247).

The cleanup test's `count(*)` assertions are slow-path queries. They
create transient dataflows and can observe those dataflows' operators,
so a nonempty result does not establish that the dropped index is still
alive. Introspection lag can also expose operators from preceding polls.

### Description

Use fast-path peeks for every operator check. Empty-set checks select
operator IDs and names, which also makes failures diagnostic. Presence
checks select `true` with `LIMIT 1`.

The test still requires all compute operators to disappear. No timeout
increase, additional filtering, or product cleanup changes.

### Verification

- `EXPLAIN` confirms both replacement query shapes use the fast path.
The original aggregation does not.
- On an otherwise empty replica, executing the original aggregation at
an explicit timestamp 500 ms ahead returned `true`. The replacement
empty-set query at a similarly future timestamp returned no rows.
Holding the aggregation open exposed `Dataflow: oneshot-select-...` and
its operators.
- The modified `dataflow-cleanup.td` passes five full runs from fresh
environments with `--default-size=1`.
- The original test passed once, and its index create/drop sequence
passed 100 fresh-replica iterations without reproducing the historical
failure.
- Repository whitespace and copyright checks pass.

The historical CI failures are not conclusively attributed: their logs
only contain the boolean result, and transient creation is logged below
the captured INFO level. This removes a demonstrated observer effect
rather than claiming a proven index teardown leak.
…38524)

### Motivation

Part of: [SS-464](https://linear.app/materializeinc/issue/SS-464)

Dropping an upstream `UNIQUE` or `PRIMARY KEY` constraint permanently
stalls the corresponding Materialize table today. We want to make it
possible to change upstream constraints without causing downtime in
Materialize.

### Description
Add options to ignore constraints (gated behind
`enable_exclude_constraints_option`):
- `EXCLUDE CONSTRAINTS ('<constraint_name>', ... ): Given a list of
constraint names, filter out constraints matching those names at
purification.
- `EXCLUDE ALL CONSTRAINTS`: Exclude all constraints during
purification.

For context, during purification we previously recorded the set of
constraints present on the table, which we later use to identify
constraint changes and produce a definite error if a constraint changes
unexpectedly.

### Verification
Lack of regression validated by existing test suite. Feature-specific
testing in follow-up PR.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
@pull pull Bot locked and limited conversation to collaborators Sep 8, 2026
@pull pull Bot added the ⤵️ pull label Sep 8, 2026
@pull
pull Bot merged commit 8b1c640 into transparencies:main Sep 8, 2026
1 of 4 checks passed
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants