Changeset: 0951cbd8dbe3 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=0951cbd8dbe3
Modified Files:
        clients/Tests/exports.stable.out
        gdk/ChangeLog
        gdk/gdk.h
        gdk/gdk_bat.c
        gdk/gdk_batop.c
        gdk/gdk_group.c
        monetdb5/modules/kernel/bat5.c
        monetdb5/modules/mal/remote.c
Branch: default
Log Message:

Changed BAT{assert,derive}HeadProps to BAT{assert,derive}TailProps.


diffs (truncated from 638 to 300 lines):

diff --git a/clients/Tests/exports.stable.out b/clients/Tests/exports.stable.out
--- a/clients/Tests/exports.stable.out
+++ b/clients/Tests/exports.stable.out
@@ -107,8 +107,8 @@ BAT *BATconstant(int tt, const void *val
 BAT *BATconvert(BAT *b, BAT *s, int tp, int abort_on_error);
 BUN BATcount_no_nil(BAT *b);
 BAT *BATdense(oid hseq, oid tseq, BUN cnt) __attribute__((warn_unused_result));
-void BATderiveHeadProps(BAT *b, int expensive);
 void BATderiveProps(BAT *b, int expensive);
+void BATderiveTailProps(BAT *b, int expensive);
 BAT *BATdiff(BAT *l, BAT *r, BAT *sl, BAT *sr, int nil_matches, BUN estimate);
 gdk_return BATextend(BAT *b, BUN newcap);
 void BATfakeCommit(BAT *b);
diff --git a/gdk/ChangeLog b/gdk/ChangeLog
--- a/gdk/ChangeLog
+++ b/gdk/ChangeLog
@@ -2,6 +2,8 @@
 # This file is updated with Maddlog
 
 * Thu Dec 17 2015 Sjoerd Mullender <sjo...@acm.org>
+- Changed BATderiveHeadProps to BATderiveTailProps (and it now works on
+  the tail column).
 - Removed unused functions BATalpha, BATdelta, and BATprev.
 
 * Mon Dec 14 2015 Sjoerd Mullender <sjo...@acm.org>
diff --git a/gdk/gdk.h b/gdk/gdk.h
--- a/gdk/gdk.h
+++ b/gdk/gdk.h
@@ -2705,7 +2705,7 @@ gdk_export int ALIGNsynced(BAT *b1, BAT 
 
 gdk_export void BATassertProps(BAT *b);
 gdk_export void BATderiveProps(BAT *b, int expensive);
-gdk_export void BATderiveHeadProps(BAT *b, int expensive);
+gdk_export void BATderiveTailProps(BAT *b, int expensive);
 
 #define BATPROPS_QUICK  0      /* only derive easy (non-resource consuming) 
properties */
 #define BATPROPS_ALL   1       /* derive all possible properties; no matter 
what cost (key=hash) */
diff --git a/gdk/gdk_bat.c b/gdk/gdk_bat.c
--- a/gdk/gdk_bat.c
+++ b/gdk/gdk_bat.c
@@ -1996,7 +1996,7 @@ BATmode(BAT *b, int mode)
 #endif
 
 static void
-BATassertHeadProps(BAT *b)
+BATassertTailProps(BAT *b)
 {
        BATiter bi = bat_iterator(b);
        BUN p, q;
@@ -2006,109 +2006,109 @@ BATassertHeadProps(BAT *b)
        int seennil = 0;
 
        assert(b != NULL);
-       assert(b->htype >= TYPE_void);
-       assert(b->htype < GDKatomcnt);
-       assert(b->htype != TYPE_bat);
+       assert(b->ttype >= TYPE_void);
+       assert(b->ttype < GDKatomcnt);
+       assert(b->ttype != TYPE_bat);
        /* if BOUND2BTRUE is set, then so must the low order bit */
-       assert(!(b->hkey & BOUND2BTRUE) || (b->hkey & 1)); /* hkey != 2 */
+       assert(!(b->tkey & BOUND2BTRUE) || (b->tkey & 1)); /* tkey != 2 */
        assert(isVIEW(b) ||
-              b->htype == TYPE_void ||
-              BBPfarms[b->H->heap.farmid].roles & (1 << b->batRole));
+              b->ttype == TYPE_void ||
+              BBPfarms[b->T->heap.farmid].roles & (1 << b->batRole));
        assert(isVIEW(b) ||
-              b->H->vheap == NULL ||
-              (BBPfarms[b->H->vheap->farmid].roles & (1 << b->batRole)));
+              b->T->vheap == NULL ||
+              (BBPfarms[b->T->vheap->farmid].roles & (1 << b->batRole)));
 
-       cmpf = ATOMcompare(b->htype);
-       nilp = ATOMnilptr(b->htype);
+       cmpf = ATOMcompare(b->ttype);
+       nilp = ATOMnilptr(b->ttype);
        p = BUNfirst(b);
        q = BUNlast(b);
 
-       assert(b->H->heap.free >= headsize(b, BUNlast(b)));
-       if (b->htype != TYPE_void) {
+       assert(b->T->heap.free >= tailsize(b, BUNlast(b)));
+       if (b->ttype != TYPE_void) {
                assert(b->batCount <= b->batCapacity);
-               assert(b->H->heap.size >= b->H->heap.free);
-               assert(b->H->heap.size >> b->H->shift >= b->batCapacity);
+               assert(b->T->heap.size >= b->T->heap.free);
+               assert(b->T->heap.size >> b->T->shift >= b->batCapacity);
        }
 
        /* void and str imply varsized */
-       if (b->htype == TYPE_void ||
-           ATOMstorage(b->htype) == TYPE_str)
-               assert(b->hvarsized);
+       if (b->ttype == TYPE_void ||
+           ATOMstorage(b->ttype) == TYPE_str)
+               assert(b->tvarsized);
        /* other "known" types are not varsized */
-       if (ATOMstorage(b->htype) > TYPE_void &&
-           ATOMstorage(b->htype) < TYPE_str)
-               assert(!b->hvarsized);
+       if (ATOMstorage(b->ttype) > TYPE_void &&
+           ATOMstorage(b->ttype) < TYPE_str)
+               assert(!b->tvarsized);
        /* shift and width have a particular relationship */
-       assert(b->H->shift >= 0);
-       if (b->hdense)
-               assert(b->htype == TYPE_oid || b->htype == TYPE_void);
+       assert(b->T->shift >= 0);
+       if (b->tdense)
+               assert(b->ttype == TYPE_oid || b->ttype == TYPE_void);
        /* a column cannot both have and not have NILs */
-       assert(!b->H->nil || !b->H->nonil);
-       assert(b->hseqbase <= oid_nil);
-       if (b->htype == TYPE_void) {
-               assert(b->H->shift == 0);
-               assert(b->H->width == 0);
-               if (b->hseqbase == oid_nil) {
-                       assert(BATcount(b) == 0 || !b->H->nonil);
-                       assert(BATcount(b) <= 1 || !b->hkey);
-                       /* assert(!b->hdense); */
-                       assert(b->hsorted);
-                       assert(b->hrevsorted);
+       assert(!b->T->nil || !b->T->nonil);
+       assert(b->tseqbase <= oid_nil);
+       if (b->ttype == TYPE_void) {
+               assert(b->T->shift == 0);
+               assert(b->T->width == 0);
+               if (b->tseqbase == oid_nil) {
+                       assert(BATcount(b) == 0 || !b->T->nonil);
+                       assert(BATcount(b) <= 1 || !b->tkey);
+                       /* assert(!b->tdense); */
+                       assert(b->tsorted);
+                       assert(b->trevsorted);
                } else {
-                       assert(BATcount(b) == 0 || !b->H->nil);
-                       assert(BATcount(b) <= 1 || !b->hrevsorted);
-                       /* assert(b->hdense); */
-                       assert(b->hkey);
-                       assert(b->hsorted);
+                       assert(BATcount(b) == 0 || !b->T->nil);
+                       assert(BATcount(b) <= 1 || !b->trevsorted);
+                       /* assert(b->tdense); */
+                       assert(b->tkey);
+                       assert(b->tsorted);
                }
                return;
        }
-       if (ATOMstorage(b->htype) == TYPE_str)
-               assert(b->H->width >= 1 && b->H->width <= ATOMsize(b->htype));
+       if (ATOMstorage(b->ttype) == TYPE_str)
+               assert(b->T->width >= 1 && b->T->width <= ATOMsize(b->ttype));
        else
-               assert(b->H->width == ATOMsize(b->htype));
-       assert(1 << b->H->shift == b->H->width);
-       if (b->htype == TYPE_oid && b->hdense) {
-               assert(b->hsorted);
-               assert(b->hseqbase != oid_nil);
+               assert(b->T->width == ATOMsize(b->ttype));
+       assert(1 << b->T->shift == b->T->width);
+       if (b->ttype == TYPE_oid && b->tdense) {
+               assert(b->tsorted);
+               assert(b->tseqbase != oid_nil);
                if (b->batCount > 0) {
-                       assert(b->hseqbase != oid_nil);
-                       assert(* (oid *) BUNhead(bi, p) == b->hseqbase);
+                       assert(b->tseqbase != oid_nil);
+                       assert(* (oid *) BUNtail(bi, p) == b->tseqbase);
                }
        }
        /* only linear atoms can be sorted */
-       assert(!b->hsorted || ATOMlinear(b->htype));
-       assert(!b->hrevsorted || ATOMlinear(b->htype));
+       assert(!b->tsorted || ATOMlinear(b->ttype));
+       assert(!b->trevsorted || ATOMlinear(b->ttype));
        /* var heaps must have sane sizes */
-       assert(b->H->vheap == NULL || b->H->vheap->free <= b->H->vheap->size);
+       assert(b->T->vheap == NULL || b->T->vheap->free <= b->T->vheap->size);
 
-       if (!b->hkey && !b->hsorted && !b->hrevsorted &&
-           !b->H->nonil && !b->H->nil) {
+       if (!b->tkey && !b->tsorted && !b->trevsorted &&
+           !b->T->nonil && !b->T->nil) {
                /* nothing more to prove */
                return;
        }
 
        PROPDEBUG { /* only do a scan if property checking is requested */
-               if (b->hsorted || b->hrevsorted || !b->hkey) {
+               if (b->tsorted || b->trevsorted || !b->tkey) {
                        /* if sorted (either way), or we don't have to
                         * prove uniqueness, we can do a simple
                         * scan */
                        /* only call compare function if we have to */
-                       int cmpprv = b->hsorted | b->hrevsorted | b->hkey;
-                       int cmpnil = b->H->nonil | b->H->nil;
+                       int cmpprv = b->tsorted | b->trevsorted | b->tkey;
+                       int cmpnil = b->T->nonil | b->T->nil;
 
                        BATloop(b, p, q) {
-                               valp = BUNhead(bi, p);
+                               valp = BUNtail(bi, p);
                                if (prev && cmpprv) {
                                        cmp = cmpf(prev, valp);
-                                       assert(!b->hsorted || cmp <= 0);
-                                       assert(!b->hrevsorted || cmp >= 0);
-                                       assert(!b->hkey || cmp != 0);
-                                       assert(!b->hdense || * (oid *) prev + 1 
== * (oid *) valp);
+                                       assert(!b->tsorted || cmp <= 0);
+                                       assert(!b->trevsorted || cmp >= 0);
+                                       assert(!b->tkey || cmp != 0);
+                                       assert(!b->tdense || * (oid *) prev + 1 
== * (oid *) valp);
                                }
                                if (cmpnil) {
                                        cmp = cmpf(valp, nilp);
-                                       assert(!b->H->nonil || cmp != 0);
+                                       assert(!b->T->nonil || cmp != 0);
                                        if (cmp == 0) {
                                                /* we found a nil:
                                                 * we're done checking
@@ -2129,7 +2129,7 @@ BATassertHeadProps(BAT *b)
                                }
                                prev = valp;
                        }
-               } else {        /* b->hkey && !b->hsorted && !b->hrevsorted */
+               } else {        /* b->tkey && !b->tsorted && !b->trevsorted */
                        /* we need to check for uniqueness the hard
                         * way (i.e. using a hash table) */
                        const char *nme = BBP_physical(b->batCacheid);
@@ -2151,15 +2151,15 @@ BATassertHeadProps(BAT *b)
                        snprintf(hp->filename, nmelen + 30,
                                 "%s.hash" SZFMT, nme, MT_getpid());
                        ext = GDKstrdup(hp->filename + nmelen + 1);
-                       if (ATOMsize(b->htype) == 1)
+                       if (ATOMsize(b->ttype) == 1)
                                mask = 1 << 8;
-                       else if (ATOMsize(b->htype) == 2)
+                       else if (ATOMsize(b->ttype) == 2)
                                mask = 1 << 16;
                        else
                                mask = HASHmask(b->batCount);
-                       if ((hp->farmid = BBPselectfarm(TRANSIENT, b->htype,
+                       if ((hp->farmid = BBPselectfarm(TRANSIENT, b->ttype,
                                                        hashheap)) < 0 ||
-                           (hs = HASHnew(hp, b->htype, BUNlast(b),
+                           (hs = HASHnew(hp, b->ttype, BUNlast(b),
                                          mask, BUN_NONE)) == NULL) {
                                GDKfree(ext);
                                GDKfree(hp->filename);
@@ -2172,17 +2172,17 @@ BATassertHeadProps(BAT *b)
                        BATloop(b, p, q) {
                                BUN hb;
                                BUN prb;
-                               valp = BUNhead(bi, p);
+                               valp = BUNtail(bi, p);
                                prb = HASHprobe(hs, valp);
                                for (hb = HASHget(hs,prb);
                                     hb != HASHnil(hs);
                                     hb = HASHgetlink(hs,hb))
-                                       if (cmpf(valp, BUNhead(bi, hb)) == 0)
-                                               assert(!b->hkey);
+                                       if (cmpf(valp, BUNtail(bi, hb)) == 0)
+                                               assert(!b->tkey);
                                HASHputlink(hs,p, HASHget(hs,prb));
                                HASHput(hs,prb,p);
                                cmp = cmpf(valp, nilp);
-                               assert(!b->H->nonil || cmp != 0);
+                               assert(!b->T->nonil || cmp != 0);
                                if (cmp == 0)
                                        seennil = 1;
                        }
@@ -2192,7 +2192,7 @@ BATassertHeadProps(BAT *b)
                        GDKfree(ext);
                }
          abort_check:
-               assert(!b->H->nil || seennil);
+               assert(!b->T->nil || seennil);
        }
 }
 
@@ -2236,6 +2236,9 @@ BATassertProps(BAT *b)
 
        /* general BAT sanity */
        assert(b != NULL);
+       assert(b->batCacheid > 0);
+       assert(VIEWhparent(b) == 0);
+       assert(VIEWvhparent(b) == 0);
        bm = BATmirror(b);
        assert(bm != NULL);
        assert(b->H == bm->T);
@@ -2257,9 +2260,9 @@ BATassertProps(BAT *b)
               ((bbpstatus & BBPEXISTING) != 0) +
               ((bbpstatus & BBPNEW) != 0) <= 1);
 
-       BATassertHeadProps(b);
+       BATassertTailProps(b);
        if (b->H != bm->H)
-               BATassertHeadProps(bm);
+               BATassertTailProps(bm);
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to