From fe686f41af64092bc0d839f4a1bff96cb9c666cd Mon Sep 17 00:00:00 2001
From: Daniel Salzman <daniel.salzman@nic.cz>
Date: Tue, 27 Sep 2016 13:09:05 +0200
Subject: [PATCH] hat-trie: remove sorted parameter from hattrie_iter_begin
 (qp-trie is always sorted)

---
 src/contrib/hat-trie/hat-trie.h   |  5 ++---
 src/knot/conf/confio.c            |  4 ++--
 src/knot/ctl/commands.c           |  3 +--
 src/knot/dnssec/nsec-chain.c      |  6 ++----
 src/knot/dnssec/nsec3-chain.c     | 11 ++++-------
 src/knot/dnssec/zone-nsec.c       |  2 +-
 src/knot/dnssec/zone-sign.c       |  6 +++---
 src/knot/nameserver/axfr.c        |  2 +-
 src/knot/nameserver/ixfr.c        |  4 ++--
 src/knot/server/journal.c         |  4 ++--
 src/knot/server/serialization.c   |  2 +-
 src/knot/updates/apply.c          |  4 ++--
 src/knot/updates/changesets.c     | 29 +++++++++++++----------------
 src/knot/updates/changesets.h     | 23 ++++++++++-------------
 src/knot/updates/zone-update.c    |  6 ++----
 src/knot/zone/contents.c          |  4 ++--
 src/knot/zone/zone-tree.c         |  2 +-
 src/knot/zone/zonedb-load.c       |  2 +-
 src/libknot/db/db_trie.c          |  3 +--
 src/utils/common/lookup.c         |  4 ++--
 src/utils/knot1to2/cf-parse.tab.c |  4 ++--
 src/utils/knot1to2/cf-parse.y     |  4 ++--
 src/utils/knot1to2/main.c         |  4 ++--
 tests/changeset.c                 |  6 +++---
 tests/contrib/test_hat-trie.c     | 14 ++------------
 tests/journal.c                   |  4 ++--
 26 files changed, 68 insertions(+), 94 deletions(-)

diff --git a/src/contrib/hat-trie/hat-trie.h b/src/contrib/hat-trie/hat-trie.h
index 048d1869c5..69e51ee9b2 100644
--- a/src/contrib/hat-trie/hat-trie.h
+++ b/src/contrib/hat-trie/hat-trie.h
@@ -71,10 +71,9 @@ inline static int hattrie_del(hattrie_t *trie, const char* key, size_t len)
 	return - qp_trie_del(trie, key, len, NULL);
 }
 
-inline static hattrie_iter_t* hattrie_iter_begin(const hattrie_t *trie, bool sorted)
+inline static hattrie_iter_t* hattrie_iter_begin(hattrie_t *trie)
 {
-	UNUSED(sorted); // iteration over QP is always sorted ATM
-	return qp_trie_it_begin(/*const-cast*/(hattrie_t*)trie);
+	return qp_trie_it_begin(trie);
 }
 
 inline static void hattrie_iter_next(hattrie_iter_t *it)
diff --git a/src/knot/conf/confio.c b/src/knot/conf/confio.c
index b970b5ef05..ee5aed660d 100644
--- a/src/knot/conf/confio.c
+++ b/src/knot/conf/confio.c
@@ -442,7 +442,7 @@ static int diff_zone_section(
 		return KNOT_EOK;
 	}
 
-	hattrie_iter_t *it = hattrie_iter_begin(conf()->io.zones, true);
+	hattrie_iter_t *it = hattrie_iter_begin(conf()->io.zones);
 	for (; !hattrie_iter_finished(it); hattrie_iter_next(it)) {
 		io->id = (const uint8_t *)hattrie_iter_key(it, &io->id_len);
 
@@ -1399,7 +1399,7 @@ static int check_zone_section(
 		return KNOT_EOK;
 	}
 
-	hattrie_iter_t *it = hattrie_iter_begin(conf()->io.zones, true);
+	hattrie_iter_t *it = hattrie_iter_begin(conf()->io.zones);
 	for (; !hattrie_iter_finished(it); hattrie_iter_next(it)) {
 		size_t id_len;
 		const uint8_t *id = (const uint8_t *)hattrie_iter_key(it, &id_len);
diff --git a/src/knot/ctl/commands.c b/src/knot/ctl/commands.c
index de3e06a0c6..a6a7e2f023 100644
--- a/src/knot/ctl/commands.c
+++ b/src/knot/ctl/commands.c
@@ -645,8 +645,7 @@ static int send_changeset_part(changeset_t *ch, send_ctx_t *ctx, bool from)
 
 	// Send other records.
 	changeset_iter_t it;
-	int ret = from ? changeset_iter_rem(&it, ch, true) :
-	                 changeset_iter_add(&it, ch, true);
+	int ret = from ? changeset_iter_rem(&it, ch) : changeset_iter_add(&it, ch);
 	if (ret != KNOT_EOK) {
 		return ret;
 	}
diff --git a/src/knot/dnssec/nsec-chain.c b/src/knot/dnssec/nsec-chain.c
index 5ddd1b1a24..18a8390c00 100644
--- a/src/knot/dnssec/nsec-chain.c
+++ b/src/knot/dnssec/nsec-chain.c
@@ -1,4 +1,4 @@
-/*  Copyright (C) 2014 CZ.NIC, z.s.p.o. <knot-dns@labs.nic.cz>
+/*  Copyright (C) 2016 CZ.NIC, z.s.p.o. <knot-dns@labs.nic.cz>
 
     This program is free software: you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
@@ -162,9 +162,7 @@ int knot_nsec_chain_iterate_create(zone_tree_t *nodes,
 	assert(nodes);
 	assert(callback);
 
-	bool sorted = true;
-	hattrie_iter_t *it = hattrie_iter_begin(nodes, sorted);
-
+	hattrie_iter_t *it = hattrie_iter_begin(nodes);
 	if (!it) {
 		return KNOT_ENOMEM;
 	}
diff --git a/src/knot/dnssec/nsec3-chain.c b/src/knot/dnssec/nsec3-chain.c
index 85856656d5..ee65ef8bc8 100644
--- a/src/knot/dnssec/nsec3-chain.c
+++ b/src/knot/dnssec/nsec3-chain.c
@@ -112,7 +112,7 @@ static int shallow_copy_signature(const zone_node_t *from, zone_node_t *to)
 /*!
  * \brief Reuse signatatures by shallow copying them from one tree to another.
  */
-static int copy_signatures(const zone_tree_t *from, zone_tree_t *to)
+static int copy_signatures(zone_tree_t *from, zone_tree_t *to)
 {
 	if (zone_tree_is_empty(from)) {
 		return KNOT_EOK;
@@ -120,8 +120,7 @@ static int copy_signatures(const zone_tree_t *from, zone_tree_t *to)
 
 	assert(to);
 
-	bool sorted = false;
-	hattrie_iter_t *it = hattrie_iter_begin(from, sorted);
+	hattrie_iter_t *it = hattrie_iter_begin(from);
 
 	for (/* NOP */; !hattrie_iter_finished(it); hattrie_iter_next(it)) {
 		zone_node_t *node_from = (zone_node_t *)*hattrie_iter_val(it);
@@ -155,8 +154,7 @@ static void free_nsec3_tree(zone_tree_t *nodes)
 {
 	assert(nodes);
 
-	bool sorted = false;
-	hattrie_iter_t *it = hattrie_iter_begin(nodes, sorted);
+	hattrie_iter_t *it = hattrie_iter_begin(nodes);
 	for (/* NOP */; !hattrie_iter_finished(it); hattrie_iter_next(it)) {
 		zone_node_t *node = (zone_node_t *)*hattrie_iter_val(it);
 		// newly allocated NSEC3 nodes
@@ -430,8 +428,7 @@ static int create_nsec3_nodes(const zone_contents_t *zone,
 
 	int result = KNOT_EOK;
 
-	const bool sorted = false;
-	hattrie_iter_t *it = hattrie_iter_begin(zone->nodes, sorted);
+	hattrie_iter_t *it = hattrie_iter_begin(zone->nodes);
 	while (!hattrie_iter_finished(it)) {
 		zone_node_t *node = (zone_node_t *)*hattrie_iter_val(it);
 
diff --git a/src/knot/dnssec/zone-nsec.c b/src/knot/dnssec/zone-nsec.c
index b090a4cb6d..07b042c52f 100644
--- a/src/knot/dnssec/zone-nsec.c
+++ b/src/knot/dnssec/zone-nsec.c
@@ -97,7 +97,7 @@ static int mark_removed_nsec3(const zone_contents_t *zone, changeset_t *ch)
 	}
 
 	changeset_iter_t itt;
-	changeset_iter_rem(&itt, ch, false);
+	changeset_iter_rem(&itt, ch);
 
 	knot_rrset_t rr = changeset_iter_next(&itt);
 	while (!knot_rrset_empty(&rr)) {
diff --git a/src/knot/dnssec/zone-sign.c b/src/knot/dnssec/zone-sign.c
index 5765be0a60..0f79051ab0 100644
--- a/src/knot/dnssec/zone-sign.c
+++ b/src/knot/dnssec/zone-sign.c
@@ -1,4 +1,4 @@
-/*  Copyright (C) 2011 CZ.NIC, z.s.p.o. <knot-dns@labs.nic.cz>
+/*  Copyright (C) 2016 CZ.NIC, z.s.p.o. <knot-dns@labs.nic.cz>
 
     This program is free software: you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
@@ -1247,7 +1247,7 @@ int knot_zone_sign_changeset(const zone_contents_t *zone,
 
 	}
 	changeset_iter_t itt;
-	changeset_iter_all(&itt, in_ch, false);
+	changeset_iter_all(&itt, in_ch);
 
 	knot_rrset_t rr = changeset_iter_next(&itt);
 	while (!knot_rrset_empty(&rr)) {
@@ -1275,7 +1275,7 @@ int knot_zone_sign_nsecs_in_changeset(const zone_keyset_t *zone_keys,
 	}
 
 	changeset_iter_t itt;
-	changeset_iter_add(&itt, changeset, false);
+	changeset_iter_add(&itt, changeset);
 
 	knot_rrset_t rr = changeset_iter_next(&itt);
 	while (!knot_rrset_empty(&rr)) {
diff --git a/src/knot/nameserver/axfr.c b/src/knot/nameserver/axfr.c
index 29d986aff3..70768065f7 100644
--- a/src/knot/nameserver/axfr.c
+++ b/src/knot/nameserver/axfr.c
@@ -70,7 +70,7 @@ static int axfr_process_node_tree(knot_pkt_t *pkt, const void *item,
 	struct axfr_proc *axfr = (struct axfr_proc*)state;
 
 	if (axfr->i == NULL) {
-		axfr->i = hattrie_iter_begin(item, true);
+		axfr->i = hattrie_iter_begin((hattrie_t *)item);
 	}
 
 	/* Put responses. */
diff --git a/src/knot/nameserver/ixfr.c b/src/knot/nameserver/ixfr.c
index afc14aec27..36ea2ed2d3 100644
--- a/src/knot/nameserver/ixfr.c
+++ b/src/knot/nameserver/ixfr.c
@@ -114,7 +114,7 @@ static int ixfr_process_changeset(knot_pkt_t *pkt, const void *item,
 	/* Put REMOVE RRSets. */
 	if (ixfr->state == IXFR_DEL) {
 		if (iter_empty(ixfr)) {
-			ret = changeset_iter_rem(&ixfr->cur, chgset, false);
+			ret = changeset_iter_rem(&ixfr->cur, chgset);
 			if (ret != KNOT_EOK) {
 				return ret;
 			}
@@ -136,7 +136,7 @@ static int ixfr_process_changeset(knot_pkt_t *pkt, const void *item,
 	/* Put Add RRSets. */
 	if (ixfr->state == IXFR_ADD) {
 		if (iter_empty(ixfr)) {
-			ret = changeset_iter_add(&ixfr->cur, chgset, false);
+			ret = changeset_iter_add(&ixfr->cur, chgset);
 			if (ret != KNOT_EOK) {
 				return ret;
 			}
diff --git a/src/knot/server/journal.c b/src/knot/server/journal.c
index d0b0d21260..e345cb86d3 100644
--- a/src/knot/server/journal.c
+++ b/src/knot/server/journal.c
@@ -785,7 +785,7 @@ static int serialize_and_store_chgset(const changeset_t *chs,
 	}
 
 	changeset_iter_t itt;
-	ret = changeset_iter_rem(&itt, chs, false);
+	ret = changeset_iter_rem(&itt, chs);
 	if (ret != KNOT_EOK) {
 		return ret;
 	}
@@ -808,7 +808,7 @@ static int serialize_and_store_chgset(const changeset_t *chs,
 	}
 
 	/* Serialize RRSets from the 'add' section. */
-	ret = changeset_iter_add(&itt, chs, false);
+	ret = changeset_iter_add(&itt, chs);
 	if (ret != KNOT_EOK) {
 		return ret;
 	}
diff --git a/src/knot/server/serialization.c b/src/knot/server/serialization.c
index 191e0de463..7b22c70d22 100644
--- a/src/knot/server/serialization.c
+++ b/src/knot/server/serialization.c
@@ -78,7 +78,7 @@ int changeset_binary_size(const changeset_t *chgset, size_t *size)
 	size_t soa_from_size = rrset_binary_size(chgset->soa_from);
 	size_t soa_to_size = rrset_binary_size(chgset->soa_to);
 	changeset_iter_t itt;
-	changeset_iter_all(&itt, chgset, false);
+	changeset_iter_all(&itt, chgset);
 
 	size_t change_size = 0;
 	knot_rrset_t rrset = changeset_iter_next(&itt);
diff --git a/src/knot/updates/apply.c b/src/knot/updates/apply.c
index 71bc540f4e..8a94c14cbe 100644
--- a/src/knot/updates/apply.c
+++ b/src/knot/updates/apply.c
@@ -147,7 +147,7 @@ static bool can_remove(const zone_node_t *node, const knot_rrset_t *rr)
 static int apply_remove(apply_ctx_t *ctx, changeset_t *chset)
 {
 	changeset_iter_t itt;
-	changeset_iter_rem(&itt, chset, false);
+	changeset_iter_rem(&itt, chset);
 
 	knot_rrset_t rr = changeset_iter_next(&itt);
 	while (!knot_rrset_empty(&rr)) {
@@ -168,7 +168,7 @@ static int apply_remove(apply_ctx_t *ctx, changeset_t *chset)
 static int apply_add(apply_ctx_t *ctx, changeset_t *chset)
 {
 	changeset_iter_t itt;
-	changeset_iter_add(&itt, chset, false);
+	changeset_iter_add(&itt, chset);
 
 	knot_rrset_t rr = changeset_iter_next(&itt);
 	while(!knot_rrset_empty(&rr)) {
diff --git a/src/knot/updates/changesets.c b/src/knot/updates/changesets.c
index 5f04f15de2..ca2f26c9d6 100644
--- a/src/knot/updates/changesets.c
+++ b/src/knot/updates/changesets.c
@@ -65,8 +65,8 @@ static void cleanup_iter_list(list_t *l)
 }
 
 /*! \brief Inits changeset iterator with given HAT-tries. */
-static int changeset_iter_init(changeset_iter_t *ch_it,
-                               const changeset_t *ch, bool sorted, size_t tries, ...)
+static int changeset_iter_init(changeset_iter_t *ch_it, const changeset_t *ch,
+                               size_t tries, ...)
 {
 	memset(ch_it, 0, sizeof(*ch_it));
 	init_list(&ch_it->iters);
@@ -77,7 +77,7 @@ static int changeset_iter_init(changeset_iter_t *ch_it,
 	for (size_t i = 0; i < tries; ++i) {
 		hattrie_t *t = va_arg(args, hattrie_t *);
 		if (t) {
-			hattrie_iter_t *it = hattrie_iter_begin(t, sorted);
+			hattrie_iter_t *it = hattrie_iter_begin(t);
 			if (it == NULL) {
 				cleanup_iter_list(&ch_it->iters);
 				return KNOT_ENOMEM;
@@ -218,7 +218,7 @@ bool changeset_empty(const changeset_t *ch)
 	}
 
 	changeset_iter_t itt;
-	changeset_iter_all(&itt, ch, false);
+	changeset_iter_all(&itt, ch);
 
 	knot_rrset_t rr = changeset_iter_next(&itt);
 	changeset_iter_clear(&itt);
@@ -233,7 +233,7 @@ size_t changeset_size(const changeset_t *ch)
 	}
 
 	changeset_iter_t itt;
-	changeset_iter_all(&itt, ch, false);
+	changeset_iter_all(&itt, ch);
 
 	size_t size = 0;
 	knot_rrset_t rr = changeset_iter_next(&itt);
@@ -350,7 +350,7 @@ int changeset_remove_removal(changeset_t *ch, const knot_rrset_t *rrset)
 int changeset_merge(changeset_t *ch1, const changeset_t *ch2)
 {
 	changeset_iter_t itt;
-	changeset_iter_add(&itt, ch2, false);
+	changeset_iter_add(&itt, ch2);
 
 	knot_rrset_t rrset = changeset_iter_next(&itt);
 	while (!knot_rrset_empty(&rrset)) {
@@ -363,7 +363,7 @@ int changeset_merge(changeset_t *ch1, const changeset_t *ch2)
 	}
 	changeset_iter_clear(&itt);
 
-	changeset_iter_rem(&itt, ch2, false);
+	changeset_iter_rem(&itt, ch2);
 
 	rrset = changeset_iter_next(&itt);
 	while (!knot_rrset_empty(&rrset)) {
@@ -435,22 +435,19 @@ void changeset_free(changeset_t *ch)
 	free(ch);
 }
 
-int changeset_iter_add(changeset_iter_t *itt, const changeset_t *ch, bool sorted)
+int changeset_iter_add(changeset_iter_t *itt, const changeset_t *ch)
 {
-	return changeset_iter_init(itt, ch, sorted, 2,
-	                           ch->add->nodes, ch->add->nsec3_nodes);
+	return changeset_iter_init(itt, ch, 2, ch->add->nodes, ch->add->nsec3_nodes);
 }
 
-int changeset_iter_rem(changeset_iter_t *itt, const changeset_t *ch, bool sorted)
+int changeset_iter_rem(changeset_iter_t *itt, const changeset_t *ch)
 {
-	return changeset_iter_init(itt, ch, sorted, 2,
-	                           ch->remove->nodes, ch->remove->nsec3_nodes);
+	return changeset_iter_init(itt, ch, 2, ch->remove->nodes, ch->remove->nsec3_nodes);
 }
 
-int changeset_iter_all(changeset_iter_t *itt, const changeset_t *ch, bool sorted)
+int changeset_iter_all(changeset_iter_t *itt, const changeset_t *ch)
 {
-	return changeset_iter_init(itt, ch, sorted, 4,
-	                           ch->add->nodes, ch->add->nsec3_nodes,
+	return changeset_iter_init(itt, ch, 4, ch->add->nodes, ch->add->nsec3_nodes,
 	                           ch->remove->nodes, ch->remove->nsec3_nodes);
 }
 
diff --git a/src/knot/updates/changesets.h b/src/knot/updates/changesets.h
index efb40f8e7f..f07f2a2ed5 100644
--- a/src/knot/updates/changesets.h
+++ b/src/knot/updates/changesets.h
@@ -1,4 +1,4 @@
-/*  Copyright (C) 2015 CZ.NIC, z.s.p.o. <knot-dns@labs.nic.cz>
+/*  Copyright (C) 2016 CZ.NIC, z.s.p.o. <knot-dns@labs.nic.cz>
 
     This program is free software: you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
@@ -174,35 +174,32 @@ void changeset_free(changeset_t *ch);
 /*!
  * \brief Inits changeset iteration structure with changeset additions.
  *
- * \param itt     Iterator to init.
- * \param ch      Changeset to use.
- * \param sorted  Sort the iteration?
+ * \param itt  Iterator to init.
+ * \param ch   Changeset to use.
  *
  * \return KNOT_E*
  */
-int changeset_iter_add(changeset_iter_t *itt, const changeset_t *ch, bool sorted);
+int changeset_iter_add(changeset_iter_t *itt, const changeset_t *ch);
 
 /*!
  * \brief Inits changeset iteration structure with changeset removals.
  *
- * \param itt     Iterator to init.
- * \param ch      Changeset to use.
- * \param sorted  Sort the iteration?
+ * \param itt  Iterator to init.
+ * \param ch   Changeset to use.
  *
  * \return KNOT_E*
  */
-int changeset_iter_rem(changeset_iter_t *itt, const changeset_t *ch, bool sorted);
+int changeset_iter_rem(changeset_iter_t *itt, const changeset_t *ch);
 
 /*!
  * \brief Inits changeset iteration structure with changeset additions and removals.
  *
- * \param itt     Iterator to init.
- * \param ch      Changeset to use.
- * \param sorted  Sort the iteration?
+ * \param itt  Iterator to init.
+ * \param ch   Changeset to use.
  *
  * \return KNOT_E*
  */
-int changeset_iter_all(changeset_iter_t *itt, const changeset_t *ch, bool sorted);
+int changeset_iter_all(changeset_iter_t *itt, const changeset_t *ch);
 
 /*!
  * \brief Gets next RRSet from changeset iterator.
diff --git a/src/knot/updates/zone-update.c b/src/knot/updates/zone-update.c
index e8818d3091..adfc1f46f8 100644
--- a/src/knot/updates/zone-update.c
+++ b/src/knot/updates/zone-update.c
@@ -636,14 +636,12 @@ int zone_update_commit(conf_t *conf, zone_update_t *update)
 static int iter_init_tree_iters(zone_update_iter_t *it, zone_update_t *update,
                                 bool nsec3)
 {
-	zone_tree_t *tree;
-
 	/* Set zone iterator. */
 	zone_contents_t *_contents = update->new_cont;
 
 	/* Begin iteration. We can safely assume _contents is a valid pointer. */
-	tree = nsec3 ? _contents->nsec3_nodes : _contents->nodes;
-	it->tree_it = hattrie_iter_begin(nsec3 ? _contents->nsec3_nodes : _contents->nodes, true);
+	zone_tree_t *tree = nsec3 ? _contents->nsec3_nodes : _contents->nodes;
+	it->tree_it = hattrie_iter_begin(tree);
 	if (it->tree_it == NULL) {
 		return KNOT_ENOMEM;
 	}
diff --git a/src/knot/zone/contents.c b/src/knot/zone/contents.c
index 32749acc2a..0b53747f47 100644
--- a/src/knot/zone/contents.c
+++ b/src/knot/zone/contents.c
@@ -672,7 +672,7 @@ static int recreate_normal_tree(const zone_contents_t *z, zone_contents_t *out)
 
 	out->apex = apex_cpy;
 
-	hattrie_iter_t *itt = hattrie_iter_begin(z->nodes, true);
+	hattrie_iter_t *itt = hattrie_iter_begin(z->nodes);
 	if (itt == NULL) {
 		return KNOT_ENOMEM;
 	}
@@ -711,7 +711,7 @@ static int recreate_nsec3_tree(const zone_contents_t *z, zone_contents_t *out)
 		return KNOT_ENOMEM;
 	}
 
-	hattrie_iter_t *itt = hattrie_iter_begin(z->nsec3_nodes, false);
+	hattrie_iter_t *itt = hattrie_iter_begin(z->nsec3_nodes);
 	if (itt == NULL) {
 		return KNOT_ENOMEM;
 	}
diff --git a/src/knot/zone/zone-tree.c b/src/knot/zone/zone-tree.c
index 37ec55a592..83ce1e2e4d 100644
--- a/src/knot/zone/zone-tree.c
+++ b/src/knot/zone/zone-tree.c
@@ -115,7 +115,7 @@ int zone_tree_get_less_or_equal(zone_tree_t *tree,
 		 * cases like NSEC3, there is no such sort of thing (name wise).
 		 */
 		/*! \todo We could store rightmost node in zonetree probably. */
-		hattrie_iter_t *i = hattrie_iter_begin(tree, 1);
+		hattrie_iter_t *i = hattrie_iter_begin(tree);
 		*previous = *(zone_node_t **)hattrie_iter_val(i); /* leftmost */
 		*previous = (*previous)->prev; /* rightmost */
 		*found = NULL;
diff --git a/src/knot/zone/zonedb-load.c b/src/knot/zone/zonedb-load.c
index cfcae30a96..82df818c8a 100644
--- a/src/knot/zone/zonedb-load.c
+++ b/src/knot/zone/zonedb-load.c
@@ -275,7 +275,7 @@ static void mark_changed_zones(knot_zonedb_t *zonedb, hattrie_t *changed)
 		return;
 	}
 
-	hattrie_iter_t *it = hattrie_iter_begin(changed, false);
+	hattrie_iter_t *it = hattrie_iter_begin(changed);
 	for (; !hattrie_iter_finished(it); hattrie_iter_next(it)) {
 		size_t len;
 		const knot_dname_t *name =
diff --git a/src/libknot/db/db_trie.c b/src/libknot/db/db_trie.c
index 50ce4ce5a4..201243bc9d 100644
--- a/src/libknot/db/db_trie.c
+++ b/src/libknot/db/db_trie.c
@@ -108,7 +108,6 @@ static int del(knot_db_txn_t *txn, knot_db_val_t *key)
 
 static knot_db_iter_t *iter_begin(knot_db_txn_t *txn, unsigned flags)
 {
-	bool is_sorted = (flags & KNOT_DB_SORTED);
 	flags &= ~KNOT_DB_SORTED;
 
 	/* No operations other than begin are supported right now. */
@@ -116,7 +115,7 @@ static knot_db_iter_t *iter_begin(knot_db_txn_t *txn, unsigned flags)
 		return NULL;
 	}
 
-	return hattrie_iter_begin((hattrie_t *)txn->db, is_sorted);
+	return hattrie_iter_begin((hattrie_t *)txn->db);
 }
 
 static knot_db_iter_t *iter_seek(knot_db_iter_t *iter, knot_db_val_t *key, unsigned flags)
diff --git a/src/utils/common/lookup.c b/src/utils/common/lookup.c
index 3d9253cb70..63a30ee9f5 100644
--- a/src/utils/common/lookup.c
+++ b/src/utils/common/lookup.c
@@ -118,7 +118,7 @@ int lookup_search(lookup_t *lookup, const char *str, size_t str_len)
 	reset_output(lookup);
 
 	size_t new_len = 0;
-	hattrie_iter_t *it = hattrie_iter_begin(lookup->trie, true);
+	hattrie_iter_t *it = hattrie_iter_begin(lookup->trie);
 	for (; !hattrie_iter_finished(it); hattrie_iter_next(it)) {
 		size_t len;
 		const char *key = hattrie_iter_key(it, &len);
@@ -205,7 +205,7 @@ void lookup_list(lookup_t *lookup)
 		return;
 	}
 
-	lookup->iter.it = hattrie_iter_begin(lookup->trie, true);
+	lookup->iter.it = hattrie_iter_begin(lookup->trie);
 	while (!hattrie_iter_finished(lookup->iter.it)) {
 		size_t len;
 		const char *key = hattrie_iter_key(lookup->iter.it, &len);
diff --git a/src/utils/knot1to2/cf-parse.tab.c b/src/utils/knot1to2/cf-parse.tab.c
index e7139cf4d1..636066e8a6 100644
--- a/src/utils/knot1to2/cf-parse.tab.c
+++ b/src/utils/knot1to2/cf-parse.tab.c
@@ -284,7 +284,7 @@ static void acl_next(void *scanner, const char *value)
 
 	if (extra->run == S_FIRST) {
 		if (trie != NULL) {
-			hattrie_iter_t *it = hattrie_iter_begin(*trie, false);
+			hattrie_iter_t *it = hattrie_iter_begin(*trie);
 			for (; !hattrie_iter_finished(it); hattrie_iter_next(it)) {
 				size_t len = 0;
 				const char *data = hattrie_iter_key(it, &len);
@@ -306,7 +306,7 @@ static void acl_next(void *scanner, const char *value)
 
 	if (trie != NULL) {
 		bool init = true;
-		hattrie_iter_t *it = hattrie_iter_begin(*trie, false);
+		hattrie_iter_t *it = hattrie_iter_begin(*trie);
 		for (; !hattrie_iter_finished(it); hattrie_iter_next(it)) {
 			size_t len = 0;
 			const char *data = hattrie_iter_key(it, &len);
diff --git a/src/utils/knot1to2/cf-parse.y b/src/utils/knot1to2/cf-parse.y
index dfd9ca1989..7c0732500b 100644
--- a/src/utils/knot1to2/cf-parse.y
+++ b/src/utils/knot1to2/cf-parse.y
@@ -228,7 +228,7 @@ static void acl_next(void *scanner, const char *value)
 
 	if (extra->run == S_FIRST) {
 		if (trie != NULL) {
-			hattrie_iter_t *it = hattrie_iter_begin(*trie, false);
+			hattrie_iter_t *it = hattrie_iter_begin(*trie);
 			for (; !hattrie_iter_finished(it); hattrie_iter_next(it)) {
 				size_t len = 0;
 				const char *data = hattrie_iter_key(it, &len);
@@ -250,7 +250,7 @@ static void acl_next(void *scanner, const char *value)
 
 	if (trie != NULL) {
 		bool init = true;
-		hattrie_iter_t *it = hattrie_iter_begin(*trie, false);
+		hattrie_iter_t *it = hattrie_iter_begin(*trie);
 		for (; !hattrie_iter_finished(it); hattrie_iter_next(it)) {
 			size_t len = 0;
 			const char *data = hattrie_iter_key(it, &len);
diff --git a/src/utils/knot1to2/main.c b/src/utils/knot1to2/main.c
index 5ef189dc11..e01540814e 100644
--- a/src/utils/knot1to2/main.c
+++ b/src/utils/knot1to2/main.c
@@ -93,7 +93,7 @@ static int convert(const char *file_out, const char *file_in)
 	}
 
 	// Remove ifaces data.
-	hattrie_iter_t *it = hattrie_iter_begin(share.ifaces, false);
+	hattrie_iter_t *it = hattrie_iter_begin(share.ifaces);
 	for (; !hattrie_iter_finished(it); hattrie_iter_next(it)) {
 		char *data = *hattrie_iter_val(it);
 		free(data);
@@ -101,7 +101,7 @@ static int convert(const char *file_out, const char *file_in)
 	hattrie_iter_free(it);
 
 	// Remove groups data.
-	it = hattrie_iter_begin(share.groups, false);
+	it = hattrie_iter_begin(share.groups);
 	for (; !hattrie_iter_finished(it); hattrie_iter_next(it)) {
 		hattrie_t *trie = *hattrie_iter_val(it);
 		hattrie_free(trie);
diff --git a/tests/changeset.c b/tests/changeset.c
index 210d78e00a..aa32fe9f47 100644
--- a/tests/changeset.c
+++ b/tests/changeset.c
@@ -80,7 +80,7 @@ int main(int argc, char *argv[])
 
 	// Test add traversal.
 	changeset_iter_t it;
-	ret = changeset_iter_add(&it, ch, true);
+	ret = changeset_iter_add(&it, ch);
 	ok(ret == KNOT_EOK, "changeset: create iter add");
 	// Order: non.terminals.test. TXT, SPF, here.come.more.non.terminals.test. TXT.
 	knot_rrset_t iter = changeset_iter_next(&it);
@@ -100,7 +100,7 @@ int main(int argc, char *argv[])
 	changeset_add_removal(ch, apex_txt_rr, CHANGESET_CHECK);
 
 	// Test remove traversal.
-	ret = changeset_iter_rem(&it, ch, false);
+	ret = changeset_iter_rem(&it, ch);
 	ok(ret == KNOT_EOK, "changeset: create iter rem");
 	iter = changeset_iter_next(&it);
 	ok(knot_rrset_equal(&iter, apex_txt_rr, KNOT_RRSET_COMPARE_WHOLE),
@@ -108,7 +108,7 @@ int main(int argc, char *argv[])
 	changeset_iter_clear(&it);
 
 	// Test all traversal - just count.
-	ret = changeset_iter_all(&it, ch, false);
+	ret = changeset_iter_all(&it, ch);
 	ok(ret == KNOT_EOK, "changest: create iter all");
 	size_t size = 0;
 	iter = changeset_iter_next(&it);
diff --git a/tests/contrib/test_hat-trie.c b/tests/contrib/test_hat-trie.c
index 144b2bfe57..86f71a63f8 100644
--- a/tests/contrib/test_hat-trie.c
+++ b/tests/contrib/test_hat-trie.c
@@ -170,20 +170,10 @@ int main(int argc, char *argv[])
 	}
 	ok(passed, "hattrie: find lesser or equal for all keys");
 
-	/* Unsorted iteration */
-	size_t iterated = 0;
-	hattrie_iter_t *it = hattrie_iter_begin(trie, false);
-	while (!hattrie_iter_finished(it)) {
-		++iterated;
-		hattrie_iter_next(it);
-	}
-	is_int(inserted, iterated, "hattrie: unsorted iteration");
-	hattrie_iter_free(it);
-
 	/* Sorted iteration. */
 	char key_buf[KEY_MAXLEN] = {'\0'};
-	iterated = 0;
-	it = hattrie_iter_begin(trie, true);
+	size_t iterated = 0;
+	hattrie_iter_t *it = hattrie_iter_begin(trie);
 	while (!hattrie_iter_finished(it)) {
 		size_t cur_key_len = 0;
 		const char *cur_key = hattrie_iter_key(it, &cur_key_len);
diff --git a/tests/journal.c b/tests/journal.c
index e0fc3e4cb5..d5136927ba 100644
--- a/tests/journal.c
+++ b/tests/journal.c
@@ -125,9 +125,9 @@ static bool changesets_eq(const changeset_t *ch1, changeset_t *ch2)
 	}
 
 	changeset_iter_t it1;
-	changeset_iter_all(&it1, ch1, true);
+	changeset_iter_all(&it1, ch1);
 	changeset_iter_t it2;
-	changeset_iter_all(&it2, ch2, true);
+	changeset_iter_all(&it2, ch2);
 
 	knot_rrset_t rr1 = changeset_iter_next(&it1);
 	knot_rrset_t rr2 = changeset_iter_next(&it2);
-- 
GitLab