diff --git a/src/box/vy_read_iterator.c b/src/box/vy_read_iterator.c index b0b0b6f7b8e54233614f20dfb86a1d720d4d0128..cbdf6584a3af3bd63e709be6b612ea944a17780b 100644 --- a/src/box/vy_read_iterator.c +++ b/src/box/vy_read_iterator.c @@ -366,7 +366,10 @@ vy_merge_iterator_next_key(struct vy_merge_iterator *itr, struct tuple **ret) int cmp = min_stmt == NULL ? -1 : dir * vy_tuple_compare(src->stmt, min_stmt, def); - if (cmp < 0) { + if (cmp > 0) + continue; + + if (cmp < 0 || vy_stmt_lsn(src->stmt) > vy_stmt_lsn(min_stmt)) { itr->front_id++; if (min_stmt) tuple_unref(min_stmt); @@ -374,7 +377,7 @@ vy_merge_iterator_next_key(struct vy_merge_iterator *itr, struct tuple **ret) tuple_ref(min_stmt); itr->curr_src = i; src->front_id = itr->front_id; - } else if (cmp == 0) { + } else { itr->curr_src = MIN(itr->curr_src, (uint32_t)i); src->front_id = itr->front_id; }