(
&self,
value: Value,
param_data_types: &[Option<FieldRef>],
)
| 43 | |
| 44 | impl<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( |
no test coverage detected