diff --git a/sbroad-core/src/frontend/sql.rs b/sbroad-core/src/frontend/sql.rs
index ff28308535d5e41578f477f1d241a0925e6fc6d1..5a0e5ef941ad4e0922e9c8953b01be1a5b3872c9 100644
--- a/sbroad-core/src/frontend/sql.rs
+++ b/sbroad-core/src/frontend/sql.rs
@@ -1652,9 +1652,10 @@ impl Ast for AbstractSyntaxTree {
                             ));
                         }
                         let col = self.nodes.get_node(*ast_column_id)?;
-                        let col_name = parse_string_value_node(self, *ast_column_id)?;
+                        let col_name =
+                            normalize_name_from_sql(parse_string_value_node(self, *ast_column_id)?);
                         if let Type::ColumnName = col.rule {
-                            match names.get(col_name) {
+                            match names.get(col_name.as_str()) {
                                 Some((&ColumnRole::User, pos)) => {
                                     if pk_positions.contains(pos) {
                                         return Err(SbroadError::Invalid(
diff --git a/sbroad-core/src/frontend/sql/ir/tests.rs b/sbroad-core/src/frontend/sql/ir/tests.rs
index ec4b1e41690289629dacfd7cc9e081d64899a9e6..f025ea88a2611511fd94f90dac2088f93f29d447 100644
--- a/sbroad-core/src/frontend/sql/ir/tests.rs
+++ b/sbroad-core/src/frontend/sql/ir/tests.rs
@@ -2816,3 +2816,5 @@ mod global;
 #[cfg(test)]
 mod params;
 mod single;
+#[cfg(test)]
+mod update;
diff --git a/sbroad-core/src/frontend/sql/ir/tests/update.rs b/sbroad-core/src/frontend/sql/ir/tests/update.rs
new file mode 100644
index 0000000000000000000000000000000000000000..c3421013484999c8f981ea5c54215e95e9c62b35
--- /dev/null
+++ b/sbroad-core/src/frontend/sql/ir/tests/update.rs
@@ -0,0 +1,43 @@
+use crate::ir::transformation::helpers::sql_to_optimized_ir;
+use crate::ir::value::Value;
+use pretty_assertions::assert_eq;
+
+#[test]
+fn update1() {
+    let pattern = r#"UPDATE "test_space" SET first_name = 'test'"#;
+    let plan = sql_to_optimized_ir(pattern, vec![]);
+
+    let expected_explain = String::from(
+        r#"update "test_space"
+"FIRST_NAME" = COL_0
+    motion [policy: local]
+        projection ('test'::string -> COL_0, "test_space"."id"::unsigned -> 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 update2() {
+    let pattern = r#"UPDATE "test_space" SET first_name = ?"#;
+    let plan = sql_to_optimized_ir(pattern, vec![Value::from("test")]);
+
+    let expected_explain = String::from(
+        r#"update "test_space"
+"FIRST_NAME" = COL_0
+    motion [policy: local]
+        projection ('test'::string -> COL_0, "test_space"."id"::unsigned -> COL_1)
+            scan "test_space"
+execution options:
+sql_vdbe_max_steps = 45000
+vtable_max_rows = 5000
+"#,
+    );
+
+    assert_eq!(expected_explain, plan.as_explain().unwrap());
+}
diff --git a/sbroad-core/src/ir/api/parameter.rs b/sbroad-core/src/ir/api/parameter.rs
index 4d56bec13ac0631c8a9028649068f5856f58cf3a..7dbe18b7e34f342a926b0f3e3744d57458f98c22 100644
--- a/sbroad-core/src/ir/api/parameter.rs
+++ b/sbroad-core/src/ir/api/parameter.rs
@@ -181,6 +181,7 @@ impl Plan {
                         }
                     }
                     Expression::Reference { .. } => {
+                        println!("expr: {expr:?}, id: {id}");
                         // Remember to recalculate type.
                         new_types.insert(id, expr.recalculate_type(self)?);
                     }
diff --git a/sbroad-core/src/ir/operator.rs b/sbroad-core/src/ir/operator.rs
index e87f775f641d725baba355702801351c3891c99b..98056533bb46a18859750fb81f43fdc497ae021a 100644
--- a/sbroad-core/src/ir/operator.rs
+++ b/sbroad-core/src/ir/operator.rs
@@ -1092,6 +1092,7 @@ impl Plan {
             strategy: update_kind,
         };
         let update_id = self.nodes.push(Node::Relational(update_node));
+        self.replace_parent_in_subtree(upd_output, None, Some(update_id))?;
 
         Ok(update_id)
     }