pub enum AnalysisError {
Show 18 variants
BindingAlreadyExists(u32, u32, String),
VariableUndeclared(u32, u32, String),
TypeMismatch(u32, u32, String, String),
FieldUndeclared(u32, u32, String),
FuncUndeclared(u32, u32, String),
ExpectRecord(u32, u32, String),
ExpectRecordOrSourcedProperty(u32, u32, String),
ExpectArray(u32, u32, String),
ExpectFieldLiteral(u32, u32),
ExpectRecordLiteral(u32, u32),
UnsupportedCustomType(u32, u32, String),
FunWrongArgumentCount(u32, u32, String),
WrongAggFunUsage(u32, u32, String),
UnallowedAggFuncUsageWithSrcField(u32, u32),
EmptyRecord(u32, u32),
ExpectSourceBoundProperty(u32, u32),
ConstantExprInProjectIntoClause(u32, u32),
ExpectAggExpr(u32, u32),
}Expand description
Errors that can occur during static analysis.
These errors are produced by the type checker when it encounters type mismatches, undeclared variables, or other semantic issues in the query.
Variants§
BindingAlreadyExists(u32, u32, String)
A binding with the same name already exists in the current scope.
Fields: (line, column, binding_name)
This occurs when trying to declare a variable that shadows an existing binding in the same scope, such as using the same alias for multiple FROM sources.
VariableUndeclared(u32, u32, String)
A variable was referenced but not declared in any accessible scope.
Fields: (line, column, variable_name)
This occurs when referencing a variable that hasn’t been bound by a FROM clause or defined in the default scope.
TypeMismatch(u32, u32, String, String)
A type mismatch occurred between expected and actual types.
Fields: (line, column, expected_type, actual_type)
This occurs when an expression has a different type than what is required by its context (e.g., using a string where a number is expected).
FieldUndeclared(u32, u32, String)
A record field was accessed but doesn’t exist in the record type.
Fields: (line, column, field_name)
This occurs when trying to access a field that is not defined in the record’s type definition.
FuncUndeclared(u32, u32, String)
A function was called but is not declared in the scope.
Fields: (line, column, function_name)
This occurs when calling a function that is not defined in the default scope or any accessible scope.
ExpectRecord(u32, u32, String)
Expected a record type but found a different type.
Fields: (line, column, actual_type)
This occurs when a record type is required (e.g., for field access) but a different type was found.
ExpectRecordOrSourcedProperty(u32, u32, String)
Expected a record or sourced-property but found a different type.
Fields: (line, column, actual_type)
This occurs when checking a projection and the static analysis found out the project into clause doesn’t return a record nor a sourced-based property.
ExpectArray(u32, u32, String)
Expected an array type but found a different type.
Fields: (line, column, actual_type)
This occurs when an array type is required but a different type was found.
ExpectFieldLiteral(u32, u32)
Expected a field literal but found a different expression.
Fields: (line, column)
This occurs in contexts where only a simple field reference is allowed, such as in GROUP BY or ORDER BY clauses.
ExpectRecordLiteral(u32, u32)
Expected a record literal but found a different expression.
Fields: (line, column)
This occurs when a record literal is required, such as in the PROJECT INTO clause.
UnsupportedCustomType(u32, u32, String)
When a custom type (meaning a type not supported by EventQL by default) is used but
not registered in the AnalysisOptions custom type set.
FunWrongArgumentCount(u32, u32, String)
A function was called with the wrong number of arguments.
Fields: (line, column, function_name)
This occurs when calling a function with a different number of arguments than what the function signature requires.
WrongAggFunUsage(u32, u32, String)
An aggregate function was used outside of a PROJECT INTO clause.
Fields: (line, column, function_name)
This occurs when an aggregate function (e.g., SUM, COUNT, AVG) is used in a context where aggregation is not allowed, such as in WHERE, GROUP BY, or ORDER BY clauses. Aggregate functions can only be used in the PROJECT INTO clause to compute aggregated values over groups of events.
§Example
Invalid usage:
FROM e IN events
WHERE COUNT() > 5 // Error: aggregate function in WHERE clause
PROJECT INTO eValid usage:
FROM e IN events
PROJECT INTO { total: COUNT() }UnallowedAggFuncUsageWithSrcField(u32, u32)
An aggregate function was used together with source-bound fields.
Fields: (line, column)
This occurs when attempting to mix aggregate functions with fields that are bound to source events within the same projection field. Aggregate functions operate on groups of events, while source-bound fields refer to individual event properties. These cannot be mixed in a single field expression.
§Example
Invalid usage:
FROM e IN events
// Error: mixing aggregate (SUM) with source field (e.id)
PROJECT INTO { count: SUM(e.data.price), id: e.id }Valid usage:
FROM e IN events
PROJECT INTO { sum: SUM(e.data.price), label: "total" }EmptyRecord(u32, u32)
An empty record literal was used in a context where it is not allowed.
Fields: (line, column)
This occurs when using an empty record {} as a projection, which would
result in a query that produces no output fields. Projections must contain
at least one field.
§Example
Invalid usage:
FROM e IN events
PROJECT INTO {} // Error: empty recordValid usage:
FROM e IN events
PROJECT INTO { id: e.id }ExpectSourceBoundProperty(u32, u32)
An aggregate function was called with an argument that is not a source-bound field.
Fields: (line, column)
This occurs when an aggregate function (e.g., SUM, COUNT, AVG) is called with an argument that is not derived from source event properties. Aggregate functions must operate on fields that come from the source events being queried, not on constants, literals, or results from other functions.
§Example
Invalid usage:
FROM e IN events
// Error: RAND() is constant value
PROJECT INTO { sum: SUM(RAND()) }Valid usage:
FROM e IN events
PROJECT INTO { sum: SUM(e.data.price) }ConstantExprInProjectIntoClause(u32, u32)
A constant expression is used in PROJECT INTO clause.
Fields: (line, column)
§Example
Invalid usage:
FROM e IN events
// Error: NOW() is constant value
PROJECT INTO NOW()
Invalid usage:
FROM e IN events
// Error: DAY(NOW()) is also constant value
PROJECT INTO DAY(NOW())Valid usage:
FROM e IN events
PROJECT INTO DAY(e.data.date)ExpectAggExpr(u32, u32)
Expect an aggregate expression at this position in the query.
Fields: (line, column)
Invalid usage:
FROM e IN events
GROUP BY e.data.department
// ERROR: the order by clause should use an aggregage expresion because GROUP Bys
// require an aggregate expression in this context.
ORDER BY e.data.salary
PROJECT INTO AVG(e.data.salary)Valid usage:
FROM e IN events
GROUP BY e.data.department
ORDER BY AVG(e.data.salary)
PROJECT INTO AVG(e.data.salary)