Types

Link copied to clipboard
Link copied to clipboard
class ArrayEquality @InternalWowApi constructor(val field: QueryField<*>) : QueryViolation

EQ / NE on field names an array operand, and the storage cannot compare a whole array.

Link copied to clipboard
object Companion
Link copied to clipboard
class CountRequiresFilter @InternalWowApi constructor(val label: String) : QueryViolation

A counting query (count, paged total) matches every record, and the entry does not allow expensive operators.

Link copied to clipboard
class CursorNotAllowed @InternalWowApi constructor(val field: QueryField<*>) : QueryViolation
Link copied to clipboard
class CursorSortDuplicate @InternalWowApi constructor(val field: QueryField<*>) : QueryViolation

A cursor sort names field twice once the identity tie-breaker is appended.

Link copied to clipboard
class CursorSortTooMany @InternalWowApi constructor(val max: Int) : QueryViolation

A cursor sort has more than max fields once the identity tie-breaker is appended.

Link copied to clipboard
class DuplicateSortField @InternalWowApi constructor(val field: QueryField<*>) : QueryViolation

Two sort fields (field is the later one) are bound to the same physical field, so one of them sorts nothing.

Link copied to clipboard
class ElementScopeRequired @InternalWowApi constructor(val field: QueryField<*>) : QueryViolation
Link copied to clipboard

An event projection that keeps payloads must keep their type, so each payload can be read.

Link copied to clipboard
class ExactCountDisabled @InternalWowApi constructor(val label: String) : QueryViolation

A paged query asks for an EXACT total, and the entry counts only up to its bound. An expensive operation the entry disables, so it shares that code.

Link copied to clipboard
class ExpensiveOperatorDisabled @InternalWowApi constructor(val label: String, val construct: String, val plural: Boolean = false, val location: String) : QueryViolation

construct (e.g. query operator[CONTAINS]) is expensive, and the entry does not allow expensive operators.

Link copied to clipboard

The gateway requires every query to state its entry, and this one ran under UNSPECIFIED.

Link copied to clipboard
class FilterTooLarge @InternalWowApi constructor(val label: String, val subject: String, val value: Int, val max: Int, val location: String) : QueryViolation

The filter (and HAVING) of a query has more nodes or values (subject) than the entry allows.

Link copied to clipboard

A FIRST / LAST metric inside an element, or on a model without an event time, names no orderBy.

Link copied to clipboard

FIRST / LAST need a single value per record, both for the value and for its ordering field.

Link copied to clipboard
class IdentityUndefined @InternalWowApi constructor(val model: QueryModel) : QueryViolation

An identity filter or a cursor (whose tie-breaker is the identity) on a model that defines no identity.

Link copied to clipboard
Link copied to clipboard

A cursor token that does not decode for this model and effective sort.

Link copied to clipboard

Which error a violation renders as.

Link copied to clipboard
class MetricFilterArrayField @InternalWowApi constructor(val field: QueryField<*>) : QueryViolation
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
class NotCollection @InternalWowApi constructor(val field: QueryField<*>) : QueryViolation
Link copied to clipboard
class NotProjectable @InternalWowApi constructor(val field: QueryField<*>) : QueryViolation
Link copied to clipboard
class NotSingleString @InternalWowApi constructor(val field: QueryField<*>) : QueryViolation
Link copied to clipboard
class ParallelArraySort @InternalWowApi constructor(val field: QueryField<*>, val other: QueryField<*>) : QueryViolation

field and other are independent arrays, and the storage cannot sort by both.

Link copied to clipboard
class PreviousUnshiftable @InternalWowApi constructor(val field: QueryField<*>) : QueryViolation

A PREVIOUS window steps along the date group on field, but the filter conditions the field where its range cannot be shifted: outside the top-level AND, or with a value that is not an instant.

Link copied to clipboard
class ProtectedAggregation @InternalWowApi constructor(val field: QueryField<*>) : QueryViolation
Link copied to clipboard
class ProtectedComparison @InternalWowApi constructor(val field: QueryField<*>) : QueryViolation

A filter or sort compares a sensitive field whose raw value must not be compared.

Link copied to clipboard
class ResidualGroupsExceeded @InternalWowApi constructor(val label: String, val max: Int) : QueryViolation

An aggregation whose HAVING, metric sort or windows the core computes read more than max groups, dense fill rows included. Metered while the rows arrive, so it can fail after the response started streaming.

Link copied to clipboard
class SizeOutOfRange @InternalWowApi constructor(val label: String, val subject: String, val value: Long, val min: Long?, val max: Long?, val location: String) : QueryViolation

A size the entry bounds (subject: a list or aggregation limit, a page index, size, window or offset, a cursor size) is value, outside min..max; a null bound is open.

Link copied to clipboard
class SortTooMany @InternalWowApi constructor(val max: Int) : QueryViolation

A sort names more fields than any storage supports.

Link copied to clipboard
class StorageUnsupported @InternalWowApi constructor(val feature: String, val field: QueryField<*>? = null) : QueryViolation

The storage cannot run feature: it declares the feature unsupported, or its native language cannot express the query (a backend's native check). field is the field involved, when there is one.

Link copied to clipboard

A stream its store cannot resume (no keyset of its sort, so no positions) that names no limit: it would read a list's default number of rows and stop, which a reader takes for every match.

Link copied to clipboard

A date group or date difference names a field whose values do not store instants as a date or an epoch, so no backend can read them as instants.

Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
class TooManyGroups @InternalWowApi constructor(val limit: Int) : QueryViolation

An aggregation that names no sort found more than its limit groups. Its first limit groups in key order would be a cut nobody asked for: a top-N needs a sort, and every group needs a higher limit.

Link copied to clipboard
class UnknownField @InternalWowApi constructor(val field: QueryField<*>) : QueryViolation
Link copied to clipboard
class UnsupportedCapability @InternalWowApi constructor(val field: QueryField<*>, val capabilities: Set<QueryCapability>) : QueryViolation

The field grants none of capabilities.

Link copied to clipboard
class ValueMismatch @InternalWowApi constructor(val field: QueryField<*>) : QueryViolation

A filter value falls outside the field's declared domain; field is the name as the request wrote it.

Properties

Link copied to clipboard
abstract val code: String

A stable, machine-readable code; a contract: codes are added, never renamed.

Link copied to clipboard
open val field: QueryField<*>?

The logical field the violation is about, or null for model-level violations.

Link copied to clipboard
Link copied to clipboard
open val location: String

What the binding error names: the absolute logical field (or "") for a model rule, a request part otherwise.

Link copied to clipboard
abstract val message: String

Functions

Link copied to clipboard

The error this violation is rejected with; the one place a violation is rendered.