Skip to content

Fix: Show backtrace for ArrowError#17204

Merged
2010YOUY01 merged 3 commits into
apache:mainfrom
2010YOUY01:fix-backtrace
Aug 17, 2025
Merged

Fix: Show backtrace for ArrowError#17204
2010YOUY01 merged 3 commits into
apache:mainfrom
2010YOUY01:fix-backtrace

Conversation

@2010YOUY01

Copy link
Copy Markdown
Contributor

Which issue does this PR close?

  • Closes #.

Rationale for this change

When an error is encountered inside DataFusion, the backtrace feature can be enabled to print the stack trace for the error, for easier debugging.
When I was working on a bug fix: I found the backtrace for ArrowError might not be able to display, while most other errors backtrace display is working.

See reproducer in datafusion-cli:

Backtrace is displayed for SchemaError

yongting@Yongtings-MacBook-Pro-2 ~/C/d/datafusion-cli (main=)> RUST_BACKTRACE=1 cargo run --features backtrace --profile release-nonlto -- -c 'select pow(1,'foo');'
    Finished `release-nonlto` profile [optimized] target(s) in 0.15s
     Running `/Users/yongting/Code/datafusion/target/release-nonlto/datafusion-cli -c 'select pow(1,foo);'`
DataFusion CLI v49.0.0
Error: Schema error: No field named foo.

backtrace:    0: std::backtrace_rs::backtrace::libunwind::trace
             at /rustc/29483883eed69d5fb4db01964cdf2af4d86e9cb2/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
   1: std::backtrace_rs::backtrace::trace_unsynchronized
             at /rustc/29483883eed69d5fb4db01964cdf2af4d86e9cb2/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
   2: std::backtrace::Backtrace::create
             at /rustc/29483883eed69d5fb4db01964cdf2af4d86e9cb2/library/std/src/backtrace.rs:331:13
   3: datafusion_common::error::field_not_found

Backtrace is not displayed for ArrowError

yongting@Yongtings-MacBook-Pro-2 ~/C/d/datafusion-cli (main=) [1]> RUST_BACKTRACE=1 cargo run --features backtrace --profile release-nonlto -- -c 'SELECT CAST(\'not_a_number\' AS INTEGER);'
    Finished `release-nonlto` profile [optimized] target(s) in 0.14s
     Running `/Users/yongting/Code/datafusion/target/release-nonlto/datafusion-cli -c 'SELECT CAST('\''not_a_number'\'' AS INTEGER);'`
DataFusion CLI v49.0.0
Error: Arrow error: Cast error: Cannot cast string 'not_a_number' to value of Int32 type

What changes are included in this PR?

Show backtrace for ArrowError

Are these changes tested?

Added integration test in datafusion-cli

Are there any user-facing changes?

no

@github-actions github-actions Bot added the common Related to common crate label Aug 15, 2025
Comment thread datafusion-cli/tests/cli_integration.rs Outdated
@github-actions github-actions Bot added development-process Related to development process of DataFusion core Core DataFusion crate spark labels Aug 15, 2025
@2010YOUY01
2010YOUY01 merged commit 420a862 into apache:main Aug 17, 2025
27 checks passed
@Jefffrey

Copy link
Copy Markdown
Contributor

This PR seems to make cargo test run fail now

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

common Related to common crate core Core DataFusion crate development-process Related to development process of DataFusion spark

3 participants