Skip to content

Review use of panic in datafusion-sql crate #3315

@andygrove

Description

@andygrove

Is your feature request related to a problem or challenge? Please describe what you are trying to do.

"/home/andy/git/apache/arrow-datafusion/datafusion/sql/examples/sql.rs":46     let ast = Parser::parse_sql(&dialect, sql).unwrap();
"/home/andy/git/apache/arrow-datafusion/datafusion/sql/examples/sql.rs":52     let plan = sql_to_rel.sql_statement_to_plan(statement.clone()).unwrap();
"/home/andy/git/apache/arrow-datafusion/datafusion/sql/src/interval.rs":111             calculate_from_part(interval_period_str.unwrap(), unit)?;
"/home/andy/git/apache/arrow-datafusion/datafusion/sql/src/parser.rs":385             1 => Ok(token.chars().next().unwrap()),
"/home/andy/git/apache/arrow-datafusion/datafusion/sql/src/planner.rs":99             ScalarValue::Int64(Some(s.parse().unwrap()))
"/home/andy/git/apache/arrow-datafusion/datafusion/sql/src/planner.rs":257                     name: names.get(0).unwrap().to_string(),
"/home/andy/git/apache/arrow-datafusion/datafusion/sql/src/planner.rs":302                 self.statement_to_plan(rewrite.pop_front().unwrap())
"/home/andy/git/apache/arrow-datafusion/datafusion/sql/src/planner.rs":432             self.statement_to_plan(rewrite.pop_front().unwrap())
"/home/andy/git/apache/arrow-datafusion/datafusion/sql/src/planner.rs":614                     joins.next().unwrap(),
"/home/andy/git/apache/arrow-datafusion/datafusion/sql/src/planner.rs":884                 let mut left = plans.next().unwrap(); // have at least one plan
"/home/andy/git/apache/arrow-datafusion/datafusion/sql/src/planner.rs":915                                             .unwrap()
"/home/andy/git/apache/arrow-datafusion/datafusion/sql/src/planner.rs":925                                             .unwrap()
"/home/andy/git/apache/arrow-datafusion/datafusion/sql/src/planner.rs":948                             let plan = std::mem::take(&mut remaining_plans[idx]).unwrap();
"/home/andy/git/apache/arrow-datafusion/datafusion/sql/src/planner.rs":959                         let plan = std::mem::take(&mut remaining_plans[idx]).unwrap();
"/home/andy/git/apache/arrow-datafusion/datafusion/sql/src/planner.rs":2465         self.statement_to_plan(rewrite.pop_front().unwrap())
"/home/andy/git/apache/arrow-datafusion/datafusion/sql/src/planner.rs":2503         self.statement_to_plan(rewrite.pop_front().unwrap())
"/home/andy/git/apache/arrow-datafusion/datafusion/sql/src/planner.rs":2622                         && can_hash(left_schema.field_from_column(l).unwrap().data_type())
"/home/andy/git/apache/arrow-datafusion/datafusion/sql/src/planner.rs":2627                         && can_hash(left_schema.field_from_column(r).unwrap().data_type())
"/home/andy/git/apache/arrow-datafusion/datafusion/sql/src/planner.rs":2735         Err(_) => Ok(lit(n.parse::<f64>().unwrap())),

Describe the solution you'd like
Review code that can panic and see where it makes sense to return a Result instead. For example, It is generally better to use ? than unwrapon results.

The goal is not to remove all panics but review and make sure we are using them appropriately. Bonus points for adding documentation for invariants.

Describe alternatives you've considered
None

Additional context
Generated by https://github.com/andygrove/no-need-to-panic

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions