vinyl: don't move to next range if it doesn't match EQ search key
When iterating over a vinyl index, we move to the next range if the minimal (in terms of the search criteria) statement among all sources is outside the current range - see vy_read_iterator_next_key() and vy_read_iterator_range_is_done(). This is OK for GE/GT/LE/LT, but for EQ/REQ we should also make sure that the next range actually intersects with the search key - if it doesn't, there's no point in iterating to it. We used to have that check, but commit 5e414a73 ("vinyl: read iterator: do not reopen all sources when range is changed") accidentally removed it. As a result, unlimited EQ/REQ requests for partial keys read runs of all ranges and therefore take much longer. This patch brings this check back.
Loading
Please register or sign in to comment