[
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)