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