Skip to content

Expression

type Expression =
| {
name: string;
type: "unresolvedAttribute";
}
| {
type: "literal";
value: string | number | boolean | bigint | null;
}
| {
inner: Expression;
name: string;
type: "alias";
}
| {
left: Expression;
right: Expression;
type: "gt";
}
| {
left: Expression;
right: Expression;
type: "lt";
}
| {
left: Expression;
right: Expression;
type: "eq";
}
| {
left: Expression;
right: Expression;
type: "neq";
}
| {
left: Expression;
right: Expression;
type: "gte";
}
| {
left: Expression;
right: Expression;
type: "lte";
}
| {
left: Expression;
right: Expression;
type: "and";
}
| {
left: Expression;
right: Expression;
type: "or";
}
| {
left: Expression;
right: Expression;
type: "add";
}
| {
left: Expression;
right: Expression;
type: "subtract";
}
| {
left: Expression;
right: Expression;
type: "multiply";
}
| {
left: Expression;
right: Expression;
type: "divide";
}
| {
arguments: Expression[];
isDistinct?: boolean;
name: string;
type: "aggregateFunction";
}
| {
direction: "ascending" | "descending";
inner: Expression;
nullOrdering: "nulls_first" | "nulls_last";
type: "sortOrder";
}
| {
arguments: Expression[];
isDistinct?: boolean;
name: string;
type: "unresolvedFunction";
}
| {
expression: string;
type: "expressionString";
}
| {
inner: Expression;
targetType: string;
type: "cast";
}
| {
frameSpec?: WindowFrame;
orderSpec: SortOrder[];
partitionSpec: Expression[];
type: "window";
windowFunction: Expression;
};

Defined in: plan/logical-plan.ts:19

One node in a logical plan’s expression tree.

Used by FilterPlan.condition, ProjectPlan.expressions, and inside aggregations and window specifications. Expressions stay unresolved on the client: column references are plain strings, function calls reference names rather than implementations. The server’s analyzer binds them against the catalog and schema before execution.

Spark Connect proto: expressions.proto