Skip to content

Conversation

findepi
Copy link
Member

@findepi findepi commented Sep 11, 2025

The planner takes into account the return type a function promises to return. It even passes it back on invoke as a reminder/convenience. Verify that each function delivers on the promise.

@findepi findepi marked this pull request as draft September 11, 2025 09:24
@github-actions github-actions bot added the logical-expr Logical plan and expressions label Sep 11, 2025
@findepi
Copy link
Member Author

findepi commented Sep 11, 2025

This failed locally. I hope the CI will fail too. If not, need to update how the check is conditioned.

@findepi
Copy link
Member Author

findepi commented Sep 11, 2025

External error: 8 errors in file /Users/runner/work/datafusion/datafusion/datafusion/sqllogictest/test_files/spark/array/array.slt

1. query failed: DataFusion error: Execution error: Function 'array' returned value of type 'List(Field { name: "element", data_type: Int64, nullable: true, dict_id: 0, dict_is_ordered: false, metadata: {} })' while the following type was promised at planning time and expected: 'List(Field { name: "item", data_type: Int64, nullable: true, dict_id: 0, dict_is_ordered: false, metadata: {} })'
[SQL] SELECT array(1, 2, 3);
at /Users/runner/work/datafusion/datafusion/datafusion/sqllogictest/test_files/spark/array/array.slt:18


2. query failed: DataFusion error: Execution error: Function 'array' returned value of type 'List(Field { name: "element", data_type: Utf8, nullable: true, dict_id: 0, dict_is_ordered: false, metadata: {} })' while the following type was promised at planning time and expected: 'List(Field { name: "item", data_type: Utf8, nullable: true, dict_id: 0, dict_is_ordered: false, metadata: {} })'
[SQL] SELECT array('a', 'b');
at /Users/runner/work/datafusion/datafusion/datafusion/sqllogictest/test_files/spark/array/array.slt:24


3. query failed: DataFusion error: Execution error: Function 'array' returned value of type 'List(Field { name: "item", data_type: Int32, nullable: true, dict_id: 0, dict_is_ordered: false, metadata: {} })' while the following type was promised at planning time and expected: 'List(Field { name: "element", data_type: Int32, nullable: true, dict_id: 0, dict_is_ordered: false, metadata: {} })'
[SQL] SELECT array();
at /Users/runner/work/datafusion/datafusion/datafusion/sqllogictest/test_files/spark/array/array.slt:30


4. query failed: DataFusion error: Execution error: Function 'array' returned value of type 'List(Field { name: "item", data_type: Int32, nullable: true, dict_id: 0, dict_is_ordered: false, metadata: {} })' while the following type was promised at planning time and expected: 'List(Field { name: "element", data_type: Int32, nullable: true, dict_id: 0, dict_is_ordered: false, metadata: {} })'
[SQL] SELECT array(), array(array());
at /Users/runner/work/datafusion/datafusion/datafusion/sqllogictest/test_files/spark/array/array.slt:35


5. query failed: DataFusion error: Execution error: Function 'array' returned value of type 'List(Field { name: "element", data_type: Int64, nullable: true, dict_id: 0, dict_is_ordered: false, metadata: {} })' while the following type was promised at planning time and expected: 'List(Field { name: "item", data_type: Int64, nullable: true, dict_id: 0, dict_is_ordered: false, metadata: {} })'
[SQL] SELECT array(1, NULL, 3);

7. query failed: DataFusion error: Execution error: Function 'parse_url' returned value of type 'Utf8' while the following type was promised at planning time and expected: 'Utf8View'
[SQL] SELECT parse_url('http://userinfo@spark.apache.org/path?query=1#Ref'::string, 'REF'::string);
at /Users/runner/work/datafusion/datafusion/datafusion/sqllogictest/test_files/spark/url/parse_url.slt:48


8. query failed: DataFusion error: Execution error: Function 'parse_url' returned value of type 'Utf8' while the following type was promised at planning time and expected: 'Utf8View'
[SQL] SELECT parse_url('http://userinfo@spark.apache.org/path?query=1#Ref'::string, 'PROTOCOL'::string);
at /Users/runner/work/datafusion/datafusion/datafusion/sqllogictest/test_files/spark/url/parse_url.slt:53


9. query failed: DataFusion error: Execution error: Function 'parse_url' returned value of type 'Utf8' while the following type was promised at planning time and expected: 'Utf8View'
[SQL] SELECT parse_url('http://userinfo@spark.apache.org/path?query=1#Ref'::string, 'FILE'::string);
at /Users/runner/work/datafusion/datafusion/datafusion/sqllogictest/test_files/spark/url/parse_url.slt:58


10. query failed: DataFusion error: Execution error: Function 'parse_url' returned value of type 'Utf8' while the following type was promised at planning time and expected: 'Utf8View'
[SQL] SELECT parse_url('http://userinfo@spark.apache.org/path?query=1#Ref'::string, 'AUTHORITY'::string);
at /Users/runner/work/datafusion/datafusion/datafusion/sqllogictest/test_files/spark/url/parse_url.slt:63


... other 1 errors in /Users/runner/work/datafusion/datafusion/datafusion/sqllogictest/test_files/spark/url/parse_url.slt not shown ...

@github-actions github-actions bot added sqllogictest SQL Logic Tests (.slt) ffi Changes to the ffi crate and removed sqllogictest SQL Logic Tests (.slt) labels Sep 11, 2025
The default branch picks `Int32` when all arguments are Null-typed, so
it's applicable to no-args just as good.
The planner takes into account the return type a function promises to
return. It even passes it back on invoke as a reminder/convenience.
Verify that each function delivers on the promise.
@findepi findepi force-pushed the findepi/check-func-return-type branch from 15319d6 to dbeb79d Compare September 11, 2025 14:48
@github-actions github-actions bot added the spark label Sep 11, 2025
@findepi findepi force-pushed the findepi/check-func-return-type branch from dbeb79d to 25078a4 Compare September 11, 2025 14:49
@findepi findepi marked this pull request as ready for review September 11, 2025 14:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
ffi Changes to the ffi crate logical-expr Logical plan and expressions spark
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant