Skip to content

Commit 3ece9ec

Browse files
test: add reproducer for Dictionary InList pushdown type mismatch (#2… (apache#20960)
Reproducer for apache#20937
1 parent b61aee7 commit 3ece9ec

File tree

1 file changed

+46
-0
lines changed

1 file changed

+46
-0
lines changed

datafusion/sqllogictest/test_files/parquet_filter_pushdown.slt

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -889,3 +889,49 @@ set datafusion.execution.parquet.pushdown_filters = false;
889889

890890
statement ok
891891
DROP TABLE t_struct_filter;
892+
893+
##########
894+
# Regression test for https://github.com/apache/datafusion/issues/20937
895+
#
896+
# Dynamic filter pushdown fails when joining VALUES against
897+
# Dictionary-encoded Parquet columns. The InListExpr's ArrayStaticFilter
898+
# unwraps the needle Dictionary but not the stored in_array, causing a
899+
# make_comparator(Utf8, Dictionary) type mismatch.
900+
##########
901+
902+
statement ok
903+
set datafusion.execution.parquet.pushdown_filters = true;
904+
905+
statement ok
906+
set datafusion.execution.parquet.reorder_filters = true;
907+
908+
statement ok
909+
COPY (
910+
SELECT
911+
arrow_cast(chr(65 + (row_num % 26)), 'Dictionary(Int32, Utf8)') as tag1,
912+
row_num * 1.0 as value
913+
FROM (SELECT unnest(range(0, 10000)) as row_num)
914+
) TO 'test_files/scratch/parquet_filter_pushdown/dict_filter_bug.parquet';
915+
916+
statement ok
917+
CREATE EXTERNAL TABLE dict_filter_bug
918+
STORED AS PARQUET
919+
LOCATION 'test_files/scratch/parquet_filter_pushdown/dict_filter_bug.parquet';
920+
921+
query error Can't compare arrays of different types
922+
SELECT t.tag1, t.value
923+
FROM dict_filter_bug t
924+
JOIN (VALUES ('A'), ('B')) AS v(c1)
925+
ON t.tag1 = v.c1
926+
ORDER BY t.tag1, t.value
927+
LIMIT 4;
928+
929+
# Cleanup
930+
statement ok
931+
set datafusion.execution.parquet.pushdown_filters = false;
932+
933+
statement ok
934+
set datafusion.execution.parquet.reorder_filters = false;
935+
936+
statement ok
937+
DROP TABLE dict_filter_bug;

0 commit comments

Comments
 (0)