Fix limbo/core to work with new boxed ast types

This commit is contained in:
Jussi Saurio
2025-01-05 13:51:34 +02:00
parent 97eae13d0a
commit f434b24e63
6 changed files with 9 additions and 9 deletions

View File

@@ -304,7 +304,7 @@ impl Connection {
Cmd::ExplainQueryPlan(stmt) => {
match stmt {
ast::Stmt::Select(select) => {
let mut plan = prepare_select_plan(&self.schema.borrow(), select)?;
let mut plan = prepare_select_plan(&self.schema.borrow(), *select)?;
optimize_plan(&mut plan)?;
println!("{}", plan);
}

View File

@@ -15,7 +15,7 @@ pub fn translate_delete(
schema: &Schema,
tbl_name: &QualifiedName,
where_clause: Option<Expr>,
limit: Option<Limit>,
limit: Option<Box<Limit>>,
database_header: Rc<RefCell<DatabaseHeader>>,
connection: Weak<Connection>,
syms: &SymbolTable,
@@ -29,7 +29,7 @@ pub fn prepare_delete_plan(
schema: &Schema,
tbl_name: &QualifiedName,
where_clause: Option<Expr>,
limit: Option<Limit>,
limit: Option<Box<Limit>>,
) -> Result<Plan> {
let table = match schema.get_table(tbl_name.name.0.as_str()) {
Some(table) => table,
@@ -48,7 +48,7 @@ pub fn prepare_delete_plan(
let resolved_where_clauses = parse_where(where_clause, &referenced_tables)?;
// Parse the LIMIT clause
let resolved_limit = limit.and_then(parse_limit);
let resolved_limit = limit.and_then(|l| parse_limit(*l));
let plan = DeletePlan {
source: SourceOperator::Scan {

View File

@@ -70,7 +70,7 @@ pub fn translate_insert(
Table::Pseudo(_) => todo!(),
};
let values = match body {
InsertBody::Select(select, None) => match &select.body.select {
InsertBody::Select(select, None) => match &select.body.select.deref() {
sqlite3_parser::ast::OneSelect::Values(values) => values,
_ => todo!(),
},

View File

@@ -104,7 +104,7 @@ pub fn translate(
ast::Stmt::Rollback { .. } => bail_parse_error!("ROLLBACK not supported yet"),
ast::Stmt::Savepoint(_) => bail_parse_error!("SAVEPOINT not supported yet"),
ast::Stmt::Select(select) => {
translate_select(schema, select, database_header, connection, syms)
translate_select(schema, *select, database_header, connection, syms)
}
ast::Stmt::Update { .. } => bail_parse_error!("UPDATE not supported yet"),
ast::Stmt::Vacuum(_, _) => bail_parse_error!("VACUUM not supported yet"),

View File

@@ -289,7 +289,7 @@ fn parse_from_clause_table(
))
}
ast::SelectTable::Select(subselect, maybe_alias) => {
let Plan::Select(mut subplan) = prepare_select_plan(schema, subselect)? else {
let Plan::Select(mut subplan) = prepare_select_plan(schema, *subselect)? else {
unreachable!();
};
subplan.query_type = SelectQueryType::Subquery {

View File

@@ -31,7 +31,7 @@ pub fn translate_select(
}
pub fn prepare_select_plan(schema: &Schema, select: ast::Select) -> Result<Plan> {
match select.body.select {
match *select.body.select {
ast::OneSelect::Select {
mut columns,
from,
@@ -273,7 +273,7 @@ pub fn prepare_select_plan(schema: &Schema, select: ast::Select) -> Result<Plan>
}
// Parse the LIMIT clause
plan.limit = select.limit.and_then(parse_limit);
plan.limit = select.limit.and_then(|l| parse_limit(*l));
// Return the unoptimized query plan
Ok(Plan::Select(plan))