diff --git a/src/knot/updates/zone-update.c b/src/knot/updates/zone-update.c
index 59052545a569a71f76f508304f227c19d13b58b4..42ee8eee0d31094ee6c835c9d70b1b0f6fb1a3f8 100644
--- a/src/knot/updates/zone-update.c
+++ b/src/knot/updates/zone-update.c
@@ -1048,7 +1048,7 @@ static bool zone_diff_rdataset(const zone_contents_t *c, uint16_t rrtype)
 {
 	const knot_rdataset_t *a = node_rdataset(binode_counterpart(c->apex), rrtype);
 	const knot_rdataset_t *b = node_rdataset(c->apex, rrtype);
-	if (a == NULL && b == NULL) {
+	if ((a == NULL && b == NULL) || (a != NULL && b != NULL && a->rdata == b->rdata)) {
 		return false;
 	} else {
 		return !knot_rdataset_eq(a, b);
diff --git a/src/libknot/rdataset.c b/src/libknot/rdataset.c
index fe3e0e54462d0dfeb0add9b9b98f3b89387c4224..0b9b4fd8c611358a74ad1f62e3733cf7965966b8 100644
--- a/src/libknot/rdataset.c
+++ b/src/libknot/rdataset.c
@@ -249,7 +249,7 @@ bool knot_rdataset_member(const knot_rdataset_t *rrs, const knot_rdata_t *rr)
 _public_
 bool knot_rdataset_subset(const knot_rdataset_t *subset, const knot_rdataset_t *of)
 {
-	if (subset == NULL) {
+	if (subset == NULL || (of != NULL && subset->rdata == of->rdata)) {
 		return true;
 	}