diff --git a/src/diff.c b/src/diff.c
index e522c9e..14d3bb6 100644
--- a/src/diff.c
+++ b/src/diff.c
@@ -1651,7 +1651,7 @@
                 sleaf = (struct lysc_node_leaf *)src_diff->schema;
             }
 
-            if (sleaf && sleaf->dflt && !sleaf->dflt->realtype->plugin->compare(sleaf->dflt,
+            if (sleaf && sleaf->dflt && !sleaf->dflt->realtype->plugin->compare(ctx, sleaf->dflt,
                     &((struct lyd_node_term *)src_diff)->value)) {
                 /* we deleted it, so a default value was in-use, and it matches the created value -> operation NONE */
                 LY_CHECK_RET(lyd_diff_change_op(*diff_match, LYD_DIFF_OP_NONE));
diff --git a/src/plugins_types.c b/src/plugins_types.c
index 4af984e..9ebcf48 100644
--- a/src/plugins_types.c
+++ b/src/plugins_types.c
@@ -301,9 +301,13 @@
 }
 
 LIBYANG_API_DEF LY_ERR
-lyplg_type_compare_simple(const struct lyd_value *val1, const struct lyd_value *val2)
+lyplg_type_compare_simple(const struct ly_ctx *ctx, const struct lyd_value *val1, const struct lyd_value *val2)
 {
-    if (val1->_canonical == val2->_canonical) {
+    const char *can1, *can2;
+
+    can1 = lyd_value_get_canonical(ctx, val1);
+    can2 = lyd_value_get_canonical(ctx, val2);
+    if (can1 == can2) {
         return LY_SUCCESS;
     }
 
@@ -1057,7 +1061,7 @@
                 continue;
             }
 
-            if (!lref->plugin->compare(&((struct lyd_node_term *)set.val.nodes[i].node)->value, value)) {
+            if (!lref->plugin->compare(LYD_CTX(node), &((struct lyd_node_term *)set.val.nodes[i].node)->value, value)) {
                 break;
             }
         }
@@ -1082,7 +1086,7 @@
                 continue;
             }
 
-            if (!lref->plugin->compare(&((struct lyd_node_term *)set.val.nodes[i].node)->value, value)) {
+            if (!lref->plugin->compare(LYD_CTX(node), &((struct lyd_node_term *)set.val.nodes[i].node)->value, value)) {
                 rc = ly_set_add(*targets, set.val.nodes[i].node, 0, NULL);
                 LY_CHECK_GOTO(rc, cleanup);
             }
diff --git a/src/plugins_types.h b/src/plugins_types.h
index 81edee1..1b92cb7 100644
--- a/src/plugins_types.h
+++ b/src/plugins_types.h
@@ -162,7 +162,7 @@
 /**
  * @brief Type API version
  */
-#define LYPLG_TYPE_API_VERSION 1
+#define LYPLG_TYPE_API_VERSION 2
 
 /**
  * @brief Macro to define plugin information in external plugins
@@ -537,23 +537,27 @@
  * It can be assumed that the same context (dictionary) was used for storing both values and the realtype
  * member of both the values is the same.
  *
+ * @param[in] ctx libyang context.
  * @param[in] val1 First value to compare.
  * @param[in] val2 Second value to compare.
  * @return LY_SUCCESS if values are considered equal.
  * @return LY_ENOT if values differ.
  */
-typedef LY_ERR (*lyplg_type_compare_clb)(const struct lyd_value *val1, const struct lyd_value *val2);
+typedef LY_ERR (*lyplg_type_compare_clb)(const struct ly_ctx *ctx, const struct lyd_value *val1,
+        const struct lyd_value *val2);
 
 /**
  * @brief Unused callback for sorting values.
  *
+ * @param[in] ctx libyang context.
  * @param[in] val1 First value to compare.
  * @param[in] val2 Second value to compare.
  * @return -1 if val1 < val2,
  * @return 0 if val1 == val2,
  * @return 1 if val1 > val2.
  */
-typedef int (*lyplg_type_sort_clb)(const struct lyd_value *val1, const struct lyd_value *val2);
+typedef int (*lyplg_type_sort_clb)(const struct ly_ctx *ctx, const struct lyd_value *val1,
+        const struct lyd_value *val2);
 
 /**
  * @brief Callback for getting the value of the data stored in @p value.
@@ -647,7 +651,8 @@
 /**
  * @brief Implementation of ::lyplg_type_compare_clb for a generic simple type.
  */
-LIBYANG_API_DECL LY_ERR lyplg_type_compare_simple(const struct lyd_value *val1, const struct lyd_value *val2);
+LIBYANG_API_DECL LY_ERR lyplg_type_compare_simple(const struct ly_ctx *ctx, const struct lyd_value *val1,
+        const struct lyd_value *val2);
 
 /**
  * @brief Implementation of ::lyplg_type_print_clb for a generic simple type.
@@ -686,7 +691,8 @@
 /**
  * @brief Implementation of ::lyplg_type_compare_clb for the built-in binary type.
  */
-LIBYANG_API_DECL LY_ERR lyplg_type_compare_binary(const struct lyd_value *val1, const struct lyd_value *val2);
+LIBYANG_API_DECL LY_ERR lyplg_type_compare_binary(const struct ly_ctx *ctx, const struct lyd_value *val1,
+        const struct lyd_value *val2);
 
 /**
  * @brief Implementation of ::lyplg_type_print_clb for the built-in binary type.
@@ -725,7 +731,8 @@
 /**
  * @brief Implementation of the ::lyplg_type_compare_clb for the built-in bits type.
  */
-LIBYANG_API_DECL LY_ERR lyplg_type_compare_bits(const struct lyd_value *val1, const struct lyd_value *val2);
+LIBYANG_API_DECL LY_ERR lyplg_type_compare_bits(const struct ly_ctx *ctx, const struct lyd_value *val1,
+        const struct lyd_value *val2);
 
 /**
  * @brief Implementation of the ::lyplg_type_print_clb for the built-in bits type.
@@ -764,7 +771,8 @@
 /**
  * @brief Implementation of ::lyplg_type_compare_clb for the built-in boolean type.
  */
-LIBYANG_API_DECL LY_ERR lyplg_type_compare_boolean(const struct lyd_value *val1, const struct lyd_value *val2);
+LIBYANG_API_DECL LY_ERR lyplg_type_compare_boolean(const struct ly_ctx *ctx, const struct lyd_value *val1,
+        const struct lyd_value *val2);
 
 /**
  * @brief Implementation of ::lyplg_type_print_clb for the built-in boolean type.
@@ -792,7 +800,8 @@
 /**
  * @brief Implementation of ::lyplg_type_compare_clb for the built-in decimal64 type.
  */
-LIBYANG_API_DECL LY_ERR lyplg_type_compare_decimal64(const struct lyd_value *val1, const struct lyd_value *val2);
+LIBYANG_API_DECL LY_ERR lyplg_type_compare_decimal64(const struct ly_ctx *ctx, const struct lyd_value *val1,
+        const struct lyd_value *val2);
 
 /**
  * @brief Implementation of ::lyplg_type_print_clb for the built-in decimal64 type.
@@ -860,7 +869,8 @@
 /**
  * @brief Implementation of ::lyplg_type_compare_clb for the built-in identityref type.
  */
-LIBYANG_API_DECL LY_ERR lyplg_type_compare_identityref(const struct lyd_value *val1, const struct lyd_value *val2);
+LIBYANG_API_DECL LY_ERR lyplg_type_compare_identityref(const struct ly_ctx *ctx, const struct lyd_value *val1,
+        const struct lyd_value *val2);
 
 /**
  * @brief Implementation of ::lyplg_type_print_clb for the built-in identityref type.
@@ -894,7 +904,8 @@
 /**
  * @brief Implementation of ::lyplg_type_compare_clb for the built-in instance-identifier type.
  */
-LIBYANG_API_DECL LY_ERR lyplg_type_compare_instanceid(const struct lyd_value *val1, const struct lyd_value *val2);
+LIBYANG_API_DECL LY_ERR lyplg_type_compare_instanceid(const struct ly_ctx *ctx, const struct lyd_value *val1,
+        const struct lyd_value *val2);
 
 /**
  * @brief Implementation of ::lyplg_type_print_clb for the built-in instance-identifier type.
@@ -933,7 +944,8 @@
 /**
  * @brief Implementation of ::lyplg_type_compare_clb for the built-in signed integer types.
  */
-LIBYANG_API_DECL LY_ERR lyplg_type_compare_int(const struct lyd_value *val1, const struct lyd_value *val2);
+LIBYANG_API_DECL LY_ERR lyplg_type_compare_int(const struct ly_ctx *ctx, const struct lyd_value *val1,
+        const struct lyd_value *val2);
 
 /**
  * @brief Implementation of ::lyplg_type_print_clb for the built-in signed integer types.
@@ -951,7 +963,8 @@
 /**
  * @brief Implementation of ::lyplg_type_compare_clb for the built-in unsigned integer types.
  */
-LIBYANG_API_DECL LY_ERR lyplg_type_compare_uint(const struct lyd_value *val1, const struct lyd_value *val2);
+LIBYANG_API_DECL LY_ERR lyplg_type_compare_uint(const struct ly_ctx *ctx, const struct lyd_value *val1,
+        const struct lyd_value *val2);
 
 /**
  * @brief Implementation of ::lyplg_type_print_clb for the built-in unsigned integer types.
@@ -979,7 +992,8 @@
 /**
  * @brief Implementation of ::lyplg_type_compare_clb for the built-in leafref type.
  */
-LIBYANG_API_DECL LY_ERR lyplg_type_compare_leafref(const struct lyd_value *val1, const struct lyd_value *val2);
+LIBYANG_API_DECL LY_ERR lyplg_type_compare_leafref(const struct ly_ctx *ctx, const struct lyd_value *val1,
+        const struct lyd_value *val2);
 
 /**
  * @brief Implementation of ::lyplg_type_print_clb for the built-in leafref type.
@@ -1041,7 +1055,8 @@
 /**
  * @brief Implementation of ::lyplg_type_compare_clb for the built-in union type.
  */
-LIBYANG_API_DECL LY_ERR lyplg_type_compare_union(const struct lyd_value *val1, const struct lyd_value *val2);
+LIBYANG_API_DECL LY_ERR lyplg_type_compare_union(const struct ly_ctx *ctx, const struct lyd_value *val1,
+        const struct lyd_value *val2);
 
 /**
  * @brief Implementation of ::lyplg_type_print_clb for the built-in union type.
@@ -1086,7 +1101,8 @@
 /**
  * @brief Implementation of ::lyplg_type_compare_clb for the ietf-yang-types xpath1.0 type.
  */
-LIBYANG_API_DECL LY_ERR lyplg_type_compare_xpath10(const struct lyd_value *val1, const struct lyd_value *val2);
+LIBYANG_API_DECL LY_ERR lyplg_type_compare_xpath10(const struct ly_ctx *ctx, const struct lyd_value *val1,
+        const struct lyd_value *val2);
 
 /**
  * @brief Implementation of ::lyplg_type_print_clb for the ietf-yang-types xpath1.0 type.
diff --git a/src/plugins_types/binary.c b/src/plugins_types/binary.c
index bb407e2..9edc811 100644
--- a/src/plugins_types/binary.c
+++ b/src/plugins_types/binary.c
@@ -336,7 +336,7 @@
 }
 
 LIBYANG_API_DEF LY_ERR
-lyplg_type_compare_binary(const struct lyd_value *val1, const struct lyd_value *val2)
+lyplg_type_compare_binary(const struct ly_ctx *UNUSED(ctx), const struct lyd_value *val1, const struct lyd_value *val2)
 {
     struct lyd_value_binary *v1, *v2;
 
diff --git a/src/plugins_types/bits.c b/src/plugins_types/bits.c
index c6bdd70..44736da 100644
--- a/src/plugins_types/bits.c
+++ b/src/plugins_types/bits.c
@@ -368,7 +368,7 @@
 }
 
 LIBYANG_API_DEF LY_ERR
-lyplg_type_compare_bits(const struct lyd_value *val1, const struct lyd_value *val2)
+lyplg_type_compare_bits(const struct ly_ctx *UNUSED(ctx), const struct lyd_value *val1, const struct lyd_value *val2)
 {
     struct lyd_value_bits *v1, *v2;
     struct lysc_type_bits *type_bits = (struct lysc_type_bits *)val1->realtype;
diff --git a/src/plugins_types/boolean.c b/src/plugins_types/boolean.c
index d8276b3..ea8f7d2 100644
--- a/src/plugins_types/boolean.c
+++ b/src/plugins_types/boolean.c
@@ -104,7 +104,7 @@
 }
 
 LIBYANG_API_DEF LY_ERR
-lyplg_type_compare_boolean(const struct lyd_value *val1, const struct lyd_value *val2)
+lyplg_type_compare_boolean(const struct ly_ctx *UNUSED(ctx), const struct lyd_value *val1, const struct lyd_value *val2)
 {
     if (val1->boolean != val2->boolean) {
         return LY_ENOT;
diff --git a/src/plugins_types/date_and_time.c b/src/plugins_types/date_and_time.c
index 596bb9c..b60bf55 100644
--- a/src/plugins_types/date_and_time.c
+++ b/src/plugins_types/date_and_time.c
@@ -150,7 +150,8 @@
  * @brief Implementation of ::lyplg_type_compare_clb for ietf-yang-types date-and-time type.
  */
 static LY_ERR
-lyplg_type_compare_date_and_time(const struct lyd_value *val1, const struct lyd_value *val2)
+lyplg_type_compare_date_and_time(const struct ly_ctx *UNUSED(ctx), const struct lyd_value *val1,
+        const struct lyd_value *val2)
 {
     struct lyd_value_date_and_time *v1, *v2;
 
diff --git a/src/plugins_types/decimal64.c b/src/plugins_types/decimal64.c
index 22f3ed0..d28d24c 100644
--- a/src/plugins_types/decimal64.c
+++ b/src/plugins_types/decimal64.c
@@ -159,7 +159,8 @@
 }
 
 LIBYANG_API_DEF LY_ERR
-lyplg_type_compare_decimal64(const struct lyd_value *val1, const struct lyd_value *val2)
+lyplg_type_compare_decimal64(const struct ly_ctx *UNUSED(ctx), const struct lyd_value *val1,
+        const struct lyd_value *val2)
 {
     /* if type is the same, the fraction digits are, too */
     if (val1->dec64 != val2->dec64) {
diff --git a/src/plugins_types/identityref.c b/src/plugins_types/identityref.c
index 39c9412..843cc77 100644
--- a/src/plugins_types/identityref.c
+++ b/src/plugins_types/identityref.c
@@ -301,7 +301,8 @@
 }
 
 LIBYANG_API_DEF LY_ERR
-lyplg_type_compare_identityref(const struct lyd_value *val1, const struct lyd_value *val2)
+lyplg_type_compare_identityref(const struct ly_ctx *UNUSED(ctx), const struct lyd_value *val1,
+        const struct lyd_value *val2)
 {
     if (val1->ident == val2->ident) {
         return LY_SUCCESS;
diff --git a/src/plugins_types/instanceid.c b/src/plugins_types/instanceid.c
index fba3787..bf23df9 100644
--- a/src/plugins_types/instanceid.c
+++ b/src/plugins_types/instanceid.c
@@ -253,7 +253,7 @@
 }
 
 LIBYANG_API_DEF LY_ERR
-lyplg_type_compare_instanceid(const struct lyd_value *val1, const struct lyd_value *val2)
+lyplg_type_compare_instanceid(const struct ly_ctx *ctx, const struct lyd_value *val1, const struct lyd_value *val2)
 {
     LY_ARRAY_COUNT_TYPE u, v;
 
@@ -288,13 +288,13 @@
             case LY_PATH_PREDTYPE_LIST:
                 /* key-predicate */
                 if ((pred1->key != pred2->key) ||
-                        ((struct lysc_node_leaf *)pred1->key)->type->plugin->compare(&pred1->value, &pred2->value)) {
+                        ((struct lysc_node_leaf *)pred1->key)->type->plugin->compare(ctx, &pred1->value, &pred2->value)) {
                     return LY_ENOT;
                 }
                 break;
             case LY_PATH_PREDTYPE_LEAFLIST:
                 /* leaf-list predicate */
-                if (((struct lysc_node_leaflist *)s1->node)->type->plugin->compare(&pred1->value, &pred2->value)) {
+                if (((struct lysc_node_leaflist *)s1->node)->type->plugin->compare(ctx, &pred1->value, &pred2->value)) {
                     return LY_ENOT;
                 }
                 break;
diff --git a/src/plugins_types/integer.c b/src/plugins_types/integer.c
index de36339..68178d1 100644
--- a/src/plugins_types/integer.c
+++ b/src/plugins_types/integer.c
@@ -173,7 +173,7 @@
 }
 
 LIBYANG_API_DEF LY_ERR
-lyplg_type_compare_int(const struct lyd_value *val1, const struct lyd_value *val2)
+lyplg_type_compare_int(const struct ly_ctx *UNUSED(ctx), const struct lyd_value *val1, const struct lyd_value *val2)
 {
     if (val1->realtype != val2->realtype) {
         return LY_ENOT;
@@ -371,7 +371,7 @@
 }
 
 LIBYANG_API_DEF LY_ERR
-lyplg_type_compare_uint(const struct lyd_value *val1, const struct lyd_value *val2)
+lyplg_type_compare_uint(const struct ly_ctx *UNUSED(ctx), const struct lyd_value *val1, const struct lyd_value *val2)
 {
     switch (val1->realtype->basetype) {
     case LY_TYPE_UINT8:
diff --git a/src/plugins_types/ipv4_address.c b/src/plugins_types/ipv4_address.c
index 1e485f3..946968c 100644
--- a/src/plugins_types/ipv4_address.c
+++ b/src/plugins_types/ipv4_address.c
@@ -210,7 +210,8 @@
  * @brief Implementation of ::lyplg_type_compare_clb for the ipv4-address ietf-inet-types type.
  */
 static LY_ERR
-lyplg_type_compare_ipv4_address(const struct lyd_value *val1, const struct lyd_value *val2)
+lyplg_type_compare_ipv4_address(const struct ly_ctx *UNUSED(ctx), const struct lyd_value *val1,
+        const struct lyd_value *val2)
 {
     struct lyd_value_ipv4_address *v1, *v2;
 
diff --git a/src/plugins_types/ipv4_address_no_zone.c b/src/plugins_types/ipv4_address_no_zone.c
index 28331fc..67db22b 100644
--- a/src/plugins_types/ipv4_address_no_zone.c
+++ b/src/plugins_types/ipv4_address_no_zone.c
@@ -128,7 +128,8 @@
  * @brief Implementation of ::lyplg_type_compare_clb for the ipv4-address-no-zone ietf-inet-types type.
  */
 static LY_ERR
-lyplg_type_compare_ipv4_address_no_zone(const struct lyd_value *val1, const struct lyd_value *val2)
+lyplg_type_compare_ipv4_address_no_zone(const struct ly_ctx *UNUSED(ctx), const struct lyd_value *val1,
+        const struct lyd_value *val2)
 {
     struct lyd_value_ipv4_address_no_zone *v1, *v2;
 
diff --git a/src/plugins_types/ipv4_prefix.c b/src/plugins_types/ipv4_prefix.c
index 6571590..d4fb785 100644
--- a/src/plugins_types/ipv4_prefix.c
+++ b/src/plugins_types/ipv4_prefix.c
@@ -199,7 +199,8 @@
  * @brief Implementation of ::lyplg_type_compare_clb for the ietf-inet-types ipv4-prefix type.
  */
 static LY_ERR
-lyplg_type_compare_ipv4_prefix(const struct lyd_value *val1, const struct lyd_value *val2)
+lyplg_type_compare_ipv4_prefix(const struct ly_ctx *UNUSED(ctx), const struct lyd_value *val1,
+        const struct lyd_value *val2)
 {
     struct lyd_value_ipv4_prefix *v1, *v2;
 
diff --git a/src/plugins_types/ipv6_address.c b/src/plugins_types/ipv6_address.c
index 26197d8..9a2c31a 100644
--- a/src/plugins_types/ipv6_address.c
+++ b/src/plugins_types/ipv6_address.c
@@ -212,7 +212,8 @@
  * @brief Implementation of ::lyplg_type_compare_clb for the ipv6-address ietf-inet-types type.
  */
 static LY_ERR
-lyplg_type_compare_ipv6_address(const struct lyd_value *val1, const struct lyd_value *val2)
+lyplg_type_compare_ipv6_address(const struct ly_ctx *UNUSED(ctx), const struct lyd_value *val1,
+        const struct lyd_value *val2)
 {
     struct lyd_value_ipv6_address *v1, *v2;
 
diff --git a/src/plugins_types/ipv6_address_no_zone.c b/src/plugins_types/ipv6_address_no_zone.c
index ee3934d..56e0760 100644
--- a/src/plugins_types/ipv6_address_no_zone.c
+++ b/src/plugins_types/ipv6_address_no_zone.c
@@ -176,7 +176,8 @@
  * @brief Implementation of ::lyplg_type_compare_clb for the ipv6-address-no-zone ietf-inet-types type.
  */
 static LY_ERR
-lyplg_type_compare_ipv6_address_no_zone(const struct lyd_value *val1, const struct lyd_value *val2)
+lyplg_type_compare_ipv6_address_no_zone(const struct ly_ctx *UNUSED(ctx), const struct lyd_value *val1,
+        const struct lyd_value *val2)
 {
     struct lyd_value_ipv6_address_no_zone *v1, *v2;
 
diff --git a/src/plugins_types/ipv6_prefix.c b/src/plugins_types/ipv6_prefix.c
index cc48991..d6823ad 100644
--- a/src/plugins_types/ipv6_prefix.c
+++ b/src/plugins_types/ipv6_prefix.c
@@ -213,7 +213,8 @@
  * @brief Implementation of ::lyplg_type_compare_clb for the ietf-inet-types ipv6-prefix type.
  */
 static LY_ERR
-lyplg_type_compare_ipv6_prefix(const struct lyd_value *val1, const struct lyd_value *val2)
+lyplg_type_compare_ipv6_prefix(const struct ly_ctx *UNUSED(ctx), const struct lyd_value *val1,
+        const struct lyd_value *val2)
 {
     struct lyd_value_ipv6_prefix *v1, *v2;
 
diff --git a/src/plugins_types/leafref.c b/src/plugins_types/leafref.c
index 80ffcfc..8350da8 100644
--- a/src/plugins_types/leafref.c
+++ b/src/plugins_types/leafref.c
@@ -101,9 +101,9 @@
 }
 
 LIBYANG_API_DEF LY_ERR
-lyplg_type_compare_leafref(const struct lyd_value *val1, const struct lyd_value *val2)
+lyplg_type_compare_leafref(const struct ly_ctx *ctx, const struct lyd_value *val1, const struct lyd_value *val2)
 {
-    return val1->realtype->plugin->compare(val1, val2);
+    return val1->realtype->plugin->compare(ctx, val1, val2);
 }
 
 LIBYANG_API_DEF const void *
diff --git a/src/plugins_types/union.c b/src/plugins_types/union.c
index 6be269d..eae2348 100644
--- a/src/plugins_types/union.c
+++ b/src/plugins_types/union.c
@@ -421,12 +421,12 @@
 }
 
 LIBYANG_API_DEF LY_ERR
-lyplg_type_compare_union(const struct lyd_value *val1, const struct lyd_value *val2)
+lyplg_type_compare_union(const struct ly_ctx *ctx, const struct lyd_value *val1, const struct lyd_value *val2)
 {
     if (val1->subvalue->value.realtype != val2->subvalue->value.realtype) {
         return LY_ENOT;
     }
-    return val1->subvalue->value.realtype->plugin->compare(&val1->subvalue->value, &val2->subvalue->value);
+    return val1->subvalue->value.realtype->plugin->compare(ctx, &val1->subvalue->value, &val2->subvalue->value);
 }
 
 /**
diff --git a/src/schema_compile.c b/src/schema_compile.c
index 9d71afc..83851bf 100644
--- a/src/schema_compile.c
+++ b/src/schema_compile.c
@@ -1046,7 +1046,7 @@
         /* configuration data values must be unique - so check the default values */
         for (u = orig_count; u < LY_ARRAY_COUNT(llist->dflts); ++u) {
             for (v = 0; v < u; ++v) {
-                if (!llist->dflts[u]->realtype->plugin->compare(llist->dflts[u], llist->dflts[v])) {
+                if (!llist->dflts[u]->realtype->plugin->compare(ctx->ctx, llist->dflts[u], llist->dflts[v])) {
                     lysc_update_path(ctx, llist->parent ? llist->parent->module : NULL, llist->name);
                     LOGVAL(ctx->ctx, LYVE_SEMANTICS, "Configuration leaf-list has multiple defaults of the same value \"%s\".",
                             (char *)llist->dflts[u]->realtype->plugin->print(ctx->ctx, llist->dflts[u], LY_VALUE_CANON,
diff --git a/src/tree_data.c b/src/tree_data.c
index 59b44d8..0d10d72 100644
--- a/src/tree_data.c
+++ b/src/tree_data.c
@@ -1589,6 +1589,8 @@
 LIBYANG_API_DEF LY_ERR
 lyd_compare_meta(const struct lyd_meta *meta1, const struct lyd_meta *meta2)
 {
+    const struct ly_ctx *ctx;
+
     if (!meta1 || !meta2) {
         if (meta1 == meta2) {
             return LY_SUCCESS;
@@ -1597,11 +1599,12 @@
         }
     }
 
-    if ((meta1->annotation->module->ctx != meta2->annotation->module->ctx) || (meta1->annotation != meta2->annotation)) {
+    ctx = meta1->annotation->module->ctx;
+    if ((ctx != meta2->annotation->module->ctx) || (meta1->annotation != meta2->annotation)) {
         return LY_ENOT;
     }
 
-    return meta1->value.realtype->plugin->compare(&meta1->value, &meta2->value);
+    return meta1->value.realtype->plugin->compare(ctx, &meta1->value, &meta2->value);
 }
 
 /**
diff --git a/src/tree_data_common.c b/src/tree_data_common.c
index 85744e7..e1973cc 100644
--- a/src/tree_data_common.c
+++ b/src/tree_data_common.c
@@ -693,7 +693,7 @@
     LY_CHECK_RET(ret);
 
     /* compare values */
-    ret = type->plugin->compare(&node->value, &val);
+    ret = type->plugin->compare(ctx, &node->value, &val);
 
     type->plugin->free(ctx, &val);
     return ret;
@@ -720,7 +720,7 @@
         }
 
         /* compare with the default value */
-        if (!leaf->type->plugin->compare(&term->value, leaf->dflt)) {
+        if (!leaf->type->plugin->compare(LYD_CTX(node), &term->value, leaf->dflt)) {
             return 1;
         }
     } else {
@@ -731,7 +731,7 @@
 
         LY_ARRAY_FOR(llist->dflts, u) {
             /* compare with each possible default value */
-            if (!llist->type->plugin->compare(&term->value, llist->dflts[u])) {
+            if (!llist->type->plugin->compare(LYD_CTX(node), &term->value, llist->dflts[u])) {
                 return 1;
             }
         }
diff --git a/src/tree_data_new.c b/src/tree_data_new.c
index caa26b1..13bb9bc 100644
--- a/src/tree_data_new.c
+++ b/src/tree_data_new.c
@@ -1345,7 +1345,7 @@
     LY_CHECK_GOTO(ret, cleanup);
 
     /* compare original and new value */
-    if (type->plugin->compare(&t->value, &val)) {
+    if (type->plugin->compare(LYD_CTX(term), &t->value, &val)) {
         /* values differ, switch them */
         lyd_change_term_value(t, &val);
         /* make the node non-validated */
diff --git a/src/validation.c b/src/validation.c
index 93a79c7..74653a7 100644
--- a/src/validation.c
+++ b/src/validation.c
@@ -1173,7 +1173,7 @@
                 val2 = slist->uniques[u][v]->dflt;
             }
 
-            if (!val1 || !val2 || val1->realtype->plugin->compare(val1, val2)) {
+            if (!val1 || !val2 || val1->realtype->plugin->compare(ctx, val1, val2)) {
                 /* values differ or either one is not set */
                 break;
             }
diff --git a/tests/utests/types/bits.c b/tests/utests/types/bits.c
index 184e1f8..11b9208 100644
--- a/tests/utests/types/bits.c
+++ b/tests/utests/types/bits.c
@@ -925,13 +925,13 @@
     /*
      * BASIC TEST;
      */
-    assert_int_equal(LY_SUCCESS, type->compare(&(values[0]), &(values[0])));
-    assert_int_equal(LY_SUCCESS, type->compare(&(values[1]), &(values[3])));
-    assert_int_equal(LY_ENOT, type->compare(&(values[0]), &(values[1])));
-    assert_int_equal(LY_ENOT, type->compare(&(values[3]), &(values[4])));
-    assert_int_equal(LY_ENOT, type->compare(&(values[1]), &(values[0])));
-    assert_int_equal(LY_ENOT, type->compare(&(values[1]), &(values[2])));
-    assert_int_equal(LY_SUCCESS, type->compare(&(values[2]), &(values[5])));
+    assert_int_equal(LY_SUCCESS, type->compare(UTEST_LYCTX, &(values[0]), &(values[0])));
+    assert_int_equal(LY_SUCCESS, type->compare(UTEST_LYCTX, &(values[1]), &(values[3])));
+    assert_int_equal(LY_ENOT, type->compare(UTEST_LYCTX, &(values[0]), &(values[1])));
+    assert_int_equal(LY_ENOT, type->compare(UTEST_LYCTX, &(values[3]), &(values[4])));
+    assert_int_equal(LY_ENOT, type->compare(UTEST_LYCTX, &(values[1]), &(values[0])));
+    assert_int_equal(LY_ENOT, type->compare(UTEST_LYCTX, &(values[1]), &(values[2])));
+    assert_int_equal(LY_SUCCESS, type->compare(UTEST_LYCTX, &(values[2]), &(values[5])));
 
     /*
      * SAME TYPE but different node
@@ -941,8 +941,8 @@
     ly_ret = diff_type->plugin->store(UTEST_LYCTX, diff_type, diff_type_text, strlen(diff_type_text),
             0, LY_VALUE_XML, NULL, LYD_VALHINT_STRING, NULL, &diff_type_val, NULL, &err);
     assert_int_equal(LY_SUCCESS, ly_ret);
-    assert_int_equal(LY_SUCCESS, type->compare(&diff_type_val, &(values[2])));
-    assert_int_equal(LY_ENOT,    type->compare(&diff_type_val, &(values[1])));
+    assert_int_equal(LY_SUCCESS, type->compare(UTEST_LYCTX, &diff_type_val, &(values[2])));
+    assert_int_equal(LY_ENOT,    type->compare(UTEST_LYCTX, &diff_type_val, &(values[1])));
     type->free(UTEST_LYCTX, &(diff_type_val));
 
     /* delete values */
diff --git a/tests/utests/types/int8.c b/tests/utests/types/int8.c
index 3a8f226..d369a0e 100644
--- a/tests/utests/types/int8.c
+++ b/tests/utests/types/int8.c
@@ -1566,12 +1566,12 @@
     /*
      * BASIC TEST;
      */
-    assert_int_equal(LY_SUCCESS, type->compare(&(values[0]), &(values[0])));
-    assert_int_equal(LY_SUCCESS, type->compare(&(values[0]), &(values[5])));
-    assert_int_equal(LY_ENOT, type->compare(&(values[0]), &(values[1])));
-    assert_int_equal(LY_ENOT, type->compare(&(values[1]), &(values[0])));
-    assert_int_equal(LY_ENOT, type->compare(&(values[1]), &(values[2])));
-    assert_int_equal(LY_SUCCESS, type->compare(&(values[3]), &(values[4])));
+    assert_int_equal(LY_SUCCESS, type->compare(UTEST_LYCTX, &(values[0]), &(values[0])));
+    assert_int_equal(LY_SUCCESS, type->compare(UTEST_LYCTX, &(values[0]), &(values[5])));
+    assert_int_equal(LY_ENOT, type->compare(UTEST_LYCTX, &(values[0]), &(values[1])));
+    assert_int_equal(LY_ENOT, type->compare(UTEST_LYCTX, &(values[1]), &(values[0])));
+    assert_int_equal(LY_ENOT, type->compare(UTEST_LYCTX, &(values[1]), &(values[2])));
+    assert_int_equal(LY_SUCCESS, type->compare(UTEST_LYCTX, &(values[3]), &(values[4])));
 
     /*
      * SAME TYPE but different node
@@ -1581,8 +1581,8 @@
     ly_ret = diff_type->plugin->store(UTEST_LYCTX, diff_type, diff_type_text, strlen(diff_type_text),
             0, LY_VALUE_XML, NULL, LYD_VALHINT_DECNUM, NULL, &diff_type_val, NULL, &err);
     assert_int_equal(LY_SUCCESS, ly_ret);
-    assert_int_equal(LY_SUCCESS, type->compare(&diff_type_val, &(values[0])));
-    assert_int_equal(LY_ENOT, type->compare(&diff_type_val, &(values[1])));
+    assert_int_equal(LY_SUCCESS, type->compare(UTEST_LYCTX, &diff_type_val, &(values[0])));
+    assert_int_equal(LY_ENOT, type->compare(UTEST_LYCTX, &diff_type_val, &(values[1])));
     type->free(UTEST_LYCTX, &(diff_type_val));
 
     /*
@@ -1593,8 +1593,8 @@
     ly_ret = diff_type->plugin->store(UTEST_LYCTX, diff_type, diff_type_text, strlen(diff_type_text),
             0, LY_VALUE_XML, NULL, LYD_VALHINT_DECNUM, NULL, &diff_type_val, NULL, &err);
     assert_int_equal(LY_SUCCESS, ly_ret);
-    assert_int_equal(LY_ENOT, type->compare(&diff_type_val, &(values[0])));
-    assert_int_equal(LY_ENOT, type->compare(&diff_type_val, &(values[1])));
+    assert_int_equal(LY_ENOT, type->compare(UTEST_LYCTX, &diff_type_val, &(values[0])));
+    assert_int_equal(LY_ENOT, type->compare(UTEST_LYCTX, &diff_type_val, &(values[1])));
     type->free(UTEST_LYCTX, &(diff_type_val));
 
     /*
@@ -1605,8 +1605,8 @@
     ly_ret = diff_type->plugin->store(UTEST_LYCTX, diff_type, diff_type_text, strlen(diff_type_text),
             0, LY_VALUE_XML, NULL, LYD_VALHINT_DECNUM, NULL, &diff_type_val, NULL, &err);
     assert_int_equal(LY_SUCCESS, ly_ret);
-    assert_int_equal(LY_ENOT, type->compare(&diff_type_val, &(values[0])));
-    assert_int_equal(LY_ENOT, type->compare(&diff_type_val, &(values[1])));
+    assert_int_equal(LY_ENOT, type->compare(UTEST_LYCTX, &diff_type_val, &(values[0])));
+    assert_int_equal(LY_ENOT, type->compare(UTEST_LYCTX, &diff_type_val, &(values[1])));
     type->free(UTEST_LYCTX, &(diff_type_val));
 
     /* delete values */
diff --git a/tests/utests/types/string.c b/tests/utests/types/string.c
index ebe4ec6..73d9677 100644
--- a/tests/utests/types/string.c
+++ b/tests/utests/types/string.c
@@ -1221,12 +1221,12 @@
     }
 
     /*  BASIC TEST; */
-    assert_int_equal(LY_SUCCESS, type->compare(&(values[0]), &(values[0])));
-    assert_int_equal(LY_SUCCESS, type->compare(&(values[0]), &(values[2])));
-    assert_int_equal(LY_ENOT, type->compare(&(values[0]), &(values[1])));
-    assert_int_equal(LY_ENOT, type->compare(&(values[1]), &(values[0])));
-    assert_int_equal(LY_ENOT, type->compare(&(values[1]), &(values[2])));
-    assert_int_equal(LY_SUCCESS, type->compare(&(values[1]), &(values[3])));
+    assert_int_equal(LY_SUCCESS, type->compare(UTEST_LYCTX, &(values[0]), &(values[0])));
+    assert_int_equal(LY_SUCCESS, type->compare(UTEST_LYCTX, &(values[0]), &(values[2])));
+    assert_int_equal(LY_ENOT, type->compare(UTEST_LYCTX, &(values[0]), &(values[1])));
+    assert_int_equal(LY_ENOT, type->compare(UTEST_LYCTX, &(values[1]), &(values[0])));
+    assert_int_equal(LY_ENOT, type->compare(UTEST_LYCTX, &(values[1]), &(values[2])));
+    assert_int_equal(LY_SUCCESS, type->compare(UTEST_LYCTX, &(values[1]), &(values[3])));
 
     /* SAME TYPE but different node */
     diff_type_text = "hi";
@@ -1234,8 +1234,8 @@
     ly_ret = diff_type->plugin->store(UTEST_LYCTX, diff_type, diff_type_text, strlen(diff_type_text),
             0, LY_VALUE_XML, NULL, LYD_VALHINT_STRING, NULL, &diff_type_val, NULL, &err);
     assert_int_equal(LY_SUCCESS, ly_ret);
-    assert_int_equal(LY_SUCCESS, type->compare(&diff_type_val, &(values[0])));
-    assert_int_equal(LY_ENOT, type->compare(&diff_type_val, &(values[1])));
+    assert_int_equal(LY_SUCCESS, type->compare(UTEST_LYCTX, &diff_type_val, &(values[0])));
+    assert_int_equal(LY_ENOT, type->compare(UTEST_LYCTX, &diff_type_val, &(values[1])));
     type->free(UTEST_LYCTX, &(diff_type_val));
 
     /* delete values */
