From 52cb60e63a3a30668b700930e6b67b62a50ff83b Mon Sep 17 00:00:00 2001 From: Matthew Nibecker Date: Tue, 14 Jul 2026 10:43:13 -0700 Subject: [PATCH] pruner: Fix reverse comparator Closes #7116 --- compiler/optimizer/pruner.go | 8 ++++---- compiler/ztests/pruner.yaml | 15 +++++++++++++++ 2 files changed, 19 insertions(+), 4 deletions(-) create mode 100644 compiler/ztests/pruner.yaml diff --git a/compiler/optimizer/pruner.go b/compiler/optimizer/pruner.go index 63bc9352b9..96c3ccf925 100644 --- a/compiler/optimizer/pruner.go +++ b/compiler/optimizer/pruner.go @@ -138,13 +138,13 @@ func reverseComparator(op string) string { case "==", "!=": return op case "<": - return ">=" - case "<=": return ">" + case "<=": + return ">=" case ">": - return "<=" - case ">=": return "<" + case ">=": + return "<=" } panic("unknown op") } diff --git a/compiler/ztests/pruner.yaml b/compiler/ztests/pruner.yaml new file mode 100644 index 0000000000..fdc9ea5e77 --- /dev/null +++ b/compiler/ztests/pruner.yaml @@ -0,0 +1,15 @@ +# Test pruner flips comparator with literal/path +script: | + super -f parquet -o test.parquet -c 'values {v:1}' + super compile -O -C -c 'from test.parquet | where 1 <= v and 1 >= v' + +outputs: + - name: stdout + data: | + file test.parquet format parquet filter (1<=v and 1>=v) + pruner ( + expr compare(v.max, 1, true)>=0 and compare(v.min, 1, true)<=0 + fields v.max,v.min + ) + | where 1<=v and 1>=v + | output main