Skip to content

Commit d74422d

Browse files
committed
reduce size of change
1 parent feb51a2 commit d74422d

File tree

11 files changed

+17
-15
lines changed

11 files changed

+17
-15
lines changed

src/common.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,9 @@ use datafusion::common::{exec_err, plan_err, Result as DataFusionResult, ScalarV
1212
use datafusion::logical_expr::ColumnarValue;
1313
use jiter::{Jiter, JiterError, Peek};
1414

15-
use crate::common_union::{is_json_union, json_from_union_scalar, nested_json_array, TYPE_ID_NULL};
15+
use crate::common_union::{
16+
is_json_union, json_from_union_scalar, nested_json_array, JsonUnion, JsonUnionField, TYPE_ID_NULL,
17+
};
1618

1719
/// General implementation of `ScalarUDFImpl::return_type`.
1820
///
@@ -124,6 +126,7 @@ impl_from_option_iter!(UInt64Array, u64);
124126
impl_from_option_iter!(Float64Array, f64);
125127
impl_from_option_iter!(StringArray, String);
126128
impl_from_option_iter!(BooleanArray, bool);
129+
impl_from_option_iter!(JsonUnion, JsonUnionField);
127130

128131
pub fn invoke<C: FromOptionIter<I> + 'static, I>(
129132
args: &[ColumnarValue],

src/common_union.rs

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,6 @@ use datafusion::arrow::datatypes::{DataType, Field, UnionFields, UnionMode};
88
use datafusion::arrow::error::ArrowError;
99
use datafusion::common::ScalarValue;
1010

11-
use crate::common::FromOptionIter;
12-
1311
pub fn is_json_union(data_type: &DataType) -> bool {
1412
match data_type {
1513
DataType::Union(fields, UnionMode::Sparse) => fields == &union_fields(),
@@ -98,8 +96,9 @@ impl JsonUnion {
9896
}
9997
}
10098

101-
impl FromOptionIter<JsonUnionField> for JsonUnion {
102-
fn from_option_iter<I: IntoIterator<Item = Option<JsonUnionField>>>(iter: I) -> Self {
99+
/// So we can do `collect::<JsonUnion>()`
100+
impl FromIterator<Option<JsonUnionField>> for JsonUnion {
101+
fn from_iter<I: IntoIterator<Item = Option<JsonUnionField>>>(iter: I) -> Self {
103102
let inner = iter.into_iter();
104103
let (lower, upper) = inner.size_hint();
105104
let mut union = Self::new(upper.unwrap_or(lower));
@@ -275,7 +274,7 @@ mod test {
275274

276275
#[test]
277276
fn test_json_union() {
278-
let json_union = JsonUnion::from_option_iter(vec![
277+
let json_union = JsonUnion::from_iter(vec![
279278
Some(JsonUnionField::JsonNull),
280279
Some(JsonUnionField::Bool(true)),
281280
Some(JsonUnionField::Bool(false)),

src/json_as_text.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ impl ScalarUDFImpl for JsonAsText {
5050
}
5151

5252
fn invoke(&self, args: &[ColumnarValue]) -> DataFusionResult<ColumnarValue> {
53-
invoke::<StringArray, _>(
53+
invoke::<StringArray, String>(
5454
args,
5555
jiter_json_as_text,
5656
|c| Ok(Arc::new(c) as ArrayRef),

src/json_contains.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ impl ScalarUDFImpl for JsonContains {
5353
}
5454

5555
fn invoke(&self, args: &[ColumnarValue]) -> Result<ColumnarValue> {
56-
invoke::<BooleanArray, _>(
56+
invoke::<BooleanArray, bool>(
5757
args,
5858
jiter_json_contains,
5959
|c| Ok(Arc::new(c) as ArrayRef),

src/json_get.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ impl ScalarUDFImpl for JsonGet {
5858
let array: UnionArray = c.try_into()?;
5959
Ok(Arc::new(array) as ArrayRef)
6060
};
61-
invoke::<JsonUnion, _>(args, jiter_json_get_union, to_array, JsonUnionField::scalar_value, true)
61+
invoke::<JsonUnion, JsonUnionField>(args, jiter_json_get_union, to_array, JsonUnionField::scalar_value, true)
6262
}
6363

6464
fn aliases(&self) -> &[String] {

src/json_get_bool.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ impl ScalarUDFImpl for JsonGetBool {
5050
}
5151

5252
fn invoke(&self, args: &[ColumnarValue]) -> DataFusionResult<ColumnarValue> {
53-
invoke::<BooleanArray, _>(
53+
invoke::<BooleanArray, bool>(
5454
args,
5555
jiter_json_get_bool,
5656
|c| Ok(Arc::new(c) as ArrayRef),

src/json_get_float.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ impl ScalarUDFImpl for JsonGetFloat {
5050
}
5151

5252
fn invoke(&self, args: &[ColumnarValue]) -> DataFusionResult<ColumnarValue> {
53-
invoke::<Float64Array, _>(
53+
invoke::<Float64Array, f64>(
5454
args,
5555
jiter_json_get_float,
5656
|c| Ok(Arc::new(c) as ArrayRef),

src/json_get_int.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ impl ScalarUDFImpl for JsonGetInt {
5050
}
5151

5252
fn invoke(&self, args: &[ColumnarValue]) -> DataFusionResult<ColumnarValue> {
53-
invoke::<Int64Array, _>(
53+
invoke::<Int64Array, i64>(
5454
args,
5555
jiter_json_get_int,
5656
|c| Ok(Arc::new(c) as ArrayRef),

src/json_get_json.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ impl ScalarUDFImpl for JsonGetJson {
4949
}
5050

5151
fn invoke(&self, args: &[ColumnarValue]) -> DataFusionResult<ColumnarValue> {
52-
invoke::<StringArray, _>(
52+
invoke::<StringArray, String>(
5353
args,
5454
jiter_json_get_json,
5555
|c| Ok(Arc::new(c) as ArrayRef),

src/json_get_str.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ impl ScalarUDFImpl for JsonGetStr {
5050
}
5151

5252
fn invoke(&self, args: &[ColumnarValue]) -> DataFusionResult<ColumnarValue> {
53-
invoke::<StringArray, _>(
53+
invoke::<StringArray, String>(
5454
args,
5555
jiter_json_get_str,
5656
|c| Ok(Arc::new(c) as ArrayRef),

0 commit comments

Comments
 (0)