Speculative commented on issue #13775: URL: https://github.com/apache/datafusion/issues/13775#issuecomment-2744441420
I'm reproducing this multiplication overflow panic as well. # Details `datafusion` version 46.0.0 Trying to execute [Join Order Benchmark query 16B](https://github.com/gregrahn/join-order-benchmark/blob/master/16b.sql) # Code ```rs let state = ctx.state(); let logical_plan = state.create_logical_plan(JOB_16B).await?; let planner = DefaultPhysicalPlanner::default(); let physical_plan = planner.create_physical_plan(&logical_plan, &state).await?; ``` Notably, this panic does not reproduce when simply calling `ctx.sql(JOB_16B)`, but my use case requires inspecting the generated physical plan. # Investigation Looks like it comes from calculating stats for one side of the join. Since this plan isn't optimized, it's a bunch of cross joins of big tables.** # Backtrace ``` thread 'main' panicked at /home/jtao/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/datafusion-common-46.0.0/src/stats.rs:148:76: attempt to multiply with overflow stack backtrace: 0: rust_begin_unwind at /rustc/4d91de4e48198da2e33413efdcd9cd2cc0c46688/library/std/src/panicking.rs:692:5 1: core::panicking::panic_fmt at /rustc/4d91de4e48198da2e33413efdcd9cd2cc0c46688/library/core/src/panicking.rs:75:14 2: core::panicking::panic_const::panic_const_mul_overflow at /rustc/4d91de4e48198da2e33413efdcd9cd2cc0c46688/library/core/src/panicking.rs:178:21 3: <usize as core::ops::arith::Mul>::mul at /home/jtao/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ops/arith.rs:355:45 4: <&usize as core::ops::arith::Mul>::mul at /home/jtao/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/internal_macros.rs:58:17 5: datafusion_common::stats::Precision<usize>::multiply at /home/jtao/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/datafusion-common-46.0.0/src/stats.rs:148:76 6: datafusion_physical_plan::joins::cross_join::stats_cartesian_product at /home/jtao/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/datafusion-physical-plan-46.0.0/src/joins/cross_join.rs:396:27 7: <datafusion_physical_plan::joins::cross_join::CrossJoinExec as datafusion_physical_plan::execution_plan::ExecutionPlan>::statistics at /home/jtao/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/datafusion-physical-plan-46.0.0/src/joins/cross_join.rs:337:12 8: <datafusion_physical_plan::joins::cross_join::CrossJoinExec as datafusion_physical_plan::execution_plan::ExecutionPlan>::statistics at /home/jtao/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/datafusion-physical-plan-46.0.0/src/joins/cross_join.rs:338:13 9: <datafusion_physical_plan::joins::cross_join::CrossJoinExec as datafusion_physical_plan::execution_plan::ExecutionPlan>::statistics at /home/jtao/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/datafusion-physical-plan-46.0.0/src/joins/cross_join.rs:338:13 10: <datafusion_physical_plan::joins::cross_join::CrossJoinExec as datafusion_physical_plan::execution_plan::ExecutionPlan>::statistics at /home/jtao/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/datafusion-physical-plan-46.0.0/src/joins/cross_join.rs:338:13 11: <datafusion_physical_plan::joins::cross_join::CrossJoinExec as datafusion_physical_plan::execution_plan::ExecutionPlan>::statistics at /home/jtao/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/datafusion-physical-plan-46.0.0/src/joins/cross_join.rs:338:13 12: <datafusion_physical_plan::joins::cross_join::CrossJoinExec as datafusion_physical_plan::execution_plan::ExecutionPlan>::statistics at /home/jtao/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/datafusion-physical-plan-46.0.0/src/joins/cross_join.rs:338:13 13: datafusion_physical_plan::filter::FilterExec::statistics_helper at /home/jtao/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/datafusion-physical-plan-46.0.0/src/filter.rs:176:27 14: datafusion_physical_plan::filter::FilterExec::compute_properties at /home/jtao/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/datafusion-physical-plan-46.0.0/src/filter.rs:258:21 15: datafusion_physical_plan::filter::FilterExec::try_new at /home/jtao/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/datafusion-physical-plan-46.0.0/src/filter.rs:87:29 16: datafusion::physical_planner::DefaultPhysicalPlanner::map_logical_node_to_physical::{{closure}} at /home/jtao/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/datafusion-46.0.0/src/physical_planner.rs:779:30 17: datafusion::physical_planner::DefaultPhysicalPlanner::task_helper::{{closure}} at /home/jtao/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/datafusion-46.0.0/src/physical_planner.rs:389:26 18: <futures_util::stream::futures_unordered::FuturesUnordered<Fut> as futures_core::stream::Stream>::poll_next at /home/jtao/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/futures-util-0.3.31/src/stream/futures_unordered/mod.rs:528:17 19: futures_util::stream::stream::StreamExt::poll_next_unpin at /home/jtao/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/futures-util-0.3.31/src/stream/stream/mod.rs:1638:9 20: <futures_util::stream::stream::buffer_unordered::BufferUnordered<St> as futures_core::stream::Stream>::poll_next at /home/jtao/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/futures-util-0.3.31/src/stream/stream/buffer_unordered.rs:75:15 21: <S as futures_core::stream::TryStream>::try_poll_next at /home/jtao/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/futures-core-0.3.31/src/stream.rs:206:9 22: <futures_util::stream::try_stream::try_collect::TryCollect<St,C> as core::future::future::Future>::poll at /home/jtao/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/futures-util-0.3.31/src/stream/try_stream/try_collect.rs:46:26 23: datafusion::physical_planner::DefaultPhysicalPlanner::create_initial_plan::{{closure}} at /home/jtao/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/datafusion-46.0.0/src/physical_planner.rs:335:14 24: <datafusion::physical_planner::DefaultPhysicalPlanner as datafusion::physical_planner::PhysicalPlanner>::create_physical_plan::{{closure}} at /home/jtao/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/datafusion-46.0.0/src/physical_planner.rs:183:22 25: <core::pin::Pin<P> as core::future::future::Future>::poll at /home/jtao/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/future/future.rs:124:9 26: datafusion_oracle::main::{{closure}} at ./src/main.rs:59:77 27: <core::pin::Pin<P> as core::future::future::Future>::poll at /home/jtao/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/future/future.rs:124:9 28: tokio::runtime::park::CachedParkThread::block_on::{{closure}} at /home/jtao/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.44.1/src/runtime/park.rs:284:60 29: tokio::task::coop::with_budget at /home/jtao/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.44.1/src/task/coop/mod.rs:167:5 30: tokio::task::coop::budget at /home/jtao/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.44.1/src/task/coop/mod.rs:133:5 31: tokio::runtime::park::CachedParkThread::block_on at /home/jtao/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.44.1/src/runtime/park.rs:284:31 32: tokio::runtime::context::blocking::BlockingRegionGuard::block_on at /home/jtao/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.44.1/src/runtime/context/blocking.rs:66:9 33: tokio::runtime::scheduler::multi_thread::MultiThread::block_on::{{closure}} at /home/jtao/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.44.1/src/runtime/scheduler/multi_thread/mod.rs:87:13 34: tokio::runtime::context::runtime::enter_runtime at /home/jtao/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.44.1/src/runtime/context/runtime.rs:65:16 35: tokio::runtime::scheduler::multi_thread::MultiThread::block_on at /home/jtao/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.44.1/src/runtime/scheduler/multi_thread/mod.rs:86:9 36: tokio::runtime::runtime::Runtime::block_on_inner at /home/jtao/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.44.1/src/runtime/runtime.rs:370:45 37: tokio::runtime::runtime::Runtime::block_on at /home/jtao/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.44.1/src/runtime/runtime.rs:340:13 38: datafusion_oracle::main at ./src/main.rs:63:5 39: core::ops::function::FnOnce::call_once at /home/jtao/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ops/function.rs:250:5 note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace. ``` -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: github-unsubscr...@datafusion.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: github-unsubscr...@datafusion.apache.org For additional commands, e-mail: github-h...@datafusion.apache.org