From a7700d6daef17bc836632b2f814384cdaa24b180 Mon Sep 17 00:00:00 2001 From: Vedat Can Keklik Date: Sat, 24 Aug 2024 10:52:10 +0300 Subject: [PATCH] fix: Correct name for SqlSubquery --- lykiadb-lang/src/ast/sql.rs | 18 +++++----- lykiadb-lang/src/ast/visitor.rs | 6 ++-- lykiadb-lang/src/parser/mod.rs | 18 +++++----- .../tests/lang/sql/select_compound.rs | 18 +++++----- .../tests/lang/sql/select_distinct.rs | 6 ++-- lykiadb-lang/tests/lang/sql/select_from.rs | 12 +++---- .../tests/lang/sql/select_group_by.rs | 6 ++-- lykiadb-lang/tests/lang/sql/select_join.rs | 36 +++++++++---------- lykiadb-lang/tests/lang/sql/select_limit.rs | 6 ++-- lykiadb-lang/tests/lang/sql/select_order.rs | 10 +++--- .../tests/lang/sql/select_projection.rs | 10 +++--- lykiadb-lang/tests/lang/sql/select_where.rs | 6 ++-- lykiadb-lang/tests/lang/sql/sql_expr.rs | 20 +++++------ lykiadb-server/src/plan/planner.rs | 12 +++++-- 14 files changed, 96 insertions(+), 88 deletions(-) diff --git a/lykiadb-lang/src/ast/sql.rs b/lykiadb-lang/src/ast/sql.rs index bde31f54..1ba425a8 100644 --- a/lykiadb-lang/src/ast/sql.rs +++ b/lykiadb-lang/src/ast/sql.rs @@ -144,21 +144,21 @@ pub struct SqlSelectCompound { #[derive(Debug, Eq, PartialEq, Serialize, Deserialize, Clone)] #[serde(tag = "@type")] -pub enum SqlCollectionSubquery { - #[serde(rename = "SqlCollectionSubquery::Group")] - Group { values: Vec }, - #[serde(rename = "SqlCollectionSubquery::Collection")] +pub enum SqlFrom { + #[serde(rename = "SqlFrom::Group")] + Group { values: Vec }, + #[serde(rename = "SqlFrom::Collection")] Collection(SqlCollectionIdentifier), - #[serde(rename = "SqlCollectionSubquery::Select")] + #[serde(rename = "SqlFrom::Select")] Select { expr: Box, alias: Option, }, - #[serde(rename = "SqlCollectionSubquery::Join")] + #[serde(rename = "SqlFrom::Join")] Join { - left: Box, + left: Box, join_type: SqlJoinType, - right: Box, + right: Box, constraint: Option>, }, } @@ -168,7 +168,7 @@ pub enum SqlCollectionSubquery { pub struct SqlSelectCore { pub distinct: SqlDistinct, pub projection: Vec, - pub from: Option, + pub from: Option, pub r#where: Option>, pub group_by: Option>, pub having: Option>, diff --git a/lykiadb-lang/src/ast/visitor.rs b/lykiadb-lang/src/ast/visitor.rs index d5c07bf0..6cbe2317 100644 --- a/lykiadb-lang/src/ast/visitor.rs +++ b/lykiadb-lang/src/ast/visitor.rs @@ -1,7 +1,7 @@ use super::{ expr::Expr, sql::{ - SqlCollectionSubquery, SqlDelete, SqlExpr, SqlInsert, SqlSelect, SqlSelectCore, SqlUpdate, + SqlFrom, SqlDelete, SqlExpr, SqlInsert, SqlSelect, SqlSelectCore, SqlUpdate, }, stmt::Stmt, }; @@ -26,7 +26,7 @@ pub trait SqlVisitor { fn visit_sql_delete(&self, sql_delete: &SqlDelete) -> Result; // fn visit_sql_select_core(&self, core: &SqlSelectCore) -> Result; - fn visit_sql_subquery(&self, subquery: &SqlCollectionSubquery) -> Result; + fn visit_sql_subquery(&self, subquery: &SqlFrom) -> Result; fn visit_sql_expr(&self, sql_expr: &SqlExpr) -> Result; } @@ -37,6 +37,6 @@ pub trait SqlVisitorMut { fn visit_sql_delete(&mut self, sql_delete: &SqlDelete) -> Result; // fn visit_sql_select_core(&mut self, core: &SqlSelectCore) -> Result; - fn visit_sql_subquery(&mut self, subquery: &SqlCollectionSubquery) -> Result; + fn visit_sql_subquery(&mut self, subquery: &SqlFrom) -> Result; fn visit_sql_expr(&mut self, sql_expr: &SqlExpr) -> Result; } diff --git a/lykiadb-lang/src/parser/mod.rs b/lykiadb-lang/src/parser/mod.rs index 258e8deb..bfcfc1b4 100644 --- a/lykiadb-lang/src/parser/mod.rs +++ b/lykiadb-lang/src/parser/mod.rs @@ -792,7 +792,7 @@ impl<'a> Parser<'a> { } use crate::ast::sql::{ - SqlCollectionIdentifier, SqlCollectionSubquery, SqlCompoundOperator, SqlDelete, SqlDistinct, + SqlCollectionIdentifier, SqlFrom, SqlCompoundOperator, SqlDelete, SqlDistinct, SqlExpr, SqlInsert, SqlJoinType, SqlLimitClause, SqlOrderByClause, SqlOrdering, SqlProjection, SqlSelect, SqlSelectCompound, SqlSelectCore, SqlUpdate, SqlValues, }; @@ -1114,15 +1114,15 @@ impl<'a> Parser<'a> { Ok(projections) } - fn sql_select_from(&mut self) -> ParseResult> { + fn sql_select_from(&mut self) -> ParseResult> { if self.match_next(skw!(From)) { return Ok(Some(self.sql_select_subquery_join()?)); } Ok(None) } - fn sql_select_subquery_join(&mut self) -> ParseResult { - let mut subquery_group: Vec = vec![]; + fn sql_select_subquery_join(&mut self) -> ParseResult { + let mut subquery_group: Vec = vec![]; loop { let left = self.sql_select_subquery_collection()?; @@ -1155,7 +1155,7 @@ impl<'a> Parser<'a> { let left_popped = subquery_group.pop().unwrap(); - subquery_group.push(SqlCollectionSubquery::Join { + subquery_group.push(SqlFrom::Join { left: Box::new(left_popped), right: Box::new(right), join_type, @@ -1167,7 +1167,7 @@ impl<'a> Parser<'a> { } } - Ok(SqlCollectionSubquery::Group { + Ok(SqlFrom::Group { values: subquery_group, }) } @@ -1197,14 +1197,14 @@ impl<'a> Parser<'a> { } } - fn sql_select_subquery_collection(&mut self) -> ParseResult { + fn sql_select_subquery_collection(&mut self) -> ParseResult { if self.match_next(sym!(LeftParen)) { if self.cmp_tok(&skw!(Select)) { let expr = self.sql_select()?; self.expected(sym!(RightParen))?; // closing paren let alias: Option = optional_with_expected!(self, skw!(As), Identifier { dollar: false }); - return Ok(SqlCollectionSubquery::Select { + return Ok(SqlFrom::Select { expr, alias: alias.map(|t| t.extract_identifier().unwrap()), }); @@ -1214,7 +1214,7 @@ impl<'a> Parser<'a> { self.expected(sym!(RightParen))?; // closing paren Ok(parsed) } else if let Some(collection) = self.sql_collection_identifier()? { - return Ok(SqlCollectionSubquery::Collection(collection)); + return Ok(SqlFrom::Collection(collection)); } else { Err(ParseError::UnexpectedToken { token: self.peek_bw(0).clone(), diff --git a/lykiadb-lang/tests/lang/sql/select_compound.rs b/lykiadb-lang/tests/lang/sql/select_compound.rs index d795b998..dc41436d 100644 --- a/lykiadb-lang/tests/lang/sql/select_compound.rs +++ b/lykiadb-lang/tests/lang/sql/select_compound.rs @@ -24,7 +24,7 @@ assert_parsing! { "@type": "SqlDistinct::ImplicitAll" }, "from": { - "@type": "SqlCollectionSubquery::Group", + "@type": "SqlFrom::Group", "values": [ { "@type": "SqlCollectionIdentifier", @@ -56,7 +56,7 @@ assert_parsing! { "@type": "SqlDistinct::ImplicitAll" }, "from": { - "@type": "SqlCollectionSubquery::Group", + "@type": "SqlFrom::Group", "values": [ { "@type": "SqlCollectionIdentifier", @@ -109,7 +109,7 @@ assert_parsing! { "@type": "SqlDistinct::ImplicitAll" }, "from": { - "@type": "SqlCollectionSubquery::Group", + "@type": "SqlFrom::Group", "values": [ { "@type": "SqlCollectionIdentifier", @@ -141,7 +141,7 @@ assert_parsing! { "@type": "SqlDistinct::ImplicitAll" }, "from": { - "@type": "SqlCollectionSubquery::Group", + "@type": "SqlFrom::Group", "values": [ { "@type": "SqlCollectionIdentifier", @@ -194,7 +194,7 @@ assert_parsing! { "@type": "SqlDistinct::ImplicitAll" }, "from": { - "@type": "SqlCollectionSubquery::Group", + "@type": "SqlFrom::Group", "values": [ { "@type": "SqlCollectionIdentifier", @@ -226,7 +226,7 @@ assert_parsing! { "@type": "SqlDistinct::ImplicitAll" }, "from": { - "@type": "SqlCollectionSubquery::Group", + "@type": "SqlFrom::Group", "values": [ { "@type": "SqlCollectionIdentifier", @@ -283,7 +283,7 @@ assert_parsing! { "@type": "SqlDistinct::ImplicitAll" }, "from": { - "@type": "SqlCollectionSubquery::Group", + "@type": "SqlFrom::Group", "values": [ { "@type": "SqlCollectionIdentifier", @@ -315,7 +315,7 @@ assert_parsing! { "@type": "SqlDistinct::ImplicitAll" }, "from": { - "@type": "SqlCollectionSubquery::Group", + "@type": "SqlFrom::Group", "values": [ { "@type": "SqlCollectionIdentifier", @@ -347,7 +347,7 @@ assert_parsing! { "@type": "SqlDistinct::ImplicitAll" }, "from": { - "@type": "SqlCollectionSubquery::Group", + "@type": "SqlFrom::Group", "values": [ { "@type": "SqlCollectionIdentifier", diff --git a/lykiadb-lang/tests/lang/sql/select_distinct.rs b/lykiadb-lang/tests/lang/sql/select_distinct.rs index 27727dea..db26d437 100644 --- a/lykiadb-lang/tests/lang/sql/select_distinct.rs +++ b/lykiadb-lang/tests/lang/sql/select_distinct.rs @@ -20,7 +20,7 @@ assert_parsing! { "@type": "SqlDistinct::ImplicitAll" }, "from": { - "@type": "SqlCollectionSubquery::Group", + "@type": "SqlFrom::Group", "values": [ { "@type": "SqlCollectionIdentifier", @@ -77,7 +77,7 @@ assert_parsing! { "@type": "SqlDistinct::All" }, "from": { - "@type": "SqlCollectionSubquery::Group", + "@type": "SqlFrom::Group", "values": [ { "@type": "SqlCollectionIdentifier", @@ -134,7 +134,7 @@ assert_parsing! { "@type": "SqlDistinct::Distinct" }, "from": { - "@type": "SqlCollectionSubquery::Group", + "@type": "SqlFrom::Group", "values": [ { "@type": "SqlCollectionIdentifier", diff --git a/lykiadb-lang/tests/lang/sql/select_from.rs b/lykiadb-lang/tests/lang/sql/select_from.rs index 643998a1..df67e5ab 100644 --- a/lykiadb-lang/tests/lang/sql/select_from.rs +++ b/lykiadb-lang/tests/lang/sql/select_from.rs @@ -20,7 +20,7 @@ assert_parsing! { "@type": "SqlDistinct::ImplicitAll" }, "from": { - "@type": "SqlCollectionSubquery::Group", + "@type": "SqlFrom::Group", "values": [ { "@type": "SqlCollectionIdentifier", @@ -69,7 +69,7 @@ assert_parsing! { "@type": "SqlDistinct::ImplicitAll" }, "from": { - "@type": "SqlCollectionSubquery::Group", + "@type": "SqlFrom::Group", "values": [ { "@type": "SqlCollectionIdentifier", @@ -128,7 +128,7 @@ assert_parsing! { "@type": "SqlDistinct::ImplicitAll" }, "from": { - "@type": "SqlCollectionSubquery::Group", + "@type": "SqlFrom::Group", "values": [ { "@type": "SqlCollectionIdentifier", @@ -195,10 +195,10 @@ assert_parsing! { "@type": "SqlDistinct::ImplicitAll" }, "from": { - "@type": "SqlCollectionSubquery::Group", + "@type": "SqlFrom::Group", "values": [ { - "@type": "SqlCollectionSubquery::Select", + "@type": "SqlFrom::Select", "alias": { "@type": "Identifier", "dollar": false, @@ -215,7 +215,7 @@ assert_parsing! { "@type": "SqlDistinct::ImplicitAll" }, "from": { - "@type": "SqlCollectionSubquery::Group", + "@type": "SqlFrom::Group", "values": [ { "@type": "SqlCollectionIdentifier", diff --git a/lykiadb-lang/tests/lang/sql/select_group_by.rs b/lykiadb-lang/tests/lang/sql/select_group_by.rs index dda5b585..c0d24530 100644 --- a/lykiadb-lang/tests/lang/sql/select_group_by.rs +++ b/lykiadb-lang/tests/lang/sql/select_group_by.rs @@ -20,7 +20,7 @@ assert_parsing! { "@type": "SqlDistinct::ImplicitAll" }, "from": { - "@type": "SqlCollectionSubquery::Group", + "@type": "SqlFrom::Group", "values": [ { "@type": "SqlCollectionIdentifier", @@ -99,7 +99,7 @@ assert_parsing! { "@type": "SqlDistinct::ImplicitAll" }, "from": { - "@type": "SqlCollectionSubquery::Group", + "@type": "SqlFrom::Group", "values": [ { "@type": "SqlCollectionIdentifier", @@ -211,7 +211,7 @@ assert_parsing! { "@type": "SqlDistinct::ImplicitAll" }, "from": { - "@type": "SqlCollectionSubquery::Group", + "@type": "SqlFrom::Group", "values": [ { "@type": "SqlCollectionIdentifier", diff --git a/lykiadb-lang/tests/lang/sql/select_join.rs b/lykiadb-lang/tests/lang/sql/select_join.rs index 4ac10eb4..295e3757 100644 --- a/lykiadb-lang/tests/lang/sql/select_join.rs +++ b/lykiadb-lang/tests/lang/sql/select_join.rs @@ -20,10 +20,10 @@ assert_parsing! { "@type": "SqlDistinct::ImplicitAll" }, "from": { - "@type": "SqlCollectionSubquery::Group", + "@type": "SqlFrom::Group", "values": [ { - "@type": "SqlCollectionSubquery::Join", + "@type": "SqlFrom::Join", "constraint": null, "join_type": { "@type": "SqlJoinType::Inner" @@ -86,10 +86,10 @@ assert_parsing! { "@type": "SqlDistinct::ImplicitAll" }, "from": { - "@type": "SqlCollectionSubquery::Group", + "@type": "SqlFrom::Group", "values": [ { - "@type": "SqlCollectionSubquery::Join", + "@type": "SqlFrom::Join", "constraint": { "@type": "Expr::Binary", "left": { @@ -132,7 +132,7 @@ assert_parsing! { "@type": "SqlJoinType::Inner" }, "left": { - "@type": "SqlCollectionSubquery::Join", + "@type": "SqlFrom::Join", "constraint": { "@type": "Expr::Binary", "left": { @@ -243,10 +243,10 @@ assert_parsing! { "@type": "SqlDistinct::ImplicitAll" }, "from": { - "@type": "SqlCollectionSubquery::Group", + "@type": "SqlFrom::Group", "values": [ { - "@type": "SqlCollectionSubquery::Join", + "@type": "SqlFrom::Join", "constraint": { "@type": "Expr::Logical", "left": { @@ -381,10 +381,10 @@ assert_parsing! { "@type": "SqlDistinct::ImplicitAll" }, "from": { - "@type": "SqlCollectionSubquery::Group", + "@type": "SqlFrom::Group", "values": [ { - "@type": "SqlCollectionSubquery::Join", + "@type": "SqlFrom::Join", "constraint": { "@type": "Expr::Logical", "left": { @@ -478,13 +478,13 @@ assert_parsing! { "@type": "SqlDistinct::ImplicitAll" }, "from": { - "@type": "SqlCollectionSubquery::Group", + "@type": "SqlFrom::Group", "values": [ { - "@type": "SqlCollectionSubquery::Group", + "@type": "SqlFrom::Group", "values": [ { - "@type": "SqlCollectionSubquery::Join", + "@type": "SqlFrom::Join", "constraint": { "@type": "Expr::Binary", "left": { @@ -527,7 +527,7 @@ assert_parsing! { "@type": "SqlJoinType::Inner" }, "left": { - "@type": "SqlCollectionSubquery::Select", + "@type": "SqlFrom::Select", "alias": { "@type": "Identifier", "dollar": false, @@ -544,10 +544,10 @@ assert_parsing! { "@type": "SqlDistinct::ImplicitAll" }, "from": { - "@type": "SqlCollectionSubquery::Group", + "@type": "SqlFrom::Group", "values": [ { - "@type": "SqlCollectionSubquery::Join", + "@type": "SqlFrom::Join", "constraint": { "@type": "Expr::Binary", "left": { @@ -689,10 +689,10 @@ assert_parsing! { "@type": "SqlDistinct::ImplicitAll" }, "from": { - "@type": "SqlCollectionSubquery::Group", + "@type": "SqlFrom::Group", "values": [ { - "@type": "SqlCollectionSubquery::Join", + "@type": "SqlFrom::Join", "constraint": { "@type": "Expr::Binary", "left": { @@ -735,7 +735,7 @@ assert_parsing! { "@type": "SqlJoinType::Inner" }, "left": { - "@type": "SqlCollectionSubquery::Join", + "@type": "SqlFrom::Join", "constraint": { "@type": "Expr::Binary", "left": { diff --git a/lykiadb-lang/tests/lang/sql/select_limit.rs b/lykiadb-lang/tests/lang/sql/select_limit.rs index 663e8b93..ffb6605c 100644 --- a/lykiadb-lang/tests/lang/sql/select_limit.rs +++ b/lykiadb-lang/tests/lang/sql/select_limit.rs @@ -20,7 +20,7 @@ assert_parsing! { "@type": "SqlDistinct::ImplicitAll" }, "from": { - "@type": "SqlCollectionSubquery::Group", + "@type": "SqlFrom::Group", "values": [ { "@type": "SqlCollectionIdentifier", @@ -79,7 +79,7 @@ assert_parsing! { "@type": "SqlDistinct::ImplicitAll" }, "from": { - "@type": "SqlCollectionSubquery::Group", + "@type": "SqlFrom::Group", "values": [ { "@type": "SqlCollectionIdentifier", @@ -144,7 +144,7 @@ assert_parsing! { "@type": "SqlDistinct::ImplicitAll" }, "from": { - "@type": "SqlCollectionSubquery::Group", + "@type": "SqlFrom::Group", "values": [ { "@type": "SqlCollectionIdentifier", diff --git a/lykiadb-lang/tests/lang/sql/select_order.rs b/lykiadb-lang/tests/lang/sql/select_order.rs index 59e8ec49..c3e85497 100644 --- a/lykiadb-lang/tests/lang/sql/select_order.rs +++ b/lykiadb-lang/tests/lang/sql/select_order.rs @@ -20,7 +20,7 @@ assert_parsing! { "@type": "SqlDistinct::ImplicitAll" }, "from": { - "@type": "SqlCollectionSubquery::Group", + "@type": "SqlFrom::Group", "values": [ { "@type": "SqlCollectionIdentifier", @@ -69,7 +69,7 @@ assert_parsing! { "@type": "SqlDistinct::ImplicitAll" }, "from": { - "@type": "SqlCollectionSubquery::Group", + "@type": "SqlFrom::Group", "values": [ { "@type": "SqlCollectionIdentifier", @@ -133,7 +133,7 @@ assert_parsing! { "@type": "SqlDistinct::ImplicitAll" }, "from": { - "@type": "SqlCollectionSubquery::Group", + "@type": "SqlFrom::Group", "values": [ { "@type": "SqlCollectionIdentifier", @@ -211,7 +211,7 @@ assert_parsing! { "@type": "SqlDistinct::ImplicitAll" }, "from": { - "@type": "SqlCollectionSubquery::Group", + "@type": "SqlFrom::Group", "values": [ { "@type": "SqlCollectionIdentifier", @@ -289,7 +289,7 @@ assert_parsing! { "@type": "SqlDistinct::ImplicitAll" }, "from": { - "@type": "SqlCollectionSubquery::Group", + "@type": "SqlFrom::Group", "values": [ { "@type": "SqlCollectionIdentifier", diff --git a/lykiadb-lang/tests/lang/sql/select_projection.rs b/lykiadb-lang/tests/lang/sql/select_projection.rs index 377cdb2b..e2f86a69 100644 --- a/lykiadb-lang/tests/lang/sql/select_projection.rs +++ b/lykiadb-lang/tests/lang/sql/select_projection.rs @@ -20,7 +20,7 @@ assert_parsing! { "@type": "SqlDistinct::ImplicitAll" }, "from": { - "@type": "SqlCollectionSubquery::Group", + "@type": "SqlFrom::Group", "values": [ { "@type": "SqlCollectionIdentifier", @@ -70,7 +70,7 @@ assert_parsing! { "@type": "SqlDistinct::ImplicitAll" }, "from": { - "@type": "SqlCollectionSubquery::Group", + "@type": "SqlFrom::Group", "values": [ { "@type": "SqlCollectionIdentifier", @@ -123,7 +123,7 @@ assert_parsing! { "@type": "SqlDistinct::ImplicitAll" }, "from": { - "@type": "SqlCollectionSubquery::Group", + "@type": "SqlFrom::Group", "values": [ { "@type": "SqlCollectionIdentifier", @@ -204,7 +204,7 @@ assert_parsing! { "@type": "SqlDistinct::ImplicitAll" }, "from": { - "@type": "SqlCollectionSubquery::Group", + "@type": "SqlFrom::Group", "values": [ { "@type": "SqlCollectionIdentifier", @@ -279,7 +279,7 @@ assert_parsing! { "@type": "SqlDistinct::ImplicitAll" }, "from": { - "@type": "SqlCollectionSubquery::Group", + "@type": "SqlFrom::Group", "values": [ { "@type": "SqlCollectionIdentifier", diff --git a/lykiadb-lang/tests/lang/sql/select_where.rs b/lykiadb-lang/tests/lang/sql/select_where.rs index ff47aae5..1d1aede0 100644 --- a/lykiadb-lang/tests/lang/sql/select_where.rs +++ b/lykiadb-lang/tests/lang/sql/select_where.rs @@ -20,7 +20,7 @@ assert_parsing! { "@type": "SqlDistinct::ImplicitAll" }, "from": { - "@type": "SqlCollectionSubquery::Group", + "@type": "SqlFrom::Group", "values": [ { "@type": "SqlCollectionIdentifier", @@ -89,7 +89,7 @@ assert_parsing! { "@type": "SqlDistinct::ImplicitAll" }, "from": { - "@type": "SqlCollectionSubquery::Group", + "@type": "SqlFrom::Group", "values": [ { "@type": "SqlCollectionIdentifier", @@ -185,7 +185,7 @@ assert_parsing! { "@type": "SqlDistinct::ImplicitAll" }, "from": { - "@type": "SqlCollectionSubquery::Group", + "@type": "SqlFrom::Group", "values": [ { "@type": "SqlCollectionIdentifier", diff --git a/lykiadb-lang/tests/lang/sql/sql_expr.rs b/lykiadb-lang/tests/lang/sql/sql_expr.rs index 4cf2d51e..7aa3aa8b 100644 --- a/lykiadb-lang/tests/lang/sql/sql_expr.rs +++ b/lykiadb-lang/tests/lang/sql/sql_expr.rs @@ -25,7 +25,7 @@ assert_parsing! { } ], "from": { - "@type": "SqlCollectionSubquery::Group", + "@type": "SqlFrom::Group", "values": [ { "@type": "SqlCollectionIdentifier", @@ -75,7 +75,7 @@ assert_parsing! { } ], "from": { - "@type": "SqlCollectionSubquery::Group", + "@type": "SqlFrom::Group", "values": [ { "@type": "SqlCollectionIdentifier", @@ -134,7 +134,7 @@ assert_parsing! { } ], "from": { - "@type": "SqlCollectionSubquery::Group", + "@type": "SqlFrom::Group", "values": [ { "@type": "SqlCollectionIdentifier", @@ -184,7 +184,7 @@ assert_parsing! { } ], "from": { - "@type": "SqlCollectionSubquery::Group", + "@type": "SqlFrom::Group", "values": [ { "@type": "SqlCollectionIdentifier", @@ -243,7 +243,7 @@ assert_parsing! { } ], "from": { - "@type": "SqlCollectionSubquery::Group", + "@type": "SqlFrom::Group", "values": [ { "@type": "SqlCollectionIdentifier", @@ -317,7 +317,7 @@ assert_parsing! { } ], "from": { - "@type": "SqlCollectionSubquery::Group", + "@type": "SqlFrom::Group", "values": [ { "@type": "SqlCollectionIdentifier", @@ -390,7 +390,7 @@ assert_parsing! { } ], "from": { - "@type": "SqlCollectionSubquery::Group", + "@type": "SqlFrom::Group", "values": [ { "@type": "SqlCollectionIdentifier", @@ -456,7 +456,7 @@ assert_parsing! { } ], "from": { - "@type": "SqlCollectionSubquery::Group", + "@type": "SqlFrom::Group", "values": [ { "@type": "SqlCollectionIdentifier", @@ -522,7 +522,7 @@ assert_parsing! { } ], "from": { - "@type": "SqlCollectionSubquery::Group", + "@type": "SqlFrom::Group", "values": [ { "@type": "SqlCollectionIdentifier", @@ -588,7 +588,7 @@ assert_parsing! { } ], "from": { - "@type": "SqlCollectionSubquery::Group", + "@type": "SqlFrom::Group", "values": [ { "@type": "SqlCollectionIdentifier", diff --git a/lykiadb-server/src/plan/planner.rs b/lykiadb-server/src/plan/planner.rs index 2bfa7a05..f943c321 100644 --- a/lykiadb-server/src/plan/planner.rs +++ b/lykiadb-server/src/plan/planner.rs @@ -1,6 +1,6 @@ -use lykiadb_lang::ast::{expr::Expr, sql::SqlSelect}; +use lykiadb_lang::ast::{expr::Expr, sql::{SqlFrom, SqlSelect}}; -use crate::engine::interpreter::HaltReason; +use crate::{engine::interpreter::HaltReason, value::types::RV}; use super::{Node, Plan}; pub struct Planner; @@ -28,6 +28,14 @@ impl Planner { } fn build_select(&mut self, query: &SqlSelect) -> Result { + let mut node: Option = None; + if let Some(from) = &query.core.from { + node = Some(self.build_from(from)?); + } Ok(Plan::Select(Node::Values { rows: vec![vec![]] })) } + + fn build_from(&mut self, from: &SqlFrom) -> Result { + Err(HaltReason::Return(RV::Undefined)) + } }