Skip to main content

AnalysisError

Enum AnalysisError 

Source
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 e

Valid 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 record

Valid 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)

Trait Implementations§

Source§

impl Debug for AnalysisError

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Display for AnalysisError

Source§

fn fmt(&self, __formatter: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Error for AnalysisError

1.30.0 · Source§

fn source(&self) -> Option<&(dyn Error + 'static)>

Returns the lower-level source of this error, if any. Read more
1.0.0 · Source§

fn description(&self) -> &str

👎Deprecated since 1.42.0: use the Display impl or to_string()
1.0.0 · Source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
Source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type-based access to context intended for error reports. Read more
Source§

impl From<AnalysisError> for Error

Source§

fn from(value: AnalysisError) -> Self

Converts to this type from the input type.
Source§

impl Serialize for AnalysisError

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.