diff --git a/src/query/frontend/ast/ast.hpp b/src/query/frontend/ast/ast.hpp
index c02d6cfa1..c94241eaf 100644
--- a/src/query/frontend/ast/ast.hpp
+++ b/src/query/frontend/ast/ast.hpp
@@ -560,6 +560,56 @@ class Where : public Tree {
   Where(int uid) : Tree(uid) {}
 };
 
+class SetProperty : public Clause {
+  friend class AstTreeStorage;
+
+ public:
+  void Accept(TreeVisitorBase &visitor) override {
+    visitor.Visit(*this);
+    property_lookup_->Accept(visitor);
+    expression_->Accept(visitor);
+    visitor.PostVisit(*this);
+  }
+  PropertyLookup *property_lookup_ = nullptr;
+  Expression *expression_ = nullptr;
+
+ protected:
+  SetProperty(int uid) : Clause(uid) {}
+};
+
+class SetProperties : public Clause {
+  friend class AstTreeStorage;
+
+ public:
+  void Accept(TreeVisitorBase &visitor) override {
+    visitor.Visit(*this);
+    identifier_->Accept(visitor);
+    expression_->Accept(visitor);
+    visitor.PostVisit(*this);
+  }
+  Identifier *identifier_ = nullptr;
+  Expression *expression_ = nullptr;
+
+ protected:
+  SetProperties(int uid) : Clause(uid) {}
+};
+
+class SetLabels : public Clause {
+  friend class AstTreeStorage;
+
+ public:
+  void Accept(TreeVisitorBase &visitor) override {
+    visitor.Visit(*this);
+    identifier_->Accept(visitor);
+    visitor.PostVisit(*this);
+  }
+  Identifier *identifier_ = nullptr;
+  std::vector<GraphDb::Label> labels_;
+
+ protected:
+  SetLabels(int uid) : Clause(uid) {}
+};
+
 // It would be better to call this AstTree, but we already have a class Tree,
 // which could be renamed to Node or AstTreeNode, but we also have a class
 // called NodeAtom...
diff --git a/src/query/frontend/ast/ast_visitor.hpp b/src/query/frontend/ast/ast_visitor.hpp
index a5f5ef2fa..2e3ad504d 100644
--- a/src/query/frontend/ast/ast_visitor.hpp
+++ b/src/query/frontend/ast/ast_visitor.hpp
@@ -35,6 +35,9 @@ class LessEqualOperator;
 class GreaterEqualOperator;
 class Delete;
 class Where;
+class SetProperty;
+class SetProperties;
+class SetLabels;
 
 using TreeVisitorBase = ::utils::Visitor<
     Query, NamedExpression, OrOperator, XorOperator, AndOperator, NotOperator,
@@ -42,5 +45,6 @@ using TreeVisitorBase = ::utils::Visitor<
     DivisionOperator, ModOperator, NotEqualOperator, EqualOperator,
     LessOperator, GreaterOperator, LessEqualOperator, GreaterEqualOperator,
     UnaryPlusOperator, UnaryMinusOperator, Identifier, Literal, PropertyLookup,
-    Create, Match, Return, Pattern, NodeAtom, EdgeAtom, Delete, Where>;
+    Create, Match, Return, Pattern, NodeAtom, EdgeAtom, Delete, Where,
+    SetProperty, SetProperties, SetLabels>;
 }