Skip to content

Commit 878a8cb

Browse files
committed
Merge iceberg-rust v0.9.0 release into spiceai-52
Merges 107 commits from apache/iceberg-rust v0.9.0 tag. Conflict resolutions: - Cargo.toml: Keep spiceai's ctor dep, add v0.9.0's dashmap, use v0.9.0's datafusion 52.2 versions - bindings/python/Cargo.toml: Use v0.9.0's datafusion-ffi 52.1 - crates/iceberg/Cargo.toml: Keep spiceai's reqwest-middleware, add v0.9.0's fastnum (replaces rust_decimal) - crates/iceberg/src/arrow/reader.rs: Combine spiceai's limit-based page index loading with v0.9.0's parquet_read_options pattern - crates/iceberg/src/io/file_io.rs: Take v0.9.0's Storage trait architecture, remove spiceai's lister()/EntryMode additions (unused outside file_io.rs) - crates/integrations/datafusion/src/physical_plan/scan.rs: Take v0.9.0's comment wording
2 parents 6dc7880 + 7ef4063 commit 878a8cb

197 files changed

Lines changed: 17201 additions & 9947 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.

.cargo/audit.toml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,4 @@ ignore = [
3333
#
3434
# Introduced by object_store, see https://github.com/apache/arrow-rs-object-store/issues/564
3535
"RUSTSEC-2025-0134",
36-
37-
# Tracked here: https://github.com/paupino/rust-decimal/issues/766
38-
"RUSTSEC-2026-0001",
3936
]
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
# Licensed to the Apache Software Foundation (ASF) under one
2+
# or more contributor license agreements. See the NOTICE file
3+
# distributed with this work for additional information
4+
# regarding copyright ownership. The ASF licenses this file
5+
# to you under the Apache License, Version 2.0 (the
6+
# "License"); you may not use this file except in compliance
7+
# with the License. You may obtain a copy of the License at
8+
#
9+
# http://www.apache.org/licenses/LICENSE-2.0
10+
#
11+
# Unless required by applicable law or agreed to in writing,
12+
# software distributed under the License is distributed on an
13+
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14+
# KIND, either express or implied. See the License for the
15+
# specific language governing permissions and limitations
16+
# under the License.
17+
18+
name: Get MSRV
19+
description: Get the Minimum Supported Rust Version from Cargo.toml
20+
21+
outputs:
22+
msrv:
23+
description: The MSRV extracted from Cargo.toml
24+
value: ${{ steps.get-msrv.outputs.msrv }}
25+
26+
runs:
27+
using: composite
28+
steps:
29+
- name: Get MSRV
30+
id: get-msrv
31+
shell: bash
32+
run: |
33+
msrv=$(grep '^rust-version' Cargo.toml | sed 's/.*"\(.*\)".*/\1/')
34+
echo "msrv=$msrv" >> $GITHUB_OUTPUT
35+
echo "MSRV is $msrv"

.github/workflows/audit.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,13 @@ on:
3636
schedule:
3737
- cron: '0 0 * * *'
3838

39+
permissions:
40+
contents: read
41+
3942
jobs:
4043
security_audit:
4144
runs-on: ubuntu-latest
45+
if: github.repository == 'apache/iceberg-rust'
4246
steps:
4347
- uses: actions/checkout@v6
4448
- name: Setup Rust toolchain

.github/workflows/bindings_python_ci.yml

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,9 @@ concurrency:
4040
group: ${{ github.workflow }}-${{ github.ref }}-${{ github.event_name }}
4141
cancel-in-progress: true
4242

43+
permissions:
44+
contents: read
45+
4346
jobs:
4447
check-rust:
4548
runs-on: ubuntu-latest
@@ -53,7 +56,7 @@ jobs:
5356
run: cargo clippy --all-targets --all-features -- -D warnings
5457

5558
check-python:
56-
runs-on: ubuntu-latest
59+
runs-on: ubuntu-slim
5760
steps:
5861
- uses: actions/checkout@v6
5962
- uses: astral-sh/setup-uv@v7
@@ -75,6 +78,7 @@ jobs:
7578
test:
7679
runs-on: ${{ matrix.os }}
7780
strategy:
81+
max-parallel: 15
7882
matrix:
7983
os:
8084
- ubuntu-latest
@@ -89,7 +93,7 @@ jobs:
8993
with:
9094
working-directory: "bindings/python"
9195
command: build
92-
args: --out dist --sdist
96+
args: --out dist
9397
- uses: astral-sh/setup-uv@v7
9498
with:
9599
version: "0.9.3"

.github/workflows/ci.yml

Lines changed: 36 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -40,13 +40,14 @@ concurrency:
4040
group: ${{ github.workflow }}-${{ github.ref }}-${{ github.event_name }}
4141
cancel-in-progress: true
4242

43-
env:
44-
rust_msrv: "1.87"
43+
permissions:
44+
contents: read
4545

4646
jobs:
4747
check:
4848
runs-on: ${{ matrix.os }}
4949
strategy:
50+
max-parallel: 15
5051
matrix:
5152
os:
5253
- ubuntu-latest
@@ -83,24 +84,13 @@ jobs:
8384
build:
8485
runs-on: ${{ matrix.os }}
8586
strategy:
87+
max-parallel: 15
8688
matrix:
8789
os:
8890
- ubuntu-latest
8991
- macos-latest
9092
- windows-latest
9193
steps:
92-
- name: Maximize build space (Ubuntu)
93-
if: matrix.os == 'ubuntu-latest'
94-
uses: easimon/maximize-build-space@master
95-
with:
96-
remove-dotnet: "true"
97-
remove-android: "true"
98-
remove-haskell: "true"
99-
remove-codeql: "true"
100-
remove-docker-images: "true"
101-
root-reserve-mb: 10240
102-
temp-reserve-mb: 10240
103-
10494
- uses: actions/checkout@v6
10595

10696
- name: Setup Rust toolchain
@@ -120,6 +110,7 @@ jobs:
120110
build_with_no_default_features:
121111
runs-on: ${{ matrix.os }}
122112
strategy:
113+
max-parallel: 15
123114
matrix:
124115
os:
125116
- ubuntu-latest
@@ -137,26 +128,16 @@ jobs:
137128
- name: Build
138129
run: cargo build -p iceberg --no-default-features
139130

140-
unit:
131+
tests:
141132
runs-on: ubuntu-latest
142133
strategy:
134+
max-parallel: 15
143135
matrix:
144136
test-suite:
145137
- { name: "default", args: "--all-targets --all-features --workspace" }
146138
- { name: "doc", args: "--doc --all-features --workspace" }
147-
name: Unit Tests (${{ matrix.test-suite.name }})
139+
name: Tests (${{ matrix.test-suite.name }})
148140
steps:
149-
- name: Maximize build space
150-
uses: easimon/maximize-build-space@master
151-
with:
152-
remove-dotnet: "true"
153-
remove-android: "true"
154-
remove-haskell: "true"
155-
remove-codeql: "true"
156-
remove-docker-images: "true"
157-
root-reserve-mb: 10240
158-
temp-reserve-mb: 10240
159-
160141
- uses: actions/checkout@v6
161142

162143
- name: Setup Rust toolchain
@@ -172,8 +153,30 @@ jobs:
172153
with:
173154
key: ${{ matrix.test-suite.name }}
174155

175-
- name: Test
176-
run: cargo test --no-fail-fast ${{ matrix.test-suite.args }}
156+
- name: Install cargo-nextest
157+
if: matrix.test-suite.name == 'default'
158+
uses: taiki-e/install-action@v2
159+
with:
160+
tool: cargo-nextest
161+
162+
- name: Start Docker containers
163+
if: matrix.test-suite.name == 'default'
164+
run: make docker-up
165+
166+
- name: Run tests
167+
env:
168+
# Disable debug info to speed up compilation and reduce artifact size
169+
RUSTFLAGS: "-C debuginfo=0"
170+
run: |
171+
if [ "${{ matrix.test-suite.name }}" = "default" ]; then
172+
cargo nextest run ${{ matrix.test-suite.args }}
173+
else
174+
cargo test --no-fail-fast ${{ matrix.test-suite.args }}
175+
fi
176+
177+
- name: Stop Docker containers
178+
if: always() && matrix.test-suite.name == 'default'
179+
run: make docker-down
177180

178181
msrv:
179182
name: Verify MSRV
@@ -184,10 +187,13 @@ jobs:
184187
uses: arduino/setup-protoc@v3
185188
with:
186189
repo-token: ${{ secrets.GITHUB_TOKEN }}
190+
- name: Get MSRV
191+
id: get-msrv
192+
uses: ./.github/actions/get-msrv
187193
- name: Setup MSRV Rust toolchain
188194
uses: ./.github/actions/setup-builder
189195
with:
190-
rust-version: ${{ env.rust_msrv }}
196+
rust-version: ${{ steps.get-msrv.outputs.msrv }}
191197
- name: Setup Nightly Rust toolchain
192198
uses: ./.github/actions/setup-builder
193199
- name: Check MSRV

.github/workflows/ci_typos.yml

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,14 +32,17 @@ concurrency:
3232
env:
3333
RUST_BACKTRACE: 1
3434

35+
permissions:
36+
contents: read
37+
3538
jobs:
3639
typos-check:
3740
name: typos check
38-
runs-on: ubuntu-latest
41+
runs-on: ubuntu-slim
3942
timeout-minutes: 10
4043
env:
4144
FORCE_COLOR: 1
4245
steps:
4346
- uses: actions/checkout@v6
4447
- name: Check typos
45-
uses: crate-ci/typos@v1.41.0
48+
uses: crate-ci/typos@v1.44.0

.github/workflows/codeql.yml

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
#
2+
# Licensed to the Apache Software Foundation (ASF) under one
3+
# or more contributor license agreements. See the NOTICE file
4+
# distributed with this work for additional information
5+
# regarding copyright ownership. The ASF licenses this file
6+
# to you under the Apache License, Version 2.0 (the
7+
# "License"); you may not use this file except in compliance
8+
# with the License. You may obtain a copy of the License at
9+
#
10+
# http://www.apache.org/licenses/LICENSE-2.0
11+
#
12+
# Unless required by applicable law or agreed to in writing,
13+
# software distributed under the License is distributed on an
14+
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15+
# KIND, either express or implied. See the License for the
16+
# specific language governing permissions and limitations
17+
# under the License.
18+
#
19+
20+
name: "CodeQL"
21+
22+
on:
23+
push:
24+
branches: [ "main" ]
25+
pull_request:
26+
branches: [ "main" ]
27+
schedule:
28+
- cron: '16 4 * * 1'
29+
30+
permissions:
31+
contents: read
32+
33+
jobs:
34+
analyze:
35+
name: Analyze Actions
36+
runs-on: ubuntu-slim
37+
permissions:
38+
contents: read
39+
security-events: write
40+
packages: read
41+
42+
steps:
43+
- name: Checkout repository
44+
uses: actions/checkout@v6
45+
46+
- name: Initialize CodeQL
47+
uses: github/codeql-action/init@v4
48+
with:
49+
languages: actions
50+
51+
- name: Perform CodeQL Analysis
52+
uses: github/codeql-action/analyze@v4
53+
with:
54+
category: "/language:actions"

.github/workflows/publish.yml

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,19 +26,20 @@ on:
2626
- "v[0-9]+.[0-9]+.[0-9]+-rc.[0-9]+"
2727
workflow_dispatch:
2828

29-
env:
30-
rust_msrv: "1.87"
29+
permissions:
30+
contents: read
3131

3232
jobs:
3333
publish:
3434
runs-on: ubuntu-latest
3535
strategy:
3636
# Publish package one by one instead of flooding the registry
37-
max-parallel: 1
37+
max-parallel: 15
3838
matrix:
3939
# Order here is sensitive, as it will be used to determine the order of publishing
4040
package:
4141
- "crates/iceberg"
42+
- "crates/storage/opendal"
4243
- "crates/catalog/glue"
4344
- "crates/catalog/hms"
4445
- "crates/catalog/rest"
@@ -48,10 +49,14 @@ jobs:
4849
steps:
4950
- uses: actions/checkout@v6
5051

52+
- name: Get MSRV
53+
id: get-msrv
54+
uses: ./.github/actions/get-msrv
55+
5156
- name: Setup Rust toolchain
5257
uses: ./.github/actions/setup-builder
5358
with:
54-
rust-version: ${{ env.rust_msrv }}
59+
rust-version: ${{ steps.get-msrv.outputs.msrv }}
5560

5661
- name: Publish ${{ matrix.package }}
5762
working-directory: ${{ matrix.package }}

0 commit comments

Comments
 (0)