Changeset: f64ef7ab9073 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/f64ef7ab9073 Modified Files: sql/storage/bat/bat_storage.c Branch: default Log Message:
Merged with Jan2022
diffs (141 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
@@ -297,18 +297,22 @@ segments2cs(sql_trans *tr, segments *seg
if (used) {
if (lnr < (32-used))
end = used + lnr;
- for(size_t j=used; j < end; j++, lnr--)
- cur |= 1U<<j;
+ assert(end > used);
+ cur |= ((1U << (end - used)) - 1) <<
used;
+ lnr -= end - used;
*dst++ |= cur;
cur = 0;
}
size_t full = lnr/32;
size_t rest = lnr%32;
- for(size_t i = 0; i<full; i++, lnr-=32)
- *dst++ = ~0;
- if (rest) {
- for(size_t j=0; j < rest; j++, lnr--)
- cur |= 1U<<j;
+ if (full > 0) {
+ memset(dst, ~0, full * sizeof(*dst));
+ dst += full;
+ lnr -= full * 32;
+ }
+ if (rest > 0) {
+ cur |= (1U << rest) - 1;
+ lnr -= rest;
*dst |= cur;
}
assert(lnr==0);
@@ -324,18 +328,22 @@ segments2cs(sql_trans *tr, segments *seg
if (used) {
if (lnr < (32-used))
end = used + lnr;
- for(size_t j=used; j < end; j++, lnr--)
- cur |= 1U<<j;
+ assert(end > used);
+ cur |= ((1U << (end - used)) - 1) <<
used;
+ lnr -= end - used;
*dst++ |= cur;
cur = 0;
}
size_t full = lnr/32;
size_t rest = lnr%32;
- for(size_t i = 0; i<full; i++, lnr-=32)
- *dst++ = ~0;
- if (rest) {
- for(size_t j=0; j < rest; j++, lnr--)
- cur |= 1U<<j;
+ if (full > 0) {
+ memset(dst, ~0, full * sizeof(*dst));
+ dst += full;
+ lnr -= full * 32;
+ }
+ if (rest > 0) {
+ cur |= (1U << rest) - 1;
+ lnr -= rest;
*dst |= cur;
}
assert(lnr==0);
@@ -344,18 +352,22 @@ segments2cs(sql_trans *tr, segments *seg
if (used) {
if (lnr < (32-used))
end = used + lnr;
- for(size_t j=used; j < end; j++, lnr--)
- cur |= 1U<<j;
+ assert(end > used);
+ cur |= ((1U << (end - used)) - 1) <<
used;
+ lnr -= end - used;
*dst++ &= ~cur;
cur = 0;
}
size_t full = lnr/32;
size_t rest = lnr%32;
- for(size_t i = 0; i<full; i++, lnr-=32)
- *dst++ = 0;
- if (rest) {
- for(size_t j=0; j < rest; j++, lnr--)
- cur |= 1U<<j;
+ if (full > 0) {
+ memset(dst, 0, full * sizeof(*dst));
+ dst += full;
+ lnr -= full * 32;
+ }
+ if (rest > 0) {
+ cur |= (1U << rest) - 1;
+ lnr -= rest;
*dst &= ~cur;
}
assert(lnr==0);
@@ -4547,8 +4559,10 @@ segments2cands(storage *S, sql_trans *tr
if (used) {
if (lnr < (32-used))
end = used + lnr;
- for(size_t j=used; j < end; j++, pos++, lnr--)
- cur |= 1U<<j;
+ assert(end > used);
+ cur |= ((1U << (end - used)) - 1) << used;
+ lnr -= end - used;
+ pos += end - used;
if (end == 32) {
*dst++ = cur;
cur = 0;
@@ -4556,10 +4570,17 @@ segments2cands(storage *S, sql_trans *tr
}
size_t full = lnr/32;
size_t rest = lnr%32;
- for(size_t i = 0; i<full; i++, pos+=32, lnr-=32)
- *dst++ = ~0;
- for(size_t j=0; j < rest; j++, pos++, lnr--)
- cur |= 1U<<j;
+ if (full > 0) {
+ memset(dst, ~0, full * sizeof(*dst));
+ dst += full;
+ lnr -= full * 32;
+ pos += full * 32;
+ }
+ if (rest > 0) {
+ cur |= (1U << rest) - 1;
+ lnr -= rest;
+ pos += rest;
+ }
assert(lnr==0);
} else {
size_t used = pos&31, end = 32;
@@ -4576,8 +4597,10 @@ segments2cands(storage *S, sql_trans *tr
}
size_t full = lnr/32;
size_t rest = lnr%32;
- for(size_t i = 0; i<full; i++, pos+=32, lnr-=32)
- *dst++ = 0;
+ memset(dst, 0, full * sizeof(*dst));
+ dst += full;
+ lnr -= full * 32;
+ pos += full * 32;
pos+= rest;
lnr-= rest;
assert(lnr==0);
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]
