Package-level declarations

Types

Link copied to clipboard
data class Arity(val values: ValueArity)

The values a filter operator carries; the fields it names follow from its target.

Link copied to clipboard

The single source of what a filter operator needs: its target and arity, the storage capability it requires, how its values are checked, what it costs and how normalization lowers it. Validation, entry gates, normalization and backends read this table instead of restating it.

Link copied to clipboard

The semantic specification of the field filter operators (design §6.2): how each operator treats a missing field, an explicit null, array elements and letter case. The expected matches are the current MongoDB behavior, which is canonical; every backend must reproduce them, and the TCK runs every case against every backend.

Link copied to clipboard

The single specification of each aggregation group type (design §6.1): its wire name (the enum name, equal to the JSON type), the capability its field must grant and what it costs. Admission, field resolution, the entry gate and the descriptor read it, so a new group type is added here and every exhaustive when over AggregationGroup fails to compile until handled.

Link copied to clipboard
sealed interface Lowering

How normalization lowers an operator to the operators backends implement.

Link copied to clipboard

What an aggregation metric reads from each record.

Link copied to clipboard

The type of a metric's value.

Link copied to clipboard

The single specification of each aggregation metric type (design §6.1): its wire name (the enum name, equal to the JSON type), what it reads and with which capabilities, its result type, whether HAVING may compare it and what it costs. Admission, the entry gate, the descriptor and empty-group values read it, so a new metric type is added here and every exhaustive when over AggregationMetric fails to compile until handled.

Link copied to clipboard
Link copied to clipboard

What a filter operator applies to.

Link copied to clipboard
class SemanticCase(val id: String, val shape: SemanticShape, val matches: Set<String>, filter: (QueryField) -> FilterExpression)

One cell of the semantic matrix: filter, applied to a field of shape, matches exactly the probes named in matches. id is stable and unique, so a backend's test can name the cells it is known to diverge on.

Link copied to clipboard

One stored value of a SemanticShape. value is null when the field is absent from the stored record, and a JSON null node when the record stores an explicit null.

Link copied to clipboard

The shape of the field a SemanticCase runs against. Each shape comes with a fixed set of SemanticProbes: stored values that cover a missing field, an explicit null, and the ordinary and edge values of that shape.

Link copied to clipboard

System fields a filter operator can target without naming them.

Link copied to clipboard

How many literal values a filter operator carries.

Link copied to clipboard

How a filter's values are checked against the field's declared value domain.