Skip to content

Commit e3fd3a5

Browse files
authored
Merge branch 'main' into push-down-topk-through-join
2 parents 5f331ea + 04ca5ac commit e3fd3a5

152 files changed

Lines changed: 11483 additions & 1697 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎.asf.yaml‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,8 @@ github:
6868
- "cargo check datafusion-functions features"
6969
- "cargo check datafusion-spark features"
7070
- "cargo test (amd64)"
71+
- "cargo test 'extended_tests' (amd64)"
72+
- "cargo test hash collisions (amd64)"
7173
- "cargo test datafusion-cli (amd64)"
7274
- "cargo examples (amd64)"
7375
- "cargo test doc (amd64)"
@@ -76,6 +78,7 @@ github:
7678
- "verify benchmark results (amd64)"
7779
- "Run sqllogictest with Postgres runner"
7880
- "Run sqllogictest in Substrait round-trip mode"
81+
- "Run sqllogictests with the sqlite test suite"
7982
- "cargo test (macos-aarch64)"
8083
- "Verify Vendored Code"
8184
- "Check cargo fmt"

‎.github/workflows/extended.yml‎

Lines changed: 28 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -15,37 +15,32 @@
1515
# specific language governing permissions and limitations
1616
# under the License.
1717

18+
# Each test command below is implemented with `cargo xtask` so developers can
19+
# run the same suite locally. Append `--explain` to print the underlying
20+
# `cargo test` invocation without running it. Job setup, the clean working tree
21+
# check, and `cargo clean` remain in this workflow.
22+
#
23+
# See `xtask/README.md` for details about DataFusion's `xtask` tooling.
24+
# Track progress at https://github.com/apache/datafusion/issues/24487.
25+
1826
name: Datafusion extended tests
1927

2028
concurrency:
2129
group: ${{ github.repository }}-${{ github.head_ref || github.sha }}-${{ github.workflow }}
2230
cancel-in-progress: true
2331

24-
# https://docs.github.com/en/actions/writing-workflows/choosing-when-your-workflow-runs/events-that-trigger-workflows#running-your-pull_request-workflow-when-a-pull-request-merges
25-
#
26-
# These jobs are not run as part of PR checks as they are time-consuming
27-
# and should not fail often.
28-
#
29-
# We still run them as they provide important coverage to ensure correctness
30-
# in the (very rare) event of a hash failure or sqlite library query failure.
32+
# Run these required checks in the merge queue before merging into main.
33+
# On PR updates, skip the jobs so their required checks allow queue entry
34+
# without running the expensive suites. Do not add pull_request path filters:
35+
# a skipped workflow would leave required checks pending.
3136
on:
37+
pull_request:
38+
merge_group:
3239
push:
3340
branches:
34-
- main
35-
# support extended test suite for release candidate branches,
36-
# it is not expected to have many changes in these branches,
37-
# so running extended tests is not a burden
41+
# Release branches retain post-push coverage. main is covered by the
42+
# merge queue, so do not repeat the tests after merging.
3843
- 'branch-*'
39-
# Also run for changes to some critical areas that are most likely
40-
# to trigger errors in extended tests
41-
pull_request:
42-
branches: [ '**' ]
43-
paths:
44-
- 'datafusion/physical*/**/*.rs'
45-
- 'datafusion/expr*/**/*.rs'
46-
- 'datafusion/optimizer/**/*.rs'
47-
- 'datafusion/sql/**/*.rs'
48-
- 'datafusion-testing'
4944
workflow_dispatch:
5045
inputs:
5146
pr_head_sha:
@@ -60,13 +55,15 @@ jobs:
6055
# Run extended tests (with feature 'extended_tests')
6156
linux-test-extended:
6257
name: cargo test 'extended_tests' (amd64)
58+
# Long-running job: run in the merge queue, on release pushes, or manually.
59+
if: github.event_name != 'pull_request'
6360
runs-on: ${{ vars.USE_RUNS_ON == 'true' && format('runs-on={0},family=m8a+m7a+c8a,cpu=32,image=ubuntu24-full-x64,extras=s3-cache,disk=large,tag=datafusion', github.run_id) || 'ubuntu-latest' }}
6461
# note: do not use amd/rust container to preserve disk space
6562
steps:
6663
- uses: runs-on/action@efac073ea2507ec18797de3a81704201ade11d9d # v2.3.1
6764
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
6865
with:
69-
ref: ${{ github.event.inputs.pr_head_sha }} # will be empty if triggered by push
66+
ref: ${{ github.event.inputs.pr_head_sha }} # otherwise use the event's commit, including the merge group
7067
submodules: true
7168
fetch-depth: 1
7269
- name: Free Disk Space (Ubuntu)
@@ -86,22 +83,7 @@ jobs:
8683
run: |
8784
df -h
8885
- name: Run tests (excluding doctests)
89-
env:
90-
RUST_BACKTRACE: 1
91-
# Run more random scenarios of the spill pool fuzzer than the
92-
# default suite does (about a minute).
93-
DATAFUSION_SPILL_POOL_FUZZ_ITERATIONS: 1000
94-
run: |
95-
cargo test \
96-
--profile ci \
97-
--exclude datafusion-examples \
98-
--exclude datafusion-benchmarks \
99-
--exclude datafusion-cli \
100-
--workspace \
101-
--lib \
102-
--tests \
103-
--bins \
104-
--features avro,json,backtrace,extended_tests,recursive_protection,parquet_encryption
86+
run: cargo xtask ci step test extended
10587
- parallel:
10688
- name: Verify Working Directory Clean
10789
run: git diff --exit-code
@@ -111,14 +93,16 @@ jobs:
11193
# Check answers are correct when hash values collide
11294
hash-collisions:
11395
name: cargo test hash collisions (amd64)
96+
# Long-running job: run in the merge queue, on release pushes, or manually.
97+
if: github.event_name != 'pull_request'
11498
runs-on: ${{ vars.USE_RUNS_ON == 'true' && format('runs-on={0},family=m8a+m7a+c8a,cpu=16,image=ubuntu24-full-x64,extras=s3-cache,disk=large,tag=datafusion', github.run_id) || 'ubuntu-latest' }}
11599
container:
116100
image: amd64/rust
117101
steps:
118102
- uses: runs-on/action@efac073ea2507ec18797de3a81704201ade11d9d # v2.3.1
119103
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
120104
with:
121-
ref: ${{ github.event.inputs.pr_head_sha }} # will be empty if triggered by push
105+
ref: ${{ github.event.inputs.pr_head_sha }} # otherwise use the event's commit, including the merge group
122106
submodules: true
123107
fetch-depth: 1
124108
- name: Setup Rust toolchain
@@ -127,12 +111,14 @@ jobs:
127111
rust-version: stable
128112
- name: Run tests
129113
run: |
114+
cargo xtask ci step test hash-collisions
130115
cd datafusion
131-
cargo test --profile ci --exclude datafusion-examples --exclude datafusion-benchmarks --exclude datafusion-sqllogictest --exclude datafusion-cli --workspace --lib --tests --features=force_hash_collisions,avro
132116
cargo clean
133117
134118
sqllogictest-sqlite:
135119
name: "Run sqllogictests with the sqlite test suite"
120+
# Long-running job: run in the merge queue, on release pushes, or manually.
121+
if: github.event_name != 'pull_request'
136122
runs-on: ${{ vars.USE_RUNS_ON == 'true' && format('runs-on={0},family=m8a+m7a+c8a,cpu=32,image=ubuntu24-full-x64,extras=s3-cache,disk=large,tag=datafusion', github.run_id) || 'ubuntu-latest' }}
137123
container:
138124
image: amd64/rust
@@ -141,13 +127,12 @@ jobs:
141127
- parallel:
142128
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
143129
with:
144-
ref: ${{ github.event.inputs.pr_head_sha }} # will be empty if triggered by push
130+
ref: ${{ github.event.inputs.pr_head_sha }} # otherwise use the event's commit, including the merge group
145131
submodules: true
146132
fetch-depth: 1
147133
# Don't use setup-builder to avoid configuring RUST_BACKTRACE which is expensive
148134
- name: Install protobuf compiler
149135
run: |
150136
apt-get update && apt-get install -y protobuf-compiler
151137
- name: Run sqllogictest
152-
run: |
153-
cargo test --features backtrace,parquet_encryption --profile ci-optimized --test sqllogictests -- --include-sqlite
138+
run: cargo xtask ci step test sqlite

‎.github/workflows/rust.yml‎

Lines changed: 32 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ jobs:
7373
- name: Rust Dependency Cache
7474
uses: Swatinem/rust-cache@6323deb102c322ba6fcbdcafc7e3dddab59af2b6 # v2.9.2
7575
with:
76-
shared-key: "amd-ci-check" # this job uses it's own cache becase check has a separate cache and we need it to be fast as it blocks other jobs
76+
shared-key: "amd-ci-check" # Keep cargo check artifacts separate from test builds.
7777
save-if: ${{ github.ref_name == 'main' }}
7878
- name: Prepare cargo build
7979
# `--locked` asserts that Cargo.lock is up to date with the manifest.
@@ -95,6 +95,11 @@ jobs:
9595
uses: ./.github/actions/setup-builder
9696
with:
9797
rust-version: stable
98+
- name: Rust Dependency Cache
99+
uses: Swatinem/rust-cache@6323deb102c322ba6fcbdcafc7e3dddab59af2b6 # v2.9.2
100+
with:
101+
save-if: false # The workspace and functions checks save this cache on main.
102+
shared-key: "amd-ci-check"
98103
- name: Check datafusion-common (default features)
99104
run: cargo xtask ci step check datafusion-common default
100105
#
@@ -158,6 +163,11 @@ jobs:
158163
uses: ./.github/actions/setup-builder
159164
with:
160165
rust-version: stable
166+
- name: Rust Dependency Cache
167+
uses: Swatinem/rust-cache@6323deb102c322ba6fcbdcafc7e3dddab59af2b6 # v2.9.2
168+
with:
169+
save-if: false # The workspace and functions checks save this cache on main.
170+
shared-key: "amd-ci-check"
161171
- name: Check datafusion-proto (default features)
162172
run: cargo xtask ci step check datafusion-proto default
163173
#
@@ -189,6 +199,11 @@ jobs:
189199
uses: ./.github/actions/setup-builder
190200
with:
191201
rust-version: stable
202+
- name: Rust Dependency Cache
203+
uses: Swatinem/rust-cache@6323deb102c322ba6fcbdcafc7e3dddab59af2b6 # v2.9.2
204+
with:
205+
save-if: false # The workspace and functions checks save this cache on main.
206+
shared-key: "amd-ci-check"
192207
- name: Check datafusion-ffi (no-default-features)
193208
run: cargo xtask ci step check datafusion-ffi no-default
194209

@@ -275,6 +290,12 @@ jobs:
275290
uses: ./.github/actions/setup-builder
276291
with:
277292
rust-version: stable
293+
- name: Rust Dependency Cache
294+
uses: Swatinem/rust-cache@6323deb102c322ba6fcbdcafc7e3dddab59af2b6 # v2.9.2
295+
with:
296+
# Warm GitHub's cache when linux-build-lib saves to Runs-On.
297+
save-if: ${{ github.ref_name == 'main' }}
298+
shared-key: "amd-ci-check"
278299
- name: Check datafusion-functions (default features)
279300
run: cargo xtask ci step check datafusion-functions default
280301
#
@@ -314,6 +335,11 @@ jobs:
314335
uses: ./.github/actions/setup-builder
315336
with:
316337
rust-version: stable
338+
- name: Rust Dependency Cache
339+
uses: Swatinem/rust-cache@6323deb102c322ba6fcbdcafc7e3dddab59af2b6 # v2.9.2
340+
with:
341+
save-if: false # The workspace and functions checks save this cache on main.
342+
shared-key: "amd-ci-check"
317343
- name: Check datafusion-spark (default features)
318344
run: cargo check --profile ci --all-targets -p datafusion-spark
319345
#
@@ -401,12 +427,13 @@ jobs:
401427
# with transient Docker transport errors. The tests retry the pull
402428
# themselves, so a failure here is only a warning.
403429
#
404-
# MINIO_IMAGE must match the image used by the `minio` module of the
405-
# `testcontainers-modules` crate. The `minio_image_matches_ci_prepull`
406-
# test in `datafusion-cli/tests/cli_integration.rs` fails if it drifts.
430+
# MINIO_IMAGE must match what the tests start: the tag comes from the
431+
# `minio` module of `testcontainers-modules`, the registry from
432+
# MINIO_IMAGE_NAME in `datafusion-cli/tests/cli_integration.rs`. The
433+
# `minio_image_matches_ci_prepull` test fails if either drifts.
407434
- name: Pre-pull MinIO image
408435
env:
409-
MINIO_IMAGE: minio/minio:RELEASE.2025-02-28T09-55-16Z
436+
MINIO_IMAGE: quay.io/minio/minio:RELEASE.2025-02-28T09-55-16Z
410437
run: |
411438
ci/scripts/retry timeout 120 docker pull "$MINIO_IMAGE" \
412439
|| echo "::warning::Could not pre-pull $MINIO_IMAGE, the tests will pull it themselves"

0 commit comments

Comments
 (0)