Describe the bug
When querying a Lance dataset from DuckDB UI with a list_contains or array_contains filter, the query returns 0 rows. Disabling the optimizer (SET disabled_optimizers = 'filter_pushdown') returns the correct results.
Minimal reproduction
-- Both return 0 rows (wrong)
SELECT * FROM 'gs://your-bucket/path/to/your.lance' WHERE list_contains(tags, 'foo'); -- tags is varchar[]
SELECT * FROM 'gs://your-bucket/path/to/your.lance' WHERE array_contains(tags, 'foo'); -- tags is varchar[]
-- Returns correct rows
SET disabled_optimizers = 'filter_pushdown';
SELECT * FROM 'gs://your-bucket/path/to/your.lance' WHERE list_contains(tags, 'foo'); -- tags is varchar[]
SELECT * FROM 'gs://your-bucket/path/to/your.lance' WHERE array_contains(tags, 'foo'); -- tags is varchar[]
Expected behavior
Either:
- These predicates are correctly evaluated after the Lance scan, or
- The Lance scanner rejects them so DuckDB falls back to filtering itself
Actual behavior
0 rows returned with no error or warning.
Describe the bug
When querying a Lance dataset from DuckDB UI with a
list_containsorarray_containsfilter, the query returns 0 rows. Disabling the optimizer (SET disabled_optimizers = 'filter_pushdown') returns the correct results.Minimal reproduction
Expected behavior
Either:
Actual behavior
0 rows returned with no error or warning.