You are viewing a plain text version of this content. The canonical link for it is here.
Posted to github@datafusion.apache.org by "samuelcolvin (via GitHub)" <gi...@apache.org> on 2024/08/08 23:45:37 UTC
[PR] [HELP NEEDED] support tuples as types [datafusion]
samuelcolvin opened a new pull request, #11896:
URL: https://github.com/apache/datafusion/pull/11896
This is mostly working and `(a, b) in (('x', 'y'))` is working correctly, however if you have more than one value in the lookup, e.g. `('x', 'y') IN (('x', 'y'), ('y', 'x'))` an error occurs:
```
External error: query failed: DataFusion error: Arrow error: Invalid argument error: Nested comparison: Struct([Field { name: "c0", data_type: Utf8, nullable: true, dict_id: 0, dict_is_ordered: false, metadata: {} }, Field { name: "c1", data_type: Utf8, nullable: true, dict_id: 0, dict_is_ordered: false, metadata: {} }]) == Struct([Field { name: "c0", data_type: Utf8, nullable: true, dict_id: 0, dict_is_ordered: false, metadata: {} }, Field { name: "c1", data_type: Utf8, nullable: true, dict_id: 0, dict_is_ordered: false, metadata: {} }]) (hint: use make_comparator instead)
[SQL] select ('x', 'y') IN (('x', 'y'), ('y', 'x'));
at test_files/struct.slt:256
```
There are two tests that should fail.
I'm not sure where to go from here?
## Which issue does this PR close?
Closes #6635, continues from #8590.
## Rationale for this change
See #6635 — I want to be able to use tuples as per that issue
## What changes are included in this PR?
* Add tuples planning
* add tuple coercion
* tests
## Are these changes tested?
yes.
## Are there any user-facing changes?
More SQL supported.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: github-unsubscribe@datafusion.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: github-unsubscribe@datafusion.apache.org
For additional commands, e-mail: github-help@datafusion.apache.org
Re: [PR] Support tuples as types [datafusion]
Posted by "alamb (via GitHub)" <gi...@apache.org>.
alamb commented on PR #11896:
URL: https://github.com/apache/datafusion/pull/11896#issuecomment-2283621173
I took the liberty of merging up from main to resolve a conflict -- I think we could merge this PR and address the comments as a follow on PR, or we can do it prior to merging this one.
Please let me know what you prefer @samuelcolvin
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: github-unsubscribe@datafusion.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: github-unsubscribe@datafusion.apache.org
For additional commands, e-mail: github-help@datafusion.apache.org
Re: [PR] Support tuples as types [datafusion]
Posted by "jayzhan211 (via GitHub)" <gi...@apache.org>.
jayzhan211 commented on code in PR #11896:
URL: https://github.com/apache/datafusion/pull/11896#discussion_r1712436290
##########
datafusion/expr/src/type_coercion/binary.rs:
##########
@@ -780,6 +781,31 @@ fn coerce_numeric_type_to_decimal256(numeric_type: &DataType) -> Option<DataType
}
}
+fn struct_coercion(lhs_type: &DataType, rhs_type: &DataType) -> Option<DataType> {
+ use arrow::datatypes::DataType::*;
+ match (lhs_type, rhs_type) {
+ (Struct(lhs_fields), Struct(rhs_fields)) => {
+ if lhs_fields.len() != rhs_fields.len() {
+ return None;
+ }
+
+ let types = std::iter::zip(lhs_fields.iter(), rhs_fields.iter())
+ .map(|(lhs, rhs)| comparison_coercion(lhs.data_type(), rhs.data_type()))
+ .collect::<Option<Vec<DataType>>>()?;
+
+ let fields = types
+ .into_iter()
+ .enumerate()
+ .map(|(i, datatype)| {
+ Arc::new(Field::new(format!("c{i}"), datatype, true))
Review Comment:
I think we should preserve field name and nullable, only type is updated
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: github-unsubscribe@datafusion.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: github-unsubscribe@datafusion.apache.org
For additional commands, e-mail: github-help@datafusion.apache.org
Re: [PR] Support tuples as types [datafusion]
Posted by "alamb (via GitHub)" <gi...@apache.org>.
alamb commented on PR #11896:
URL: https://github.com/apache/datafusion/pull/11896#issuecomment-2278163477
FYI @my-vegetable-has-exploded
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: github-unsubscribe@datafusion.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: github-unsubscribe@datafusion.apache.org
For additional commands, e-mail: github-help@datafusion.apache.org
Re: [PR] [HELP NEEDED] support tuples as types [datafusion]
Posted by "samuelcolvin (via GitHub)" <gi...@apache.org>.
samuelcolvin commented on PR #11896:
URL: https://github.com/apache/datafusion/pull/11896#issuecomment-2277517520
Thanks so much for the pointer @jayzhan211, this should now be fixed.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: github-unsubscribe@datafusion.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: github-unsubscribe@datafusion.apache.org
For additional commands, e-mail: github-help@datafusion.apache.org
Re: [PR] Support tuples as types [datafusion]
Posted by "alamb (via GitHub)" <gi...@apache.org>.
alamb commented on code in PR #11896:
URL: https://github.com/apache/datafusion/pull/11896#discussion_r1711636158
##########
datafusion/sql/src/expr/mod.rs:
##########
@@ -695,6 +696,23 @@ impl<'a, S: ContextProvider> SqlToRel<'a, S> {
not_impl_err!("Struct not supported by ExprPlanner: {create_struct_args:?}")
}
+ fn parse_tuple(
+ &self,
+ schema: &DFSchema,
+ planner_context: &mut PlannerContext,
+ values: Vec<SQLExpr>,
+ ) -> Result<Expr> {
+ match values.first() {
+ Some(SQLExpr::Identifier(_)) | Some(SQLExpr::Value(_)) => {
+ self.parse_struct(schema, planner_context, values, vec![])
+ }
+ None => not_impl_err!("Empty tuple not supported yet"),
+ _ => {
Review Comment:
I was trying to figure out how to write a negative test for this case, however anything I could try seems to work
DataFusion CLI v41.0.0
> create table foo as values (1);
```sql
> select * from foo where (column1) IN ((column1+1), (2));
+---------+
| column1 |
+---------+
+---------+
0 row(s) fetched.
Elapsed 0.008 seconds.
> select * from foo where (column1) IN ((column1+1), (2), (1));
+---------+
| column1 |
+---------+
| 1 |
+---------+
1 row(s) fetched.
Elapsed 0.010 seconds.
```
##########
datafusion/sqllogictest/test_files/struct.slt:
##########
@@ -236,3 +233,44 @@ query ?
select {'animal': {'cat': 1, 'dog': 2, 'bird': {'parrot': 3, 'canary': 1}}, 'genre': {'fiction': ['mystery', 'sci-fi', 'fantasy'], 'non-fiction': {'biography': 5, 'history': 7, 'science': {'physics': 2, 'biology': 3}}}, 'vehicle': {'car': {'sedan': 4, 'suv': 2}, 'bicycle': 3, 'boat': ['sailboat', 'motorboat']}, 'weather': {'sunny': True, 'temperature': 25.5, 'wind': {'speed': 10, 'direction': 'NW'}}};
----
{animal: {cat: 1, dog: 2, bird: {parrot: 3, canary: 1}}, genre: {fiction: [mystery, sci-fi, fantasy], non-fiction: {biography: 5, history: 7, science: {physics: 2, biology: 3}}}, vehicle: {car: {sedan: 4, suv: 2}, bicycle: 3, boat: [sailboat, motorboat]}, weather: {sunny: true, temperature: 25.5, wind: {speed: 10, direction: NW}}}
+
+# test tuple as struct
+query B
+select ('x', 'y') = ('x', 'y');
+----
+true
+
+query B
+select ('x', 'y') = ('y', 'x');
+----
+false
+
+query error DataFusion error: Error during planning: Cannot infer common argument type for comparison operation Struct.*
+select ('x', 'y') = ('x', 'y', 'z');
+
+query B
+select ('x', 'y') IN (('x', 'y'));
+----
+true
+
+query B
+select ('x', 'y') IN (('x', 'y'), ('y', 'x'));
+----
+true
+
+query I
+select a from values where (a, c) = (1, 'a');
Review Comment:
I recommend we also do a negative test, like
```
select a from values where (a, c) = (100, 'a');
```
##########
datafusion/expr/src/type_coercion/binary.rs:
##########
@@ -780,6 +781,31 @@ fn coerce_numeric_type_to_decimal256(numeric_type: &DataType) -> Option<DataType
}
}
+fn struct_coercion(lhs_type: &DataType, rhs_type: &DataType) -> Option<DataType> {
Review Comment:
Could you please document what the intended rules for coercion are, in English, as a comment? That would help me understand if the code implements the intent correctly
I think the result is if all the types can be cocerced, then the output is a struct with fields named `c1` , `c2`, etc
I wonder if it would be better / easier to understand if the names of the fields were preserved (aka the field names from lhs_fields)
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: github-unsubscribe@datafusion.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: github-unsubscribe@datafusion.apache.org
For additional commands, e-mail: github-help@datafusion.apache.org
Re: [PR] [HELP NEEDED] support tuples as types [datafusion]
Posted by "jayzhan211 (via GitHub)" <gi...@apache.org>.
jayzhan211 commented on PR #11896:
URL: https://github.com/apache/datafusion/pull/11896#issuecomment-2276997223
`DataFusion error: Arrow error: Invalid argument error: Nested comparison: Struct\(\[Field \{ name: "c0", data_type: Utf8, nullable: true, dict_id: 0, dict_is_ordered: false, metadata: \{\} \}, Field \{ name: "c1", data_type: Utf8, nullable: true, dict_id: 0, dict_is_ordered: false, metadata: \{\} \}\]\) == Struct\(\[Field \{ name: "c0", data_type: Utf8, nullable: true, dict_id: 0, dict_is_ordered: false, metadata: \{\} \}, Field \{ name: "c1", data_type: Utf8, nullable: true, dict_id: 0, dict_is_ordered: false, metadata: \{\} \}\]\) \(hint: use make_comparator instead\)`
`make_comparator ` is introduced recently for comparing nested type.
However, InListExpr had not yet supported to compare nested type
```rust
fn evaluate(&self, batch: &RecordBatch) -> Result<ColumnarValue> {
let num_rows = batch.num_rows();
let value = self.expr.evaluate(batch)?;
let r = match &self.static_filter {
Some(f) => f.contains(value.into_array(num_rows)?.as_ref(), self.negated)?,
None => {
let value = value.into_array(num_rows)?;
let found = self.list.iter().map(|expr| expr.evaluate(batch)).try_fold(
BooleanArray::new(BooleanBuffer::new_unset(num_rows), None),
|result, expr| -> Result<BooleanArray> {
Ok(or_kleene(
&result,
&eq(&value, &expr?.into_array(num_rows)?)?,
)?)
},
)?;
if self.negated {
not(&found)?
} else {
found
}
}
};
Ok(ColumnarValue::Array(Arc::new(r)))
}
```
We need to change the `eq` to new function that calls `compare_op_for_nested` for nested type, and fallback to `eq` for non-nested type.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: github-unsubscribe@datafusion.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: github-unsubscribe@datafusion.apache.org
For additional commands, e-mail: github-help@datafusion.apache.org
Re: [PR] Support tuples as types [datafusion]
Posted by "alamb (via GitHub)" <gi...@apache.org>.
alamb commented on code in PR #11896:
URL: https://github.com/apache/datafusion/pull/11896#discussion_r1712642176
##########
datafusion/sql/src/expr/mod.rs:
##########
@@ -695,6 +696,23 @@ impl<'a, S: ContextProvider> SqlToRel<'a, S> {
not_impl_err!("Struct not supported by ExprPlanner: {create_struct_args:?}")
}
+ fn parse_tuple(
+ &self,
+ schema: &DFSchema,
+ planner_context: &mut PlannerContext,
+ values: Vec<SQLExpr>,
+ ) -> Result<Expr> {
+ match values.first() {
+ Some(SQLExpr::Identifier(_)) | Some(SQLExpr::Value(_)) => {
+ self.parse_struct(schema, planner_context, values, vec![])
+ }
+ None => not_impl_err!("Empty tuple not supported yet"),
+ _ => {
Review Comment:
I will file a ticket to track the feature
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: github-unsubscribe@datafusion.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: github-unsubscribe@datafusion.apache.org
For additional commands, e-mail: github-help@datafusion.apache.org
Re: [PR] Support tuples as types [datafusion]
Posted by "my-vegetable-has-exploded (via GitHub)" <gi...@apache.org>.
my-vegetable-has-exploded commented on PR #11896:
URL: https://github.com/apache/datafusion/pull/11896#issuecomment-2282362389
Thanks @samuelcolvin. This is exactly what I wanted to do.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: github-unsubscribe@datafusion.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: github-unsubscribe@datafusion.apache.org
For additional commands, e-mail: github-help@datafusion.apache.org
Re: [PR] Support tuples as types [datafusion]
Posted by "alamb (via GitHub)" <gi...@apache.org>.
alamb commented on PR #11896:
URL: https://github.com/apache/datafusion/pull/11896#issuecomment-2284715794
Thanks again everyone 🚀
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: github-unsubscribe@datafusion.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: github-unsubscribe@datafusion.apache.org
For additional commands, e-mail: github-help@datafusion.apache.org
Re: [PR] Support tuples as types [datafusion]
Posted by "jayzhan211 (via GitHub)" <gi...@apache.org>.
jayzhan211 commented on code in PR #11896:
URL: https://github.com/apache/datafusion/pull/11896#discussion_r1712441624
##########
datafusion/sql/src/expr/mod.rs:
##########
@@ -695,6 +696,23 @@ impl<'a, S: ContextProvider> SqlToRel<'a, S> {
not_impl_err!("Struct not supported by ExprPlanner: {create_struct_args:?}")
}
+ fn parse_tuple(
+ &self,
+ schema: &DFSchema,
+ planner_context: &mut PlannerContext,
+ values: Vec<SQLExpr>,
+ ) -> Result<Expr> {
+ match values.first() {
+ Some(SQLExpr::Identifier(_)) | Some(SQLExpr::Value(_)) => {
+ self.parse_struct(schema, planner_context, values, vec![])
+ }
+ None => not_impl_err!("Empty tuple not supported yet"),
+ _ => {
Review Comment:
```rust
query error DataFusion error: This feature is not implemented: Only identifiers and literals are supported in tuples
select a from values where (a, c) IN ((abs(a), 1));
```
Query success in duckdb
```
D select a from t where (a, b) in ((1, abs(a)));
┌────────┐
│ a │
│ int32 │
├────────┤
│ 0 rows │
└────────┘
```
We could support `abs()` and other complex type in tuple in follow PR, but we should check not only `first` element of the values but all the values in this PR
##########
datafusion/sql/src/expr/mod.rs:
##########
@@ -695,6 +696,23 @@ impl<'a, S: ContextProvider> SqlToRel<'a, S> {
not_impl_err!("Struct not supported by ExprPlanner: {create_struct_args:?}")
}
+ fn parse_tuple(
+ &self,
+ schema: &DFSchema,
+ planner_context: &mut PlannerContext,
+ values: Vec<SQLExpr>,
+ ) -> Result<Expr> {
+ match values.first() {
Review Comment:
check all
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: github-unsubscribe@datafusion.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: github-unsubscribe@datafusion.apache.org
For additional commands, e-mail: github-help@datafusion.apache.org
Re: [PR] [HELP NEEDED] support tuples as types [datafusion]
Posted by "samuelcolvin (via GitHub)" <gi...@apache.org>.
samuelcolvin commented on code in PR #11896:
URL: https://github.com/apache/datafusion/pull/11896#discussion_r1710452950
##########
datafusion/sqllogictest/test_files/struct.slt:
##########
@@ -236,3 +233,44 @@ query ?
select {'animal': {'cat': 1, 'dog': 2, 'bird': {'parrot': 3, 'canary': 1}}, 'genre': {'fiction': ['mystery', 'sci-fi', 'fantasy'], 'non-fiction': {'biography': 5, 'history': 7, 'science': {'physics': 2, 'biology': 3}}}, 'vehicle': {'car': {'sedan': 4, 'suv': 2}, 'bicycle': 3, 'boat': ['sailboat', 'motorboat']}, 'weather': {'sunny': True, 'temperature': 25.5, 'wind': {'speed': 10, 'direction': 'NW'}}};
----
{animal: {cat: 1, dog: 2, bird: {parrot: 3, canary: 1}}, genre: {fiction: [mystery, sci-fi, fantasy], non-fiction: {biography: 5, history: 7, science: {physics: 2, biology: 3}}}, vehicle: {car: {sedan: 4, suv: 2}, bicycle: 3, boat: [sailboat, motorboat]}, weather: {sunny: true, temperature: 25.5, wind: {speed: 10, direction: NW}}}
+
+# test tuple as struct
+query B
+select ('x', 'y') = ('x', 'y');
+----
+true
+
+query B
+select ('x', 'y') = ('y', 'x');
+----
+false
+
+query error DataFusion error: Error during planning: Cannot infer common argument type for comparison operation Struct.*
+select ('x', 'y') = ('x', 'y', 'z');
+
+query B
+select ('x', 'y') IN (('x', 'y'));
+----
+true
+
+query B
+select ('x', 'y') IN (('x', 'y'), ('y', 'x'));
+----
+true
+
+query I
+select a from values where (a, c) = (1, 'a');
+----
+1
+
+query I
+select a from values where (a, c) IN ((1, 'a'), (2, 'b'));
Review Comment:
this will fail
##########
datafusion/sqllogictest/test_files/struct.slt:
##########
@@ -236,3 +233,44 @@ query ?
select {'animal': {'cat': 1, 'dog': 2, 'bird': {'parrot': 3, 'canary': 1}}, 'genre': {'fiction': ['mystery', 'sci-fi', 'fantasy'], 'non-fiction': {'biography': 5, 'history': 7, 'science': {'physics': 2, 'biology': 3}}}, 'vehicle': {'car': {'sedan': 4, 'suv': 2}, 'bicycle': 3, 'boat': ['sailboat', 'motorboat']}, 'weather': {'sunny': True, 'temperature': 25.5, 'wind': {'speed': 10, 'direction': 'NW'}}};
----
{animal: {cat: 1, dog: 2, bird: {parrot: 3, canary: 1}}, genre: {fiction: [mystery, sci-fi, fantasy], non-fiction: {biography: 5, history: 7, science: {physics: 2, biology: 3}}}, vehicle: {car: {sedan: 4, suv: 2}, bicycle: 3, boat: [sailboat, motorboat]}, weather: {sunny: true, temperature: 25.5, wind: {speed: 10, direction: NW}}}
+
+# test tuple as struct
+query B
+select ('x', 'y') = ('x', 'y');
+----
+true
+
+query B
+select ('x', 'y') = ('y', 'x');
+----
+false
+
+query error DataFusion error: Error during planning: Cannot infer common argument type for comparison operation Struct.*
+select ('x', 'y') = ('x', 'y', 'z');
+
+query B
+select ('x', 'y') IN (('x', 'y'));
+----
+true
+
+query B
+select ('x', 'y') IN (('x', 'y'), ('y', 'x'));
Review Comment:
this will fail
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: github-unsubscribe@datafusion.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: github-unsubscribe@datafusion.apache.org
For additional commands, e-mail: github-help@datafusion.apache.org
Re: [PR] Support tuples as types [datafusion]
Posted by "alamb (via GitHub)" <gi...@apache.org>.
alamb merged PR #11896:
URL: https://github.com/apache/datafusion/pull/11896
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: github-unsubscribe@datafusion.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: github-unsubscribe@datafusion.apache.org
For additional commands, e-mail: github-help@datafusion.apache.org
Re: [PR] Support tuples as types [datafusion]
Posted by "my-vegetable-has-exploded (via GitHub)" <gi...@apache.org>.
my-vegetable-has-exploded commented on code in PR #11896:
URL: https://github.com/apache/datafusion/pull/11896#discussion_r1712884948
##########
datafusion/sql/src/expr/mod.rs:
##########
@@ -695,6 +696,23 @@ impl<'a, S: ContextProvider> SqlToRel<'a, S> {
not_impl_err!("Struct not supported by ExprPlanner: {create_struct_args:?}")
}
+ fn parse_tuple(
+ &self,
+ schema: &DFSchema,
+ planner_context: &mut PlannerContext,
+ values: Vec<SQLExpr>,
+ ) -> Result<Expr> {
+ match values.first() {
+ Some(SQLExpr::Identifier(_)) | Some(SQLExpr::Value(_)) => {
+ self.parse_struct(schema, planner_context, values, vec![])
+ }
+ None => not_impl_err!("Empty tuple not supported yet"),
+ _ => {
Review Comment:
> ```rust
> query error DataFusion error: This feature is not implemented: Only identifiers and literals are supported in tuples
> select a from values where (a, c) IN ((abs(a), 1));
> ```
>
> Query success in duckdb
>
> ```
> D select a from t where (a, b) in ((1, abs(a)));
> ┌────────┐
> │ a │
> │ int32 │
> ├────────┤
> │ 0 rows │
> └────────┘
> ```
>
> We could support `abs()` and other complex type in tuple in follow PR, but we should check not only `first` element of the values but all the values in this PR
I am not sure about whether our evaulation support struct array like `{(struct(Expr1{column1}, 1)), struct (Expr2{column2}, 2))}`?
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: github-unsubscribe@datafusion.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: github-unsubscribe@datafusion.apache.org
For additional commands, e-mail: github-help@datafusion.apache.org