Skip to content

Commit f022a2e

Browse files
gbrgraditya-subrahmanyanviiryaclaude
authored
Merge remote-tracking branch 'upstream/main' into gb/merge-upstream-a… (#30)
* Merge remote-tracking branch 'upstream/main' into gb/merge-upstream-arrow-57.1 * Fix merge mistakes * . * . * . * . * . * . * . * . * . * . * format * Disable python bindings again * Fix clippy errors * Enable tests * Fix merge mistake * . * . * . * Clippy fix * fix: Reserved sort order ID cannot contain any fields (apache#1978) ## Which issue does this PR close? - Closes apache#1963. ## What changes are included in this PR? This change validates that table metadata with reserved sort order ID (0) cannot contain fields associated with it. If this is found, we error out instead of silently parsing arbitrary field values. ## Are these changes tested? Added the unit test described in the issue and verified that the check is now enforced. * feat(datafusion): Add LIMIT pushdown support (apache#2006) Implement LIMIT pushdown to optimize queries with LIMIT clauses by stopping data processing once the limit is reached. This reduces unnecessary I/O and computation for queries that only need a subset of rows. Changes: - Add limit field to IcebergTableScan to track row limit - Apply limit at stream level by filtering/slicing record batches - Update IcebergTableProvider and IcebergStaticTableProvider to pass limit parameter to scan - Add comprehensive tests for limit pushdown functionality ## Which issue does this PR close? - Closes #. ## What changes are included in this PR? ## Are these changes tested? Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com> * Redo comment * Add case-sensitive attribute to incremental scan for consistency --------- Co-authored-by: Aditya Subrahmanyan <aditya.subrahmanyan@gmail.com> Co-authored-by: Liang-Chi Hsieh <viirya@gmail.com> Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
1 parent aec29ba commit f022a2e

File tree

131 files changed

+9688
-5994
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

131 files changed

+9688
-5994
lines changed

.asf.yaml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,9 @@ github:
4343
dismiss_stale_reviews: false
4444

4545
required_linear_history: true
46-
del_branch_on_merge: true
46+
pull_requests:
47+
# auto-delete head branches after being merged
48+
del_branch_on_merge: true
4749
features:
4850
wiki: false
4951
issues: true

.cargo/audit.toml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,4 +25,15 @@ ignore = [
2525
#
2626
# Introduced by hive_metastore, tracked at https://github.com/cloudwego/pilota/issues/293
2727
"RUSTSEC-2024-0388",
28+
# `paste` is unmaintained; consider using an alternative
29+
#
30+
# Introduced by hive_metastore, tracked at https://github.com/cloudwego/pilota/issues/293
31+
"RUSTSEC-2024-0436",
32+
# `rustls-pemfile` is unmaintained
33+
#
34+
# Introduced by object_store, see https://github.com/apache/arrow-rs-object-store/issues/564
35+
"RUSTSEC-2025-0134",
36+
37+
# Tracked here: https://github.com/paupino/rust-decimal/issues/766
38+
"RUSTSEC-2026-0001",
2839
]

.github/workflows/audit.yml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,12 +40,11 @@ jobs:
4040
security_audit:
4141
runs-on: ubuntu-latest
4242
steps:
43-
- uses: actions/checkout@v5
43+
- uses: actions/checkout@v6
4444
- name: Setup Rust toolchain
4545
uses: ./.github/actions/setup-builder
4646
with:
4747
rust-version: stable
4848
- uses: rustsec/audit-check@v2.0.0
4949
with:
5050
token: ${{ secrets.GITHUB_TOKEN }}
51-
ignore: RUSTSEC-2024-0436

.github/workflows/bindings_python_ci.yml

Lines changed: 50 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,10 +41,21 @@ concurrency:
4141
cancel-in-progress: true
4242

4343
jobs:
44+
# check-rust:
45+
# runs-on: ubuntu-latest
46+
# steps:
47+
# - uses: actions/checkout@v6
48+
# - name: Check format
49+
# working-directory: "bindings/python"
50+
# run: cargo fmt --all -- --check
51+
# - name: Check clippy
52+
# working-directory: "bindings/python"
53+
# run: cargo clippy --all-targets --all-features -- -D warnings
54+
4455
check-python:
4556
runs-on: ubuntu-latest
4657
steps:
47-
- uses: actions/checkout@v5
58+
- uses: actions/checkout@v6
4859
- uses: astral-sh/setup-uv@v7
4960
with:
5061
version: "0.9.3"
@@ -60,3 +71,41 @@ jobs:
6071
working-directory: "bindings/python"
6172
run: |
6273
uvx ruff check .
74+
75+
# test:
76+
# runs-on: ${{ matrix.os }}
77+
# strategy:
78+
# matrix:
79+
# os:
80+
# - ubuntu-latest
81+
# - macos-latest
82+
# - windows-latest
83+
# steps:
84+
# - uses: actions/checkout@v6
85+
# - uses: actions/setup-python@v6
86+
# with:
87+
# python-version: 3.12
88+
# - uses: PyO3/maturin-action@v1
89+
# with:
90+
# working-directory: "bindings/python"
91+
# command: build
92+
# args: --out dist --sdist
93+
# - uses: astral-sh/setup-uv@v7
94+
# with:
95+
# version: "0.9.3"
96+
# enable-cache: true
97+
# - name: Sync dependencies
98+
# working-directory: "bindings/python"
99+
# shell: bash
100+
# run: |
101+
# make install
102+
# - name: Install built wheel
103+
# working-directory: "bindings/python"
104+
# shell: bash
105+
# run: |
106+
# uv pip install --reinstall dist/pyiceberg_core-*.whl
107+
# - name: Run tests
108+
# working-directory: "bindings/python"
109+
# shell: bash
110+
# run: |
111+
# make test

.github/workflows/ci.yml

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ jobs:
5252
- ubuntu-latest
5353
- macos-latest
5454
steps:
55-
- uses: actions/checkout@v5
55+
- uses: actions/checkout@v6
5656

5757
- name: Setup Rust toolchain
5858
uses: ./.github/actions/setup-builder
@@ -101,7 +101,7 @@ jobs:
101101
root-reserve-mb: 10240
102102
temp-reserve-mb: 10240
103103

104-
- uses: actions/checkout@v5
104+
- uses: actions/checkout@v6
105105

106106
- name: Setup Rust toolchain
107107
uses: ./.github/actions/setup-builder
@@ -126,7 +126,7 @@ jobs:
126126
- macos-latest
127127
- windows-latest
128128
steps:
129-
- uses: actions/checkout@v5
129+
- uses: actions/checkout@v6
130130

131131
- name: Setup Rust toolchain
132132
uses: ./.github/actions/setup-builder
@@ -143,7 +143,6 @@ jobs:
143143
matrix:
144144
test-suite:
145145
- { name: "default", args: "--all-targets --all-features --workspace" }
146-
- { name: "smol", args: "--all-targets --no-default-features --features smol --features storage-all --workspace" }
147146
- { name: "doc", args: "--doc --all-features --workspace" }
148147
name: Unit Tests (${{ matrix.test-suite.name }})
149148
steps:
@@ -158,7 +157,7 @@ jobs:
158157
root-reserve-mb: 10240
159158
temp-reserve-mb: 10240
160159

161-
- uses: actions/checkout@v5
160+
- uses: actions/checkout@v6
162161

163162
- name: Setup Rust toolchain
164163
uses: ./.github/actions/setup-builder
@@ -180,7 +179,7 @@ jobs:
180179
name: Verify MSRV
181180
runs-on: ubuntu-latest
182181
steps:
183-
- uses: actions/checkout@v5
182+
- uses: actions/checkout@v6
184183
- name: Install protoc
185184
uses: arduino/setup-protoc@v3
186185
with:

.github/workflows/ci_typos.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,6 @@ jobs:
4040
env:
4141
FORCE_COLOR: 1
4242
steps:
43-
- uses: actions/checkout@v5
43+
- uses: actions/checkout@v6
4444
- name: Check typos
45-
uses: crate-ci/typos@v1.39.2
45+
uses: crate-ci/typos@v1.41.0

.github/workflows/publish.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,10 +42,11 @@ jobs:
4242
- "crates/catalog/glue"
4343
- "crates/catalog/hms"
4444
- "crates/catalog/rest"
45+
- "crates/catalog/s3tables"
4546
- "crates/catalog/sql"
4647
- "crates/integrations/datafusion"
4748
steps:
48-
- uses: actions/checkout@v5
49+
- uses: actions/checkout@v6
4950

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

.github/workflows/release_python.yml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ jobs:
8585
runs-on: ubuntu-latest
8686
needs: [validate-release-tag]
8787
steps:
88-
- uses: actions/checkout@v5
88+
- uses: actions/checkout@v6
8989

9090
- name: Install toml-cli
9191
if: ${{ needs.validate-release-tag.outputs.is-rc == 'true' }}
@@ -107,7 +107,7 @@ jobs:
107107
command: sdist
108108
args: -o dist
109109
- name: Upload sdist
110-
uses: actions/upload-artifact@v5
110+
uses: actions/upload-artifact@v6
111111
with:
112112
name: wheels-sdist
113113
path: bindings/python/dist
@@ -128,7 +128,7 @@ jobs:
128128
}
129129
- { os: ubuntu-latest, target: "armv7l" }
130130
steps:
131-
- uses: actions/checkout@v5
131+
- uses: actions/checkout@v6
132132

133133
- name: Install toml-cli
134134
if: ${{ needs.validate-release-tag.outputs.is-rc == 'true' }}
@@ -159,7 +159,7 @@ jobs:
159159
command: build
160160
args: --release -o dist
161161
- name: Upload wheels
162-
uses: actions/upload-artifact@v5
162+
uses: actions/upload-artifact@v6
163163
with:
164164
name: wheels-${{ matrix.os }}-${{ matrix.target }}
165165
path: bindings/python/dist
@@ -178,7 +178,7 @@ jobs:
178178

179179
steps:
180180
- name: Download all the dists
181-
uses: actions/download-artifact@v6
181+
uses: actions/download-artifact@v7
182182
with:
183183
pattern: wheels-*
184184
merge-multiple: true

.github/workflows/release_python_nightly.yml

Lines changed: 32 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ jobs:
4343
if: github.repository == 'apache/iceberg-rust' # Only run for apache repo
4444
runs-on: ubuntu-latest
4545
steps:
46-
- uses: actions/checkout@v5
46+
- uses: actions/checkout@v6
4747

4848
- uses: ./.github/actions/overwrite-package-version # Overwrite package version with timestamp
4949
with:
@@ -56,7 +56,7 @@ jobs:
5656
args: -o dist
5757

5858
- name: Upload sdist
59-
uses: actions/upload-artifact@v5
59+
uses: actions/upload-artifact@v6
6060
with:
6161
name: wheels-sdist
6262
path: bindings/python/dist
@@ -78,7 +78,7 @@ jobs:
7878
}
7979
- { os: ubuntu-latest, target: "armv7l" }
8080
steps:
81-
- uses: actions/checkout@v5
81+
- uses: actions/checkout@v6
8282

8383
- uses: ./.github/actions/overwrite-package-version # Overwrite package version with timestamp
8484
with:
@@ -102,7 +102,7 @@ jobs:
102102
args: --release -o dist
103103

104104
- name: Upload wheels
105-
uses: actions/upload-artifact@v5
105+
uses: actions/upload-artifact@v6
106106
with:
107107
name: wheels-${{ matrix.os }}-${{ matrix.target }}
108108
path: bindings/python/dist
@@ -120,17 +120,44 @@ jobs:
120120

121121
steps:
122122
- name: Download all the dists
123-
uses: actions/download-artifact@v6
123+
uses: actions/download-artifact@v7
124124
with:
125125
pattern: wheels-*
126126
merge-multiple: true
127127
path: bindings/python/dist
128128
- name: List downloaded artifacts
129129
run: ls -R bindings/python/dist
130130
- name: Publish to TestPyPI
131+
id: publish-testpypi
132+
continue-on-error: true
131133
uses: pypa/gh-action-pypi-publish@release/v1
132134
with:
133135
repository-url: https://test.pypi.org/legacy/
134136
skip-existing: true
135137
packages-dir: bindings/python/dist
136138
verbose: true
139+
- name: Display error message on publish failure
140+
if: steps.publish-testpypi.outcome == 'failure'
141+
run: |
142+
echo "::error::Failed to publish to TestPyPI"
143+
echo ""
144+
echo "⚠️ TestPyPI Publish Failed"
145+
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
146+
echo ""
147+
echo "This may be due to TestPyPI storage limits."
148+
echo "See: https://docs.pypi.org/project-management/storage-limits"
149+
echo ""
150+
echo "To resolve this issue, use the pypi-cleanup utility to clean up old TestPyPI artifacts:"
151+
echo "https://pypi.org/project/pypi-cleanup/"
152+
echo ""
153+
echo " uvx pypi-cleanup --package pyiceberg-core --host https://test.pypi.org/ \\"
154+
echo " --verbose -d 10 --do-it --username <username>"
155+
echo ""
156+
echo "Requirements:"
157+
echo " • Must be a maintainer for pyiceberg-core on TestPyPI"
158+
echo " (https://test.pypi.org/project/pyiceberg-core)"
159+
echo " • Requires TestPyPI password and 2FA"
160+
echo " • ⚠️ ONLY do this for TestPyPI, NOT for production PyPI!"
161+
echo ""
162+
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
163+
exit 1

.github/workflows/stale.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ jobs:
3131
if: github.repository_owner == 'apache'
3232
runs-on: ubuntu-22.04
3333
steps:
34-
- uses: actions/stale@v10.1.0
34+
- uses: actions/stale@v10.1.1
3535
with:
3636
stale-issue-label: 'stale'
3737
exempt-issue-labels: 'not-stale'

0 commit comments

Comments
 (0)