You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@arrow.apache.org by al...@apache.org on 2022/12/31 12:37:24 UTC
[arrow-datafusion] branch master updated: refactor: extract `parse_value` (#4774)
This is an automated email from the ASF dual-hosted git repository.
alamb pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/arrow-datafusion.git
The following commit(s) were added to refs/heads/master by this push:
new acb8846f5 refactor: extract `parse_value` (#4774)
acb8846f5 is described below
commit acb8846f5e7ab80eac4c85f6ccb4544fc3e089d5
Author: jakevin <ja...@gmail.com>
AuthorDate: Sat Dec 31 20:37:19 2022 +0800
refactor: extract `parse_value` (#4774)
---
datafusion/sql/src/planner.rs | 36 +++++++++++++++++++++---------------
1 file changed, 21 insertions(+), 15 deletions(-)
diff --git a/datafusion/sql/src/planner.rs b/datafusion/sql/src/planner.rs
index 2ca1550d8..0ee5913cb 100644
--- a/datafusion/sql/src/planner.rs
+++ b/datafusion/sql/src/planner.rs
@@ -1724,6 +1724,22 @@ impl<'a, S: ContextProvider> SqlToRel<'a, S> {
}
}
+ fn parse_value(&self, value: Value, param_data_types: &[DataType]) -> Result<Expr> {
+ match value {
+ Value::Number(n, _) => self.parse_sql_number(&n),
+ Value::SingleQuotedString(s) | Value::DoubleQuotedString(s) => Ok(lit(s)),
+ Value::Null => Ok(Expr::Literal(ScalarValue::Null)),
+ Value::Boolean(n) => Ok(lit(n)),
+ Value::Placeholder(param) => {
+ Self::create_placeholder_expr(param, param_data_types)
+ }
+ _ => Err(DataFusionError::Plan(format!(
+ "Unsupported Value '{:?}'",
+ value,
+ ))),
+ }
+ }
+
fn sql_values_to_plan(
&self,
values: SQLValues,
@@ -1741,16 +1757,8 @@ impl<'a, S: ContextProvider> SqlToRel<'a, S> {
.map(|row| {
row.into_iter()
.map(|v| match v {
- SQLExpr::Value(Value::Number(n, _)) => self.parse_sql_number(&n),
- SQLExpr::Value(
- Value::SingleQuotedString(s) | Value::DoubleQuotedString(s),
- ) => Ok(lit(s)),
- SQLExpr::Value(Value::Null) => {
- Ok(Expr::Literal(ScalarValue::Null))
- }
- SQLExpr::Value(Value::Boolean(n)) => Ok(lit(n)),
- SQLExpr::Value(Value::Placeholder(param)) => {
- Self::create_placeholder_expr(param, param_data_types)
+ SQLExpr::Value(value) => {
+ self.parse_value(value, param_data_types)
}
SQLExpr::UnaryOp { op, expr } => self.parse_sql_unary_op(
op,
@@ -1833,11 +1841,9 @@ impl<'a, S: ContextProvider> SqlToRel<'a, S> {
planner_context: &mut PlannerContext,
) -> Result<Expr> {
match sql {
- SQLExpr::Value(Value::Number(n, _)) => self.parse_sql_number(&n),
- SQLExpr::Value(Value::SingleQuotedString(ref s) | Value::DoubleQuotedString(ref s)) => Ok(lit(s.clone())),
- SQLExpr::Value(Value::Boolean(n)) => Ok(lit(n)),
- SQLExpr::Value(Value::Null) => Ok(Expr::Literal(ScalarValue::Null)),
- SQLExpr::Value(Value::Placeholder(param)) => Self::create_placeholder_expr(param, &planner_context.prepare_param_data_types),
+ SQLExpr::Value(value) => {
+ self.parse_value(value, &planner_context.prepare_param_data_types)
+ }
SQLExpr::Extract { field, expr } => Ok(Expr::ScalarFunction {
fun: BuiltinScalarFunction::DatePart,
args: vec![