Repository navigation
[pull] main from MaterializeInc:main - #1419
Merged
Merged
Conversation
Bumps [itertools](https://github.com/rust-itertools/itertools) from 0.14.0 to 0.15.0. <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/rust-itertools/itertools/blob/master/CHANGELOG.md">itertools's changelog</a>.</em></p> <blockquote> <h2>0.15.0</h2> <h3>Breaking</h3> <ul> <li>Restructure <code>Position</code> as struct instead of enum (<a href="https://redirect.github.com/rust-itertools/itertools/issues/1042">#1042</a>, <a href="https://redirect.github.com/rust-itertools/itertools/issues/1043">#1043</a>)</li> <li>Canonicalize <code>all_equal_value</code>'s error type (<a href="https://redirect.github.com/rust-itertools/itertools/issues/1032">#1032</a>)</li> </ul> <h3>Added</h3> <ul> <li>Add <code>*_with_hasher</code> adaptors (<a href="https://redirect.github.com/rust-itertools/itertools/issues/1007">#1007</a>)</li> <li>Add strip_prefix and strip_prefix_by methods (<a href="https://redirect.github.com/rust-itertools/itertools/issues/1104">#1104</a>)</li> </ul> <h3>Changed</h3> <ul> <li>Remove <code>Clone</code> bounds from <code>tuple_combinations</code> and <code>array_combinations</code>(<a href="https://redirect.github.com/rust-itertools/itertools/issues/1011">#1011</a>)</li> <li><code>must_use</code> for <code>collect_vec</code> (<a href="https://redirect.github.com/rust-itertools/itertools/issues/1009">#1009</a>)</li> <li>Make <code>izip!</code> temporary friendly (<a href="https://redirect.github.com/rust-itertools/itertools/issues/1021">#1021</a>)</li> <li>Add <code>array_combinations_with_replacement</code> (<a href="https://redirect.github.com/rust-itertools/itertools/issues/1033">#1033</a>)</li> <li>Implement <code>Debug</code> for remaining public types (<a href="https://redirect.github.com/rust-itertools/itertools/issues/1038">#1038</a>)</li> <li>Specialize <code>ExactlyOneError::count</code> (<a href="https://redirect.github.com/rust-itertools/itertools/issues/1046">#1046</a>)</li> <li>Implement <code>PeekingNext</code> for more types, in particular <code>vec::IntoIter</code> (<a href="https://redirect.github.com/rust-itertools/itertools/issues/1059">#1059</a>, <a href="https://redirect.github.com/rust-itertools/itertools/issues/1073">#1073</a>)</li> <li>Fix <code>PadUsing::next_back</code> (<a href="https://redirect.github.com/rust-itertools/itertools/issues/1082">#1082</a>)</li> <li>Introduce <code>[circular_]array_windows</code>, deprecate <code>tuple_windows</code> (<a href="https://redirect.github.com/rust-itertools/itertools/issues/1086">#1086</a>)</li> <li>Deprecate <code>tuple_combinations</code> (replaced by <code>array_combinations</code>) (<a href="https://redirect.github.com/rust-itertools/itertools/issues/1085">#1085</a>)</li> </ul> <h3>Notable Internal Changes</h3> <ul> <li>Make <code>into_group_map</code> code more idiomatic (<a href="https://redirect.github.com/rust-itertools/itertools/issues/1027">#1027</a>)</li> <li>Fix clippy lints (<a href="https://redirect.github.com/rust-itertools/itertools/issues/1017">#1017</a>, <a href="https://redirect.github.com/rust-itertools/itertools/issues/1029">#1029</a>, <a href="https://redirect.github.com/rust-itertools/itertools/issues/1076">#1076</a>, <a href="https://redirect.github.com/rust-itertools/itertools/issues/1099">#1099</a>)</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/rust-itertools/itertools/commit/37bd72aa6d58e594711d127b52418ca5e58b6091"><code>37bd72a</code></a> Update CHANGELOG.md: strip_prefix[_by]</li> <li><a href="https://github.com/rust-itertools/itertools/commit/86ec6359258e57a8af391fafc645d6ffab363bff"><code>86ec635</code></a> Use <code>ControlFlow</code> in <code>fold_while</code> implementation</li> <li><a href="https://github.com/rust-itertools/itertools/commit/d5897f7bb2283a34b736f539a369fe16dc9f6bb4"><code>d5897f7</code></a> refactor(strip_prefix): use try_for_each and drop PartialEq, Eq on StripPrefi...</li> <li><a href="https://github.com/rust-itertools/itertools/commit/b2a978abca1dc57f929f60e0be16d83e58f9558f"><code>b2a978a</code></a> feat(Itertools): add strip_prefix and strip_prefix_by methods</li> <li><a href="https://github.com/rust-itertools/itertools/commit/12b6ec6f91eb83eebe4ac150e53aca14365cd894"><code>12b6ec6</code></a> Update CHANGELOG.md for all_equal_value_error's error type</li> <li><a href="https://github.com/rust-itertools/itertools/commit/121821ed16365a39c015449a3872708fd5dcdfdd"><code>121821e</code></a> AllEqualValueError implements std::error::Error</li> <li><a href="https://github.com/rust-itertools/itertools/commit/adac44e4278b087033d23408652e540aef5b22f0"><code>adac44e</code></a> Introduce AllEqualValueError</li> <li><a href="https://github.com/rust-itertools/itertools/commit/5707384b6a3a675c65e12b96e71335e9ce857b16"><code>5707384</code></a> Update CHANGELOG.md</li> <li><a href="https://github.com/rust-itertools/itertools/commit/df60ff016bf31f5752827808b375d36b0a101e33"><code>df60ff0</code></a> Update CHANGELOG.md</li> <li><a href="https://github.com/rust-itertools/itertools/commit/113b850b9d68406dda7c428d31992002c77eebad"><code>113b850</code></a> Update CHANGELOG.md to include with_hasher</li> <li>Additional commits viewable in <a href="https://github.com/rust-itertools/itertools/compare/v0.14.0...v0.15.0">compare view</a></li> </ul> </details> <br /> > **Note** > Automatic rebases have been disabled on this pull request as it has been open for over 30 days. Co-authored-by: Moritz Hoffmann <antiguru@gmail.com> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…ction (#39300) ## Motivation Both listeners build a new `SslConnector` for every connection they proxy over TLS to environmentd. `SslConnector::builder` loads and parses the system CA bundle into a new X509 store, and the connection holds that store for its whole lifetime. Verification is disabled on the next line, so the store is never used. That makes memory use per connection much higher than it needs to be, and it spends CPU parsing PEM on every connection. CPU profiles of balancerd show certificate parsing (`PEM_read_bio`, `d2i_X509`, `X509_load_cert_crl_file_ex`, reached through `SslConnector::builder` → `set_default_verify_paths`) as a noticeable share of connection setup. ## Solution Build the connector once in `BalancerService::serve` and share it with both listeners. `internal_tls` goes from `bool` to `Option<SslConnector>`. Cloning it only shares the reference-counted context. Each connection now just calls `configure()?.into_ssl(addr)`. A failure to build the connector is now a startup error rather than a per-connection `expect`. ## Testing No tests are added. The existing balancerd tests cover the internal-TLS pgwire and HTTPS paths. I measured the memory cost per connection locally, running the `balancerd` binary with `--internal-tls` in front of a TLS upstream. I opened N HTTPS connections, held them, and sampled RSS at each step. Both builds are from this branch, with and without the change. | held connections | before | after | | --- | --- | --- | | 250 | +207 MiB | +24 MiB | | 500 | +408 MiB | +42 MiB | | 1000 | +808 MiB | +78 MiB | | 1500 | +1,208 MiB | +114 MiB | That is about 824 KiB per connection before and about 75-100 KiB after. These numbers are from a debug build on macOS with the system allocator, with `SSL_CERT_FILE` pointed at a real CA bundle. The vendored OpenSSL does not find macOS's bundle on its own. The connections were idle, so buffers under real traffic add some on top. These numbers differ drastically with production, but the rough shape of the improvement should hold. ## Notes for the reviewer - Behavior is unchanged: the same `SslMethod::tls()` connector with `SslVerifyMode::NONE`, and the same SNI and hostname passed to `into_ssl`. Clients do not share TLS sessions, since OpenSSL's session cache is off on the client side by default. - A lower cost per connection also leaves more headroom under `balancerd_max_connections` for a given memory limit. 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
SQLAlchemy 2.1 (bumped in #39281) connects a plain `postgresql://` URL through psycopg 3. That dialect's first connect sends `SAVEPOINT`, which Materialize doesn't support, so `test_sqlalchemy` has failed in every nightly since. This PR names the psycopg2 driver in the test's `create_engine` URL, which restores what the test covered on SQLAlchemy 2.0. The other tests keep the plain libpq URL. The user-facing problem with psycopg 3 is tracked in [SQL-483](https://linear.app/materializeinc/issue/SQL-483). Modified test: `test_sqlalchemy` in `test/lang/python/smoketest.py`. It runs only in the nightly (`:python:`), not in PR CI. Closes: [QAR-212](https://linear.app/materializeinc/issue/QAR-212) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
SQLAlchemy 2.1 (released 2026-09-24) connects plain `postgresql://` URLs through psycopg 3, and that path fails against Materialize on first connect with `Expected a keyword at the beginning of a statement, found identifier "savepoint"` (tracked in [SQL-483](https://linear.app/materializeinc/issue/SQL-483) and [SQL-736](https://linear.app/materializeinc/issue/SQL-736)). Our docs don't mention SQLAlchemy anywhere. This adds a SQLAlchemy section to the Python cheatsheet, under "Python ORMs": connect with the `psycopg2` driver (`postgresql+psycopg2://`), the error users see otherwise, and the psycopg 3 workaround (`use_native_hstore=False`). The client-libraries table links to it. Both the snippet and the workaround were run against v26.44.0-rc.1 with SQLAlchemy 2.1.1. 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…#39332) Problem: The curated `mz_metric_arrangement_sizes` sink folded operators of dataflows without a catalog export (its own dataflow, the introspection subscribes, the logging dataflows) into an `unattributable` series. That put the sink's own arrangement sizes on its input: every change to its arrangements changed their logged size, which it read on the next logging tick, so the whole dataflow re-ran every tick for the replica's lifetime. Across the 41 replicas that the kafka-matrix creates, it pushed over capacity, and after a restart the catalog server's indexes took minutes to hydrate, so the status checks timed out. Solution: Count only dataflows with a non-transient export. Map each operator to its export before joining the raw logs, and join each raw log through its existing index, so no arrangement the sink owns ever holds rows about its own operators. The attributed series are unchanged. The `unattributable` series is gone. Testing: Re-enable the curated sinks in kafka-matrix. Fixes [SQL-730](https://linear.app/materializeinc/issue/SQL-730).
Problem: `ALTER SYSTEM SET disabled_metric_sinks = ''` panicked the coordinator. The value parsed as a single empty identifier, which is stored as `""`. Re-parsing that from the catalog fails, and the apply path panics. Solution: a lone '' now parses as the empty list. An empty identifier mixed with other values, like 'a', '', is rejected at SET time. Testing: a unit test checks that `Vec<Ident>` values survive the catalog round-trip, and vars.slt sets disabled_metric_sinks to ''. Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
dynfmt 0.2 adds `format_into` and updates its dependencies, without parser changes. It moves to erased-serde 0.4 and thiserror 2, so the erased-serde 0.3.26 skip in deny.toml goes away. Posted by Claude Code. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
mz-deploy uses crossterm only for cursor and screen control, which 0.29 leaves unchanged. crossterm moves to rustix 1. Posted by Claude Code. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
junit-report 0.9 moves to the workspace's quick-xml and drops strip-ansi-escapes, which 0.8 applied only to system-out and system-err. testdrive, sqllogictest and mz-deploy set neither. With quick-xml 0.31 gone, deny.toml loses both quick-xml skips and the RUSTSEC-2026-0194 and RUSTSEC-2026-0195 ignores. Posted by Claude Code. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
mz-testdrive moves to similar 3, which similar-asserts 2 already uses. insta 1.48, the latest release, still depends on similar 2, so deny.toml skips similar 2.7.0. Posted by Claude Code. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Replaces #39273. Takes its minor and patch updates and reformats sources for prettier 3.9. Deduplicating `@codemirror/*` keeps one `@codemirror/language` instance. Otherwise lang-json nests its own copy and breaks the `LanguageSupport` types. Held back because they need code changes or break tests: * @codemirror-toolkit/react 0.7 removes `createCodeMirrorWithContext`. * kysely 0.29 and kysely-codegen 0.20 change the query builder types. * msw 2.15, downshift 9.4, react-hook-form 7.88 and @frontegg/react 7.17 tighten types that existing code relies on. * jotai-devtools 0.14 requires jotai 2.20, and jotai 2.20 fails about a fifth of the unit tests. * eslint-plugin-react-refresh 0.5 requires a flat ESLint config and moves with the ESLint update. *Posted by Claude Code.* 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Replaces #36594. TypeScript 6 deprecates `baseUrl`. Every `paths` entry is already relative to the tsconfig, so the only dependent was a bare `types/materialize` import, which now uses the `~/types` alias. TypeScript 6 also checks side-effect imports by default, so the stylesheet-only `@fontsource/roboto-mono` package needs a declaration. *Posted by Claude Code.* 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Replaces #35735 and #36593. @hookform/resolvers 5 imports `zod/v4/core`, which only zod 3.25 and later provide, so both move together. Zod 4 replaces `required_error` and `errorMap` with the `error` option. The query history date range schema moves its custom refine message to `error` as well. *Posted by Claude Code.* 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
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 subscribe to this conversation on GitHub.
Already have an account?
Sign in.
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.
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 : )