Skip to content

Commit f603bc2

Browse files
Upgrade to Datafusion 48 (#84)
1 parent b9dfacd commit f603bc2

File tree

3 files changed

+26
-9
lines changed

3 files changed

+26
-9
lines changed

Cargo.toml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "datafusion-functions-json"
3-
version = "0.47.0"
3+
version = "0.48.0"
44
edition = "2021"
55
description = "JSON functions for DataFusion"
66
readme = "README.md"
@@ -11,16 +11,16 @@ repository = "https://github.com/datafusion-contrib/datafusion-functions-json/"
1111
rust-version = "1.82.0"
1212

1313
[dependencies]
14-
datafusion = { version = "47", default-features = false }
14+
datafusion = { version = "48", default-features = false }
1515
jiter = "0.9"
1616
paste = "1"
1717
log = "0.4"
1818

1919
[dev-dependencies]
20-
datafusion = { version = "47", default-features = false, features = ["nested_expressions"] }
20+
datafusion = { version = "48", default-features = false, features = [
21+
"nested_expressions",
22+
] }
2123
codspeed-criterion-compat = "2.6"
22-
criterion = "0.5.1"
23-
clap = "4"
2424
tokio = { version = "1.43", features = ["full"] }
2525

2626
[lints.clippy]

src/rewrite.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ fn unnest_json_calls(func: &ScalarFunction) -> Option<Transformed<Expr>> {
8080
let mut args = inner_func.args.clone();
8181
args.extend(outer_args_iter.cloned());
8282
// See #23, unnest only when all lookup arguments are literals
83-
if args.iter().skip(1).all(|arg| matches!(arg, Expr::Literal(_))) {
83+
if args.iter().skip(1).all(|arg| matches!(arg, Expr::Literal(_, _))) {
8484
Some(Transformed::yes(Expr::ScalarFunction(ScalarFunction {
8585
func: func.func.clone(),
8686
args,
@@ -149,7 +149,7 @@ fn expr_to_sql_repr(expr: &Expr) -> String {
149149
.as_ref()
150150
.map_or_else(|| name.clone(), |r| format!("{r}.{name}")),
151151
Expr::Alias(alias) => alias.name.clone(),
152-
Expr::Literal(scalar) => match scalar {
152+
Expr::Literal(scalar, _) => match scalar {
153153
ScalarValue::Utf8(Some(v)) | ScalarValue::Utf8View(Some(v)) | ScalarValue::LargeUtf8(Some(v)) => {
154154
format!("'{v}'")
155155
}

tests/main.rs

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
use std::collections::HashMap;
12
use std::sync::Arc;
23

34
use datafusion::arrow::array::{Array, ArrayRef, DictionaryArray, RecordBatch};
@@ -503,8 +504,16 @@ fn test_json_get_utf8() {
503504
let ColumnarValue::Scalar(sv) = json_get_str
504505
.invoke_with_args(ScalarFunctionArgs {
505506
args: args.to_vec(),
507+
arg_fields: vec![
508+
Arc::new(Field::new("arg_1", DataType::LargeUtf8, false)),
509+
Arc::new(Field::new("arg_2", DataType::LargeUtf8, false)),
510+
Arc::new(Field::new("arg_3", DataType::LargeUtf8, false)),
511+
],
506512
number_rows: 1,
507-
return_type: &DataType::Utf8,
513+
return_field: Arc::new(
514+
Field::new("ret_field", DataType::Utf8, false)
515+
.with_metadata(HashMap::from_iter(vec![("is_json".to_string(), "true".to_string())])),
516+
),
508517
})
509518
.unwrap()
510519
else {
@@ -528,8 +537,16 @@ fn test_json_get_large_utf8() {
528537
let ColumnarValue::Scalar(sv) = json_get_str
529538
.invoke_with_args(ScalarFunctionArgs {
530539
args: args.to_vec(),
540+
arg_fields: vec![
541+
Arc::new(Field::new("arg_1", DataType::LargeUtf8, false)),
542+
Arc::new(Field::new("arg_2", DataType::LargeUtf8, false)),
543+
Arc::new(Field::new("arg_3", DataType::LargeUtf8, false)),
544+
],
531545
number_rows: 1,
532-
return_type: &DataType::LargeUtf8,
546+
return_field: Arc::new(
547+
Field::new("ret_field", DataType::Utf8, false)
548+
.with_metadata(HashMap::from_iter(vec![("is_json".to_string(), "true".to_string())])),
549+
),
533550
})
534551
.unwrap()
535552
else {

0 commit comments

Comments
 (0)