jayzhan211 commented on PR #15202: URL: https://github.com/apache/datafusion/pull/15202#issuecomment-2721074045
I analysis some errors and I think if we fix the way we parse sql, we can find an optimal type for the literal easily ``` External error: statement failed: DataFusion error: Arrow error: Cast error: Cannot cast string 'FF01' to value of Int64 type [SQL] CREATE TABLE t AS VALUES ('FF01', X'FF01'), ('ABC', X'ABC'), ('000', X'000'); at test_files/binary.slt:33 External error: query is expected to fail, but actually succeed: [SQL] select abs('-1.2'); at test_files/math.slt:134 External error: query failed: DataFusion error: Error during planning: Internal error: Expect TypeSignatureClass::Native(LogicalType(Native(String), String)) but received NativeType::Int64, DataType: Int64. This was likely caused by a bug in DataFusion's code and we would welcome that you file an bug report in our issue tracker No function matches the given name and argument types 'ascii(Int64)'. You might need to add explicit type casts. Candidate functions: ascii(Coercion(TypeSignatureClass::Native(LogicalType(Native(String), String)))) [SQL] SELECT ascii('222') at test_files/expr.slt:327 External error: query columns mismatch: [SQL] select column1, column2 from validate_partitioned_parquet4 order by column1,column2; [Expected] [T]T [Actual ] [I]T at test_files/copy.slt:203 External error: query is expected to fail, but actually succeed: [SQL] SELECT -'100' at test_files/scalar.slt:1557 External error: query columns mismatch: [SQL] SELECT '0' as c UNION ALL BY NAME SELECT 0 as c; [Expected] [T] [Actual ] [I] at test_files/union_by_name.slt:285 External error: query result mismatch: [SQL] EXPLAIN VALUES ('1'::float) [Diff] (-expected|+actual) - logical_plan Values: (Float32(1) AS Utf8("1")) + logical_plan Values: (Float32(1) AS Int64(1)) physical_plan DataSourceExec: partitions=1, partition_sizes=[1] at test_files/select.slt:429 External error: query is expected to fail, but actually succeed: [SQL] select to_timestamp('-1'); at test_files/timestamps.slt:3386 External error: query is expected to fail with error: (regex) DataFusion error: Error during planning: Cannot coerce arithmetic expression Interval\(MonthDayNano\) \+ Utf8 to valid types but got error: DataFusion error: Error during planning: Cannot coerce arithmetic expression Interval(MonthDayNano) + Int64 to valid types [SQL] select interval '1' + '1' month at test_files/interval_mysql.slt:21 External error: query result mismatch: [SQL] SELECT to_date('21311111'); [Diff] (-expected|+actual) - 2131-11-11 + +60317-11-04 at test_files/dates.slt:142 External error: query is expected to fail, but actually succeed: [SQL] select regr_slope(1, '2'); at test_files/errors.slt:111 External error: query result mismatch: [SQL] SELECT arrow_typeof('1') [Diff] (-expected|+actual) - Utf8 + Int64 at test_files/arrow_typeof.slt:79 External error: query columns mismatch: [SQL] select nullif('2', '3'); [Expected] [T] [Actual ] [I] at test_files/nullif.slt:118 External error: query columns mismatch: [SQL] select unnest(column1), unnest(column2) + 2, column3 * 10, unnest(array_remove(column1, '4')) from unnest_table; [Expected] III[T] [Actual ] III[I] at test_files/unnest.slt:266 External error: query failed: DataFusion error: Error during planning: Projections require unique expression names but the expression "map_extract(map(make_array(Int64(1), Int64(2), Int64(3)), make_array(Int64(1), Int64(2), Int64(3))), Float64(1))" at position 1 and "map_extract(map(make_array(Int64(1), Int64(2), Int64(3)), make_array(Int64(1), Int64(2), Int64(3))), Float64(1))" at position 3 have the same name. Consider aliasing ("AS") one of them. [SQL] select map_extract(MAP {1: 1, 2: 2, 3:3}, '1'), map_extract(MAP {1: 1, 2: 2, 3:3}, 1.0), map_extract(MAP {1.0: 1, 2: 2, 3:3}, '1'), map_extract(MAP {'1': 1, '2': 2, '3':3}, 1.0), map_extract(MAP {arrow_cast('1', 'Utf8View'): 1, arrow_cast('2', 'Utf8View'): 2, arrow_cast('3', 'Utf8View'):3}, '1'); at test_files/map.slt:579 External error: query failed: DataFusion error: Arrow error: Cast error: Cannot cast string 'default' to value of Int64 type [SQL] select lead(a, 1, 'default') over (order by a) from (select '1' a union all select '2' a) at test_files/window.slt:4043 External error: query failed: DataFusion error: Execution error: unsupported type for second argument to array_to_string function as Int64 [SQL] select array_to_string([1, 1, 1], '1'), array_to_string([[1, 2], [3, 4], [5, 6]], '+'), array_to_string(array_repeat(array_repeat(array_repeat(3, 2), 2), 3), '/\'); at test_files/array.slt:4240 ``` -- 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-unsubscr...@datafusion.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: github-unsubscr...@datafusion.apache.org For additional commands, e-mail: github-h...@datafusion.apache.org