Open fuzzerofducks opened 3 months ago
Mini repro
create table all_types as select * exclude(small_enum, medium_enum, large_enum) from test_all_types();
select int_array from all_types as t(c1) where range(uint);
This isn't really an issue
Conversion Error: Unimplemented type for cast (BIGINT[] -> BOOLEAN)
, but this only happens during physical execution after the range(uint) calls are finished.range(4294967295)
before checking the filter. The query select uint from all_types;
returns the following
D select uint from all_types;
┌────────────┐
│ uint │
│ uint32 │
├────────────┤
│ 0 │
│ 4294967295 │
│ │
└────────────┘
Naturally range(4294967295)
will take up a lot of memory, which the GitHub Actions machine doesn't have, thereby causing the address sanitizer issue.
I feel like DuckDB could throw an error earlier here if it's known the types can't cast. I looked at the code, and it looks like we don't throw eagerly on purpose, instead we have a DefaultCasts::TryVectorNullCast
as the cast operator.
@Mytherin any thoughts on what might be best here? Or should this just be closed as not an issue?
Issue found by DuckFuzz on git commit hash cf5b7 using seed 797644398.
To Reproduce
Error Message