[ https://issues.apache.org/jira/browse/ARROW-11586?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17283728#comment-17283728 ]
Marc Prud'hommeaux commented on ARROW-11586: -------------------------------------------- Unless there is some specific reason to panic there, replacing the `.unwrap()` with `?` fixes the issue: https://github.com/apache/arrow/pull/9479/files. I wonder if the other `unwrap()` instances in that module could similarly be turned into Result? > [Rust] [Datafusion] Invalid SQL sometimes panics > ------------------------------------------------ > > Key: ARROW-11586 > URL: https://issues.apache.org/jira/browse/ARROW-11586 > Project: Apache Arrow > Issue Type: Bug > Reporter: Marc Prud'hommeaux > Priority: Minor > Labels: pull-request-available > Time Spent: 0.5h > Remaining Estimate: 0h > > Executing the invalid SQL "select 1 order by x" will panic rather returning > an Err: > ``` > thread '<unnamed>' panicked at 'called `Result::unwrap()` on an `Err` value: > Plan("Invalid identifier \'x\' for schema Int64(1)")', > /Users/marc/.cargo/git/checkouts/arrow-3a9cfebb6b7b2bdc/643f420/rust/datafusion/src/sql/planner.rs:649:76 > stack backtrace: > 0: _rust_begin_unwind > 1: core::panicking::panic_fmt > 2: core::option::expect_none_failed > 3: core::result::Result<T,E>::unwrap > 4: datafusion::sql::planner::SqlToRel<S>::order_by::{{closure}} > 5: core::iter::adapters::map_try_fold::{{closure}} > 6: core::iter::traits::iterator::Iterator::try_fold > 7: <core::iter::adapters::Map<I,F> as > core::iter::traits::iterator::Iterator>::try_fold > 8: <core::iter::adapters::ResultShunt<I,E> as > core::iter::traits::iterator::Iterator>::try_fold > 9: core::iter::traits::iterator::Iterator::find > 10: <core::iter::adapters::ResultShunt<I,E> as > core::iter::traits::iterator::Iterator>::next > 11: <alloc::vec::Vec<T> as alloc::vec::SpecFromIterNested<T,I>>::from_iter > 12: <alloc::vec::Vec<T> as alloc::vec::SpecFromIter<T,I>>::from_iter > 13: <alloc::vec::Vec<T> as > core::iter::traits::collect::FromIterator<T>>::from_iter > 14: core::iter::traits::iterator::Iterator::collect > 15: <core::result::Result<V,E> as > core::iter::traits::collect::FromIterator<core::result::Result<A,E>>>::from_iter::{{closure}} > 16: core::iter::adapters::process_results > 17: <core::result::Result<V,E> as > core::iter::traits::collect::FromIterator<core::result::Result<A,E>>>::from_iter > 18: core::iter::traits::iterator::Iterator::collect > 19: datafusion::sql::planner::SqlToRel<S>::order_by > 20: datafusion::sql::planner::SqlToRel<S>::query_to_plan > 21: datafusion::sql::planner::SqlToRel<S>::sql_statement_to_plan > 22: datafusion::sql::planner::SqlToRel<S>::statement_to_plan > 23: datafusion::execution::context::ExecutionContext::create_logical_plan > ``` > This is happening because of an `unwrap` at > https://github.com/apache/arrow/blob/6cfbd22b457d873365fa60df31905857856608ee/rust/datafusion/src/sql/planner.rs#L652. > > Perhaps the error should be returned as the Result rather than panicking, so > the error can be handled? There are a number of other places in the planner > where `unwrap()` is used, so they may warrant similar treatment. > -- This message was sent by Atlassian Jira (v8.3.4#803005)