MCPcopy Create free account
hub / github.com/apache/datafusion / parse_value

Method parse_value

datafusion/sql/src/expr/value.rs:45–69  ·  view source on GitHub ↗
(
        &self,
        value: Value,
        param_data_types: &[Option<FieldRef>],
    )

Source from the content-addressed store, hash-verified

43
44impl<S: ContextProvider> SqlToRel<'_, S> {
45 pub(crate) fn parse_value(
46 &self,
47 value: Value,
48 param_data_types: &[Option<FieldRef>],
49 ) -> Result<Expr> {
50 match value {
51 Value::Number(n, _) => self.parse_sql_number(&n, false),
52 Value::SingleQuotedString(s) | Value::DoubleQuotedString(s) => Ok(lit(s)),
53 Value::Null => Ok(Expr::Literal(ScalarValue::Null, None)),
54 Value::Boolean(n) => Ok(lit(n)),
55 Value::Placeholder(param) => {
56 Self::create_placeholder_expr(param, param_data_types)
57 }
58 Value::HexStringLiteral(s) => {
59 if let Some(v) = try_decode_hex_literal(&s) {
60 Ok(lit(v))
61 } else {
62 plan_err!("Invalid HexStringLiteral '{s}'")
63 }
64 }
65 Value::DollarQuotedString(s) => Ok(lit(s.value)),
66 Value::EscapedStringLiteral(s) => Ok(lit(s)),
67 _ => plan_err!("Unsupported Value '{value:?}'"),
68 }
69 }
70
71 /// Parse number in sql string, convert to Expr::Literal
72 pub(super) fn parse_sql_number(

Callers 1

Calls 4

try_decode_hex_literalFunction · 0.85
parse_sql_numberMethod · 0.80
litFunction · 0.50
LiteralInterface · 0.50

Tested by

no test coverage detected