dependabot[bot] opened a new pull request, #45321: URL: https://github.com/apache/superset/pull/45321
Bumps [clickhouse-connect](https://github.com/ClickHouse/clickhouse-connect) from 1.9.0 to 1.10.0. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/ClickHouse/clickhouse-connect/releases">clickhouse-connect's releases</a>.</em></p> <blockquote> <h2>v1.10.0</h2> <h2>clickhouse-connect v1.10.0</h2> <h3>Rust codec performance</h3> <ul> <li>NumPy and Pandas queries no longer require PyArrow. This covers buffered and streamed results and <code>query(..., use_numpy=True)</code>. Strings use Arrow conversion when available and Rust object conversion otherwise. Invalid UTF-8 keeps its hex rendering. Explicit Arrow output and Arrow storage still require PyArrow.</li> <li>Supported numeric, Boolean, BFloat16, Interval, date, timestamp, and time columns now convert directly from decoded buffers. Selected nullable, Array, and LowCardinality shapes also use this path. Existing output dtypes stay unchanged, apart from the nanosecond correction described below.</li> <li>Large response chunks now feed the decoder in bounded slices, reducing temporary copies and peak memory for large NumPy, Pandas, and Python results.</li> </ul> <h3>Client improvements</h3> <ul> <li>DB-API connections and cursors now support <code>with</code> blocks. They close on normal and exceptional exit. Connection contexts don't manage transactions thus <code>commit()</code> and <code>rollback()</code> are still no-ops.</li> <li>Async Arrow inserts move DataFrame conversion and Arrow encoding to a dedicated client worker, reducing event-loop stalls. <a href="https://redirect.github.com/ClickHouse/clickhouse-connect/issues/1054">#1054</a></li> <li>Large async external-data uploads use bounded writes to reduce event-loop stalls during TLS encryption. Upload payloads are replayable for eligible retries. <a href="https://redirect.github.com/ClickHouse/clickhouse-connect/issues/1057">#1057</a></li> </ul> <h3>Query and insert fixes</h3> <ul> <li><code>QueryResult.result_rows</code> works after materializing <code>result_columns</code>, including async queries with <code>column_oriented=True</code>.</li> <li>Dynamic shared-storage values and JSON paths beyond <code>max_dynamic_types</code> decode supported compound and scalar values to Python objects. Nullable defaults and typed JSON null paths work, and DataFrame results retain the decoded objects. <a href="https://redirect.github.com/ClickHouse/clickhouse-connect/issues/1070">#1070</a></li> <li>Internal <code>DESCRIBE TABLE</code> requests get their own query ID. Inserts retain the caller's ID, avoiding <code>QUERY_WITH_SAME_ID_IS_ALREADY_RUNNING</code> errors. <a href="https://redirect.github.com/ClickHouse/clickhouse-connect/issues/1066">#1066</a></li> <li>After a remote close or HTTP 429/503/504, SQL execution retries only recognized reads. Writes, DDL, mutations, <code>SET</code>, <code>USE</code>, and <code>CHECK TABLE</code> aren't replayed. This also applies through DB-API and SQLAlchemy. Read retries and insert API retries are still available. <a href="https://redirect.github.com/ClickHouse/clickhouse-connect/issues/1079">#1079</a></li> </ul> <h3>Streaming and temporal fixes</h3> <ul> <li>Synchronous Native response cleanup waits for active reads and drains partially consumed HTTP chunks through the same parser. Early Rust stream closure drains the response before releasing its iterator, avoiding premature closure and subsequent <code>SESSION_IS_LOCKED</code> errors.</li> <li>Rust cleanup releases each response source once, handles closure during read-ahead startup, and releases decoder workers after cancelled pending reads.</li> <li>Async Rust stream cleanup finishes before cancellation is re-raised.</li> <li>Rust NumPy and Pandas results preserve nanoseconds in nullable scalar <code>DateTime64(9)</code> columns, including <code>SimpleAggregateFunction</code> aliases. Unsupported scalar precisions now fail consistently.</li> <li>Nullable <code>SimpleAggregateFunction</code> aliases of <code>Time64</code> return correct durations and <code>NaT</code> for NULL values.</li> </ul> <h3>SQLAlchemy and Alembic fixes</h3> <ul> <li>Importing the dialect preserves another provider's <code>clickhouse://</code> registration. Generated schema metadata and Alembic revisions use <code>clickhousedb_*</code> options so copies and migrations work with both drivers installed. <a href="https://redirect.github.com/ClickHouse/clickhouse-connect/issues/1074">#1074</a></li> <li><code>GROUP BY</code> uses aliases only for matching top-level expressions selected by the query. Unselected and nested expressions render in full. <a href="https://redirect.github.com/ClickHouse/clickhouse-connect/issues/1062">#1062</a></li> <li><code>Nullable()</code> and <code>LowCardinality()</code> preserve the wrapped type in their return annotations. <a href="https://redirect.github.com/ClickHouse/clickhouse-connect/issues/1033">#1033</a></li> <li>Alembic accepts reflected <code>AggregateFunction</code> state versions when metadata omits the version, including nested types. Explicit versions still detect changes; legacy unversioned states match explicit version <code>0</code>.</li> </ul> <h2>Installation</h2> <pre lang="bash"><code>pip install clickhouse-connect </code></pre> <p>For the experimental Rust codec:</p> <pre lang="bash"><code>pip install "clickhouse-connect[rust]" </code></pre> <p>The Rust extra requires <code>clickhouse-connect-core>=0.2.1,<0.3</code>. The driver checks both binding and column-buffer APIs and reports upgrade guidance for older wheels.</p> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/ClickHouse/clickhouse-connect/blob/main/CHANGELOG.md">clickhouse-connect's changelog</a>.</em></p> <blockquote> <h2>1.10.0, 2026-10-07</h2> <h3>Improvements</h3> <ul> <li>The DB-API <code>Connection</code> and <code>Cursor</code> now support the context manager protocol, so <code>with connect(...) as connection:</code> and <code>with connection.cursor() as cursor:</code> work. Both call <code>close()</code> when the block exits, including when it raises. Connection contexts don't manage transactions. The DB-API <code>commit</code> and <code>rollback</code> remain no-ops.</li> <li>Rust codec NumPy and Pandas queries no longer require PyArrow. This includes buffered and streamed results and <code>query(..., use_numpy=True)</code>. Pandas strings use the Arrow conversion when PyArrow is installed and the Rust object conversion otherwise. Invalid UTF-8 keeps its existing hex rendering. Explicit Arrow storage and Arrow methods still require PyArrow.</li> <li>The Rust codec now converts non-nullable 8-64-bit integers, Float32/64, Boolean, BFloat16, Interval, Date/Date32, DateTime/DateTime64, and Time/Time64 columns to NumPy/Pandas directly from its decoded buffers. Nullable BFloat16 and Time/Time64 also use direct buffers, as do arrays of Time/Time64 and LowCardinality(Time). Extended Pandas nullable integer, float, and Interval output uses direct buffers as well. Output dtypes are unchanged.</li> <li>The Rust codec now feeds large response chunks to the decoder in bounded slices. This reduces temporary decoder copies and the number of decoded blocks held during conversion, lowering peak memory for large <code>query_np</code>, <code>query_df</code>, and <code>query()</code> results. Output is unchanged.</li> </ul> <h3>Bug Fixes</h3> <ul> <li>Alembic autogeneration now accepts server-pinned <code>AggregateFunction</code> state versions when metadata omits the version, including nested types. Explicit metadata versions still detect state version changes. Reflected legacy states match an explicit version <code>0</code>.</li> <li>Importing the SQLAlchemy dialect no longer replaces another provider's <code>clickhouse://</code> registration, including <code>clickhouse-sqlalchemy</code>. Generated schema metadata and Alembic revisions use <code>clickhousedb_*</code> options so metadata copies and migrations work with both packages installed. Closes <a href="https://redirect.github.com/ClickHouse/clickhouse-connect/issues/1074">#1074</a>.</li> <li><code>QueryResult.result_rows</code> now works after reading <code>result_columns</code>. Previously, accessing rows after materializing columns raised <code>StreamClosedError</code> even though the data was already cached. This also affected <code>AsyncClient.query()</code> with <code>column_oriented=True</code>, where <code>result_rows</code> always failed.</li> <li>After a remote connection close or HTTP 429/503/504, <code>command()</code>, <code>query()</code>, <code>raw_query()</code>, and <code>raw_stream()</code> now replay only statements the client recognizes as reads. Other statements, including SQL writes, DDL, mutations, <code>SET</code>, <code>USE</code>, and <code>CHECK TABLE</code>, are not replayed. This also covers their DB-API and SQLAlchemy wrappers. Read retries and retries through the insert APIs, including <code>raw_insert()</code>, remain available. Insert retries provide at-least-once delivery and can duplicate rows without server deduplication. Closes <a href="https://redirect.github.com/ClickHouse/clickhouse-connect/issues/1079">#1079</a>.</li> <li>Values in Dynamic shared storage, including JSON paths that exceed <code>max_dynamic_types</code>, now decode to Python objects instead of encoded bytes or strings. This covers supported arrays, tuples, maps, nested JSON, and date, time, UUID and IP address scalars, including nullable defaults and typed JSON null paths. DataFrame results keep the decoded objects. Closes <a href="https://redirect.github.com/ClickHouse/clickhouse-connect/issues/1070">#1070</a>.</li> <li>Inserts that resolve column types from the server now give the internal <code>DESCRIBE TABLE</code> its own server-generated query ID. The <code>INSERT</code> retains the caller's <code>query_id</code> from per-call settings or client defaults. This prevents <code>QUERY_WITH_SAME_ID_IS_ALREADY_RUNNING</code> errors when the server hasn't yet released the finished <code>DESCRIBE</code>. Closes <a href="https://redirect.github.com/ClickHouse/clickhouse-connect/issues/1066">#1066</a>.</li> <li>Closing a synchronous Native-format HTTP response now waits for an active read before draining it, including Rust codec reads that outlast read-ahead shutdown. Cleanup also finishes partially consumed HTTP chunks with the same parser. This prevents concurrent response reads, premature connection closure, and <code>SESSION_IS_LOCKED</code> errors on the next query.</li> <li>AsyncClient now awaits response cleanup when a Rust codec stream closes, including when its consumer is cancelled. Cleanup finishes before cancellation is re-raised.</li> <li>SQLAlchemy <code>Nullable()</code> and <code>LowCardinality()</code> now preserve the wrapped type in their return annotations. Column declarations such as <code>Column("hostname", LowCardinality(String))</code> now pass strict type checking. Runtime behavior is unchanged. Closes <a href="https://redirect.github.com/ClickHouse/clickhouse-connect/issues/1033">#1033</a>.</li> <li>SQLAlchemy <code>GROUP BY</code> now uses aliases only for top-level labels that match an expression selected by the current query. Unselected and nested expressions render in full. Selected aliases, including independently rebuilt matching expressions, retain their names. This fixes unknown-identifier errors and incorrect grouping when a label collides with another column. Closes <a href="https://redirect.github.com/ClickHouse/clickhouse-connect/issues/1062">#1062</a>.</li> <li>Async <code>insert_arrow</code> and <code>insert_df_arrow</code> now run DataFrame conversion and Arrow encoding in a dedicated worker owned by the client. This reduces event-loop stalls during large inserts. Closes <a href="https://redirect.github.com/ClickHouse/clickhouse-connect/issues/1054">#1054</a>.</li> <li>Closing a Rust codec stream during read-ahead startup no longer lets a producer read from an already closed source. This applies to sync and async cleanup.</li> <li>Closing a sync Rust codec stream early now drains its HTTP response before releasing the response iterator. This fixes premature connection closure that could make the next query on the same client fail with <code>SESSION_IS_LOCKED</code>.</li> <li>Concurrent sync and async cleanup of a Rust codec stream now releases its response source only once.</li> <li>Cancelling a pending Rust codec stream read now releases the waiting decoder worker. Previously, closing the stream could leave a worker blocked and hang async executor shutdown.</li> <li>Rust codec NumPy and Pandas queries now preserve nanoseconds in nullable scalar <code>DateTime64(9)</code> columns, including <code>SimpleAggregateFunction</code> aliases. They also reject unsupported scalar <code>DateTime64</code> precisions consistently for nullable columns and aliases.</li> <li>Rust codec NumPy and Pandas queries now return correct durations and <code>NaT</code> for NULL values in <code>Nullable(SimpleAggregateFunction(..., Time64))</code> columns. Previously, columns with NULLs returned floating-point bit patterns interpreted as durations.</li> <li>Large async external-data uploads now use bounded writes to avoid long event-loop stalls during TLS encryption. Closes <a href="https://redirect.github.com/ClickHouse/clickhouse-connect/issues/1057">#1057</a>.</li> </ul> <h3>Compatibility</h3> <ul> <li>When <code>clickhouse-sqlalchemy</code> is installed, use <code>clickhousedb://</code> or <code>clickhousedb+connect://</code> for ClickHouse Connect. Bare <code>clickhouse://</code> remains with its existing provider; the ClickHouse Connect alias is still available when no other provider claims it. In mixed installs, cc-only schema options such as <code>clickhouse_engine</code>, <code>clickhouse_ttl</code>, <code>clickhouse_settings</code>, and <code>clickhouse_dictionary_*</code> must use the <code>clickhousedb_</code> prefix. Custom schema defaults for ClickHouse Connect should use <code>Table.argument_for("clickhousedb", ...)</code> or <code>Column.argument_for("clickhousedb", ...)</code>. Newly generated schema metadata and Alembic revisions use <code>clickhousedb_*</code> option names. In cc-only installs, <code>table.kwargs["clickhouse_engine"]</code> now returns <code>None</code> after a positional engine or table reflection; read <code>cl ickhousedb_engine</code> instead, and read generated Dictionary options through their <code>clickhousedb_*</code> keys. Public reflection dictionaries retain their existing <code>clickhouse_*</code> keys.</li> <li>Type checkers now infer <code>list[String]</code> for <code>[Nullable(String)]</code>. If a collection also holds other ClickHouse types, annotate it as <code>list[ChSqlaType]</code> from <code>clickhouse_connect.cc_sqlalchemy.datatypes.base</code>.</li> <li>Rust NumPy object columns for nullable scalar <code>DateTime64(9)</code> now contain <code>numpy.datetime64</code> cells at UTC nanosecond resolution instead of Python <code>datetime</code> cells. SQL NULL stays <code>None</code>. Use <code>query_df</code> to retain named timezone metadata. Pandas datetime output now uses nanoseconds instead of Pandas 3's microseconds, while existing object dtypes from all-null blocks remain.</li> <li>The Rust extra now requires <code>clickhouse-connect-core>=0.2.1,<0.3</code>. Rust codec setup checks the column buffer API separately from the binding API and reports upgrade guidance for older core wheels. See the <a href="https://github.com/ClickHouse/clickhouse-connect/blob/main/rust/ch-core-py/CHANGELOG.md#021-2026-09-24">core 0.2.1 release notes</a>.</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/ClickHouse/clickhouse-connect/commit/090fb9a49e2f641ebc1cd058a4077fd67f1dfdcd"><code>090fb9a</code></a> Release/1.10.0 (<a href="https://redirect.github.com/ClickHouse/clickhouse-connect/issues/1085">#1085</a>)</li> <li><a href="https://github.com/ClickHouse/clickhouse-connect/commit/fec4e57089b3b8d51163676f3b133d6e1ab09dbe"><code>fec4e57</code></a> Fix Alembic comparison of server-pinned aggregate state versions (<a href="https://redirect.github.com/ClickHouse/clickhouse-connect/issues/1084">#1084</a>)</li> <li><a href="https://github.com/ClickHouse/clickhouse-connect/commit/6d738790ae6c90cb237745edae6edf9bc0064ca4"><code>6d73879</code></a> Fix SQLAlchemy dialect coexistence with clickhouse-sqlalchemy (<a href="https://redirect.github.com/ClickHouse/clickhouse-connect/issues/1082">#1082</a>)</li> <li><a href="https://github.com/ClickHouse/clickhouse-connect/commit/a104e28a202f07352363249c9a195407edb15f33"><code>a104e28</code></a> Fix row access after materializing query result columns (<a href="https://redirect.github.com/ClickHouse/clickhouse-connect/issues/1081">#1081</a>)</li> <li><a href="https://github.com/ClickHouse/clickhouse-connect/commit/08131dc5756fc3cfb56303942803e456f851f74d"><code>08131dc</code></a> Restrict HTTP retries to recognized reads and insert data (<a href="https://redirect.github.com/ClickHouse/clickhouse-connect/issues/1080">#1080</a>)</li> <li><a href="https://github.com/ClickHouse/clickhouse-connect/commit/122edfecbe003ff5d151fa83ebb2a8f3c2688a97"><code>122edfe</code></a> Fix free-threaded insert concurrency test timeouts (<a href="https://redirect.github.com/ClickHouse/clickhouse-connect/issues/1078">#1078</a>)</li> <li><a href="https://github.com/ClickHouse/clickhouse-connect/commit/4c25bc1e0c39e3a5b8de7578c0eefa9b7009a7b3"><code>4c25bc1</code></a> release prep for core 0.2.2 (<a href="https://redirect.github.com/ClickHouse/clickhouse-connect/issues/1077">#1077</a>)</li> <li><a href="https://github.com/ClickHouse/clickhouse-connect/commit/cac10b23dcf5262f8c38a23d1687d1b563e01082"><code>cac10b2</code></a> Fix Rust insert crashes on free-threaded Python (<a href="https://redirect.github.com/ClickHouse/clickhouse-connect/issues/1076">#1076</a>)</li> <li><a href="https://github.com/ClickHouse/clickhouse-connect/commit/c9f813958ea4e29c533eadbc15e409c2d59775dc"><code>c9f8139</code></a> Fix decoding of Dynamic shared values (<a href="https://redirect.github.com/ClickHouse/clickhouse-connect/issues/1071">#1071</a>)</li> <li><a href="https://github.com/ClickHouse/clickhouse-connect/commit/8d3fe7b734b0ea9a8027298c684febf65303f75e"><code>8d3fe7b</code></a> Keep the insert query_id off the internal DESCRIBE TABLE (<a href="https://redirect.github.com/ClickHouse/clickhouse-connect/issues/1067">#1067</a>)</li> <li>Additional commits viewable in <a href="https://github.com/ClickHouse/clickhouse-connect/compare/v1.9.0...v1.10.0">compare view</a></li> </ul> </details> <br /> [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
