800 Commits
Author SHA1 Message Date
Konstantin Vedernikov 0ae7ef5ef7 GDeflate compression codec on the CPU
`CODEC(GDeflate[(level)])`, behind `enable_gdeflate_codec`, levels 1..12,
default 6, method byte 0xa1. GDeflate is a variant of Deflate whose bit stream
is split into 32 interleaved sub-streams, the format that nvcomp and
DirectStorage expand on a GPU, many chunks in parallel.

A block is compressed in independent chunks of 64 KiB, each a GDeflate page,
from a multiple of 4 bytes, after the number of chunks and a descriptor of
each. Of a column of integers, `Int*`, `UInt*`, `Decimal32`, `Decimal64`,
`Date*` or `DateTime*`, a chunk is also bit-packed before it is compressed:
each integer as its difference from the least of the chunk, in as many bits as
the largest difference takes, up to 56. The smaller of the two forms is kept,
and the block says which. The format is that of the GPU codec of
https://github.com/ClickHouse/ClickHouse/pull/119502, so that a GPU can expand
the chunks of a column written by this codec.

The codec uses the GDeflate pages of NVIDIA's fork of libdeflate
(`contrib/gdeflate`), whose compressed pages nvcomp expands on the GPU, and
whose expansion reads what nvcomp compresses, as checked on the columns of
TPC-H `lineitem` at every level. The fork exports the same symbols as
libdeflate, so `contrib/gdeflate-cmake` builds only its GDeflate parts and
renames them.

`contrib/gdeflate` points at the upstream repository; it must be replaced with
a fork under github.com/ClickHouse before merging.
2026-10-22 14:35:39 +00:00
Alexey Milovidov f9950fbf16 Merge pull request #127086 from ClickHouse/remove-nlp-data
Remove `detectCharset` and `detectLanguageUnknown` and the `nlp-data` submodule
2026-10-21 15:38:19 +00:00
Alexey MilovidovandClaude Opus 5.5 143aa3060f Remove detectCharset and detectLanguageUnknown and the nlp-data submodule
The `contrib/nlp-data` submodule has no license and no record of where its
data came from. Its only file still in use, `charset.zst`, held per-encoding
byte-bigram frequencies embedded into `FrequencyHolder.cpp`, used only by the
experimental `detectCharset` and `detectLanguageUnknown` functions.
Language detection remains available via `detectLanguage` and
`detectLanguageMixed` (cld2).

Removed:
- the `contrib/nlp-data` submodule;
- `FrequencyHolder` and `FunctionsCharsetClassification.cpp`, plus the
  `OBJECT_DEPENDS` entry in `src/CMakeLists.txt`;
- the two names from the query fuzzer's function-substitution group and the
  vale token list;
- the related queries of `02133_classification` and the
  `04401_detect_charset_language_large_input_ubsan` test.

The sections in `nlp-functions.mdx` are inside the generated region and are
removed by the docs regeneration from `system.functions`.

Closes: https://github.com/ClickHouse/ClickHouse/issues/89035

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 00:54:31 +00:00
Alexey Milovidov 1fa7edd3c1 Merge remote-tracking branch 'origin/master' into native-cassandra-client 2026-10-20 16:08:37 +00:00
Konstantin Bogdanov 023b5a8fc2 Merge pull request #118916 from ClickHouse/aarch64-arm-optimized-routines
Use ARM optimized-routines for aarch64 string functions
2026-10-19 18:00:28 +00:00
Alexey Milovidov 319bcb88f8 Merge remote-tracking branch 'origin/master' into HEAD 2026-10-16 17:40:28 +00:00
Raúl Marín b3f60586ef Merge branch 'master' into bump-zmij 2026-10-16 17:02:52 +02:00
Raúl Marín 07ce54b34f Merge pull request #121383 from actueleai/bump-fast_float-v8.3.0
Bump `fast_float` from v8.2.10 to upstream main (v8.3.2 plus hot-path fixes)
2026-10-15 15:08:56 +00:00
Alexey Milovidov be51ae4991 Merge remote-tracking branch 'origin/master' into native-cassandra-client
# Conflicts:
#	contrib/cassandra-cmake/CMakeLists.txt
2026-10-15 13:30:55 +00:00
Raúl MarínandClaude Opus 5.5 dbd2fa3ea8 Bump zmij to upstream 57c99b0 with the dragonbox-compatible format
Upstream builds the float string inside a SIMD register and trims the
double path: `Float32` formatting is about 1.25x faster and `Float64`
1.02x to 1.14x on x86-64-v3 (more on x86-64-v2). The output is
byte-identical to the previous version over all `Float32` values and
320M sampled `Float64` values.

The submodule now points at the ClickHouse fork, which carries the patch
(`ClickHouse/main-20261015`). Upstream swapped the arguments of
`zmij::detail::write`.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 13:16:48 +02:00
Alexey Milovidov 21c42d778e Merge pull request #110613 from ClickHouse/add-pcodec-rust-codec
Add `PCO` compression codec (linking the pcodec Rust crate)
2026-10-15 01:42:54 +00:00
Alexey Milovidov 324e8a3a16 Merge pull request #125774 from actueleai/bump-vectorscan-vectorscan-5.4.13
Bump `vectorscan` from 5.4.11 to 5.4.13
2026-10-14 23:20:59 +00:00
Alexey Milovidov ea9d9773f0 Merge pull request #125665 from Algunenano/faster-local-startup
Speed up clickhouse-local startup
2026-10-14 20:36:55 +00:00
Alexey Milovidov ab2fd6dabc Merge remote-tracking branch 'origin/master' into HEAD 2026-10-14 14:31:10 +00:00
Konstantin Bogdanov 9269fc49fc Merge remote-tracking branch 'upstream/master' into aarch64-arm-optimized-routines 2026-10-14 15:10:40 +02:00
Konstantin BogdanovandClaude Fable 5.1 156c2960a9 Keep vectorscan on the ClickHouse fork and drop its nested simde submodule
CI check `Check Submodules` rejects nested submodules; upstream 5.4.13
pins `simde`, which the ClickHouse build does not use.

https://s3.amazonaws.com/clickhouse-test-reports/praktika.html?PR=125774&sha=6969c28b51589a02c6a91ef0357874ef6e0cd2e4&name_0=PR&name_1=Build%20%28arm_tidy%2C%201%2F4%29
https://github.com/ClickHouse/ClickHouse/pull/125774

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-14 14:38:32 +02:00
Raúl Marín 2c9d6ef5f3 Merge remote-tracking branch 'blessed/master' into bump-fast_float-v8.3.0 2026-10-14 14:12:27 +02:00
Actuele AIandClaude Code 6969c28b51 Bump vectorscan from 5.4.11 to 5.4.13
Retarget the submodule from the ClickHouse fork to upstream
VectorCamp/vectorscan and pin tag vectorscan/5.4.13 (acd7363aadea).
The fork carried a single patch (moving `#include <vector>` out of the
`HAVE_BOOST_CONTAINER_SMALL_VECTOR` fallback in `src/util/small_vector.h`);
it is obsolete because upstream merged it (VectorCamp/vectorscan#359), so
no fork branch is needed.

Adapt the explicit source list in `contrib/vectorscan-cmake/CMakeLists.txt`
to the upstream file changes: `src/fdr/teddy.c` -> `src/fdr/teddy.cpp`,
drop `src/fdr/teddy_avx2.c`, add `src/fdr/teddy_fat.cpp`. `teddy_fat.cpp`
is guarded by `HAVE_AVX2`, which is not defined in ClickHouse's
non-fat build, so it compiles to nothing here.

Update `contrib/vectorscan-cmake/common/hs_version.h` to 5.4.13 /
2026-08-23 (`HS_VERSION_STRING`, `HS_PATCH`); `HS_VERSION_32BIT` is left
unchanged, as in the previous bump.

The parser is not regenerated with ragel: upstream changed `Parser.rl`
(new nested-class / `&&` rejection rules) but regenerating is a
user-visible behaviour change deferred to a separate PR.

Includes the upstream stack buffer overflow fix in
`rvermicelliDoubleExecReal` (`src/nfa/vermicelli_simd.cpp`, fe94004d).

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-10-14 11:56:12 +00:00
Alexey Milovidov c7f0e88fc8 Merge remote-tracking branch 'origin/master' into faster-local-startup 2026-10-14 05:21:15 +00:00
Alexey Milovidov d6fc48c55b Merge remote-tracking branch 'origin/master' into HEAD 2026-10-13 20:30:27 +00:00
Alexey Milovidov 09ebdc5da6 Merge remote-tracking branch 'origin/master' into HEAD 2026-10-13 17:50:04 +00:00
Raúl MarínandClaude Opus 5.5 07bfcb2ff9 Remove numactl, read the NUMA binding with get_mempolicy
`getNumaNodesTotalMemory` was the only user of libnuma. Replace it with the
`get_mempolicy` syscall plus `/sys/devices/system/node/node<N>/meminfo`, which
also drops libnuma's `numa_init` constructor from every process startup.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 17:56:45 +02:00
Raúl Marín c4c424932b Update with latest master + CH optimizations 2026-10-13 12:19:30 +02:00
Alexey Milovidov fd7b63579e Merge remote-tracking branch 'origin/master' into parquet-testing-corpus
# Conflicts:
#	ci/jobs/functional_tests.py
2026-10-13 05:48:55 +00:00
Alexey Milovidov a06af6a6c6 Merge remote-tracking branch 'origin/master' into HEAD 2026-10-13 01:00:20 +00:00
Alexey Milovidov 019ef74b94 Merge remote-tracking branch 'origin/master' into native-cassandra-client 2026-10-12 16:25:11 +00:00
Alexey Milovidov 6c9a72b946 Merge remote-tracking branch 'origin/master' into HEAD 2026-10-12 16:05:56 +00:00
Konstantin Bogdanov 77da2f9ba5 Merge pull request #125080 from groeneai/reland-aws-1.11.907
Bump `aws` from 1.11.771 to 1.11.907 again, with `aws-c-common` v1.0.2
2026-10-12 14:01:14 +00:00
Alexey Milovidov 4b8e71463b Merge remote-tracking branch 'origin/master' into HEAD 2026-10-11 23:58:38 +00:00
Alexey Milovidov af0dc24174 Merge remote-tracking branch 'origin/master' into HEAD 2026-10-11 21:44:54 +00:00
Alexey Milovidov 4c57fcea67 Merge remote-tracking branch 'origin/master' into HEAD 2026-10-11 21:43:26 +00:00
Alexey Milovidov ae3dd59e99 Merge remote-tracking branch 'origin/master' into HEAD
# Conflicts:
#	.gitmodules
2026-10-11 12:43:21 +00:00
Alexey MilovidovandClaude Opus 5.5 df82d90728 Add the apache/parquet-testing corpus as a submodule and test reading all of it
Add https://github.com/apache/parquet-testing as `contrib/parquet-testing`
and a stateless test that reads every `.parquet` and `.parquet.encrypted`
file in it. For each file the test prints the inferred schema, the row count
and an order-independent hash of all values, or the error name if the file
cannot be read. Files that ship with an `*_expect.csv` are compared with
the expected contents.

The stateless test job does not check out submodules, so
`ci/jobs/functional_tests.py` now checks out `contrib/parquet-testing`
before the tests run.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 02:29:13 +00:00
Alexey MilovidovandClaude Opus 5.5 da77ec6dbf Replace the Cassandra driver library with a minimal native protocol client
The DataStax `cpp-driver` (with `libuv`) was used only to connect, authenticate
with a password, run a paged `SELECT` query, and decode a few scalar types.
Implement exactly that over the native protocol v4 in `src/Dictionaries/CassandraClient`,
with bounds checks on every read from the server.

Bring back the integration test of Cassandra dictionaries, which was disabled
because of instability, and limit the JVM heap of the Cassandra container.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 15:53:19 +00:00
Alexey Milovidov 1ceb4cf582 Merge remote-tracking branch 'origin/master' into HEAD 2026-10-10 15:06:19 +00:00
Groene AIandClaude Opus 5.5 bdf21f724a Revert "Revert "Bump aws from 1.11.771 to 1.11.907""
This reverts #125030 (merge 18b5a991f0),
re-applying #124678 unchanged. The `ThreadSanitizer` race it exposed is
fixed by the next commit.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 12:49:04 +00:00
robot-clickhouse d37c29eecb Revert "Merge pull request #124678 from actueleai/bump-aws-1.11.907"
This reverts commit 96aa0525f2, reversing
changes made to d3f757c000.
2026-10-10 03:18:21 +00:00
Alexey Milovidov 96aa0525f2 Merge pull request #124678 from actueleai/bump-aws-1.11.907
Bump `aws` from 1.11.771 to 1.11.907
2026-10-09 22:40:34 +00:00
Alexey MilovidovandClaude Opus 5.5 d8643a2fd6 Merge remote-tracking branch 'origin/master' into continue-pr-96615-ipcrypt
Master moved secret-argument masking out of `src/Parsers/FunctionSecretArgumentsFinder.cpp`
into `SecretArgumentsSpec` registrations. The `ipcrypt*` functions now register
`findIPCryptSecretArguments` as a `custom` spec in `src/Functions/ipcrypt.cpp`, like `HMAC`,
and `InterpreterExplainQuery.cpp` takes master's `isFunctionWithSecretArguments`, which
picks up the spec from `FunctionFactory`. In `Settings.cpp` both `enable_ipcrypt` and
master's `enable_xgboost` are kept.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 22:06:32 +00:00
Alexey Milovidov fa89a00f04 Merge remote-tracking branch 'origin/master' into HEAD 2026-10-09 19:24:17 +00:00
Matheus Nerone f16642d37b Merge pull request #109999 from Manerone/matheus-xgboost
Add an XGBOOST dictionary layout and the predictXGBoost function
2026-10-09 15:26:31 +00:00
Alexey Milovidov 3ab4fd0511 Merge remote-tracking branch 'origin/master' into add-pcodec-rust-codec
Conflict resolution: master made codec family names case-insensitive and stopped
upper-casing codec strings, so the PR's `upperCaseCodecFamilyNames` is dropped in
favor of master's lookup and `checkCodecChainIsNotColumnLevelOnly`; the PR's
`Default` comparisons now use `equalsCaseInsensitive`.
2026-10-08 16:37:39 +00:00
Actuele AIandClaude Code f214abda46 Bump aws from 1.11.771 to 1.11.907
aws-sdk-cpp 1.11.907 requires the newer AWS CRT APIs, so the whole
chain is co-bumped in one commit:

- contrib/aws -> ClickHouse/1.11.907 @ e235f91d162c (fork, ClickHouse patches rebased onto 1.11.907)
- contrib/aws-crt-cpp -> ClickHouse/0.43.8 @ fb9638dc096a (fork, 2 patches)
- contrib/aws-c-io -> ClickHouse/v0.27.6 @ ad2b310237ca (fork, 1 MSan patch)
- contrib/aws-c-cal -> upstream v0.9.15 @ 8aa2a48a09f9 (fork carries no patches; .gitmodules URL points back at awslabs)
- aws-c-auth, aws-c-common, aws-c-event-stream, aws-c-mqtt, aws-c-s3, aws-c-sdkutils -> the pins required by aws-crt-cpp 0.43.8

contrib/aws-cmake/CMakeLists.txt: add the new aws-cpp-sdk-core source
directories (smithy/client, smithy/client/schema, smithy/identity,
utils/local, utils/local/stream) and drop the removed utils/crypto/openssl
glob. The smithy/tracing/impl/opentelemetry sources are intentionally not
built: they need an external OpenTelemetry C++ SDK that ClickHouse does
not vendor, and upstream does not compile them either.

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-10-08 15:08:57 +00:00
Actuele AIandClaude Code a9c6a48162 Bump mongo-c-driver from 2.5.4 to 2.5.5
Updates the ClickHouse fork pin to ClickHouse/2.5.5 (70de9e880072),
which is upstream 2.5.5 plus the ClickHouse patch series: `strerror_l`
for musl/FreeBSD, `mlib_have_posix_clocks` detection on Darwin/FreeBSD/musl,
the reply memory leak on retryable cursor server-selection failure, the
redundant store in `_mongoc_handshake_freeze`, and a new patch that stops
printing option values in the deprecated-option conflict error.

Upstream 2.5.5 fixes an out-of-bounds write in the poll-set handling of
`mongoc_async_run` (CDRIVER-6404), tracked as CVE-2026-96746.

Declares the fork URL without the `.git` suffix, matching the other
ClickHouse forks in .gitmodules.

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-10-06 17:05:09 +00:00
Alexey Milovidov 0936417376 Merge remote-tracking branch 'origin/master' into HEAD 2026-10-06 16:09:02 +00:00
Matheus Agio Nerone f3ce27037d Merge remote-tracking branch 'upstream/master' into matheus-xgboost
# Conflicts:
#	src/Common/ErrorCodes.cpp
#	src/Interpreters/InterpreterCreateQuery.cpp
2026-10-06 13:24:49 +00:00
Alexey Milovidov 7ff41f4842 Merge remote-tracking branch 'origin/master' into add-pcodec-rust-codec
Resolve the `contrib/rust_vendor` conflict with a vendor commit merging
`chdig v26.10.1` from master and `rand_xoshiro` 0.6.0 of this PR.
2026-10-06 04:46:16 +00:00
Alexey Milovidov d3f19dcaba Merge remote-tracking branch 'origin/master' into continue-pr-96615-ipcrypt 2026-10-05 23:51:31 +00:00
Konstantin Bogdanov e5aa26e901 Merge pull request #119100 from actueleai/bump-flatbuffers-v25.12.19
Bump `flatbuffers` from v24.3.6 to v25.12.19
2026-10-05 19:29:58 +00:00
Alexey MilovidovandClaude Opus 5.5 5c8bdb7bee Merge remote-tracking branch 'origin/master' into ipcrypt
Resolve the conflict in `src/Core/Settings.cpp` with the rename of `allow_experimental_time_series_table`.
Move the history record of `allow_experimental_ipcrypt_functions` into its `DECLARE` (current version 26.10),
as `master` now keeps settings history inline.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 10:42:52 +00:00