- musl build: `stderr` is defined as a recursive macro `#define stderr (stderr)`,
which triggers `-Wdisabled-macro-expansion` when used as a function argument.
Suppress the warning in `LocalServer.cpp` the same way it is already handled
in `FuzzLoop.cpp`.
- arm_fuzzers build: the `DEFINE_BINARY_PROTO_FUZZER` macro from
`libprotobuf-mutator` expands to definitions of `LLVMFuzzerCustomMutator`,
`LLVMFuzzerCustomCrossOver`, and `LLVMFuzzerTestOneInput` without preceding
prototypes, and the generated `out.cpp` defines `GenerateSentence` without
one either. Add `-Wno-missing-prototypes` to the compile flags for the
codegen fuzzer sources where we cannot easily add declarations.
CI report: https://s3.amazonaws.com/clickhouse-test-reports/json.html?PR=100976&sha=latest&name_0=PR
Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
Add `static` to file-local functions and forward declarations
for cross-TU functions to satisfy `-Wmissing-prototypes`.
This ensures all functions have visible prototypes before their
definitions, improving code quality and catching accidental
linkage issues.
Reference: https://github.com/ClickHouse/ClickHouse/issues/76944
Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
`MemoryWorker` was only started in `clickhouse-server` but not in
`clickhouse-local`. This caused three problems:
1. The userspace page cache stayed stuck at `page_cache_min_size`
(100 MiB by default) and never grew to `page_cache_max_size`,
because `PageCache::autoResize` — which adjusts the cache size
based on available memory — was never called. The result was severe
cache thrashing: blocks evicted immediately after fetching, turning
every "hot" run into a cold run with full S3 re-downloads.
2. RSS was never reported to the global `MemoryTracker`, so memory
tracking in `clickhouse-local` was less accurate.
3. Jemalloc dirty pages were never purged under memory pressure.
Start `MemoryWorker` unconditionally (not only when page cache is
enabled), matching `clickhouse-server` behavior.
Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
The userspace page cache (`page_cache_max_size`) was never initialized
in `clickhouse-local`. The `setPageCache` call only existed in
`programs/server/Server.cpp` but was missing from
`programs/local/LocalServer.cpp`.
This adds the same page cache initialization (including validation
of `page_cache_min_size` vs `page_cache_max_size`) to `clickhouse-local`,
enabling the page cache for S3/object storage queries.
Closes https://github.com/ClickHouse/ClickHouse/issues/99499
Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
- `Intrinsic::getDeclaration` renamed to `Intrinsic::getOrInsertDeclaration`
in LLVM 22 (abs.cpp, bitCount.cpp)
- `createTargetMachine` first argument changed from `StringRef` to
`const Triple&` — construct `llvm::Triple` explicitly (CHJIT.cpp)
- `std::__gcd` internal removed from libc++ — use `std::gcd` from
`<numeric>` (AggregateFunctionKolmogorovSmirnovTest.cpp)
- Added `(void)` casts for new `[[nodiscard]]` on `std::stod`,
`std::filesystem::is_directory`, and `future.get()`
(KQLGeneralFunctions.cpp, LocalServer.cpp,
ZooKeeperRemoveByList.cpp, EphemeralLockInZooKeeper.cpp)
Assisted-by: Claude Opus 4.6 via GitHub Copilot
- Add missing `extern` for `jemalloc_profiler_sampling_rate` in
`Keeper.cpp`, `LocalServer.cpp`, and `Server.cpp`
- Pass `jemalloc_profiler_sampling_rate` as 5th argument to
`Jemalloc::setup` in `Keeper.cpp` and `LocalServer.cpp`
- Expose `prof.lg_sample` via `system.asynchronous_metrics` as
`jemalloc.prof.lg_sample`
- Add integration test `test_jemalloc_profiler_sampling_rate`
Co-Authored-By: Claude Opus 4.6 <[email protected]>
Extract `ErrnoException` into `Common/ErrnoException.h` to reduce the
include footprint of `Exception.h`. This removes `<base/errnoToString.h>`
and `<cerrno>` from `Exception.h`, which is included by ~95% of all
translation units.
All files referencing `ErrnoException` now include the new header
directly. Files that used `errnoToString` without `ErrnoException`
got an explicit `<base/errnoToString.h>` include.
Co-Authored-By: Claude Opus 4.6 <[email protected]>
Allow overriding the default access control improvements via an
explicitly provided config file, instead of unconditionally hardcoding
them to true.
Co-Authored-By: Claude Opus 4.6 <[email protected]>
- Wrap long lines in `getHelpHeader` and `getHelpFooter` for `clickhouse client`
and `clickhouse local` to keep lines within reasonable width,
fixing the 00910_client_window_size_detection test
- Use `createOptionsDescription` instead of raw `po::options_description` constructor
in `git-import` and `static-files-disk-uploader` to handle zero terminal width
properly, fixing the `git-import --help` abort in debug builds
(03823_clickhouse_help_return_codes test)
Co-Authored-By: Claude Opus 4.6 <[email protected]>
This commit improves the help output for all ClickHouse applications:
- Add `clickhouse help` command that lists all available subcommands
- Return exit code 0 for all help messages (previously some returned 1)
- Output help messages to stdout instead of stderr
- Use "clickhouse <cmd>" format instead of argv[0] in help messages
- Add dynamic `app_name` detection for `clickhouse client` and `clickhouse local`
to show correct invocation name based on how the binary was called
- Add `--no-sudo` option for `clickhouse start` and `clickhouse restart`
for environments without sudo (e.g., Docker containers)
- Add detailed help headers and footers for client and local with usage examples
Closes#58244
Co-Authored-By: Claude Opus 4.5 <[email protected]>
Set all `access_control_improvements` options to true for stricter
access control behavior in the embedded server config and clickhouse-local.
Co-Authored-By: Claude Opus 4.5 <[email protected]>
The default user in clickhouse-local was missing the access_management
privilege, which caused operations like DROP ROW POLICY IF EXISTS to
fail with ACCESS_DENIED error, even though the user should be unrestricted.
Co-Authored-By: Claude Opus 4.5 <[email protected]>