Commit Graph
1836 Commits
Author SHA1 Message Date
Alexander GololobovandClaude Fable 5 fccf8073bb Shrink idle thread pools of the distributed query infrastructure
Co-Authored-By: Claude Fable 5 <[email protected]>
2026-06-10 15:35:21 +02:00
Alexander Gololobov 1740db5ef3 Merge branch 'master' of github.com:ClickHouse/ClickHouse into multistage_distributed_queries 2026-06-06 09:35:45 +02:00
Miсhael StetsyukandGitHub eb3f7f5fe8 Merge pull request #105617 from ClickHouse/system-keeper-changelogs
Add system.keeper_changelogs table
2026-06-05 11:10:40 +00:00
Alexander GololobovandClaude Opus 4.8 482675907a Require explicit listen host to enable the streaming exchange server
Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
2026-06-04 17:01:51 +02:00
Michael Stetsyuk 3cb79ab57c Gate system.keeper_changelogs behind USE_NURAFT
Fixes FreeBSD build: tryGetKeeperDispatcher is only declared when
USE_NURAFT is set, and the storage's transitive includes pull in NuRaft
headers.
2026-06-04 13:28:35 +00:00
Michael StetsyukandClaude Opus 4.7 c44734622f Add system.keeper_changelogs table
New keeper-only system table with one row per on-disk Raft log file
(changelog_<from>_<to>.bin[.zstd]) tracked by the in-process Keeper.
Mirrors the plumbing of system.keeper_snapshots.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
2026-06-04 13:28:35 +00:00
Alexander GololobovandClaude Opus 4.8 6ee7ca2b55 Remove the configured stateless worker endpoint name on shutdown
Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
2026-06-04 09:43:22 +02:00
murphy-4oandGitHub 31874f78ed Merge branch 'master' into uk-pr-7-dense-index-cache 2026-06-04 12:13:20 +08:00
Alexander GololobovandClaude Opus 4.7 26286be55c Validate distributed-plan config and settings
Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
2026-06-03 16:02:09 +02:00
Alexey MilovidovandGitHub b7e8361a28 Merge branch 'master' into multistage_distributed_queries 2026-06-03 00:39:00 -07:00
Alexander Gololobov e4bca96054 Match private master indentation for OS_LINUX block in Server.cpp 2026-06-03 04:42:15 +02:00
Alexey MilovidovandGitHub 842b133f8d Merge pull request #100399 from ClickHouse/clang-tidy-init-variables
Enable clang-tidy check for uninitialized variables
2026-05-31 21:56:29 -07:00
Alexander Gololobov 12a1e63d3a Merge branch 'master' of github.com:ClickHouse/ClickHouse into multistage_distributed_queries 2026-05-31 19:40:55 -07:00
Alexey Milovidov 1e4a7a281f Merge remote-tracking branch 'origin/master' into clang-tidy-init-variables 2026-05-30 05:15:32 +00:00
Alexey Milovidov ab6cd89b58 Merge remote-tracking branch 'origin/master' into fix-compiler-warnings
# Conflicts:
#	src/AggregateFunctions/fuzzers/aggregate_function_state_deserialization_fuzzer.cpp
#	src/Client/BuzzHouse/AST/SQLProtoStr.cpp
#	src/Functions/UserDefined/UserDefinedWebAssembly.cpp
#	src/IO/examples/parse_int_perf.cpp
#	src/Processors/QueryPlan/Optimizations/removeUnusedColumns.cpp
#	src/TableFunctions/TableFunctionMergeTreeAnalyzeIndexes.cpp
2026-05-29 02:17:22 +00:00
Alexander Gololobov 980c435a06 Merge branch 'master' of github.com:ClickHouse/ClickHouse into multistage_distributed_queries 2026-05-28 11:13:06 -07:00
Alexander Gololobov 4fe6f8d12e Address review nits 2026-05-28 09:47:10 -07:00
Nikita TaranovandGitHub bd6d798801 Merge pull request #100242 from ClickHouse/enable_query_profiler_under_sanitizers
Enable query profiler under sanitizers
2026-05-28 13:29:19 +00:00
Alexander GololobovandGitHub 9896ad302e Merge branch 'master' into multistage_distributed_queries 2026-05-27 17:25:11 -07:00
Alexey Milovidov d5538f7d5d Merge remote-tracking branch 'origin/master' into clang-tidy-init-variables
# Conflicts:
#	src/Compression/CompressionCodecALP.cpp
#	src/Functions/UserDefined/UserDefinedWebAssembly.cpp
#	src/IO/AzureBlobStorage/copyAzureBlobStorageFile.cpp
#	src/Interpreters/WasmModuleManager.h
#	src/Parsers/CreateQueryUUIDs.cpp
#	src/Storages/StorageTimeSeries.h
#	src/Storages/TimeSeries/PrometheusRemoteWriteProtocol.cpp
2026-05-27 22:00:22 +00:00
Azat KhuzhinandGitHub cf3ab8d0f5 Merge pull request #105265 from azat/memory-tracker-min-alloc-throw-size
RFC: Add a server setting to allow any allocation to throw MEMORY_LIMIT_EXCEEDED
2026-05-27 18:31:23 +00:00
“JiaQi 1d8300c8d1 Merge branch 'master' into kafka-disable-streaming 2026-05-25 09:13:43 +08:00
Alexey Milovidov 21b4081888 Merge remote-tracking branch 'origin/master' into clang-tidy-init-variables
# Conflicts:
#	src/Functions/FunctionsStringHash.cpp
#	src/Functions/h3PolygonToCells.cpp
#	src/Parsers/ASTIndexDeclaration.h
2026-05-23 07:39:04 +00:00
Alexey Milovidov 724a4d6428 Merge remote-tracking branch 'origin/master' into fix-compiler-warnings
# Conflicts:
#	src/Functions/seriesPeriodDetectFFT.cpp
#	src/Functions/stl.hpp
#	src/Functions/tests/gtest_string_similarity.cpp
2026-05-23 07:21:41 +00:00
Nikolai KochetovandGitHub a97f6d5bc1 Merge pull request #98884 from ClickHouse/mutations-analyzer
Enable new analyzer for `MutationsInterpreter` (coded version 3)
2026-05-22 21:06:59 +00:00
Nikolai Kochetov 85937b3981 Add use_analyzer_for_mutations config to override analyzer choice for mutations
When set in the server config, this option overrides the session setting
`allow_experimental_analyzer` for `MutationsInterpreter`. Absent (default)
means the session setting is used.

The override is parsed once per config reload in `Server.cpp` and stored as
a tri-state atomic on the shared context, so each mutation only pays an
atomic load instead of re-reading the config.
2026-05-22 12:39:29 +00:00
Alexey Milovidov ce33069d64 Merge remote-tracking branch 'origin/master' into fix-compiler-warnings
# Conflicts:
#	programs/local/fuzzers/clickhouse_fuzzer.cpp
2026-05-21 10:55:59 +00:00
Azat KhuzhinandGitHub 6e73f7c47c Merge branch 'master' into memory-tracker-min-alloc-throw-size 2026-05-21 11:16:28 +02:00
Michael Kolupaev c7dc789329 Merge remote-tracking branch 'origin/master' into fwd 2026-05-20 12:16:13 -07:00
Alexey Milovidov aea7d2eb55 Merge remote-tracking branch 'origin/master' into clang-tidy-init-variables
# Conflicts:
#	src/Functions/UserDefined/UserDefinedWebAssembly.cpp
2026-05-20 17:25:06 +00:00
Jimmy Aguilar MenaandGitHub e9d0340750 Merge pull request #104940 from nauu/fix-keeper
Fix max_memory_usage_soft_limit hot reload
2026-05-20 14:59:04 +00:00
nauu 4e34c94fae fix max_memory_usage_soft_limit hot reload 2026-05-19 23:26:04 +08:00
Azat Khuzhin c01e1a55b2 Add a server setting to allow new() throw MEMORY_LIMIT_EXCEEDED
Add a server setting (`min_allocation_size_to_throw_on_memory_limit`) to
allow any allocation to throw `MEMORY_LIMIT_EXCEEDED`, this should help
with preventing OOMs

Right now, any `new` cannot throw, this is due exception safety issues,
and only explicitly marked can throw `MEMORY_LIMIT_EXCEEDED`.

But this can lead to real OOMs, i.e. when kernel will kill
clickhouse-server, even though we are trying hard to track memory
properly.

Add a server setting `min_allocation_size_to_throw_on_memory_limit`
(UInt64 bytes, default 0). When non-zero, the throwing `operator new`
variants are allowed to raise `MEMORY_LIMIT_EXCEEDED`. _The assumption
is that code with big enough allocations does not exception safety
issues._

Note, places that allows (Allocator)/never allows (malloc)
`MEMORY_LIMIT_EXCEEDED` before are not affected.
2026-05-18 21:07:37 +02:00
“JiaQi 9b97e9dcde Merge branch 'master' into kafka-disable-streaming 2026-05-16 17:07:46 +08:00
Michael Kolupaev 1eb5502983 Merge remote-tracking branch 'origin/master' into fwd 2026-05-15 22:48:52 -07:00
Alexey Milovidov 19127dec50 Merge remote-tracking branch 'origin/master' into clang-tidy-init-variables
# Conflicts:
#	src/IO/S3RequestSettings.cpp
#	src/Processors/Formats/Impl/ArrowFieldIndexUtil.h
2026-05-15 17:49:34 +00:00
Alexey Milovidov 4ed57d0565 Merge remote-tracking branch 'origin/master' into fix-compiler-warnings
# Conflicts:
#	src/Interpreters/ServerAsynchronousMetrics.cpp
2026-05-15 17:03:06 +00:00
Alexey MilovidovandGitHub bc91918852 Merge pull request #100277 from ClickHouse/webterminal
Add web terminal interface to clickhouse-server
2026-05-15 17:54:21 +02:00
Michael Kolupaev 60e30e91b4 Merge remote-tracking branch 'origin/master' into fwd 2026-05-14 12:45:22 -07:00
“JiaQi 56f366a0ea fix tests 2026-05-14 17:53:10 +08:00
“JiaQi 3e78ce0f7f fix tests 2026-05-14 17:44:42 +08:00
murphy-4o a49f5f8bba Merge branch 'master' into uk-pr-7-dense-index-cache 2026-05-12 12:57:05 +08:00
Alexey Milovidov 9567f0d9ba Merge remote-tracking branch 'origin/master' into clang-tidy-init-variables
# Conflicts:
#	src/Processors/QueryPlan/Optimizations/Optimizations.h
#	src/Storages/MaterializedView/RefreshTask.cpp
2026-05-08 03:15:33 +00:00
Raúl Marín 031d2e81f5 Merge remote-tracking branch 'blessed/master' into remove-settings-vtable-v2
# Conflicts:
#	src/Core/BaseSettings.h
#	src/Core/SettingsFields.h
2026-05-07 10:39:35 +02:00
murphy-4oandClaude Opus 4.7 145d6c62f3 PR 7: UNIQUE KEY index cache
ClickHouse-side `CacheBase` adapter that implements RocksDB's `Cache`
API for the UNIQUE KEY index SST block cache. Includes Context
registration, server-side wiring, server settings, ProfileEvents, and
CurrentMetrics.

Settings (read by Server.cpp at startup + reload):
- `unique_key_index_cache_policy` (default `SLRU`)
- `unique_key_index_cache_size_bytes` (default `1 GiB`)
- `unique_key_index_cache_size_ratio` (default `0.5`)

Setting size to 0 disables the cache; `getUniqueKeyIndexCache` returns
nullptr. On `USE_ROCKSDB=0` builds the registration is a graceful no-op.

ProfileEvents:
- `UniqueKeyIndexCacheLookupMicroseconds` — combined Lookup + Insert
  wall-clock inside the adapter.
- `UniqueKeyIndexCacheHits` / `UniqueKeyIndexCacheMisses` — per-lookup
  hit/miss counters.

CurrentMetrics:
- `UniqueKeyIndexCacheBytes`, `UniqueKeyIndexCacheEntries`.

`updateUniqueKeyIndexCacheConfiguration` logs an INFO line when the
configured cache size changes.

Tests (`gtest_unique_key_index_cache.cpp`): 5 cases pinning wrapper-only
behaviour — insert/lookup with hit/miss counter assertion, slice-key
erase, release-erase semantics, identity-aware replacement protection,
concurrency smoke. Tests that re-verify the dependency contracts
(CacheBase eviction, atomic ref counting) are intentionally not included.

Reviewer: PR 10 is the first production reader consumer of this cache;
the SST-reader-cache invalidation race helpers (removeWithToken*,
replaceIfPresent) and their gtest coverage are out of scope here and
travel with PR 10.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
2026-05-07 15:13:23 +08:00
Alexey MilovidovandClaude Opus 4.7 02307d091e Address review: more narrowed pragmas and anonymous namespaces
- `arrayAggregation.cpp`, `distanceTransposed.cpp`, `randDistribution.cpp`,
  `toDecimalString.cpp`, `geohashesInBox.cpp`, `seriesPeriodDetectFFT.cpp`:
  drop the file-wide `-Wdouble-promotion` pragma in favor of explicit
  `static_cast` at the actual conversion sites or qualified `std::sqrt`.
- `KeeperDataDumper.cpp`, `LocalServer.cpp`,
  `ChecksumForCompressedBlock.cpp`, `tcp_protocol_fuzzer.cpp`,
  `Server.cpp`: replace `static` on free functions with anonymous
  namespaces, matching the project preference Algunenano flagged.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
2026-05-06 20:06:41 +00:00
Alexey Milovidov 7d54e33c7c Merge remote-tracking branch 'origin/master' into fix-compiler-warnings
# Conflicts:
#	programs/main.cpp
2026-05-06 03:18:15 +00:00
Alexey Milovidov f29d428d82 Merge remote-tracking branch 'origin/master' into webterminal 2026-05-05 18:49:01 +00:00
Nikita Taranov 9be80201af review fixes 2026-05-04 16:04:16 +00:00
Nikita TaranovandClaude Opus 4.6 9e558cc984 Enable query profiler under sanitizer builds
The query profiler was disabled under sanitizers because libunwind's
async stack unwinding interferes with sanitizer internals — sanitizers
modify %rbp during their own frame-walking, and a profiling signal
arriving mid-unwind would crash in libunwind.

Replace libunwind with abseil's frame-pointer-based stack unwinding
under sanitizers. Abseil's `GetStackTrace` / `GetStackTraceWithContext`
use `NO_SANITIZE_ADDRESS/MEMORY/THREAD` attributes and are safe.

Key changes:

  StackTrace.cpp: use `absl::GetStackTrace[WithContext]` under SANITIZER
  instead of `unw_backtrace` / libunwind.

  QueryProfiler.cpp: remove the SANITIZER throw guards that disabled the
  profiler. Skip `hasPHDRCache` check under sanitizers (not needed for
  frame-pointer unwinding). Skip `sigsetjmp` protection under sanitizers
  (TSan wraps signal delivery, making `siglongjmp` across its frames
  unsafe).

  Server.cpp: bypass `hasPHDRCache` for `TraceCollector` init under
  sanitizers. Under TSan the PHDR cache is not created (TSan intercepts
  `dl_iterate_phdr`), but frame-pointer unwinding does not need it.

  Defines.h, SettingsQuirks.cpp: enable profiler default sample rate and
  remove the quirk that force-zeroed profiler settings under sanitizers.

  build_clang_builtin.cmake: build compiler-rt with
  `-fno-omit-frame-pointer` and `-DCOMPILER_RT_HAS_FOMIT_FRAME_POINTER_FLAG=OFF`
  so that sanitizer runtime frames (e.g. TSan interceptors) have frame
  pointers, allowing abseil's walker to traverse them.

  sleep.cpp: under TSan, use `nanosleep` instead of `clock_nanosleep`.
  TSan intercepts `nanosleep` (setting `in_blocking_func`), which causes
  profiling signals to be delivered immediately rather than deferred.
  Without this, TSan defers the signal and the saved `ucontext_t` may
  point to stale stack memory.

  Tests: remove no-tsan/no-asan/no-ubsan/no-msan tags from query
  profiler tests. Add a real-time profiler test using `numbers_mt` which
  reliably produces meaningful traces under TSan.

Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
2026-05-04 16:02:29 +00:00