Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
324d6cb
ci: improve github workflows (#2289)
kevinjqliu Mar 30, 2026
c6ad20f
Make `convert_filters_to_predicate` public (#2118)
LLDay Mar 30, 2026
d5292b5
ci: fix zizmor security findings (#2290)
kevinjqliu Mar 31, 2026
ac13039
fix(spec): clean up -1 snapshot ID sentinel usage and add deserializa…
geserdugarov Mar 31, 2026
418e78d
feat!: Enhance compression codec enum. (#2288)
emkornfield Mar 31, 2026
dfb29f6
ci: allows nightly to run on workflow dispatch (#2304)
kevinjqliu Mar 31, 2026
2017549
ci: ensure use bash shell for env (#2305)
kevinjqliu Mar 31, 2026
eaf360d
feat(iceberg): Add snapshot utils to scan ancestors (#2285)
CTTY Apr 1, 2026
ddfed97
Fix zizmor workflow (#2324)
blackmwk Apr 13, 2026
2172006
chore(deps): Bump crate-ci/typos from 1.44.0 to 1.45.0 (#2318)
dependabot[bot] Apr 13, 2026
ef1d522
chore(deps): Bump taiki-e/install-action from 2.70.0 to 2.73.0 (#2319)
dependabot[bot] Apr 13, 2026
448dc66
chore(deps): Bump aws-sdk-s3tables from 1.53.0 to 1.54.0 (#2320)
dependabot[bot] Apr 13, 2026
06b4f59
Fix ci workflow failure (#2325)
blackmwk Apr 14, 2026
fa284a2
chore(deps): Bump tokio from 1.50.0 to 1.51.0 (#2321)
dependabot[bot] Apr 15, 2026
f70c578
chore(deps): Bump minijinja from 2.18.0 to 2.19.0 (#2322)
dependabot[bot] Apr 15, 2026
e4578d8
fix(s3tables): use 's3' as the default scheme (#2313)
rchowell Apr 15, 2026
a1f9c38
fix(storage/s3): default to virtual-host-style addressing (#2330)
plusplusjiajia Apr 15, 2026
9bb4003
Fix RUSTSEC-2026-0097 (#2331)
blackmwk Apr 15, 2026
0e6233e
chore: update comment tag to match the exact version to fix zizmor (#…
CTTY Apr 15, 2026
4387eab
ci: fix zizmor workflow (#2334)
kevinjqliu Apr 15, 2026
486656d
chore(deps): Bump astral-sh/setup-uv from 7.3.1 to 8.0.0 (#2314)
dependabot[bot] Apr 15, 2026
d9aa8b2
tests(s3tables): add s3tables end-to-end test to verify table creatio…
dannycjones Apr 15, 2026
6d5d404
fix: build_fallback_field_id_map produces incorrect column indices fo…
mbutrovich Apr 16, 2026
ee2a683
fix: incorrect Parquet INT96 timestamp values from ArrowReader (#2301)
mbutrovich Apr 16, 2026
af7afe2
feat(encryption) [2/N] Support encryption: Add streaming encryption/d…
xanderbailey Apr 16, 2026
fdb49f1
refactor(storage): remove the configured_scheme parameter from storag…
rchowell Apr 17, 2026
1543c35
chore(deps): Bump PyO3/maturin-action from 1.50.1 to 1.51.0 (#2346)
dependabot[bot] Apr 20, 2026
82078a3
chore(deps): Bump actions/upload-artifact from 7.0.0 to 7.0.1 (#2345)
dependabot[bot] Apr 20, 2026
09a4bbe
support fixedbinary(n) (#2348)
jeff-sqds Apr 20, 2026
4799220
chore: bump datafusion to 53.1.0 (#2350)
xanderbailey Apr 21, 2026
1770295
chore(deps): Bump rustls-webpki from 0.103.10 to 0.103.12 in /binding…
dependabot[bot] Apr 21, 2026
8335b9a
fix: NaN pushdown correctly pushes down NaNs correctness issue (#2351)
xanderbailey Apr 22, 2026
d67e8df
fix: Bump rustls-webpki from 0.103.12 to 0.103.13 to fix RUSTSEC-2026…
CTTY Apr 23, 2026
d61abce
Split arrow reader into smaller modules (#2358)
blackmwk Apr 23, 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
5 changes: 5 additions & 0 deletions .cargo/audit.toml
Original file line number Diff line number Diff line change
Expand Up @@ -33,4 +33,9 @@ ignore = [
#
# Introduced by object_store, see https://github.com/apache/arrow-rs-object-store/issues/564
"RUSTSEC-2025-0134",
# `rand` unsoundness with custom logger using `rand::rng()`
#
# Direct dependency upgraded to 0.9.3+. Transitive rand 0.8.5 remains
# from reqsign/sqllogictest/rustc-hash — no 0.8.x patch exists.
"RUSTSEC-2026-0097",
]
2 changes: 1 addition & 1 deletion .github/actions/overwrite-package-version/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ runs:
using: "composite"
steps:
- name: Setup Python
uses: actions/setup-python@v5
uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5
with:
python-version: '3.12'

Expand Down
2 changes: 1 addition & 1 deletion .github/actions/setup-builder/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,8 @@ runs:
using: "composite"
steps:
- name: Setup specified Rust toolchain
shell: bash
if: ${{ inputs.rust-version != '' }}
shell: bash
env:
RUST_VERSION: ${{ inputs.rust-version }}
run: |
Expand Down
11 changes: 11 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,15 @@

version: 2
updates:
# Maintain dependencies for GitHub Actions
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
day: "sunday"
cooldown:
default-days: 7

# Maintain dependencies for iceberg
- package-ecosystem: "cargo"
directory: "/"
Expand All @@ -35,3 +44,5 @@ updates:
patterns:
- "arrow*"
- "parquet"
cooldown:
default-days: 7
46 changes: 46 additions & 0 deletions .github/workflows/asf-allowlist-check.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
#

# Verifies all GitHub Actions refs are on the ASF allowlist.
# Actions not on the allowlist silently fail with "Startup failure" — no logs,
# no notifications, and PRs may appear green because no checks ran.
# See https://github.com/apache/infrastructure-actions/issues/574
name: "ASF Allowlist Check"

on:
pull_request:
paths:
- ".github/**"
push:
branches:
- main
paths:
- ".github/**"

permissions:
contents: read

jobs:
asf-allowlist-check:
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
persist-credentials: false
- uses: apache/infrastructure-actions/allowlist-check@4e9c961f587f72b170874b6f5cd4ac15f7f26eb8 # main
9 changes: 7 additions & 2 deletions .github/workflows/audit.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,18 +37,23 @@ on:
- cron: '0 0 * * *'

permissions:
# All other permissions are set to none
contents: read
checks: write
issues: write

jobs:
security_audit:
runs-on: ubuntu-latest
if: github.repository == 'apache/iceberg-rust'
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
persist-credentials: false
- name: Setup Rust toolchain
uses: ./.github/actions/setup-builder
with:
rust-version: stable
- uses: rustsec/audit-check@v2.0.0
- uses: rustsec/audit-check@69366f33c96575abad1ee0dba8212993eecbe998 # v2.0.0
with:
token: ${{ secrets.GITHUB_TOKEN }}
20 changes: 13 additions & 7 deletions .github/workflows/bindings_python_ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,9 @@ jobs:
check-rust:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
persist-credentials: false
- name: Check format
working-directory: "bindings/python"
run: cargo fmt --all -- --check
Expand All @@ -58,8 +60,10 @@ jobs:
check-python:
runs-on: ubuntu-slim
steps:
- uses: actions/checkout@v6
- uses: astral-sh/setup-uv@5a095e7a2014a4212f075830d4f7277575a9d098
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
persist-credentials: false
- uses: astral-sh/setup-uv@cec208311dfd045dd5311c1add060b2062131d57 # v8.0.0
with:
version: "0.9.3"
enable-cache: true
Expand All @@ -85,16 +89,18 @@ jobs:
- macos-latest
- windows-latest
steps:
- uses: actions/checkout@v6
- uses: actions/setup-python@v6
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
persist-credentials: false
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6
with:
python-version: 3.12
- uses: PyO3/maturin-action@v1
- uses: PyO3/maturin-action@e83996d129638aa358a18fbd1dfb82f0b0fb5d3b # v1.51.0
with:
working-directory: "bindings/python"
command: build
args: --out dist -i python3.12 # Explicitly set interpreter; manylinux containers have multiple Pythons and maturin may pick an older one
- uses: astral-sh/setup-uv@5a095e7a2014a4212f075830d4f7277575a9d098
- uses: astral-sh/setup-uv@cec208311dfd045dd5311c1add060b2062131d57 # v8.0.0
with:
version: "0.9.3"
enable-cache: true
Expand Down
39 changes: 25 additions & 14 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -53,19 +53,21 @@ jobs:
- ubuntu-latest
- macos-latest
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
persist-credentials: false

- name: Setup Rust toolchain
uses: ./.github/actions/setup-builder

- name: Check License Header
uses: apache/skywalking-eyes/header@v0.8.0
uses: apache/skywalking-eyes/header@61275cc80d0798a405cb070f7d3a8aaf7cf2c2c1 # v0.8.0

- name: Check toml format
run: make check-toml

- name: Install protoc
uses: arduino/setup-protoc@v3
uses: arduino/setup-protoc@c65c819552d16ad3c9b72d9dfd5ba5237b9c906b # v3
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}

Expand All @@ -91,16 +93,18 @@ jobs:
- macos-latest
- windows-latest
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
persist-credentials: false

- name: Setup Rust toolchain
uses: ./.github/actions/setup-builder

- name: Cache Rust artifacts
uses: Swatinem/rust-cache@v2
uses: swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 # v2

- name: Install protoc
uses: arduino/setup-protoc@v3
uses: arduino/setup-protoc@c65c819552d16ad3c9b72d9dfd5ba5237b9c906b # v3
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}

Expand All @@ -117,13 +121,15 @@ jobs:
- macos-latest
- windows-latest
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
persist-credentials: false

- name: Setup Rust toolchain
uses: ./.github/actions/setup-builder

- name: Cache Rust artifacts
uses: Swatinem/rust-cache@v2
uses: swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 # v2

- name: Build
run: cargo build -p iceberg --no-default-features
Expand All @@ -138,24 +144,26 @@ jobs:
- { name: "doc", args: "--doc --all-features --workspace" }
name: Tests (${{ matrix.test-suite.name }})
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
persist-credentials: false

- name: Setup Rust toolchain
uses: ./.github/actions/setup-builder

- name: Install protoc
uses: arduino/setup-protoc@v3
uses: arduino/setup-protoc@c65c819552d16ad3c9b72d9dfd5ba5237b9c906b # v3
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}

- name: Cache Rust artifacts
uses: Swatinem/rust-cache@v2
uses: swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 # v2
with:
key: ${{ matrix.test-suite.name }}

- name: Install cargo-nextest
if: matrix.test-suite.name == 'default'
uses: taiki-e/install-action@v2
uses: taiki-e/install-action@0abfcd587b70a713fdaa7fb502c885e2112acb15 # v2.75.7
with:
tool: cargo-nextest

Expand All @@ -164,6 +172,7 @@ jobs:
run: make docker-up

- name: Run tests
shell: bash
env:
# Disable debug info to speed up compilation and reduce artifact size
RUSTFLAGS: "-C debuginfo=0"
Expand All @@ -182,9 +191,11 @@ jobs:
name: Verify MSRV
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
persist-credentials: false
- name: Install protoc
uses: arduino/setup-protoc@v3
uses: arduino/setup-protoc@c65c819552d16ad3c9b72d9dfd5ba5237b9c906b # v3
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
- name: Get MSRV
Expand Down
6 changes: 4 additions & 2 deletions .github/workflows/ci_typos.yml
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,8 @@ jobs:
env:
FORCE_COLOR: 1
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
persist-credentials: false
- name: Check typos
uses: crate-ci/typos@v1.44.0
uses: crate-ci/typos@02ea592e44b3a53c302f697cddca7641cd051c3d # v1.45.0
8 changes: 5 additions & 3 deletions .github/workflows/codeql.yml
Original file line number Diff line number Diff line change
Expand Up @@ -41,14 +41,16 @@ jobs:

steps:
- name: Checkout repository
uses: actions/checkout@v6
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
persist-credentials: false

- name: Initialize CodeQL
uses: github/codeql-action/init@v4
uses: github/codeql-action/init@95e58e9a2cdfd71adc6e0353d5c52f41a045d225 # v4.35.2
with:
languages: actions

- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v4
uses: github/codeql-action/analyze@95e58e9a2cdfd71adc6e0353d5c52f41a045d225 # v4.35.2
with:
category: "/language:actions"
20 changes: 18 additions & 2 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ permissions:
jobs:
publish:
runs-on: ubuntu-latest
environment: publish
strategy:
max-parallel: 1 # Publish package one by one instead of flooding the registry
matrix:
Expand All @@ -46,7 +47,9 @@ jobs:
- "crates/catalog/sql"
- "crates/integrations/datafusion"
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
persist-credentials: false

- name: Get MSRV
id: get-msrv
Expand All @@ -61,6 +64,19 @@ jobs:
working-directory: ${{ matrix.package }}
# Only publish if it's a tag and the tag is not a pre-release
if: ${{ startsWith(github.ref, 'refs/tags/') && !contains(github.ref, '-') }}
run: cargo publish --all-features
run: cargo publish --all-features # zizmor: ignore[use-trusted-publishing] -- https://github.com/apache/iceberg-rust/issues/1539
shell: bash
env:
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}

# Trigger Python release after crate publishing completes.
# Only runs for tag pushes; for manual Python releases, use workflow_dispatch on release_python.yml directly.
release-python:
needs: [publish]
if: ${{ startsWith(github.ref, 'refs/tags/') }}
permissions:
contents: read
id-token: write # Required for PyPI trusted publishing in the called workflow
uses: ./.github/workflows/release_python.yml
with:
release_tag: ${{ github.ref_name }}
Loading