use crate::{
parser::ast::{Column, JoinType, OrderBy, Predicate}, planner::aggregate_call::AggregateCall
};
#[derive(Debug, Clone)]
pub enum LogicalPlan {
Scan {
backing: String, visible: String, },
Join {
left: Box<LogicalPlan>,
right: Box<LogicalPlan>,
join_type: JoinType,
on: Predicate, },
Filter {
input: Box<LogicalPlan>,
predicate: crate::parser::ast::Predicate,
},
Aggregate {
input: Box<LogicalPlan>,
group_keys: Vec<Column>, aggs: Vec<AggregateCall>, },
Project {
input: Box<LogicalPlan>,
exprs: Vec<crate::parser::analyzer::AnalyzedIdentifier>,
},
Sort {
input: Box<LogicalPlan>,
keys: Vec<OrderBy>, },
Limit {
input: Box<LogicalPlan>,
limit: Option<i64>,
offset: Option<i64>,
},
}