Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
60 commits
Select commit Hold shift + click to select a range
7c7d0ee
Fix ReadBufferFromFileView position tracking (B115)
filimonov Aug 4, 2026
3d86e1c
Stop retrying S3 reads after query cancellation (B117)
filimonov Aug 4, 2026
002f387
Retain parent ThreadGroup from borrowed children (B90)
filimonov Aug 4, 2026
a5a76b9
Fail closed on a null MergeTreeDeduplicationLog writer (B37)
filimonov Aug 4, 2026
069f021
S3 conditional-write support and 412 no-retry policy
filimonov Aug 4, 2026
f6816f5
Use Expect: 100-continue for large conditional S3 uploads
filimonov Aug 4, 2026
57bd419
GCS conditional-write dialect and GOOG4 signer
filimonov Aug 4, 2026
4fcc40f
LocalObjectStorage: snapshot listing semantics and hardening
filimonov Aug 4, 2026
93d545b
Disk-transaction contract: one logical part = one transaction
filimonov Aug 4, 2026
3d35dfc
Unwrap table proxies in single-table SYSTEM commands
filimonov Aug 4, 2026
f85cb43
clickhouse-disks: non-interactive runs exit nonzero on a failed command
filimonov Aug 4, 2026
407935b
Fix MSan build: include DataTypesDecimal.h in IcebergWrites.cpp
filimonov Aug 4, 2026
83a0425
CAS subsystem: Primitives layer
filimonov Aug 4, 2026
7abc22a
CAS subsystem: Formats layer
filimonov Aug 4, 2026
ef2448c
CAS subsystem: Backend layer
filimonov Aug 4, 2026
58d4f0b
CAS subsystem: Pool layer
filimonov Aug 4, 2026
9d08bc0
CAS subsystem: Parts layer
filimonov Aug 4, 2026
a840c03
CAS subsystem: GC layer
filimonov Aug 4, 2026
379e948
CAS subsystem: Tools layer
filimonov Aug 4, 2026
1c5ecf2
CAS subsystem: microbenchmarks
filimonov Aug 4, 2026
edb79be
CAS integration: disk surface and registration
filimonov Aug 4, 2026
1d92894
CAS integration: system logs and introspection
filimonov Aug 4, 2026
4fb813a
CAS integration: SYSTEM commands
filimonov Aug 4, 2026
9fd2b91
CAS integration: registries, fetch-by-relink, entry points
filimonov Aug 4, 2026
07dd887
CAS tests: unit (gtest)
filimonov Aug 4, 2026
2d5e095
CAS tests: stateless
filimonov Aug 4, 2026
96cf457
CAS tests: integration
filimonov Aug 4, 2026
8ad9b86
CAS CI wiring and test tags
filimonov Aug 4, 2026
14ecc1f
CAS documentation: the Antalya CAS book
filimonov Aug 4, 2026
056488b
CAS documentation
filimonov Aug 4, 2026
842f2b3
Merge branch 'antalya-26.6' into feature/antalya-26.6/CAS
mkmkme Aug 8, 2026
2eb214b
regen workflows after merge
strtgbb Aug 11, 2026
f76335f
remove ci tests from blocking jobs
strtgbb Aug 11, 2026
187e066
Merge branch 'antalya-26.6' of github.com:Altinity/ClickHouse into fe…
zvonand Aug 17, 2026
7b274f0
Merge branch 'antalya-26.6' into feature/antalya-26.6/CAS
strtgbb Aug 18, 2026
f9b65e0
Merge branch 'antalya-26.6' into feature/antalya-26.6/CAS
CarlosFelipeOR Aug 20, 2026
3ba1ac2
Regenerate pull_request_community.yml after antalya-26.6 merge.
CarlosFelipeOR Aug 20, 2026
058b678
Fix CI Tests fail: Ignore unknown config keys in ClickHouseService
strtgbb Aug 20, 2026
4b1fef9
Merge branch 'antalya-26.6' into feature/antalya-26.6/CAS
CarlosFelipeOR Aug 21, 2026
3f288c1
Shard the CAS aggregate_functions, lightweight_delete and alter jobs
CarlosFelipeOR Aug 21, 2026
cc73c9b
Skip the EXPORT PART stateless tests on CAS storage
CarlosFelipeOR Aug 21, 2026
eac9fc9
Update CAS jobs and add CASS3Cache configurations
DimensionWieldr Aug 24, 2026
5d14298
Update job names to include 's3_cache' prefix
DimensionWieldr Aug 24, 2026
cc9034e
Merge branch 'antalya-26.6' into feature/antalya-26.6/CAS
CarlosFelipeOR Aug 24, 2026
82fa620
Merge branch 'antalya-26.6' into feature/antalya-26.6/CAS
CarlosFelipeOR Aug 25, 2026
e919fdd
tests: pin granularity in 04300_cas_projection_multiblock so the proj…
filimonov Aug 25, 2026
83c03e2
cas: prove namespace absence per-row, not by whole-catalog stillness
filimonov Aug 25, 2026
8779adc
docs: list the encrypted-over-CAS wrapper as a known limitation
filimonov Aug 25, 2026
b69051a
cas: isolate GCS generation semantics to CAS requests instead of to a…
filimonov Aug 25, 2026
335802a
cas: scope the FREEZE shadow namespace to its server root
filimonov Aug 25, 2026
84b30f6
cas: clone a part into a content-addressed disk in one transaction on…
filimonov Aug 25, 2026
2649bce
cas: one undecodable manifest no longer stops reclamation for the who…
filimonov Aug 25, 2026
940b168
cas: publish blobs unconditionally after a mandatory HEAD
filimonov Aug 25, 2026
7f932d3
cas: bound mount-lease renewal, classify mount-claim conflicts, and g…
filimonov Aug 25, 2026
205af29
cas: drain detached work and survive a released Context at shutdown
filimonov Aug 25, 2026
3e79b8d
ci: update the RustFS test backend to rc3
filimonov Aug 25, 2026
917600b
cas: give the CAS disk settings their own `cas_` config-key namespace
filimonov Aug 25, 2026
c7cd641
cas: reconcile comments diverged by two independent upstream merges
filimonov Aug 25, 2026
b20a794
ci: stabilize the CAS test lanes and make the moved tests runnable
filimonov Aug 25, 2026
ceee42c
cas: admit worker renewals only over an Active keeper
filimonov Aug 25, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
522 changes: 521 additions & 1 deletion .github/workflows/master.yml

Large diffs are not rendered by default.

716 changes: 608 additions & 108 deletions .github/workflows/pull_request.yml

Large diffs are not rendered by default.

640 changes: 640 additions & 0 deletions .github/workflows/pull_request_community.yml

Large diffs are not rendered by default.

236 changes: 231 additions & 5 deletions .github/workflows/regression.yml
Original file line number Diff line number Diff line change
Expand Up @@ -534,10 +534,10 @@ jobs:
secrets: inherit

# CAS (content-addressed storage) is only available in Antalya builds >= 26.6.
# These jobs run the suites that support the `--cas` flag with a content-addressed
# disk as the default MergeTree storage. Gated on the Antalya version so they are
# never scheduled on upstream release builds where the `cas` metadata type does
# not exist.
# These jobs run the suites that support the `--cas` or `--cas-s3-cache` flag with
# a content-addressed disk as the default MergeTree storage. Gated on the Antalya
# version so they are never scheduled on upstream release builds where the `cas`
# metadata type does not exist.
CAS:
if: |
contains(fromJson(inputs.workflow_config).workflow_config.custom_data.version.string, 'antalya') &&
Expand All @@ -548,7 +548,7 @@ jobs:
strategy:
fail-fast: false
matrix:
SUITE: [aggregate_functions, alter, atomic_insert, engines, lightweight_delete, selects]
SUITE: [atomic_insert, engines, selects]
uses: ./.github/workflows/regression-reusable-suite.yml
with:
ref: ${{ inputs.commit }}
Expand All @@ -566,6 +566,232 @@ jobs:
regression_args: --cas
secrets: inherit

CASS3Cache:
if: |
contains(fromJson(inputs.workflow_config).workflow_config.custom_data.version.string, 'antalya') &&
(
fromJson(inputs.workflow_config).workflow_config.custom_data.ci_regression_jobs[0] == null ||
contains(fromJson(inputs.workflow_config).workflow_config.custom_data.ci_regression_jobs, 'cas')
)
strategy:
fail-fast: false
matrix:
SUITE: [atomic_insert, engines, selects]
uses: ./.github/workflows/regression-reusable-suite.yml
with:
ref: ${{ inputs.commit }}
workflow_config: ${{ inputs.workflow_config }}
suite_name: ${{ matrix.SUITE }}
suite_executable: regression.py
output_format: new-fails
flags: --with-analyzer
timeout_minutes: ${{ inputs.timeout_minutes }}
runner_arch: ${{ inputs.arch }}
runner_type: ${{ inputs.runner_type }}
build_sha: ${{ inputs.build_sha }}
set_commit_status: true
job_name: cas_s3_cache_${{ matrix.SUITE }}
regression_args: --cas-s3-cache
secrets: inherit

CASAggregateFunctions:
if: |
contains(fromJson(inputs.workflow_config).workflow_config.custom_data.version.string, 'antalya') &&
(
fromJson(inputs.workflow_config).workflow_config.custom_data.ci_regression_jobs[0] == null ||
contains(fromJson(inputs.workflow_config).workflow_config.custom_data.ci_regression_jobs, 'cas')
)
strategy:
fail-fast: false
matrix:
PART: [1, 2, 3]
uses: ./.github/workflows/regression-reusable-suite.yml
with:
ref: ${{ inputs.commit }}
workflow_config: ${{ inputs.workflow_config }}
suite_name: aggregate_functions
suite_executable: regression.py
output_format: new-fails
flags: --with-analyzer
timeout_minutes: 300
runner_arch: ${{ inputs.arch }}
runner_type: ${{ inputs.runner_type }}
part: ${{ matrix.PART }}
build_sha: ${{ inputs.build_sha }}
set_commit_status: true
job_name: cas_aggregate_functions
regression_args: --cas
extra_args: --only "part ${{ matrix.PART }}/*"
secrets: inherit

CASS3CacheAggregateFunctions:
if: |
contains(fromJson(inputs.workflow_config).workflow_config.custom_data.version.string, 'antalya') &&
(
fromJson(inputs.workflow_config).workflow_config.custom_data.ci_regression_jobs[0] == null ||
contains(fromJson(inputs.workflow_config).workflow_config.custom_data.ci_regression_jobs, 'cas')
)
strategy:
fail-fast: false
matrix:
PART: [1, 2, 3]
uses: ./.github/workflows/regression-reusable-suite.yml
with:
ref: ${{ inputs.commit }}
workflow_config: ${{ inputs.workflow_config }}
suite_name: aggregate_functions
suite_executable: regression.py
output_format: new-fails
flags: --with-analyzer
timeout_minutes: 300
runner_arch: ${{ inputs.arch }}
runner_type: ${{ inputs.runner_type }}
part: ${{ matrix.PART }}
build_sha: ${{ inputs.build_sha }}
set_commit_status: true
job_name: cas_s3_cache_aggregate_functions
regression_args: --cas-s3-cache
extra_args: --only "part ${{ matrix.PART }}/*"
secrets: inherit

CASLightweightDelete:
if: |
contains(fromJson(inputs.workflow_config).workflow_config.custom_data.version.string, 'antalya') &&
(
fromJson(inputs.workflow_config).workflow_config.custom_data.ci_regression_jobs[0] == null ||
contains(fromJson(inputs.workflow_config).workflow_config.custom_data.ci_regression_jobs, 'cas')
)
strategy:
fail-fast: false
matrix:
include:
- PART: 1
FILTER: --only "/lightweight delete/disk space/*"
- PART: 2
FILTER: --skip "/lightweight delete/disk space/*"
uses: ./.github/workflows/regression-reusable-suite.yml
with:
ref: ${{ inputs.commit }}
workflow_config: ${{ inputs.workflow_config }}
suite_name: lightweight_delete
suite_executable: regression.py
output_format: new-fails
flags: --with-analyzer
timeout_minutes: 300
runner_arch: ${{ inputs.arch }}
runner_type: ${{ inputs.runner_type }}
part: ${{ matrix.PART }}
build_sha: ${{ inputs.build_sha }}
set_commit_status: true
job_name: cas_lightweight_delete
regression_args: --cas
extra_args: ${{ matrix.FILTER }}
secrets: inherit

CASS3CacheLightweightDelete:
if: |
contains(fromJson(inputs.workflow_config).workflow_config.custom_data.version.string, 'antalya') &&
(
fromJson(inputs.workflow_config).workflow_config.custom_data.ci_regression_jobs[0] == null ||
contains(fromJson(inputs.workflow_config).workflow_config.custom_data.ci_regression_jobs, 'cas')
)
strategy:
fail-fast: false
matrix:
include:
- PART: 1
FILTER: --only "/lightweight delete/disk space/*"
- PART: 2
FILTER: --skip "/lightweight delete/disk space/*"
uses: ./.github/workflows/regression-reusable-suite.yml
with:
ref: ${{ inputs.commit }}
workflow_config: ${{ inputs.workflow_config }}
suite_name: lightweight_delete
suite_executable: regression.py
output_format: new-fails
flags: --with-analyzer
timeout_minutes: 300
runner_arch: ${{ inputs.arch }}
runner_type: ${{ inputs.runner_type }}
part: ${{ matrix.PART }}
build_sha: ${{ inputs.build_sha }}
set_commit_status: true
job_name: cas_s3_cache_lightweight_delete
regression_args: --cas-s3-cache
extra_args: ${{ matrix.FILTER }}
secrets: inherit

CASAlter:
if: |
contains(fromJson(inputs.workflow_config).workflow_config.custom_data.version.string, 'antalya') &&
(
fromJson(inputs.workflow_config).workflow_config.custom_data.ci_regression_jobs[0] == null ||
contains(fromJson(inputs.workflow_config).workflow_config.custom_data.ci_regression_jobs, 'cas')
)
strategy:
fail-fast: false
matrix:
ONLY: [replace, move]
include:
- ONLY: attach
PART: 1
- ONLY: attach
PART: 2
uses: ./.github/workflows/regression-reusable-suite.yml
with:
ref: ${{ inputs.commit }}
workflow_config: ${{ inputs.workflow_config }}
suite_name: alter
suite_executable: regression.py
output_format: new-fails
flags: --with-analyzer
timeout_minutes: 300
runner_arch: ${{ inputs.arch }}
runner_type: ${{ inputs.runner_type }}
part: ${{ matrix.PART }}
build_sha: ${{ inputs.build_sha }}
set_commit_status: true
job_name: cas_alter_${{ matrix.ONLY }}
regression_args: --cas
extra_args: --only "/alter/${{ matrix.ONLY }} partition/${{ matrix.PART && format('part {0}/', matrix.PART) || '' }}*"
secrets: inherit

CASS3CacheAlter:
if: |
contains(fromJson(inputs.workflow_config).workflow_config.custom_data.version.string, 'antalya') &&
(
fromJson(inputs.workflow_config).workflow_config.custom_data.ci_regression_jobs[0] == null ||
contains(fromJson(inputs.workflow_config).workflow_config.custom_data.ci_regression_jobs, 'cas')
)
strategy:
fail-fast: false
matrix:
ONLY: [replace, move]
include:
- ONLY: attach
PART: 1
- ONLY: attach
PART: 2
uses: ./.github/workflows/regression-reusable-suite.yml
with:
ref: ${{ inputs.commit }}
workflow_config: ${{ inputs.workflow_config }}
suite_name: alter
suite_executable: regression.py
output_format: new-fails
flags: --with-analyzer
timeout_minutes: 300
runner_arch: ${{ inputs.arch }}
runner_type: ${{ inputs.runner_type }}
part: ${{ matrix.PART }}
build_sha: ${{ inputs.build_sha }}
set_commit_status: true
job_name: cas_s3_cache_alter_${{ matrix.ONLY }}
regression_args: --cas-s3-cache
extra_args: --only "/alter/${{ matrix.ONLY }} partition/${{ matrix.PART && format('part {0}/', matrix.PART) || '' }}*"
secrets: inherit

TieredStorageCAS:
if: |
contains(fromJson(inputs.workflow_config).workflow_config.custom_data.version.string, 'antalya') &&
Expand Down
Loading
Loading