DataFusion ScalarValues sometimes require a ast::Expr to construct. For example ScalarValue::Date32(d) corresponds to the ast::Expr CAST('datestr' as DATE)
(&self, v: &ScalarValue)
| 1271 | /// DataFusion ScalarValues sometimes require a ast::Expr to construct. |
| 1272 | /// For example ScalarValue::Date32(d) corresponds to the ast::Expr CAST('datestr' as DATE) |
| 1273 | fn scalar_to_sql(&self, v: &ScalarValue) -> Result<ast::Expr> { |
| 1274 | match v { |
| 1275 | ScalarValue::Null => Ok(ast::Expr::value(ast::Value::Null)), |
| 1276 | ScalarValue::Boolean(Some(b)) => { |
| 1277 | Ok(ast::Expr::value(ast::Value::Boolean(b.to_owned()))) |
| 1278 | } |
| 1279 | ScalarValue::Boolean(None) => Ok(ast::Expr::value(ast::Value::Null)), |
| 1280 | ScalarValue::Float16(Some(f)) => { |
| 1281 | Ok(ast::Expr::value(ast::Value::Number(f.to_string(), false))) |
| 1282 | } |
| 1283 | ScalarValue::Float16(None) => Ok(ast::Expr::value(ast::Value::Null)), |
| 1284 | ScalarValue::Float32(Some(f)) => { |
| 1285 | let f_val = match f.fract() { |
| 1286 | 0.0 => format!("{f:.1}"), |
| 1287 | _ => format!("{f}"), |
| 1288 | }; |
| 1289 | Ok(ast::Expr::value(ast::Value::Number(f_val, false))) |
| 1290 | } |
| 1291 | ScalarValue::Float32(None) => Ok(ast::Expr::value(ast::Value::Null)), |
| 1292 | ScalarValue::Float64(Some(f)) => { |
| 1293 | let f_val = match f.fract() { |
| 1294 | 0.0 => format!("{f:.1}"), |
| 1295 | _ => format!("{f}"), |
| 1296 | }; |
| 1297 | Ok(ast::Expr::value(ast::Value::Number(f_val, false))) |
| 1298 | } |
| 1299 | ScalarValue::Float64(None) => Ok(ast::Expr::value(ast::Value::Null)), |
| 1300 | ScalarValue::Decimal32(Some(value), precision, scale) => { |
| 1301 | Ok(ast::Expr::value(ast::Value::Number( |
| 1302 | Decimal32Type::format_decimal(*value, *precision, *scale), |
| 1303 | false, |
| 1304 | ))) |
| 1305 | } |
| 1306 | ScalarValue::Decimal32(None, ..) => Ok(ast::Expr::value(ast::Value::Null)), |
| 1307 | ScalarValue::Decimal64(Some(value), precision, scale) => { |
| 1308 | Ok(ast::Expr::value(ast::Value::Number( |
| 1309 | Decimal64Type::format_decimal(*value, *precision, *scale), |
| 1310 | false, |
| 1311 | ))) |
| 1312 | } |
| 1313 | ScalarValue::Decimal64(None, ..) => Ok(ast::Expr::value(ast::Value::Null)), |
| 1314 | ScalarValue::Decimal128(Some(value), precision, scale) => { |
| 1315 | Ok(ast::Expr::value(ast::Value::Number( |
| 1316 | Decimal128Type::format_decimal(*value, *precision, *scale), |
| 1317 | false, |
| 1318 | ))) |
| 1319 | } |
| 1320 | ScalarValue::Decimal128(None, ..) => Ok(ast::Expr::value(ast::Value::Null)), |
| 1321 | ScalarValue::Decimal256(Some(value), precision, scale) => { |
| 1322 | Ok(ast::Expr::value(ast::Value::Number( |
| 1323 | Decimal256Type::format_decimal(*value, *precision, *scale), |
| 1324 | false, |
| 1325 | ))) |
| 1326 | } |
| 1327 | ScalarValue::Decimal256(None, ..) => Ok(ast::Expr::value(ast::Value::Null)), |
| 1328 | ScalarValue::Int8(Some(i)) => { |
| 1329 | Ok(ast::Expr::value(ast::Value::Number(i.to_string(), false))) |
| 1330 | } |
no test coverage detected