Skip to content

Commit acb8846

Browse files
authored
refactor: extract parse_value (#4774)
1 parent 5b125b1 commit acb8846

1 file changed

Lines changed: 21 additions & 15 deletions

File tree

datafusion/sql/src/planner.rs

Lines changed: 21 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1724,6 +1724,22 @@ impl<'a, S: ContextProvider> SqlToRel<'a, S> {
17241724
}
17251725
}
17261726

1727+
fn parse_value(&self, value: Value, param_data_types: &[DataType]) -> Result<Expr> {
1728+
match value {
1729+
Value::Number(n, _) => self.parse_sql_number(&n),
1730+
Value::SingleQuotedString(s) | Value::DoubleQuotedString(s) => Ok(lit(s)),
1731+
Value::Null => Ok(Expr::Literal(ScalarValue::Null)),
1732+
Value::Boolean(n) => Ok(lit(n)),
1733+
Value::Placeholder(param) => {
1734+
Self::create_placeholder_expr(param, param_data_types)
1735+
}
1736+
_ => Err(DataFusionError::Plan(format!(
1737+
"Unsupported Value '{:?}'",
1738+
value,
1739+
))),
1740+
}
1741+
}
1742+
17271743
fn sql_values_to_plan(
17281744
&self,
17291745
values: SQLValues,
@@ -1741,16 +1757,8 @@ impl<'a, S: ContextProvider> SqlToRel<'a, S> {
17411757
.map(|row| {
17421758
row.into_iter()
17431759
.map(|v| match v {
1744-
SQLExpr::Value(Value::Number(n, _)) => self.parse_sql_number(&n),
1745-
SQLExpr::Value(
1746-
Value::SingleQuotedString(s) | Value::DoubleQuotedString(s),
1747-
) => Ok(lit(s)),
1748-
SQLExpr::Value(Value::Null) => {
1749-
Ok(Expr::Literal(ScalarValue::Null))
1750-
}
1751-
SQLExpr::Value(Value::Boolean(n)) => Ok(lit(n)),
1752-
SQLExpr::Value(Value::Placeholder(param)) => {
1753-
Self::create_placeholder_expr(param, param_data_types)
1760+
SQLExpr::Value(value) => {
1761+
self.parse_value(value, param_data_types)
17541762
}
17551763
SQLExpr::UnaryOp { op, expr } => self.parse_sql_unary_op(
17561764
op,
@@ -1833,11 +1841,9 @@ impl<'a, S: ContextProvider> SqlToRel<'a, S> {
18331841
planner_context: &mut PlannerContext,
18341842
) -> Result<Expr> {
18351843
match sql {
1836-
SQLExpr::Value(Value::Number(n, _)) => self.parse_sql_number(&n),
1837-
SQLExpr::Value(Value::SingleQuotedString(ref s) | Value::DoubleQuotedString(ref s)) => Ok(lit(s.clone())),
1838-
SQLExpr::Value(Value::Boolean(n)) => Ok(lit(n)),
1839-
SQLExpr::Value(Value::Null) => Ok(Expr::Literal(ScalarValue::Null)),
1840-
SQLExpr::Value(Value::Placeholder(param)) => Self::create_placeholder_expr(param, &planner_context.prepare_param_data_types),
1844+
SQLExpr::Value(value) => {
1845+
self.parse_value(value, &planner_context.prepare_param_data_types)
1846+
}
18411847
SQLExpr::Extract { field, expr } => Ok(Expr::ScalarFunction {
18421848
fun: BuiltinScalarFunction::DatePart,
18431849
args: vec![

0 commit comments

Comments
 (0)