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