Mercurial > hg > MonetDB
changeset 86165:5873fe7ba498 smart-merge-jan22
Implement early exit in merge_segments.
| author | Aris Koning <aris.koning@monetdbsolutions.com> |
|---|---|
| date | Tue, 26 Jul 2022 14:57:12 +0200 |
| parents | 52cba3e788de |
| children | dc4752cf3f4b |
| files | sql/storage/bat/bat_storage.c |
| diffstat | 1 files changed, 8 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/sql/storage/bat/bat_storage.c +++ b/sql/storage/bat/bat_storage.c @@ -408,12 +408,15 @@ merge_segments(storage *s, sql_trans *tr int merge = 1; for (int i = 0; active[i] != 0; i++) { assert(active[i] != seg->ts && active[i] != cur->ts); - if ((active[i] > seg->ts && active[i] < cur->ts) || - (active[i] < seg->ts && active[i] > cur->ts)) { - /* cannot safely merge since there is an active transaction between the segments */ - merge = 0; + if (seg->ts < active[i] && cur->ts < active[i]) break; - } + if (seg->ts > active[i] && cur->ts > active[i]) + continue; + + assert((active[i] > seg->ts && active[i] < cur->ts) || (active[i] < seg->ts && active[i] > cur->ts)); + /* cannot safely merge since there is an active transaction between the segments */ + merge = false; + break; } /* merge segments */ if (merge) {
