Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
2198f31
Optimize Parquet pruning with reusable setup cache
kosiew Apr 12, 2026
67eb90b
Refactor pruning setup and improve caching
kosiew Apr 12, 2026
9518295
Improve cache performance and add tests
kosiew Apr 12, 2026
92339b2
Add cache-key comments and improve ParquetPruningSetupCache
kosiew Apr 12, 2026
070a28e
Fix key reference in ParquetPruningSetupCache methods for improved ca…
kosiew Apr 12, 2026
31af7fc
fix: resolve compile break in opener.rs test-module
kosiew May 18, 2026
0edf95b
fix: disable cache for dynamic filters and input_file_name() projections
kosiew Jul 11, 2026
42d31a9
feat(cache): add cache entries type alias and eligibility helper
kosiew Jul 11, 2026
a7a98e6
feat(test): add cache-empty assertion to dynamic-filter snapshot regr…
kosiew Jul 11, 2026
8897577
feat(parquet): refactor pruning setup cache management
kosiew Jul 11, 2026
1b54633
feat(docs): add comment regarding concurrency and locking in mod.rs
kosiew Jul 11, 2026
94b3e6f
Merge branch 'main' into schema_caching-01-21554
alamb Jul 15, 2026
c5802f2
Merge branch 'main' into schema_caching-01-21554
kosiew Jul 20, 2026
1bc1f78
Merge remote-tracking branch 'apache/main' into schema_caching-01-21554
alamb Aug 6, 2026
f07d333
implement PR feedback
kosiew Aug 6, 2026
cc4bd3d
test(datasource_parquet/opener): add regression test for partition-li…
kosiew Aug 6, 2026
b91dc6f
fix(parquet): bound ParquetPruningSetupCache to 64-entry LRU to preve…
kosiew Aug 7, 2026
61b7538
Revert to 1b54633123: feat(docs): add comment regarding concurrency a…
kosiew Aug 7, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion .asf.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,6 @@ github:
- "cargo test (macos-aarch64)"
- "Verify Vendored Code"
- "Check cargo fmt"
- "Check GitHub Actions install tooling"
- "clippy"
- "check Cargo.toml formatting"
- "check configs.md and ***_functions.md is up-to-date"
Expand Down Expand Up @@ -115,3 +114,4 @@ github:
# https://datafusion.apache.org/
publish:
whoami: asf-site

2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/feature_request.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ body:
description: Please describe what you are trying to do.
placeholder: >
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
(This section helps DataFusion developers understand the context and *why* for this feature, in addition to the *what*)
(This section helps Arrow developers understand the context and *why* for this feature, in addition to the *what*)
- type: textarea
attributes:
label: Describe the solution you'd like
Expand Down
4 changes: 0 additions & 4 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -68,10 +68,6 @@ updates:
interval: "weekly"
open-pull-requests-limit: 10
labels: [auto-dependencies]
groups:
codeql-actions:
patterns:
- "github/codeql-action/*"
- package-ecosystem: "pip"
directory: "/docs"
schedule:
Expand Down
11 changes: 3 additions & 8 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,19 +11,12 @@ We generally require a GitHub issue to be filed for all bug fixes and enhancemen
<!--
Why are you proposing this change? If this is already explained clearly in the issue then this section is not needed.
Explaining clearly why changes are proposed helps reviewers understand your changes and offer better suggestions for fixes.

Please explain the problem you are trying to solve in terms of the user-visible
behavior, rather than the implementation.

For example, "The code in `foo.rs` doesn't handle nulls" is a symptom of the
implementation. "COUNT(DISTINCT) returns wrong results when the column contains
nulls" is the user-visible problem.
-->

## What changes are included in this PR?

<!--
There is no need to duplicate the description in the issue here, but it is sometimes worth providing a summary of the individual changes in this PR.
There is no need to duplicate the description in the issue here but it is sometimes worth providing a summary of the individual changes in this PR.
-->

## Are these changes tested?
Expand All @@ -40,6 +33,8 @@ If tests are not included in your PR, please explain why (for example, are they

<!--
If there are user-facing changes then we may require documentation to be updated before approving the PR.
-->

<!--
If there are any breaking changes to public APIs, please add the `api change` label.
-->
4 changes: 2 additions & 2 deletions .github/workflows/audit.yml
Original file line number Diff line number Diff line change
Expand Up @@ -43,9 +43,9 @@ jobs:
security_audit:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: Install cargo-audit
uses: taiki-e/install-action@1beb33eee6d086258184383af9a538940be190ed # v2.85.6
uses: taiki-e/install-action@50414676f9f5d50a65992c6dd2ed02641263226c # v2.82.10
with:
tool: cargo-audit
- name: Run audit check
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/breaking_changes_detector.yml
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
fetch-depth: 0

Expand Down Expand Up @@ -89,7 +89,7 @@ jobs:

- name: Install cargo-semver-checks
if: steps.changed_crates.outputs.packages != ''
uses: taiki-e/install-action@1beb33eee6d086258184383af9a538940be190ed # v2.85.6
uses: taiki-e/install-action@50414676f9f5d50a65992c6dd2ed02641263226c # v2.82.10
with:
tool: cargo-semver-checks

Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/codeql.yml
Original file line number Diff line number Diff line change
Expand Up @@ -40,16 +40,16 @@ jobs:

steps:
- name: Checkout repository
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
persist-credentials: false

- name: Initialize CodeQL
uses: github/codeql-action/init@f205ea1c3313d32999d8d6a48b4f6530d4437b38 # v4
uses: github/codeql-action/init@8aad20d150bbac5944a9f9d289da16a4b0d87c1e # v4
with:
languages: actions

- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@f205ea1c3313d32999d8d6a48b4f6530d4437b38 # v4
uses: github/codeql-action/analyze@8aad20d150bbac5944a9f9d289da16a4b0d87c1e # v4
with:
category: "/language:actions"
8 changes: 3 additions & 5 deletions .github/workflows/dependencies.yml
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ jobs:
container:
image: amd64/rust
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
submodules: true
fetch-depth: 1
Expand All @@ -61,10 +61,8 @@ jobs:
container:
image: amd64/rust
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: Install cargo-machete
uses: taiki-e/install-action@1beb33eee6d086258184383af9a538940be190ed # v2.85.6
with:
tool: cargo-machete@0.9
run: cargo install cargo-machete --version ^0.9 --locked
- name: Detect unused dependencies
run: cargo machete --with-metadata
25 changes: 11 additions & 14 deletions .github/workflows/dev.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,20 +36,19 @@ jobs:
runs-on: ubuntu-latest
name: Check License Header
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: Install HawkEye
uses: taiki-e/install-action@1beb33eee6d086258184383af9a538940be190ed # v2.85.6
with:
tool: hawkeye@6.2.0
# This CI job is bound by installation time, use `--profile dev` to speed it up
run: cargo install hawkeye --version 6.2.0 --locked --profile dev
- name: Run license header check
run: ci/scripts/license_header.sh

prettier:
name: Use prettier to check formatting of documents
runs-on: ubuntu-slim
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
with:
node-version: "20"
- name: Prettier check
Expand All @@ -60,13 +59,13 @@ jobs:
name: Check Markdown Links
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: Load tool versions
run: |
source ci/scripts/utils/tool_versions.sh
echo "LYCHEE_VERSION=${LYCHEE_VERSION}" >> "$GITHUB_ENV"
- name: Install lychee
uses: taiki-e/install-action@1beb33eee6d086258184383af9a538940be190ed # v2.85.6
uses: taiki-e/install-action@50414676f9f5d50a65992c6dd2ed02641263226c # v2.82.10
with:
tool: lychee@${{ env.LYCHEE_VERSION }}
- name: Run markdown link check
Expand All @@ -76,23 +75,21 @@ jobs:
name: Validate required_status_checks in .asf.yaml
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- run: pip install pyyaml
- run: python3 ci/scripts/check_asf_yaml_status_checks.py

typos:
name: Spell Check with Typos
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
persist-credentials: false
# Version fixed on purpose. It uses heuristics to detect typos, so upgrading
# it may cause checks to fail more often.
# We can upgrade it manually once a while.
- name: Install typos
uses: taiki-e/install-action@1beb33eee6d086258184383af9a538940be190ed # v2.85.6
with:
tool: typos@1.37.0
- name: Install typos-cli
run: cargo install typos-cli --locked --version 1.37.0
- name: Run typos check
run: ci/scripts/typos_check.sh
13 changes: 5 additions & 8 deletions .github/workflows/docs.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -34,28 +34,25 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout docs sources
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0

- name: Checkout asf-site branch
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
ref: asf-site
path: asf-site

- name: Setup uv
uses: astral-sh/setup-uv@c771a70e6277c0a99b617c7a806ffedaca235ff9 # v9.0.0
uses: astral-sh/setup-uv@f98e06938123ccabd21905ea5d0069192241f9f1 # v8.3.1

- name: Install dependencies
run: uv sync --package datafusion-docs
- name: Install Graphviz
- name: Install dependency graph tooling
run: |
set -x
sudo apt-get update
sudo apt-get install -y graphviz
- name: Install cargo-depgraph
uses: taiki-e/install-action@1beb33eee6d086258184383af9a538940be190ed # v2.85.6
with:
tool: cargo-depgraph@1.6
cargo install cargo-depgraph --version ^1.6 --locked

- name: Build docs
run: |
Expand Down
11 changes: 4 additions & 7 deletions .github/workflows/docs_pr.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -45,23 +45,20 @@ jobs:
name: Test doc build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
submodules: true
fetch-depth: 1
- name: Setup uv
uses: astral-sh/setup-uv@c771a70e6277c0a99b617c7a806ffedaca235ff9 # v9.0.0
uses: astral-sh/setup-uv@f98e06938123ccabd21905ea5d0069192241f9f1 # v8.3.1
- name: Install doc dependencies
run: uv sync --package datafusion-docs
- name: Install Graphviz
- name: Install dependency graph tooling
run: |
set -x
sudo apt-get update
sudo apt-get install -y graphviz
- name: Install cargo-depgraph
uses: taiki-e/install-action@1beb33eee6d086258184383af9a538940be190ed # v2.85.6
with:
tool: cargo-depgraph@1.6
cargo install cargo-depgraph --version ^1.6 --locked
- name: Build docs html and check for warnings
run: |
set -x
Expand Down
53 changes: 25 additions & 28 deletions .github/workflows/extended.yml
Original file line number Diff line number Diff line change
Expand Up @@ -64,23 +64,22 @@ jobs:
# note: do not use amd/rust container to preserve disk space
steps:
- uses: runs-on/action@4e5f72399b6b17f2e79c511c1b38a315a64d22dc # v2.2.0
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
ref: ${{ github.event.inputs.pr_head_sha }} # will be empty if triggered by push
submodules: true
fetch-depth: 1
- name: Free Disk Space (Ubuntu)
uses: jlumbroso/free-disk-space@54081f138730dfa15788a46383842cd2f914a1be # v1.3.1
- parallel:
- name: Install Rust
run: |
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
source $HOME/.cargo/env
rustup toolchain install
- name: Install Protobuf Compiler
run: |
sudo apt-get update
sudo apt-get install -y protobuf-compiler
- name: Install Rust
run: |
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
source $HOME/.cargo/env
rustup toolchain install
- name: Install Protobuf Compiler
run: |
sudo apt-get update
sudo apt-get install -y protobuf-compiler
# For debugging, test binaries can be large.
- name: Show available disk space
run: |
Expand All @@ -99,11 +98,10 @@ jobs:
--tests \
--bins \
--features avro,json,backtrace,extended_tests,recursive_protection,parquet_encryption
- parallel:
- name: Verify Working Directory Clean
run: git diff --exit-code
- name: Cleanup
run: cargo clean
- name: Verify Working Directory Clean
run: git diff --exit-code
- name: Cleanup
run: cargo clean

# Check answers are correct when hash values collide
hash-collisions:
Expand All @@ -113,7 +111,7 @@ jobs:
image: amd64/rust
steps:
- uses: runs-on/action@4e5f72399b6b17f2e79c511c1b38a315a64d22dc # v2.2.0
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
ref: ${{ github.event.inputs.pr_head_sha }} # will be empty if triggered by push
submodules: true
Expand All @@ -135,16 +133,15 @@ jobs:
image: amd64/rust
steps:
- uses: runs-on/action@4e5f72399b6b17f2e79c511c1b38a315a64d22dc # v2.2.0
- parallel:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
ref: ${{ github.event.inputs.pr_head_sha }} # will be empty if triggered by push
submodules: true
fetch-depth: 1
# Don't use setup-builder to avoid configuring RUST_BACKTRACE which is expensive
- name: Install protobuf compiler
run: |
apt-get update && apt-get install -y protobuf-compiler
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
ref: ${{ github.event.inputs.pr_head_sha }} # will be empty if triggered by push
submodules: true
fetch-depth: 1
# Don't use setup-builder to avoid configuring RUST_BACKTRACE which is expensive
- name: Install protobuf compiler
run: |
apt-get update && apt-get install -y protobuf-compiler
- name: Run sqllogictest
run: |
cargo test --features backtrace,parquet_encryption --profile ci-optimized --test sqllogictests -- --include-sqlite
cargo test --features backtrace,parquet_encryption --profile ci-optimized --test sqllogictests -- --include-sqlite
2 changes: 1 addition & 1 deletion .github/workflows/labeler.yml
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ jobs:
github.event_name == 'pull_request_target' &&
(github.event.action == 'opened' ||
github.event.action == 'synchronize')
uses: actions/labeler@bf12e9b00b37c5c0ca2b87b79b2daf7891dbda13 # v7.0.0
uses: actions/labeler@f27b608878404679385c85cfa523b85ccb86e213 # v6.1.0
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
configuration-path: .github/workflows/labeler/labeler-config.yml
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/large_files.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ jobs:
check-files:
runs-on: ubuntu-slim
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
fetch-depth: 0
- name: Check size of new Git objects
Expand Down
Loading