Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
7ef4063
chore: Second round of 0.9.0 changelog update (#2225)
CTTY Mar 10, 2026
b6de5db
feat: Honor compression settings for metadata.json on write (#1876)
emkornfield Mar 11, 2026
619b98f
chore(deps): Bump quinn-proto from 0.11.13 to 0.11.14 in /bindings/py…
dependabot[bot] Mar 11, 2026
335961a
Add catalog test suite to unify catalog's behavior. (#2131)
blackmwk Mar 12, 2026
c2b24db
chore(deps): Bump datafusion from 52.2.0 to 52.3.0 (#2235)
dependabot[bot] Mar 16, 2026
dde0aea
chore(deps): Bump serde_with from 3.17.0 to 3.18.0 (#2233)
dependabot[bot] Mar 16, 2026
d16a9bb
chore(deps): Bump tempfile from 3.26.0 to 3.27.0 (#2234)
dependabot[bot] Mar 16, 2026
16c2126
chore(deps): Bump lz4_flex from 0.12.0 to 0.12.1 (#2239)
dependabot[bot] Mar 17, 2026
cc256f5
chore(deps): Bump lz4_flex from 0.12.0 to 0.12.1 in /bindings/python …
dependabot[bot] Mar 17, 2026
a54e442
feat(io): Add delete_stream to Storage trait (#2216)
CTTY Mar 17, 2026
ffd6454
feat(storage): implement opendal resolving storage (#2231)
CTTY Mar 17, 2026
c1497a9
doc: Update README.md to include more components (#2248)
CTTY Mar 18, 2026
0196cb1
fix(python): use resolving storage for python binding (#2246)
CTTY Mar 18, 2026
7db4b01
chore: Change publish parallism back to 1 (#2254)
CTTY Mar 19, 2026
cb7f78a
Infra: Remove GitHub Actions from Dependabot configuration (#2267)
kevinjqliu Mar 23, 2026
99dbb16
ci: pin third-party actions to Apache-approved SHAs (#2266)
kevinjqliu Mar 23, 2026
2820d47
chore(deps): fix audit check and disable inherited aws sdk default fe…
maybe-vibe Mar 23, 2026
dc0a3fa
chore(deps): Bump minijinja from 2.17.1 to 2.18.0 (#2273)
dependabot[bot] Mar 23, 2026
958ae65
chore(deps): Bump datafusion from 52.3.0 to 52.4.0 (#2271)
dependabot[bot] Mar 23, 2026
1e2ffb9
chore(deps): Bump datafusion-cli from 52.2.0 to 52.3.0 (#2272)
dependabot[bot] Mar 23, 2026
f17663b
chore(deps): Bump datafusion-sqllogictest from 52.2.0 to 52.3.0 (#2270)
dependabot[bot] Mar 23, 2026
4c08d35
fix: explicitly set Python interpreter in maturin build to prevent us…
kevinjqliu Mar 23, 2026
1f1ba53
chore(deps): Bump rustls-webpki from 0.103.7 to 0.103.10 in bindings/…
blackmwk Mar 24, 2026
44e73f6
chore(deps): Bump bytes from 1.11.0 to 1.11.1 in /bindings/python (#2…
dependabot[bot] Mar 24, 2026
9e9a2b1
chore(deps): Bump time from 0.3.44 to 0.3.47 in /bindings/python (#2282)
dependabot[bot] Mar 24, 2026
89a9c90
docs: Add DataFusion Comet to Users section of README (#2283)
mbutrovich Mar 24, 2026
fea5906
feat(encryption) [1/N] Support encryption: Add crypto for AES-GCM (#2…
xanderbailey Mar 25, 2026
56fda82
feat!(catalog): adding support for purge_table (#2232)
CTTY Mar 25, 2026
477a1e5
deps: upgrade DataFusion to 53.0, Arrow to 58 (#2206)
mbutrovich Mar 25, 2026
39eca83
chore(deps): Bump uuid from 1.22.0 to 1.23.0 (#2291)
dependabot[bot] Mar 30, 2026
aff502d
ci: improve github workflows (#2289)
kevinjqliu Mar 30, 2026
3212c31
Make `convert_filters_to_predicate` public (#2118)
LLDay Mar 30, 2026
6ee5e71
ci: fix zizmor security findings (#2290)
kevinjqliu Mar 31, 2026
14f2e14
fix(spec): clean up -1 snapshot ID sentinel usage and add deserializa…
geserdugarov Mar 31, 2026
d8011a0
feat!: Enhance compression codec enum. (#2288)
emkornfield Mar 31, 2026
ff6c700
ci: allows nightly to run on workflow dispatch (#2304)
kevinjqliu Mar 31, 2026
dc3a2d5
ci: ensure use bash shell for env (#2305)
kevinjqliu Mar 31, 2026
626de2e
feat(iceberg): Add snapshot utils to scan ancestors (#2285)
CTTY Apr 1, 2026
4a01083
Merge remote-tracking branch 'upstream/main' into sync-upstream-main
gbrgr Apr 2, 2026
b2fdeed
Fix build errors
gbrgr Apr 2, 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
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
4 changes: 4 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,8 @@ updates:
schedule:
interval: "weekly"
day: "sunday"
cooldown:
default-days: 7

# Maintain dependencies for iceberg
- package-ecosystem: "cargo"
Expand All @@ -42,3 +44,5 @@ updates:
patterns:
- "arrow*"
- "parquet"
cooldown:
default-days: 7
47 changes: 47 additions & 0 deletions .github/workflows/asf-allowlist-check.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
#
# 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
# Intentionally unpinned to always use the latest allowlist from the ASF.
- uses: apache/infrastructure-actions/allowlist-check@main # zizmor: ignore[unpinned-uses]
6 changes: 4 additions & 2 deletions .github/workflows/audit.yml
Original file line number Diff line number Diff line change
Expand Up @@ -44,11 +44,13 @@ jobs:
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 }}
22 changes: 14 additions & 8 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@v7
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
persist-credentials: false
- uses: astral-sh/setup-uv@5a095e7a2014a4212f075830d4f7277575a9d098 # v7.3.1
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@04ac600d27cdf7a9a280dadf7147097c42b757ad # v1
with:
working-directory: "bindings/python"
command: build
args: --out dist
- uses: astral-sh/setup-uv@v7
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 # v7.3.1
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@0fde6d128a3d980ceac30be8c8b8739abd963b81 # v2.70.0
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@631208b7aac2daa8b707f55e7331f9112b0e062d # v1.44.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@c10b8064de6f491fea524254123dbe5e09572f13 # v4
with:
languages: actions

- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v4
uses: github/codeql-action/analyze@c10b8064de6f491fea524254123dbe5e09572f13 # v4
with:
category: "/language:actions"
23 changes: 19 additions & 4 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,9 @@ permissions:
jobs:
publish:
runs-on: ubuntu-latest
environment: publish
strategy:
# Publish package one by one instead of flooding the registry
max-parallel: 15
max-parallel: 1 # Publish package one by one instead of flooding the registry
matrix:
# Order here is sensitive, as it will be used to determine the order of publishing
package:
Expand All @@ -47,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 @@ -62,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
Loading