From 2e2a325ac0fa3f1ce3d472756fb03693ce229ff0 Mon Sep 17 00:00:00 2001 From: EmirVildanov <reddog201030@gmail.com> Date: Tue, 17 Sep 2024 13:29:57 +0300 Subject: [PATCH] feat: support Node64::Invalid --- sbroad-core/src/ir.rs | 6 ++++-- sbroad-core/src/ir/node.rs | 5 ++++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/sbroad-core/src/ir.rs b/sbroad-core/src/ir.rs index 8ee56b3e24..5aaf383d62 100644 --- a/sbroad-core/src/ir.rs +++ b/sbroad-core/src/ir.rs @@ -7,7 +7,7 @@ use node::block::{Block, MutBlock}; use node::ddl::{Ddl, MutDdl}; use node::expression::{Expression, MutExpression}; use node::relational::{MutRelational, Relational}; -use node::{Invalid, NodeAligned, Parameter}; +use node::{Invalid, NodeAligned}; use serde::{Deserialize, Serialize}; use smol_str::{format_smolstr, SmolStr, ToSmolStr}; use std::cell::{RefCell, RefMut}; @@ -105,6 +105,7 @@ impl Nodes { }), ArenaType::Arena64 => self.arena64.get(id.offset as usize).map(|node| match node { Node64::Case(case) => Node::Expression(Expression::Case(case)), + Node64::Invalid(invalid) => Node::Invalid(invalid), Node64::Constant(constant) => Node::Expression(Expression::Constant(constant)), Node64::CreateRole(create_role) => Node::Acl(Acl::CreateRole(create_role)), Node64::Delete(delete) => Node::Relational(Relational::Delete(delete)), @@ -228,6 +229,7 @@ impl Nodes { .get_mut(id.offset as usize) .map(|node| match node { Node64::Case(case) => MutNode::Expression(MutExpression::Case(case)), + Node64::Invalid(invalid) => MutNode::Invalid(invalid), Node64::Constant(constant) => { MutNode::Expression(MutExpression::Constant(constant)) } @@ -845,7 +847,7 @@ impl Plan { .arena64 .get_mut(usize::try_from(dst_id.offset).unwrap()) .unwrap(); - let stub = Node64::Parameter(Parameter { param_type: None }); + let stub = Node64::Invalid(Invalid {}); let node64 = std::mem::replace(node64, stub); node64.into_owned() } diff --git a/sbroad-core/src/ir/node.rs b/sbroad-core/src/ir/node.rs index c1c77191f3..e64b88dfe1 100644 --- a/sbroad-core/src/ir/node.rs +++ b/sbroad-core/src/ir/node.rs @@ -1063,6 +1063,7 @@ pub enum Node64 { GroupBy(GroupBy), SetParam(SetParam), SetTransaction(SetTransaction), + Invalid(Invalid), } impl Node64 { @@ -1070,6 +1071,7 @@ impl Node64 { pub fn into_owned(self) -> NodeOwned { match self { Node64::Case(case) => NodeOwned::Expression(ExprOwned::Case(case)), + Node64::Invalid(invalid) => NodeOwned::Invalid(invalid), Node64::Constant(constant) => NodeOwned::Expression(ExprOwned::Constant(constant)), Node64::CreateRole(create_role) => NodeOwned::Acl(AclOwned::CreateRole(create_role)), Node64::Delete(delete) => NodeOwned::Relational(RelOwned::Delete(delete)), @@ -1214,6 +1216,7 @@ impl Node224 { } #[allow(clippy::module_name_repetitions)] +#[derive(Debug)] pub enum NodeAligned { Node32(Node32), Node64(Node64), @@ -1279,7 +1282,7 @@ pub enum MutNode<'nodes> { impl Node<'_> { #[must_use] - pub fn get_common_node(self) -> NodeOwned { + pub fn into_owned(self) -> NodeOwned { match self { Node::Expression(expr) => NodeOwned::Expression(expr.get_expr_owned()), Node::Relational(rel) => NodeOwned::Relational(rel.get_rel_owned()), -- GitLab