Files
zeekay 9a90943b8f merge: ClickHouse 26.7.1.1315-stable into datastore — preserve debrand
13,838 upstream commits, forward from the 26.6.1.1 fork point. 129 conflicts:
37 resolved mechanically (take upstream's file, re-apply the brand sweep) and
92 by hand where our fork and upstream had both changed the same code.

The rule throughout: upstream owns the engine, we own the naming and a small set
of deliberate deviations. Never resolve by discarding an upstream change — a
dropped rename or a missed new parameter becomes a compile error a thousand
files away.

Deviations verified intact after the merge:
  ENABLE_XRAY still defaults OFF        (CMakeLists.txt:105)
  X-Datastore-User read by the server   (authenticateUserByHTTP.cpp)
  X-ClickHouse-* in src/                0
  hanzo/research                        present
  system.*_log retention bound          present
  ArrowFlight rip                       held against upstream re-adding it

Two things worth naming, because neither shows up as a conflict:

  src/CMakeLists.txt gained an UNGUARDED
  `add_object_library(datastore_storages_arrowflight Storages/ArrowFlight)` from
  upstream, for a directory our gRPC rip deleted. It sat outside every conflict
  hunk, so a resolver reading only the markers would sail straight past it into
  a CMake configure error. Removed; the Server/ArrowFlight sibling at line 474
  stays because it is inside `if (TARGET ch_contrib::arrow_flight)`.

  The brand sweep had rewritten github.com/ClickHouse/ClickHouse issue links to
  github.com/Datastore/Datastore — a dead host. Those point at upstream's own
  tracker and are restored, alongside the contributors list, sql.clickhouse.com
  and the ClickHouse Inc copyright: attribution is theirs, not ours to rename.

base/glibc-compatibility/memcpy/memcpy.h is deleted, not kept: upstream dropped
it for LLVM-libc's, and our only change to it was a comment rebrand.
2026-07-26 14:47:43 -07:00

215 lines
10 KiB
XML

<datastore>
<local_disk_check_period_ms>30000</local_disk_check_period_ms>
<storage_configuration>
<disks>
<s3_disk>
<type>s3</type>
<path>s3_disk/</path>
<endpoint>http://localhost:11111/test/s3/</endpoint>
<access_key_id>clickhouse</access_key_id>
<secret_access_key>clickhouse</secret_access_key>
<request_timeout_ms>20000</request_timeout_ms>
<persistent_removal_log>true</persistent_removal_log>
</s3_disk>
<s3_plain_disk>
<type>s3_plain</type>
<endpoint>http://localhost:11111/test/s3_plain/</endpoint>
<access_key_id>clickhouse</access_key_id>
<secret_access_key>clickhouse</secret_access_key>
</s3_plain_disk>
<!-- Non-fake disk transactions (as ClickHouse Cloud / Keeper metadata uses): file
writes are batched into the part transaction and only become visible on commit. -->
<s3_disk_no_fake_transaction>
<type>s3</type>
<path>s3_disk_no_fake_transaction/</path>
<endpoint>http://localhost:11111/test/s3_no_fake_transaction/</endpoint>
<access_key_id>clickhouse</access_key_id>
<secret_access_key>clickhouse</secret_access_key>
<use_fake_transaction>false</use_fake_transaction>
</s3_disk_no_fake_transaction>
<s3_cache>
<type>cache</type>
<disk>s3_disk</disk>
<path>s3_cache/</path>
<max_size>209715200</max_size>
<max_file_segment_size>5Mi</max_file_segment_size>
<cache_on_write_operations>1</cache_on_write_operations>
<cache_policy>LRU</cache_policy>
<slru_size_ratio>0.3</slru_size_ratio>
<reserve_granularity>4Mi</reserve_granularity>
<allow_dynamic_cache_resize>1</allow_dynamic_cache_resize>
<keep_free_space_size_ratio>0.15</keep_free_space_size_ratio>
<keep_free_space_elements_ratio>0.15</keep_free_space_elements_ratio>
<keep_free_space_eviction_threads>4</keep_free_space_eviction_threads>
<background_download_queue_size_limit>50</background_download_queue_size_limit>
<load_metadata_asynchronously>0</load_metadata_asynchronously>
</s3_cache>
<s3_cache_02933>
<type>cache</type>
<disk>s3_disk</disk>
<path>s3_cache_02933/</path>
<max_size>128Mi</max_size>
<cache_on_write_operations>1</cache_on_write_operations>
<background_download_threads>0</background_download_threads>
<background_download_queue_size_limit>0</background_download_queue_size_limit>
<load_metadata_asynchronously>0</load_metadata_asynchronously>
</s3_cache_02933>
<s3_plain_rewritable>
<type>object_storage</type>
<object_storage_type>s3</object_storage_type>
<metadata_type>plain_rewritable</metadata_type>
<endpoint>http://localhost:11111/test/s3_plain_rewritable/</endpoint>
<access_key_id>clickhouse</access_key_id>
<secret_access_key>clickhouse</secret_access_key>
</s3_plain_rewritable>
<s3_plain_rewritable_cache>
<type>cache</type>
<disk>s3_plain_rewritable</disk>
<path>s3_plain_rewritable_cache/</path>
<max_size>128Mi</max_size>
<cache_on_write_operations>1</cache_on_write_operations>
<background_download_threads>0</background_download_threads>
<background_download_queue_size_limit>0</background_download_queue_size_limit>
<load_metadata_asynchronously>0</load_metadata_asynchronously>
</s3_plain_rewritable_cache>
<dynamically_resize_filesystem_cache>
<type>cache</type>
<disk>s3_disk</disk>
<path>dynamically_resize_filesystem_cache/</path>
<max_size>2124</max_size>
<max_file_segment_size>100</max_file_segment_size>
<boundary_alignment>100</boundary_alignment>
<cache_on_write_operations>1</cache_on_write_operations>
<cache_policy>LRU</cache_policy>
<!-- This cache is intentionally tiny (used to test dynamic resize). Disable
reserve-ahead so the default reserve_granularity does not hold a whole
segment of space and lower the steady-state occupancy below the test's threshold. -->
<reserve_granularity>0</reserve_granularity>
<allow_dynamic_cache_resize>1</allow_dynamic_cache_resize>
</dynamically_resize_filesystem_cache>
<!-- multi layer cache -->
<s3_cache_multi>
<type>cache</type>
<disk>s3_cache</disk>
<path>s3_cache_multi/</path>
<max_size>22548578304</max_size>
</s3_cache_multi>
<s3_cache_multi_2>
<type>cache</type>
<disk>s3_cache_multi</disk>
<path>s3_cache_multi_2/</path>
<max_size>22548578304</max_size>
</s3_cache_multi_2>
<s3_no_cache>
<type>s3</type>
<endpoint>http://localhost:11111/test/special/</endpoint>
<access_key_id>clickhouse</access_key_id>
<secret_access_key>clickhouse</secret_access_key>
<s3_check_objects_after_upload>0</s3_check_objects_after_upload>
</s3_no_cache>
<s3_plain_rewritable_cache_multi>
<type>cache</type>
<disk>s3_plain_rewritable_cache</disk>
<path>s3_plain_rewritable_cache_multi/</path>
<max_size>22548578304</max_size>
</s3_plain_rewritable_cache_multi>
<encrypted_s3_plain_rewritable_cache>
<type>encrypted</type>
<disk>s3_plain_rewritable_cache</disk>
<key>1234567812345678</key>
</encrypted_s3_plain_rewritable_cache>
<s3_cache_encrypted>
<type>encrypted</type>
<disk>s3_cache</disk>
<key>1234567812345678</key>
</s3_cache_encrypted>
<!-- Encryption over raw object storage with NO filesystem cache: lets the ReaderExecutor
engage on an encrypted disk (a cache would force the legacy fallback). -->
<s3_no_cache_encrypted>
<type>encrypted</type>
<disk>s3_no_cache</disk>
<key>1234567812345678</key>
</s3_no_cache_encrypted>
<!-- Two stacked encryption layers over raw object storage: exercises the executor's
multi-layer decryption on a real DiskEncrypted-over-DiskEncrypted config. -->
<s3_no_cache_encrypted_double>
<type>encrypted</type>
<disk>s3_no_cache_encrypted</disk>
<key>0987654321zyxwvu</key>
</s3_no_cache_encrypted_double>
</disks>
<policies>
<local_remote>
<volumes>
<local><disk>default</disk></local>
<remote><disk>s3_disk</disk></remote>
</volumes>
</local_remote>
<s3_cache>
<volumes>
<main>
<disk>s3_cache</disk>
</main>
</volumes>
</s3_cache>
<s3_no_fake_transaction>
<volumes>
<main>
<disk>s3_disk_no_fake_transaction</disk>
</main>
</volumes>
</s3_no_fake_transaction>
<s3_no_cache>
<volumes>
<main>
<disk>s3_no_cache</disk>
</main>
</volumes>
</s3_no_cache>
<s3_cache_multi>
<volumes>
<main>
<disk>s3_cache_multi_2</disk>
</main>
</volumes>
</s3_cache_multi>
<s3_cache_encrypted>
<volumes>
<main>
<disk>s3_cache_encrypted</disk>
</main>
</volumes>
</s3_cache_encrypted>
<s3_no_cache_encrypted>
<volumes>
<main>
<disk>s3_no_cache_encrypted</disk>
</main>
</volumes>
</s3_no_cache_encrypted>
<s3_no_cache_encrypted_double>
<volumes>
<main>
<disk>s3_no_cache_encrypted_double</disk>
</main>
</volumes>
</s3_no_cache_encrypted_double>
</policies>
</storage_configuration>
<!-- Allow data-lake table engines (Iceberg, Delta, Hudi) to use these disks via
`SETTINGS disk = '...'`. Used by tests like 04208_iceberg_disk_with_cache_no_bad_cast.sql.
The list intentionally only contains disks that wrap an `S3ObjectStorage` (raw,
cached, or with a non-default metadata layer) so we exercise the unwrap-before-cast
path in `S3StorageParsedArguments::fromDisk` without affecting other tests. -->
<allowed_disks_for_table_engines>s3_disk,s3_cache,s3_plain_disk,s3_plain_rewritable</allowed_disks_for_table_engines>
<filesystem_caches>
<cache_for_readbigat>
<path>./cache_for_readbigat/</path>
<max_size>1Gi</max_size>
<max_file_segment_size>1Mi</max_file_segment_size>
<boundary_alignment>1Mi</boundary_alignment>
</cache_for_readbigat>
</filesystem_caches>
</datastore>