ColumnPredicate

A test a shredded column can answer without opening a document.

Type bracketing is part of the contract, and it has to be, because skipping depends on it. A numericRange matches values of numeric kind only; a textRange matches strings only; a value of any other kind is not a match and not an error. Without that rule, a column whose numeric bound misses the predicate could not be skipped merely because the segment also holds strings at the path — and with it, one bound slot is enough to rule a segment out.

It is the rule MongoDB and JavaScript both take and SQL/JSON declines; what matters here is less which one than that it is written down and that the recheck uses the same one. .claude/rules/index-and-query.md requires the recheck to run the same logic that built the index, so matches is what both the column scan and the fallback document scan evaluate.

Types

Link copied to clipboard
object Companion

Functions

Link copied to clipboard
fun matches(value: Variant): Boolean

Whether value satisfies this predicate. The one definition, used by index and scan alike.

Link copied to clipboard
open override fun toString(): String