mattfaltyn opened a new pull request, #1872: URL: https://github.com/apache/iceberg-go/pull/1872
## Summary - discard above-max and below-min sentinels while binding `IN` and `NOT IN` predicates - reuse the existing empty- and singleton-set simplifications after impossible values are removed - cover integer and floating-point narrowing plus the inclusive metrics scan-planning regression ## Why Applications can construct a filter with a wider Go literal type than the Iceberg field type. When a set mixes representable and out-of-range values, binding currently retains range sentinels that cannot equal any field value. Metrics pruning later treats those sentinels as regular typed literals and returns an interface-conversion error instead of planning the scan. Removing impossible set members during binding preserves membership semantics and keeps sentinels out of downstream predicate consumers. Closes #1870. ## Testing - `go test . -run '^TestBindAboveBelowIntMax$' -count=1` - `go test ./table -run '^TestEvaluators/TestInMetrics$' -count=1 -v` - `go test ./...` - `make test-assert` - `make test-race` - `golangci-lint v2.12.2 run --timeout=10m --new-from-rev origin/main` (`0 issues`) The full repository lint invocation also reports two existing `intrange` findings in unchanged `catalog/rest/load_table_bench_test.go` lines 84 and 101. -- 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: [email protected] For queries about this service, please contact Infrastructure at: [email protected] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
