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

Reply via email to