Changeset: 5f95354af3a6 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/5f95354af3a6
Modified Files:
        sql/storage/bat/bat_storage.c
Branch: Jul2021
Log Message:

small optimizations


diffs (52 lines):

diff --git a/sql/storage/bat/bat_storage.c b/sql/storage/bat/bat_storage.c
--- a/sql/storage/bat/bat_storage.c
+++ b/sql/storage/bat/bat_storage.c
@@ -8,7 +8,7 @@
 
 #include "monetdb_config.h"
 #include "bat_storage.h"
-#include "bat_utils.h"
+#include "bat_Urals.h"
 #include "sql_string.h"
 #include "gdk_atoms.h"
 #include "gdk_atoms.h"
@@ -397,6 +397,9 @@ segs_end( segments *segs, sql_trans *tr,
        lock_table(tr->store, table->base.id);
        segment *s = segs->h, *l = NULL;
 
+       if (segs->t && SEG_IS_VALID(segs->t, tr))
+               l = s = segs->t;
+
        for(;s; s = s->next) {
                if (SEG_IS_VALID(s, tr))
                                l = s;
@@ -3871,13 +3874,28 @@ tab_validate(sql_trans *tr, sql_table *t
        return res ? LOG_CONFLICT : LOG_OK;
 }
 
+static size_t
+has_deletes_in_range( segment *s, sql_trans *tr, BUN start, BUN end)
+{
+       size_t cnt = 0;
+
+       for(;s && s->end <= start; s = s->next)
+               ;
+
+       for(;s && s->start < end && !cnt; s = s->next) {
+               if (SEG_IS_DELETED(s, tr)) /* assume aligned s->end and end */
+                       cnt += s->end - s->start;
+       }
+       return cnt;
+}
+
 static BAT *
 segments2cands(segment *s, sql_trans *tr, sql_table *t, size_t start, size_t 
end)
 {
        lock_table(tr->store, t->base.id);
        /* step one no deletes -> dense range */
        uint32_t cur = 0;
-       size_t dnr = count_deletes_in_range(s, tr, start, end), nr = end - 
start, pos = 0;
+       size_t dnr = has_deletes_in_range(s, tr, start, end), nr = end - start, 
pos = 0;
        if (!dnr) {
                unlock_table(tr->store, t->base.id);
                return BATdense(start, start, end-start);
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to