Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
75 commits
Select commit Hold shift + click to select a range
a5f162f
perf(arrow): build repeated constant string/binary columns without pe…
anoopj Aug 27, 2026
4382ebe
chore: Update MSRV to Rust 1.95 (#3083)
dannycjones Aug 27, 2026
4200aa0
chore(repo): Replace bug report version selector with freeform text f…
dannycjones Aug 28, 2026
6678583
fix(sql): propagate catalog commit errors (#3062)
mattfaltyn Aug 28, 2026
76572cf
refactor: change from serialising a u64 to i64 (#3065)
JosephLenton Aug 28, 2026
57a5612
feat: add lazy property view macro (#3044)
blackmwk Aug 28, 2026
5266f7d
refactor: parse table properties lazily (#3030)
blackmwk Aug 28, 2026
30574bf
feat: synthesize _row_id metadata column on read (#3058)
anoopj Aug 29, 2026
6d7afdd
chore(deps): Bump reqwest from 0.12.28 to 0.13.4 (#3116)
dependabot[bot] Aug 31, 2026
cb6e2a4
chore(deps): Bump taiki-e/install-action from 2.86.1 to 2.86.6 (#3115)
dependabot[bot] Aug 31, 2026
97fbe2d
chore(deps): Bump the codeql-action group with 2 updates (#3114)
dependabot[bot] Aug 31, 2026
c4b43ad
chore(deps): Bump uuid from 1.24.0 to 1.25.0 (#3113)
dependabot[bot] Aug 31, 2026
e9443b9
chore(deps-dev): Bump huggingface-hub from 1.27.0 to 1.28.0 in /bindi…
dependabot[bot] Aug 31, 2026
d6d06f3
fix(spec): reject unequal map default arrays (#3110)
mattfaltyn Aug 31, 2026
5c37021
Prune data columns for metadata-only projections (#3117)
anoopj Aug 31, 2026
6d65786
refactor(memory): derive catalog configuration from properties (#3101)
blackmwk Sep 2, 2026
1c27c68
chore: Merge changes from 0.10.x to main (#3074)
dannycjones Sep 2, 2026
34ad7e0
chore(ci): Fail CI when a publishable crate is missing LICENSE or NOT…
dannycjones Sep 2, 2026
0f37499
refactor(scan): extract reusable scan functions (#3093)
xanderbailey Sep 2, 2026
a18a0b2
feat(io): make FileIO serializable (#3090)
blackmwk Sep 2, 2026
12575c7
refactor(scan): validate FileScanTask construction (#3131)
blackmwk Sep 2, 2026
31eb8dd
refactor(auth) Emphasize AuthManagers aren't shared between catalogs …
DerGut Sep 2, 2026
107f449
fix(partition): Align DateTime Transform to Java's Implementation (#3…
Kurtiscwright Sep 2, 2026
dd4f32c
feat(scan): [3/N] read and apply V3 deletion vectors (#3035)
mbutrovich Sep 3, 2026
c8fc70e
fix: Address merge conflicts raising Clippy issues (#3137)
dannycjones Sep 3, 2026
665c64e
deps: upgrade to DataFusion 55.0 and Arrow/Parquet 59.2 (#2958)
mbutrovich Sep 3, 2026
75c9201
refactor(pyiceberg-core): remove DataFusion TableProvider export (#3143)
kevinjqliu Sep 3, 2026
6fa8e03
refactor: materialize constant metadata columns via a ConstantLookup …
anoopj Sep 4, 2026
5468f70
chore(deps): Bump apache/skywalking-eyes/header from 0.8.0 to 0.9.0 (…
dependabot[bot] Sep 7, 2026
63986f5
chore(deps): Bump taiki-e/install-action from 2.86.6 to 2.87.2 (#3156)
dependabot[bot] Sep 7, 2026
6b4c277
chore(deps): Bump crate-ci/typos from 1.49.0 to 1.50.0 (#3155)
dependabot[bot] Sep 7, 2026
18766f5
chore(deps): Bump rand from 0.9.5 to 0.10.2 (#3154)
dependabot[bot] Sep 7, 2026
cd11d72
feat(scan): make FileScanTask serializable (#3091)
blackmwk Sep 7, 2026
f347ad2
chore(deps): Bump the codeql-action group with 2 updates (#3153)
dependabot[bot] Sep 7, 2026
bf80f23
chore(deps): Bump reqwest from 0.12.28 to 0.13.4 (#3152)
dependabot[bot] Sep 7, 2026
7c8345b
chore(deps-dev): Bump maturin from 1.14.1 to 1.15.0 in /bindings/pyth…
dependabot[bot] Sep 7, 2026
c0bff81
perf(arrow): move partition key into group map instead of cloning per…
anoopj Sep 7, 2026
1deceb1
chore(deps): bump zizmor-action to 0.6.3 (#3161)
blackmwk Sep 7, 2026
28ede50
chore(deps): remove dead datafusion-ffi, unused workspace deps, and s…
kevinjqliu Sep 7, 2026
4687d26
fix: Fix CI failure due to integration test's Hive install (#3174)
DerGut Sep 8, 2026
7874ee2
perf(writer): borrow statistics in MinMaxColAggregator::update instea…
anoopj Sep 9, 2026
4d83bc7
perf(arrow): build repeated boolean columns with BooleanBuffer (#3178)
anoopj Sep 9, 2026
d6c2eb4
chore: exclude repo-only files from the source archive (#3189)
kevinjqliu Sep 10, 2026
4aa55ba
fix(hms): use `get_table_req` for Hive 4 metastore compatibility (#3187)
kevinjqliu Sep 10, 2026
6262dff
chore(dev): run REST fixture's SQLite backend in WAL mode (#3183)
kevinjqliu Sep 10, 2026
6f062aa
fix(ci): keep .github/actions in the source archive (#3193)
xanderbailey Sep 10, 2026
0aeccb8
fix: break dev-dependency cycle that blocks publishing iceberg-proper…
kevinjqliu Sep 10, 2026
44ceed3
test(arrow): cover repeated boolean array path (#3201)
anoopj Sep 11, 2026
8ac8b1c
perf(arrow): build constant filter masks with BooleanBuffer instead o…
anoopj Sep 11, 2026
cb912c9
ci: check new crates are reserved on crates.io before merge (#3185)
kevinjqliu Sep 11, 2026
100804c
ci: enable GitHub merge queue with required CI gates (#3195)
kevinjqliu Sep 11, 2026
9e1670d
ci: pull MinIO images from Quay (#3202)
smaheshwar-pltr Sep 11, 2026
682ceb9
chore(release): Remove --release_ref from create_rc.sh, always releas…
CTTY Sep 11, 2026
29929f6
ci: avoid redundant post-merge runs (#3203)
kevinjqliu Sep 11, 2026
be48041
ci: refresh Rust caches on main changes (#3205)
kevinjqliu Sep 12, 2026
8ac2b81
Infra: Switch Dependabot to a monthly cadence (#3216)
kevinjqliu Sep 14, 2026
0f2229c
chore(deps): Bump crate-ci/typos from 1.50.0 to 1.50.1 (#3213)
dependabot[bot] Sep 14, 2026
0c476ab
chore(deps): Bump reqwest from 0.12.28 to 0.13.4 (#3211)
dependabot[bot] Sep 14, 2026
342a6ea
refactor(sql): derive catalog configuration from properties (#3105)
blackmwk Sep 14, 2026
d2b2f7a
chore(deps): Bump taiki-e/install-action from 2.87.2 to 2.87.8 (#3217)
dependabot[bot] Sep 14, 2026
99c57c9
chore(deps): Bump the arrow-parquet group across 1 directory with 10 …
dependabot[bot] Sep 14, 2026
147d09f
chore(deps-dev): Bump pyiceberg from 0.11.1 to 0.12.0 in /bindings/py…
dependabot[bot] Sep 14, 2026
fabb707
feat(iceberg): thread per-file sort order into FileScanTask (#3128)
anuragmantri Sep 14, 2026
f11a20d
perf(arrow): build partition filter mask with BooleanBufferBuilder (#…
anoopj Sep 14, 2026
f0c9dad
perf(expr): borrow field type in manifest bound decoding instead of c…
anoopj Sep 14, 2026
9db0b68
feat(writer): add PositionDeleteFileWriter (#2986)
laskoviymishka Sep 14, 2026
5c3d18f
fix(release): warn when bash 3.2 will not report the failed step (#3194)
kevinjqliu Sep 15, 2026
aa5ff7e
fix(encryption): return DataInvalid for invalid AES key sizes (#3226)
xanderbailey Sep 15, 2026
930c102
feat(python) add standard key metadata python bindings (#3206)
xanderbailey Sep 15, 2026
8193cce
feat: bloom filter pushdown (#2398)
xanderbailey Sep 15, 2026
36bc0f4
Merge remote-tracking branch 'upstream/main' into gb/merge-upstream-2
gbrgr Sep 16, 2026
72c0e05
fix(incremental-scan): expose bloom-filter row-group pruning on Incre…
gbrgr Sep 16, 2026
b5bb309
fix(ci): drop crates.io version pin from iceberg-storage-refreshable …
gbrgr Sep 16, 2026
5d81656
fix(scan): tolerate a dropped partition source column in FileScanTask…
gbrgr Sep 16, 2026
2c6aef6
fix(transaction): fix correctness bugs in OverwriteAction
gbrgr Sep 16, 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
40 changes: 38 additions & 2 deletions .asf.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -36,15 +36,51 @@ github:
protected_branches:
main:
required_status_checks:
# strict means "Require branches to be up to date before merging".
strict: true
# Check context names (job names, not workflow files) that Merge Queue
# waits for. Every producer workflow must run on both `pull_request`
# and `merge_group`, without path filters, so each context always
# reports. `strict` is omitted: Merge Queue validates every entry
# against an up-to-date main, and ASF defaults it to false.
contexts:
# Repository policy and security checks.
- Analyze Actions
- Run zizmor 🌈
- asf-allowlist-check

# Rust workflow gates.
- ci-required
- check-public-api

# Python bindings workflow gates.
- bindings-python-ci-required

required_pull_request_reviews:
required_approving_review_count: 1
dismiss_stale_reviews: false

required_linear_history: true
rulesets:
- name: Merge Queue
target: branch
enforcement: active
conditions:
ref_name:
include:
- "~DEFAULT_BRANCH"
exclude: []
rules:
- type: merge_queue
parameters:
check_response_timeout_minutes: 90
grouping_strategy: ALLGREEN
max_entries_to_build: 1
max_entries_to_merge: 1
merge_method: SQUASH
min_entries_to_merge: 1
min_entries_to_merge_wait_minutes: 0
pull_requests:
# allow pull requests to merge automatically once all requirements are met
allow_auto_merge: true
# auto-delete head branches after being merged
del_branch_on_merge: true
features:
Expand Down
27 changes: 0 additions & 27 deletions .cargo/audit.toml
Original file line number Diff line number Diff line change
Expand Up @@ -21,37 +21,10 @@ ignore = [
# Marvin Attack: potential key recovery through timing sidechannels
# Issues: https://github.com/apache/iceberg-rust/issues/221
"RUSTSEC-2023-0071",
# `derivative` is unmaintained; consider using an alternative
#
# Introduced by hive_metastore, tracked at https://github.com/cloudwego/pilota/issues/293
"RUSTSEC-2024-0388",
# `paste` is unmaintained; consider using an alternative
#
# Introduced by hive_metastore, tracked at https://github.com/cloudwego/pilota/issues/293
"RUSTSEC-2024-0436",
# `generational-arena` is unmaintained; consider using an alternative
#
# Introduced by datafusion-ffi through abi_stable/async-ffi until upstream
# provides a replacement path.
"RUSTSEC-2024-0014",
# `rustls-pemfile` is unmaintained
#
# 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",
# pyo3 < 0.29: out-of-bounds read in PyList/PyTuple `nth`/`nth_back`, and
# missing `Sync` bound on `PyCFunction::new_closure` closures.
#
# Pulled only transitively through arrow's `pyarrow` feature
# (arrow-pyarrow), which still pins pyo3 ^0.28 in its latest release; no
# arrow build supports the patched pyo3 0.29 yet. Remove once arrow-pyarrow
# moves to pyo3 >=0.29.
"RUSTSEC-2026-0176",
"RUSTSEC-2026-0177",
# `quick-xml` < 0.41.0 has quadratic duplicate-attribute validation and
# unbounded namespace-declaration allocation (parser DoS).
#
Expand Down
11 changes: 11 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -1 +1,12 @@
# Paths left out of the source archive built by dev/release/create_rc.sh.
# Files needed to build, test, and verify from source (dev/, .licenserc.yaml,
# lint configs) must stay in.
#
# .github must stay in too: `uses: $/...` action references are resolved from
# the repository archive, which honors export-ignore.
website export-ignore
.asf.yaml export-ignore
.devcontainer export-ignore
.gitattributes export-ignore
.gitignore export-ignore
.idea export-ignore
16 changes: 6 additions & 10 deletions .github/ISSUE_TEMPLATE/iceberg_bug_report.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,19 +22,15 @@ description: Problems, bugs and issues with Apache Iceberg Rust
labels: bug

body:
- type: dropdown
- type: input
attributes:
label: Apache Iceberg Rust version
description: What Apache Iceberg Rust version are you using?
multiple: false
options:
- 0.6.0 (latest version)
- 0.5.1
- 0.4.0
- 0.3.0
- 0.2.0
description: >
What Apache Iceberg Rust version are you using?
placeholder: >
For example: v0.10.0
validations:
required: false
required: true
- type: textarea
attributes:
label: Describe the bug
Expand Down
9 changes: 3 additions & 6 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,7 @@ updates:
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
day: "sunday"
interval: "monthly"
cooldown:
default-days: 7
groups:
Expand All @@ -37,8 +36,7 @@ updates:
- package-ecosystem: "cargo"
directory: "/"
schedule:
interval: "weekly"
day: "sunday"
interval: "monthly"
open-pull-requests-limit: 50
versioning-strategy: lockfile-only
ignore:
Expand All @@ -58,7 +56,6 @@ updates:
- package-ecosystem: "uv"
directory: "/bindings/python"
schedule:
interval: "weekly"
day: "sunday"
interval: "monthly"
cooldown:
default-days: 7
9 changes: 6 additions & 3 deletions .github/workflows/asf-allowlist-check.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,7 @@ name: "ASF Allowlist Check"

on:
pull_request:
push:
branches:
- main
merge_group:

permissions:
contents: read
Expand All @@ -39,4 +37,9 @@ jobs:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
# The allowlist checker recognizes ./, but not $/, as a local action prefix.
# Normalize its disposable checkout while preserving $/ in source workflows.
- name: Normalize self-repository references for the allowlist checker
run: |
find .github -type f -name '*.yml' -exec sed -i 's#uses: \$/#uses: ./#g' {} +
- uses: apache/infrastructure-actions/allowlist-check@61dcea11f19e2bbe1263f14d72235e8da17d3ad0 # allowlist-check/v1.0.0
2 changes: 1 addition & 1 deletion .github/workflows/audit.yml
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ jobs:
with:
persist-credentials: false
- name: Setup Rust toolchain
uses: ./.github/actions/setup-builder
uses: $/.github/actions/setup-builder
with:
rust-version: stable
- uses: rustsec/audit-check@69366f33c96575abad1ee0dba8212993eecbe998 # v2.0.0
Expand Down
21 changes: 18 additions & 3 deletions .github/workflows/bindings_python_ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@ on:
push:
branches:
- main
pull_request:
paths:
- '**' # Include all files and directories in the repository by default.
- '!.github/ISSUE_TEMPLATE/**' # Exclude files and directories that don't impact tests or code like templates, metadata, and documentation.
Expand All @@ -35,6 +34,8 @@ on:
- '!LICENSE'
- '!NOTICE'
- '!README.md'
pull_request:
merge_group:

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}-${{ github.event_name }}
Expand All @@ -56,7 +57,7 @@ jobs:
enable-cache: true
- name: Install tools
run: |
uv tool install ruff
uv tool install ruff@0.15.22
- name: Check format
working-directory: "bindings/python"
run: |
Expand Down Expand Up @@ -85,7 +86,7 @@ jobs:
# Linux maturin builds may run inside manylinux Docker, so host Rust caches only help Windows/macOS.
- name: Setup Rust toolchain
if: runner.os != 'Linux'
uses: ./.github/actions/setup-builder
uses: $/.github/actions/setup-builder
- name: Cache Rust artifacts
if: runner.os != 'Linux'
uses: swatinem/rust-cache@6323deb102c322ba6fcbdcafc7e3dddab59af2b6 # v2.9.2
Expand Down Expand Up @@ -121,3 +122,17 @@ jobs:
HF_DATASET: ${{ secrets.HF_DATASET }}
run: |
make test

bindings-python-ci-required:
if: ${{ always() }}
needs: [check-python, test]
runs-on: ubuntu-slim
steps:
- name: Verify Bindings Python CI jobs succeeded
env:
RESULTS: ${{ join(needs.*.result, ' ') }}
run: |
read -ra results <<< "$RESULTS"
for result in "${results[@]}"; do
test "$result" = "success"
done
Loading
Loading