Package-level declarations
Types
The values a filter operator carries; the fields it names follow from its target.
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.
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.
How normalization lowers an operator to the operators backends implement.
What an aggregation metric reads from each record.
The type of a metric's value.
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.
What a filter operator applies to.
System fields a filter operator can target without naming them.
How many literal values a filter operator carries.
How a filter's values are checked against the field's declared value domain.