From f3354acfaff8138600eaf4d578d2070342ff481e Mon Sep 17 00:00:00 2001 From: EmirVildanov <reddog201030@gmail.com> Date: Fri, 31 May 2024 12:55:24 +0300 Subject: [PATCH] fix: allow param under cast --- sbroad-core/src/frontend/sql/ir/tests/params.rs | 17 +++++++++++++++++ sbroad-core/src/ir/expression/cast.rs | 1 - 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/sbroad-core/src/frontend/sql/ir/tests/params.rs b/sbroad-core/src/frontend/sql/ir/tests/params.rs index 315748f7a..368ea4ec5 100644 --- a/sbroad-core/src/frontend/sql/ir/tests/params.rs +++ b/sbroad-core/src/frontend/sql/ir/tests/params.rs @@ -2,6 +2,23 @@ use crate::ir::transformation::helpers::sql_to_optimized_ir; use crate::ir::value::Value; use pretty_assertions::assert_eq; +#[test] +fn front_param_in_cast() { + let pattern = r#"SELECT CAST(? AS INTEGER) FROM "test_space""#; + let plan = sql_to_optimized_ir(pattern, vec![Value::from(1_i64)]); + + let expected_explain = String::from( + r#"projection (1::integer::int -> "COL_1") + scan "test_space" +execution options: +sql_vdbe_max_steps = 45000 +vtable_max_rows = 5000 +"#, + ); + + assert_eq!(expected_explain, plan.as_explain().unwrap()); +} + #[test] fn front_params1() { let pattern = r#"SELECT "id", "FIRST_NAME" FROM "test_space" diff --git a/sbroad-core/src/ir/expression/cast.rs b/sbroad-core/src/ir/expression/cast.rs index db6ac0533..c43277cec 100644 --- a/sbroad-core/src/ir/expression/cast.rs +++ b/sbroad-core/src/ir/expression/cast.rs @@ -130,7 +130,6 @@ impl Plan { /// # Errors /// - Child node is not of the expression type. pub fn add_cast(&mut self, expr_id: usize, to_type: Type) -> Result<usize, SbroadError> { - self.get_expression_node(expr_id)?; let cast_expr = Expression::Cast { child: expr_id, to: to_type, -- GitLab