Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
bcb624c
feat: add JVM-planned native Delta Lake scan contrib module
dwsmith1983 Sep 3, 2026
5b22bd5
Merge branch 'main' into feature/delta-native-scan
andygrove Sep 12, 2026
1d91656
Merge remote-tracking branch 'origin/main' into feature/delta-native-…
dwsmith1983 Sep 12, 2026
6430f93
fix: contain provider link failures, gate Hadoop-only S3 endpoints, a…
dwsmith1983 Sep 14, 2026
8090726
Merge remote-tracking branch 'origin/main' into feature/delta-native-…
dwsmith1983 Sep 14, 2026
499adbf
Merge remote-tracking branch 'fork/feature/delta-native-scan' into fe…
dwsmith1983 Sep 14, 2026
519bfa8
Merge remote-tracking branch 'origin/main' into feature/delta-native-…
dwsmith1983 Sep 14, 2026
02df40a
fix: keep every leaf requested when the name fold fails during rebase…
dwsmith1983 Sep 14, 2026
55c49e7
ci: activate the delta profile for the prerequisite installs and set …
dwsmith1983 Sep 15, 2026
6039c30
perf: pass null-free modern batches through the rebase untouched with…
dwsmith1983 Sep 15, 2026
b238a98
chore: drop redundant interpolators flagged by scalafix
dwsmith1983 Sep 15, 2026
68dd8e3
Merge remote-tracking branch 'origin/main' into feature/delta-native-…
dwsmith1983 Sep 15, 2026
dcacee4
Merge remote-tracking branch 'origin/main' into feature/delta-native-…
dwsmith1983 Sep 16, 2026
b3cd071
Merge remote-tracking branch 'origin/main' into feature/delta-native-…
dwsmith1983 Sep 16, 2026
32d3157
Merge remote-tracking branch 'origin/main' into feature/delta-native-…
dwsmith1983 Sep 17, 2026
d21f5d4
ci: save the Delta contrib Maven caches on main only
dwsmith1983 Sep 17, 2026
ed439ea
Merge remote-tracking branch 'origin/main' into feature/delta-native-…
dwsmith1983 Sep 17, 2026
adc17c2
fix: adapt the Delta contrib to the prepared plan-data API
dwsmith1983 Sep 17, 2026
a6fe101
chore: drop redundant string interpolators in CometDeltaNativeScanSuite
dwsmith1983 Sep 17, 2026
1168978
Merge remote-tracking branch 'origin/main' into feature/delta-native-…
dwsmith1983 Sep 17, 2026
f0351b9
fix: keep the rebase pass-through for nullable all-modern batches
dwsmith1983 Sep 18, 2026
17546fd
test: let COMET_DELTA_S3_REQUIRED turn a missing MinIO into a hard fa…
dwsmith1983 Sep 18, 2026
d707d8d
docs: guard every Delta scan config row and drop the generated-table …
dwsmith1983 Sep 18, 2026
94e0be8
Merge remote-tracking branch 'origin/main' into feature/delta-native-…
dwsmith1983 Sep 18, 2026
e320d96
ci: run the Delta contrib suites for one Spark profile in the queue
dwsmith1983 Sep 18, 2026
cdb532e
Merge remote-tracking branch 'origin/main' into feature/delta-native-…
dwsmith1983 Sep 18, 2026
3f68cc9
ci: use setup-java v6 in the Delta MinIO job like the other workflows
dwsmith1983 Sep 18, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 14 additions & 6 deletions .github/workflows/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,14 +19,15 @@ ruleset in `.asf.yaml`. That splits CI into three tiers:
profile (4.1) only, and nothing else.
- **Queue tier** (`queue`): the authoritative gate. The PR tier plus the
macOS build, the benchmark compile check, the Delta contrib build gate, the
PyArrow UDF suite, Spark SQL on Spark 4.1 and Iceberg 1.11, evaluated
against the merge result rather than against the PR head. One Spark version
and one Iceberg version, both the default profile's.
PyArrow UDF suite, Spark SQL on Spark 4.1, Iceberg 1.11 and the Delta
contrib suites on Spark 3.5, evaluated against the merge result rather than
against the PR head. One Spark version and one Iceberg version, both the
default profile's, and one Delta profile.
- **Nightly tier** (`nightly`): the regression sweep of everything else, once
a day against `main` as it stands. The Comet test suites against the other
four Spark profiles, Spark SQL on Spark 3.5 and 4.0, and Iceberg
1.8/1.9/1.10. See [Nightly tier](#nightly-tier) below for how a failure
surfaces.
four Spark profiles, Spark SQL on Spark 3.5 and 4.0, Iceberg 1.8/1.9/1.10,
and the Delta contrib suites on Spark 4.0 and 4.1. See
[Nightly tier](#nightly-tier) below for how a failure surfaces.

Every queue-only and nightly job has a `run-*` label that opts a pull request
into it early, listed in the diagram below. The Lint Java matrix compiles
Expand Down Expand Up @@ -103,6 +104,7 @@ tiers partition the list and that the `pr` tier is exactly the default profile.
(Spark 4.1 profile only) pr_benchmark_check run-benchmark-check
delta_build_gate run-delta-build-gate
pyarrow_udf_test run-pyarrow-udf-tests
delta_3_5 run-delta-tests
spark_4_1 run-spark-4.1-tests
label or dispatch only spark_4_1 sql_hive run-spark-4.1-hive-tests
---------------------- iceberg_1_11 run-iceberg-tests
Expand All @@ -116,6 +118,8 @@ tiers partition the list and that the `pr` tier is exactly the default profile.
iceberg_1_8 run-iceberg-tests
iceberg_1_9 run-iceberg-tests
iceberg_1_10 run-iceberg-tests
delta_4_0 run-delta-tests
delta_4_1 run-delta-tests

| | |
+-----------------------------------+-----------------------------------+
Expand Down Expand Up @@ -152,6 +156,9 @@ tiers partition the list and that the `pr` tier is exactly the default profile.
| `pr_benchmark_check` | merge group, **or** PR with `run-benchmark-check` | benchmark sources only |
| `delta_build_gate` | merge group, **or** PR with `run-delta-build-gate` | main sources, poms, `contrib/delta` |
| `pyarrow_udf_test` | merge group, **or** PR with `run-pyarrow-udf-tests` | map-in-batch and Python runner code |
| `delta_3_5` | merge group, **or** PR with `run-delta-tests` | Delta contrib and native sources |
| `delta_4_0` | nightly, **or** PR with `run-delta-tests` | Delta contrib and native sources |
| `delta_4_1` | nightly, **or** PR with `run-delta-tests` | Delta contrib and native sources |
| `docs` | push to main, paths matched | `.asf.yaml`, `docs/**`, `docs.yaml` |
| `spark_3_5` | nightly, **or** PR with `run-spark-3.5-tests` | Spark 3.5 sources |
| `spark_4_1` | merge group, **or** PR with `run-spark-4.1-tests`; the `sql_hive` shards alone with `run-spark-4.1-hive-tests` | Spark 4.1 sources |
Expand Down Expand Up @@ -267,6 +274,7 @@ umbrella doesn't watch, or operate independently of the rest of CI:
| `pr_build_macos.yml` | `pr_build_macos` |
| `pr_benchmark_check.yml` | `pr_benchmark_check` |
| `delta_build_gate.yml` | `delta_build_gate` |
| `delta_contrib_test.yml` | `delta_3_5`, `delta_4_0`, `delta_4_1` |
| `pyarrow_udf_test.yml` | `pyarrow_udf_test` |
| `docs.yaml` | `docs` |
| `spark_sql_test_reusable.yml` | `spark_3_4`, `spark_3_5`, `spark_4_0`, `spark_4_1` |
Expand Down
48 changes: 47 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -208,6 +208,9 @@ jobs:
iceberg_1_9: ${{ steps.compute.outputs.iceberg_1_9 }}
iceberg_1_10: ${{ steps.compute.outputs.iceberg_1_10 }}
iceberg_1_11: ${{ steps.compute.outputs.iceberg_1_11 }}
delta_3_5: ${{ steps.compute.outputs.delta_3_5 }}
delta_4_0: ${{ steps.compute.outputs.delta_4_0 }}
delta_4_1: ${{ steps.compute.outputs.delta_4_1 }}
steps:
- uses: actions/checkout@v7
with:
Expand Down Expand Up @@ -396,6 +399,46 @@ jobs:
spark-full: '3.5.9'
java: 17

delta_3_5:
name: Delta Contrib Tests (Spark 3.5)
needs: changes
permissions:
contents: read
# Queue-only by default; PRs need the `run-delta-tests` label. Spark 3.5
# is the profile the contrib's MinIO and feature-off jobs already pin,
# which is why it is the one Delta profile the queue runs while 4.0 and
# 4.1 run nightly.
if: needs.changes.outputs.delta_3_5 == 'true'
uses: ./.github/workflows/delta_contrib_test.yml
with:
spark: '3.5'
java: '17'

delta_4_0:
name: Delta Contrib Tests (Spark 4.0)
needs: changes
permissions:
contents: read
# Nightly by default; PRs need the `run-delta-tests` label.
if: needs.changes.outputs.delta_4_0 == 'true'
uses: ./.github/workflows/delta_contrib_test.yml
with:
spark: '4.0'
java: '17'

delta_4_1:
name: Delta Contrib Tests (Spark 4.1)
needs: changes
permissions:
contents: read
# Nightly by default; PRs need the `run-delta-tests` label. No Spark 4.2
# caller: the contrib profile is dormant until a Delta release supports it.
if: needs.changes.outputs.delta_4_1 == 'true'
uses: ./.github/workflows/delta_contrib_test.yml
with:
spark: '4.1'
java: '17'

spark_4_0:
name: Spark SQL Tests (Spark 4.0)
needs: changes
Expand Down Expand Up @@ -528,6 +571,9 @@ jobs:
- pyarrow_udf_test
- spark_3_4
- spark_3_5
- delta_3_5
- delta_4_0
- delta_4_1
- spark_4_0
- spark_4_1
- iceberg_1_8
Expand Down Expand Up @@ -595,7 +641,7 @@ jobs:
failed.length ? 'Jobs that did not succeed:' : 'No individual job reported a failure; see the run for details.',
...failed,
'',
'The nightly tier runs the Spark and Iceberg versions the merge queue does not',
'The nightly tier runs the Spark, Iceberg and Delta versions the merge queue does not',
'(see `POLICY` in `dev/ci/compute-changes.py`). Close this issue once the failure',
'is understood; the next red nightly opens a new one.',
].join('\n');
Expand Down
11 changes: 7 additions & 4 deletions .github/workflows/delta_build_gate.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,15 @@
# specific language governing permissions and limitations
# under the License.

# Build-gate verification for the optional contrib/delta integration.
# Build-gate verification for the Delta split of the native library and the JVM build.
#
# A single cheap job that runs dev/verify-contrib-delta-gate.sh, which proves:
# - the DEFAULT cargo / mvn / dylib build carries ZERO Delta surface
# (no comet-contrib-delta / delta_kernel in the cargo tree, no io.delta in
# the effective pom, no Delta symbols in libcomet); and
# - the kernel-backed `comet-contrib-delta` crate stays out of every shipped
# build (no comet-contrib-delta / delta_kernel in the default or
# --no-default-features cargo tree, no io.delta in the effective pom, no
# contrib symbols in libcomet), while the small default-on `delta` feature
# (deletion-vector decoding) is deliberately in and its symbol footprint is
# pinned; and
# - the gated build (`--features contrib-delta` / `-Pcontrib-delta`) compiles
# and pulls the right delta-spark per Spark profile.
#
Expand Down
Loading
Loading