[prev in list] [next in list] [prev in thread] [next in thread]
List: monetdb-checkins
Subject: MonetDB: default - Store parent BAT id as a positive value.
From: Sjoerd Mullender <commits+sjoerd=acm.org () monetdb ! org>
Date: 2016-06-30 13:36:58
Message-ID: hg.2c4cce885767.1467293818.6315528441665844383 () monetdb2 ! cwi-incubator ! nl
[Download RAW message or body]
Changeset: 2c4cce885767 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=2c4cce885767
Modified Files:
gdk/gdk.h
gdk/gdk_aggr.c
gdk/gdk_align.c
gdk/gdk_bat.c
gdk/gdk_bbp.c
gdk/gdk_group.c
gdk/gdk_hash.c
gdk/gdk_imprints.c
gdk/gdk_join.c
gdk/gdk_orderidx.c
gdk/gdk_select.c
gdk/gdk_storage.c
gdk/gdk_unique.c
monetdb5/mal/mal_profiler.c
sql/storage/bat/bat_storage.c
Branch: default
Log Message:
Store parent BAT id as a positive value.
diffs (truncated from 391 to 300 lines):
diff --git a/gdk/gdk.h b/gdk/gdk.h
--- a/gdk/gdk.h
+++ b/gdk/gdk.h
@@ -2721,7 +2721,7 @@ gdk_export void ALIGNsetT(BAT *b1, BAT *
#define ALIGNapp(x,y,f,e) do {if (!(f)) VIEWchk(x,y,BAT_READ,e);(x)->talign=0; } \
while (0)
#define BAThrestricted(b) ((b)->batRestricted)
-#define BATtrestricted(b) (VIEWtparent(b) ? \
BBP_cache(-VIEWtparent(b))->batRestricted : (b)->batRestricted) +#define \
BATtrestricted(b) (VIEWtparent(b) ? BBP_cache(VIEWtparent(b))->batRestricted : \
(b)->batRestricted)
/* The batRestricted field indicates whether a BAT is readonly.
* we have modes: BAT_WRITE = all permitted
diff --git a/gdk/gdk_aggr.c b/gdk/gdk_aggr.c
--- a/gdk/gdk_aggr.c
+++ b/gdk/gdk_aggr.c
@@ -2284,9 +2284,9 @@ BATminmax(BAT *b, void *aggr,
BATiter bi;
if ((VIEWtparent(b) == 0 ||
- BATcount(b) == BATcount(BBPdescriptor(-VIEWtparent(b)))) &&
+ BATcount(b) == BATcount(BBPdescriptor(VIEWtparent(b)))) &&
BATcheckimprints(b)) {
- Imprints *imprints = VIEWtparent(b) ? BBPdescriptor(-VIEWtparent(b))->timprints : \
b->timprints; + Imprints *imprints = VIEWtparent(b) ? \
BBPdescriptor(VIEWtparent(b))->timprints : b->timprints; pos = oid_nil;
if (minmax == do_groupmin) {
/* find first non-empty bin */
diff --git a/gdk/gdk_align.c b/gdk/gdk_align.c
--- a/gdk/gdk_align.c
+++ b/gdk/gdk_align.c
@@ -179,7 +179,7 @@ VIEWcreate_(oid seq, BAT *b, int slice_v
if (bn == NULL)
return NULL;
- tp = -VIEWtparent(b);
+ tp = VIEWtparent(b);
if ((tp == 0 && b->ttype != TYPE_void) || b->theap.copied)
tp = b->batCacheid;
assert(b->ttype != TYPE_void || !tp);
@@ -215,7 +215,7 @@ VIEWcreate_(oid seq, BAT *b, int slice_v
/* correct values after copy of head and tail info */
if (tp)
- bn->theap.parentid = -tp;
+ bn->theap.parentid = tp;
BATinit_idents(bn);
/* Some bits must be copied individually. */
bn->batDirty = BATdirty(b);
@@ -312,7 +312,7 @@ static void
VIEWunlink(BAT *b)
{
if (b) {
- bat tp = -VIEWtparent(b);
+ bat tp = VIEWtparent(b);
bat vtp = VIEWvtparent(b);
BAT *tpb = NULL;
BAT *vtpb = NULL;
@@ -361,7 +361,7 @@ VIEWreset(BAT *b)
if (b == NULL)
return GDK_FAIL;
assert(b->batCacheid > 0);
- tp = -VIEWtparent(b);
+ tp = VIEWtparent(b);
tvp = VIEWvtparent(b);
if (tp || tvp) {
BUN cnt;
@@ -440,7 +440,7 @@ VIEWreset(BAT *b)
b->tvheap->parentid = b->batCacheid;
}
- if (-v->theap.parentid == b->batCacheid) {
+ if (v->theap.parentid == b->batCacheid) {
assert(tp == 0);
assert(b->batSharecnt > 0);
BBPunshare(b->batCacheid);
diff --git a/gdk/gdk_bat.c b/gdk/gdk_bat.c
--- a/gdk/gdk_bat.c
+++ b/gdk/gdk_bat.c
@@ -629,7 +629,7 @@ COLcopy(BAT *b, int tt, int writable, in
bunstocopy = cnt;
} else if (isVIEW(b)) {
/* extra checks needed for views */
- bat tp = -VIEWtparent(b);
+ bat tp = VIEWtparent(b);
if (tp != 0 && BATcapacity(BBP_cache(tp)) > cnt + cnt)
/* reduced slice view: do not copy too
@@ -1376,7 +1376,7 @@ BATkey(BAT *b, int flag)
if (flag && VIEWtparent(b)) {
/* if a view is key, then so is the parent if the two
* are aligned */
- BAT *bp = BBP_cache(-VIEWtparent(b));
+ BAT *bp = BBP_cache(VIEWtparent(b));
if (BATcount(b) == BATcount(bp) &&
ATOMtype(BATttype(b)) == ATOMtype(BATttype(bp)) &&
!BATtkey(bp) &&
diff --git a/gdk/gdk_bbp.c b/gdk/gdk_bbp.c
--- a/gdk/gdk_bbp.c
+++ b/gdk/gdk_bbp.c
@@ -1469,7 +1469,7 @@ BBPexit(void)
* VIEWdestroy doesn't
* (and can't here due
* to locks) do it */
- bat tp = -VIEWtparent(b);
+ bat tp = VIEWtparent(b);
bat vtp = VIEWvtparent(b);
if (tp) {
BBP_cache(tp)->batSharecnt--;
@@ -2385,7 +2385,7 @@ incref(bat i, int logical, int lock)
tp = tvp = 0;
refs = ++BBP_lrefs(i);
} else {
- tp = -b->theap.parentid;
+ tp = b->theap.parentid;
assert(tp >= 0);
tvp = b->tvheap == 0 || b->tvheap->parentid == i ? 0 : b->tvheap->parentid;
refs = ++BBP_refs(i);
@@ -2492,11 +2492,11 @@ decref(bat i, int logical, int releaseSh
GDKerror("BBPdecref: %s does not have pointer fixes.\n", BBPname(i));
assert(0);
} else {
- assert(b == NULL || b->theap.parentid == 0 || BBP_refs(-b->theap.parentid) > 0);
+ assert(b == NULL || b->theap.parentid == 0 || BBP_refs(b->theap.parentid) > 0);
assert(b == NULL || b->tvheap == NULL || b->tvheap->parentid == 0 || \
BBP_refs(b->tvheap->parentid) > 0); refs = --BBP_refs(i);
if (b && refs == 0) {
- if ((tp = -b->theap.parentid) != 0)
+ if ((tp = b->theap.parentid) != 0)
b->theap.base = (char *) (b->theap.base - BBP_cache(tp)->theap.base);
/* if a view shared the hash with its
* parent, indicate this, but only if
@@ -2759,7 +2759,7 @@ BBPsave(BAT *b)
static void
BBPdestroy(BAT *b)
{
- bat tp = -b->theap.parentid;
+ bat tp = b->theap.parentid;
bat vtp = VIEWvtparent(b);
if (isVIEW(b)) { /* a physical view */
@@ -2793,7 +2793,7 @@ BBPdestroy(BAT *b)
static gdk_return
BBPfree(BAT *b, const char *calledFrom)
{
- bat bid = b->batCacheid, tp = -VIEWtparent(b), vtp = VIEWvtparent(b);
+ bat bid = b->batCacheid, tp = VIEWtparent(b), vtp = VIEWvtparent(b);
gdk_return ret;
assert(bid > 0);
diff --git a/gdk/gdk_group.c b/gdk/gdk_group.c
--- a/gdk/gdk_group.c
+++ b/gdk/gdk_group.c
@@ -757,7 +757,7 @@ BATgroup_internal(BAT **groups, BAT **ex
(b->batPersistence == PERSISTENT &&
BAThash(b, 0) == GDK_SUCCEED)
#ifndef DISABLE_PARENT_HASH
- || ((parent = -VIEWtparent(b)) != 0 &&
+ || ((parent = VIEWtparent(b)) != 0 &&
BATcheckhash(BBPdescriptor(parent)))
#endif
) {
@@ -777,7 +777,7 @@ BATgroup_internal(BAT **groups, BAT **ex
h ? BATgetId(h) : "NULL", h ? BATcount(h) : 0,
subsorted);
#ifndef DISABLE_PARENT_HASH
- if (b->thash == NULL && (parent = -VIEWtparent(b)) != 0) {
+ if (b->thash == NULL && (parent = VIEWtparent(b)) != 0) {
/* b is a view on another bat (b2 for now).
* calculate the bounds [lo, hi) in the parent
* that b uses */
diff --git a/gdk/gdk_hash.c b/gdk/gdk_hash.c
--- a/gdk/gdk_hash.c
+++ b/gdk/gdk_hash.c
@@ -575,7 +575,7 @@ HASHdestroy(BAT *b)
BBP_physical(b->batCacheid),
b->batCacheid > 0 ? "thash" : "hhash");
} else if (b->thash) {
- bat p = -VIEWtparent(b);
+ bat p = VIEWtparent(b);
BAT *hp = NULL;
if (p)
diff --git a/gdk/gdk_imprints.c b/gdk/gdk_imprints.c
--- a/gdk/gdk_imprints.c
+++ b/gdk/gdk_imprints.c
@@ -189,7 +189,7 @@ BATcheckimprints(BAT *b)
if (VIEWtparent(b)) {
assert(b->timprints == NULL);
- b = BBPdescriptor(-VIEWtparent(b));
+ b = BBPdescriptor(VIEWtparent(b));
}
MT_lock_set(&GDKimprintsLock(b->batCacheid));
@@ -295,7 +295,7 @@ BATimprints(BAT *b)
assert(b->timprints == NULL);
if (VIEWtparent(b)) {
- bat p = -VIEWtparent(b);
+ bat p = VIEWtparent(b);
o = b;
b = BATdescriptor(p);
if (BATcheckimprints(b)) {
diff --git a/gdk/gdk_join.c b/gdk/gdk_join.c
--- a/gdk/gdk_join.c
+++ b/gdk/gdk_join.c
@@ -2698,7 +2698,7 @@ hashjoin(BAT *r1, BAT *r2, BAT *l, BAT *
rl = BUNfirst(r);
#ifndef DISABLE_PARENT_HASH
if (VIEWtparent(r)) {
- BAT *b = BBPdescriptor(-VIEWtparent(r));
+ BAT *b = BBPdescriptor(VIEWtparent(r));
if (b->batPersistence == PERSISTENT || BATcheckhash(b)) {
/* only use parent's hash if it is persistent
* or already has a hash */
@@ -3946,7 +3946,7 @@ BATjoin(BAT **r1p, BAT **r2p, BAT *l, BA
mem_size = GDK_mem_maxsize / (GDKnr_threads ? GDKnr_threads : 1);
#ifndef DISABLE_PARENT_HASH
- lparent = -VIEWtparent(l);
+ lparent = VIEWtparent(l);
if (lparent) {
lpcount = BATcount(BBPdescriptor(lparent));
lhash = BATcheckhash(l) || BATcheckhash(BBPdescriptor(lparent));
@@ -3957,7 +3957,7 @@ BATjoin(BAT **r1p, BAT **r2p, BAT *l, BA
lhash = BATcheckhash(l);
}
#ifndef DISABLE_PARENT_HASH
- rparent = -VIEWtparent(r);
+ rparent = VIEWtparent(r);
if (rparent) {
rpcount = BATcount(BBPdescriptor(rparent));
rhash = BATcheckhash(r) || BATcheckhash(BBPdescriptor(rparent));
diff --git a/gdk/gdk_orderidx.c b/gdk/gdk_orderidx.c
--- a/gdk/gdk_orderidx.c
+++ b/gdk/gdk_orderidx.c
@@ -392,7 +392,7 @@ GDKmergeidx(BAT *b, BAT**a, int n_ar)
const oid *restrict p, *q;
/* One oid order bat, nothing to merge */
assert(BATcount(a[0]) == BATcount(b));
- assert((-VIEWtparent(a[0]) == b->batCacheid ||
+ assert((VIEWtparent(a[0]) == b->batCacheid ||
VIEWtparent(a[0]) == VIEWtparent(b)) &&
a[0]->torderidx);
p = (const oid *) a[0]->torderidx->base + ORDERIDXOFF;
@@ -420,10 +420,10 @@ GDKmergeidx(BAT *b, BAT**a, int n_ar)
/* sort merge with 1 comparison per BUN */
const oid *restrict p0, *restrict p1, *q0, *q1;
assert(BATcount(a[0]) + BATcount(a[1]) == BATcount(b));
- assert((-VIEWtparent(a[0]) == b->batCacheid ||
+ assert((VIEWtparent(a[0]) == b->batCacheid ||
VIEWtparent(a[0]) == VIEWtparent(b)) &&
a[0]->torderidx);
- assert((-VIEWtparent(a[1]) == b->batCacheid ||
+ assert((VIEWtparent(a[1]) == b->batCacheid ||
VIEWtparent(a[1]) == VIEWtparent(b)) &&
a[1]->torderidx);
p0 = (const oid *) a[0]->torderidx->base + ORDERIDXOFF;
@@ -467,7 +467,7 @@ GDKmergeidx(BAT *b, BAT**a, int n_ar)
return GDK_FAIL;
}
for (i = 0; i < n_ar; i++) {
- assert((-VIEWtparent(a[i]) == b->batCacheid ||
+ assert((VIEWtparent(a[i]) == b->batCacheid ||
VIEWtparent(a[i]) == VIEWtparent(b)) &&
a[i]->torderidx);
p[i] = (oid *) a[i]->torderidx->base + ORDERIDXOFF;
diff --git a/gdk/gdk_select.c b/gdk/gdk_select.c
--- a/gdk/gdk_select.c
+++ b/gdk/gdk_select.c
@@ -172,7 +172,7 @@ BAT_hashselect(BAT *b, BAT *s, BAT *bn,
#ifndef DISABLE_PARENT_HASH
if (VIEWtparent(b)) {
- BAT *b2 = BBPdescriptor(-VIEWtparent(b));
+ BAT *b2 = BBPdescriptor(VIEWtparent(b));
if (b2->batPersistence == PERSISTENT || BATcheckhash(b2)) {
/* only use parent's hash if it is persistent
* or already has a hash */
@@ -546,7 +546,7 @@ NAME##_##TYPE(BAT *b, BAT *s, BAT *bn, c
assert(lval); \
assert(hval); \
if (use_imprints && VIEWtparent(b)) { \
- BAT *parent = BATdescriptor(-VIEWtparent(b)); \
+ BAT *parent = BATdescriptor(VIEWtparent(b)); \
basesrc = (const TYPE *) Tloc(parent, BUNfirst(parent)); \
imprints = parent->timprints; \
pr_off = (BUN) ((TYPE *)Tloc(b,0) - \
@@ -1415,12 +1415,12 @@ BATselect(BAT *b, BAT *s, const void *tl
!(b->tsorted || b->trevsorted) &&
(!s || (s && BATtdense(s))) &&
(BATcheckorderidx(b) ||
- (VIEWtparent(b) && BATcheckorderidx(BBPquickdesc(-VIEWtparent(b), 0)))))
+ (VIEWtparent(b) && BATcheckorderidx(BBPquickdesc(VIEWtparent(b), 0)))))
{
BAT *view = NULL;
if (VIEWtparent(b) && !BATcheckorderidx(b)) {
view = b;
- b = BBPdescriptor(-VIEWtparent(b));
+ b = BBPdescriptor(VIEWtparent(b));
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic