Verified operators¶
Execution tests use in-memory DuckDB tables and assert result sets, including nulls and typed timestamps. The scalar execution cases run through both the literal and parameterized helpers.
| Behavior | Examples covered |
|---|---|
| Comparisons | =, <>, <, <=, >, >= |
| Boolean combinations | AND, OR, NOT, grouped expressions |
| Inclusive ranges | BETWEEN, NOT BETWEEN |
| Membership | IN, NOT IN; strings, numbers, booleans |
| Patterns | LIKE, negation, escape characters; ILIKE with evaluator configuration |
| Null checks | IS NULL, IS NOT NULL |
| Temporal values | Timestamp equality, ordering, ranges, timezone-equivalent instants |
| Mapped functions | Allowlisted lower and qualified function names |
| Arrays | Literal and bound element rendering and execution |
| Spatial | Intersection; native geometry, decoded WKB, GeoParquet; bound geometry/envelope/bounding box |
Pattern % and _ remain wildcards. Binding a pattern prevents SQL syntax
injection but does not turn a wildcard search into literal equality.
SQL three-valued logic applies: comparisons against NULL usually produce NULL, and WHERE selects only TRUE. Negation does not turn an unknown comparison into TRUE.
Use explicit null checks when null rows should be selected.
This table records verified behavior rather than asserting complete CQL
conformance. Other operator behavior can be inherited from pygeofilter's
SQLEvaluator; establish execution tests before relying on additional operators
in a gateway.
Parser failures and HTTP responses are separate application contracts. See restricting client filters.