Changeset: 3a42e350f206 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=3a42e350f206
Modified Files:
        clients/Tests/exports.stable.out
        gdk/ChangeLog
        gdk/gdk.h
        gdk/gdk_aggr.c
        gdk/gdk_align.c
        gdk/gdk_bat.c
        gdk/gdk_batop.c
        gdk/gdk_cross.c
        gdk/gdk_firstn.c
        gdk/gdk_group.c
        gdk/gdk_join.c
        gdk/gdk_logger.c
        gdk/gdk_project.c
        gdk/gdk_sample.c
        gdk/gdk_select.c
        gdk/gdk_unique.c
        monetdb5/mal/mal_authorize.c
        monetdb5/modules/mal/batExtensions.c
        monetdb5/modules/mal/inspect.c
        monetdb5/modules/mal/iterator.c
        monetdb5/modules/mal/mat.c
        sql/backends/monet5/generator/generator.c
        sql/backends/monet5/sql.c
        sql/storage/bat/bat_storage.c
        sql/storage/bat/bat_utils.c
Branch: default
Log Message:

Replaced BATseqbase with BAThseqbase and BATtseqbase.


diffs (truncated from 922 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
@@ -132,6 +132,7 @@ BAT *BATgroupvariance_population(BAT *b,
 BAT *BATgroupvariance_sample(BAT *b, BAT *g, BAT *e, BAT *s, int tp, int 
skip_nils, int abort_on_error);
 BUN BATgrows(BAT *b);
 gdk_return BAThash(BAT *b, BUN masksize);
+void BAThseqbase(BAT *b, oid o);
 gdk_return BATimprints(BAT *b);
 BAT *BATintersectcand(BAT *a, BAT *b);
 gdk_return BATjoin(BAT **r1p, BAT **r2p, BAT *l, BAT *r, BAT *sl, BAT *sr, int 
nil_matches, BUN estimate);
@@ -161,7 +162,6 @@ BAT *BATsample(BAT *b, BUN n);
 gdk_return BATsave(BAT *b);
 BAT *BATselect(BAT *b, BAT *s, const void *tl, const void *th, int li, int hi, 
int anti);
 gdk_return BATsemijoin(BAT **r1p, BAT **r2p, BAT *l, BAT *r, BAT *sl, BAT *sr, 
int nil_matches, BUN estimate);
-void BATseqbase(BAT *b, oid o);
 gdk_return BATsetaccess(BAT *b, int mode);
 void BATsetcapacity(BAT *b, BUN cnt);
 void BATsetcount(BAT *b, BUN cnt);
@@ -172,6 +172,7 @@ gdk_return BATsubcross(BAT **r1p, BAT **
 gdk_return BATsum(void *res, int tp, BAT *b, BAT *s, int skip_nils, int 
abort_on_error, int nil_if_empty);
 gdk_return BATthetajoin(BAT **r1p, BAT **r2p, BAT *l, BAT *r, BAT *sl, BAT 
*sr, int op, int nil_matches, BUN estimate);
 BAT *BATthetaselect(BAT *b, BAT *s, const void *val, const char *op);
+void BATtseqbase(BAT *b, oid o);
 void BATundo(BAT *b);
 BAT *BATunique(BAT *b, BAT *s);
 BBPrec *BBP[N_BBPINIT];
diff --git a/gdk/ChangeLog b/gdk/ChangeLog
--- a/gdk/ChangeLog
+++ b/gdk/ChangeLog
@@ -1,6 +1,11 @@
 # ChangeLog file for MonetDB
 # This file is updated with Maddlog
 
+* Mon Jun 27 2016 Sjoerd Mullender <[email protected]>
+- Replaced BATseqbase with BAThseqbase and BATtseqbase, the former for
+  setting the seqbase on the HEAD, the latter for setting the seqbase
+  on the TAIL.
+
 * Fri Jun 24 2016 Sjoerd Mullender <[email protected]>
 - Replaced function BATnew with COLnew with slightly different arguments:
   the first argument of COLnew is the SEQBASE of the head column (which
diff --git a/gdk/gdk.h b/gdk/gdk.h
--- a/gdk/gdk.h
+++ b/gdk/gdk.h
@@ -1486,7 +1486,8 @@ gdk_export gdk_return BATkey(BAT *b, int
 gdk_export gdk_return BATmode(BAT *b, int onoff);
 gdk_export void BATroles(BAT *b, const char *hnme, const char *tnme);
 gdk_export int BATname(BAT *b, const char *nme);
-gdk_export void BATseqbase(BAT *b, oid o);
+gdk_export void BAThseqbase(BAT *b, oid o);
+gdk_export void BATtseqbase(BAT *b, oid o);
 gdk_export gdk_return BATsetaccess(BAT *b, int mode);
 gdk_export int BATgetaccess(BAT *b);
 
diff --git a/gdk/gdk_aggr.c b/gdk/gdk_aggr.c
--- a/gdk/gdk_aggr.c
+++ b/gdk/gdk_aggr.c
@@ -2433,7 +2433,7 @@ BATgroupquantile(BAT *b, BAT *g, BAT *e,
                        /* singleton groups, so calculating quantile is
                         * easy */
                        bn = COLcopy(b, b->ttype, 0, TRANSIENT);
-                       BATseqbase(bn, g->tseqbase);
+                       BAThseqbase(bn, g->tseqbase);
                        if (freeg)
                                BBPunfix(g->batCacheid);
                        return bn;
diff --git a/gdk/gdk_align.c b/gdk/gdk_align.c
--- a/gdk/gdk_align.c
+++ b/gdk/gdk_align.c
@@ -104,14 +104,14 @@ ALIGNsetT(BAT *b1, BAT *b2)
                        b1->tdense = TRUE;
                else if (b2->tseqbase == oid_nil)
                        b1->T->nonil = FALSE;
-               BATseqbase(BATmirror(b1), b2->tseqbase);
+               BATtseqbase(b1, b2->tseqbase);
        } else if (b1->ttype != TYPE_void) {
                /* b2 is not dense, so set b1 not dense */
                b1->tdense = FALSE;
-               BATseqbase(BATmirror(b1), oid_nil);
+               BATtseqbase(b1, oid_nil);
                b1->T->nonil = b2->T->nonil;
        } else if (BATtkey(b2))
-               BATseqbase(BATmirror(b1), 0);
+               BATtseqbase(b1, 0);
        BATkey(BATmirror(b1), BATtkey(b2));
        b1->tsorted = BATtordered(b2);
        b1->trevsorted = BATtrevordered(b2);
diff --git a/gdk/gdk_bat.c b/gdk/gdk_bat.c
--- a/gdk/gdk_bat.c
+++ b/gdk/gdk_bat.c
@@ -274,7 +274,7 @@ BATdense(oid hseq, oid tseq, BUN cnt)
        bn = COLnew(hseq, TYPE_void, 0, TRANSIENT);
        if (bn == NULL)
                return NULL;
-       BATseqbase(BATmirror(bn), tseq);
+       BATtseqbase(bn, tseq);
        BATsetcount(bn, cnt);
        return bn;
 }
@@ -487,8 +487,8 @@ BATclear(BAT *b, int force)
        else
                b->batFirst = b->batInserted;
        BATsetcount(b,0);
-       BATseqbase(b, 0);
-       BATseqbase(BATmirror(b), 0);
+       BAThseqbase(b, 0);
+       BATtseqbase(b, 0);
        b->batDirty = TRUE;
        BATsettrivprop(b);
        b->H->nosorted = b->H->norevsorted = b->H->nodense = 0;
@@ -1503,52 +1503,79 @@ BATkey(BAT *b, int flag)
        return GDK_SUCCEED;
 }
 
+void
+BAThseqbase(BAT *b, oid o)
+{
+       if (b == NULL)
+               return;
+       assert(o < oid_nil);
+       assert(o + BATcount(b) < oid_nil);
+       assert(b->htype == TYPE_void);
+       if (b->hseqbase != o) {
+               b->batDirtydesc = TRUE;
+               b->hseqbase = o;
+               /* zap alignment if column is changed by new
+                * seqbase */
+               b->halign = 0;
+       }
+
+       b->hrevsorted = b->batCount <= 1;
+       if (!b->hrevsorted)
+               b->H->norevsorted = BUNfirst(b) + 1;
+
+       /* other properties should already be correct */
+       assert(b->hkey & 1);
+       assert(b->H->nonil);
+       assert(!b->H->nil);
+       assert(b->hsorted);
+}
 
 void
-BATseqbase(BAT *b, oid o)
+BATtseqbase(BAT *b, oid o)
 {
        if (b == NULL)
                return;
        assert(o <= oid_nil);
-       if (ATOMtype(b->htype) == TYPE_oid) {
-               if (b->hseqbase != o) {
+       assert(o == oid_nil || o + BATcount(b) < oid_nil);
+       if (ATOMtype(b->ttype) == TYPE_oid) {
+               if (b->tseqbase != o) {
                        b->batDirtydesc = TRUE;
                        /* zap alignment if column is changed by new
                         * seqbase */
-                       if (b->htype == TYPE_void)
-                               b->halign = 0;
+                       if (b->ttype == TYPE_void)
+                               b->talign = 0;
                }
-               b->hseqbase = o;
-               if (b->htype == TYPE_oid && o == oid_nil) {
-                       b->hdense = 0;
-                       b->H->nodense = BUNfirst(b);
+               b->tseqbase = o;
+               if (b->ttype == TYPE_oid && o == oid_nil) {
+                       b->tdense = 0;
+                       b->T->nodense = BUNfirst(b);
                }
 
                /* adapt keyness */
-               if (BAThvoid(b)) {
+               if (BATtvoid(b)) {
                        if (o == oid_nil) {
-                               b->hkey = b->batCount <= 1;
-                               b->H->nonil = b->batCount == 0;
-                               b->H->nil = b->batCount > 0;
-                               b->hsorted = b->hrevsorted = 1;
-                               b->H->nosorted = b->H->norevsorted = 0;
-                               if (!b->hkey) {
-                                       b->H->nokey[0] = BUNfirst(b);
-                                       b->H->nokey[1] = BUNfirst(b) + 1;
+                               b->tkey = b->batCount <= 1;
+                               b->T->nonil = b->batCount == 0;
+                               b->T->nil = b->batCount > 0;
+                               b->tsorted = b->trevsorted = 1;
+                               b->T->nosorted = b->T->norevsorted = 0;
+                               if (!b->tkey) {
+                                       b->T->nokey[0] = BUNfirst(b);
+                                       b->T->nokey[1] = BUNfirst(b) + 1;
                                } else {
-                                       b->H->nokey[0] = b->H->nokey[1] = 0;
+                                       b->T->nokey[0] = b->T->nokey[1] = 0;
                                }
                        } else {
-                               if (!b->hkey) {
-                                       b->hkey = TRUE;
-                                       b->H->nokey[0] = b->H->nokey[1] = 0;
+                               if (!b->tkey) {
+                                       b->tkey = TRUE;
+                                       b->T->nokey[0] = b->T->nokey[1] = 0;
                                }
-                               b->H->nonil = 1;
-                               b->H->nil = 0;
-                               b->hsorted = 1;
-                               b->hrevsorted = b->batCount <= 1;
-                               if (!b->hrevsorted)
-                                       b->H->norevsorted = BUNfirst(b) + 1;
+                               b->T->nonil = 1;
+                               b->T->nil = 0;
+                               b->tsorted = 1;
+                               b->trevsorted = b->batCount <= 1;
+                               if (!b->trevsorted)
+                                       b->T->norevsorted = BUNfirst(b) + 1;
                        }
                }
        }
@@ -2283,11 +2310,11 @@ BATassertTailProps(BAT *b)
  * bit, when set, indicates that all values must be distinct
  * (BOUND2BTRUE).
  *
- * Note that the functions BATseqbase and BATkey also set more
+ * Note that the functions BATtseqbase and BATkey also set more
  * properties than you might suspect.  When setting properties on a
  * newly created and filled BAT, you may want to first make sure the
  * batCount is set correctly (e.g. by calling BATsetcount), then use
- * BATseqbase and BATkey, and finally set the other properties.
+ * BAThseqbase and BATkey, and finally set the other properties.
  */
 
 void
diff --git a/gdk/gdk_batop.c b/gdk/gdk_batop.c
--- a/gdk/gdk_batop.c
+++ b/gdk/gdk_batop.c
@@ -395,7 +395,7 @@ BATappend(BAT *b, BAT *n, bit force)
                        f = *(oid *) BUNtloc(bat_iterator(n), BUNfirst(n));
 
                if (BATcount(b) == 0 && f != oid_nil)
-                       BATseqbase(BATmirror(b), f);
+                       BATtseqbase(b, f);
                if (BATtdense(n) && BATcount(b) + b->tseqbase == f) {
                        sz += BATcount(b);
                        BATsetcount(b, sz);
@@ -712,7 +712,7 @@ BATslice(BAT *b, BUN l, BUN h)
                if (bn == NULL)
                        return NULL;
                VIEWbounds(b, bn, l - BUNfirst(b), h - BUNfirst(b));
-               BATseqbase(bn, (oid) (b->hseqbase + low));
+               BAThseqbase(bn, (oid) (b->hseqbase + low));
        } else {
                /* create a new BAT and put everything into it */
                BUN p = l;
@@ -765,16 +765,16 @@ BATslice(BAT *b, BUN l, BUN h)
        bni = bat_iterator(bn);
        if (BATtdense(b)) {
                bn->tdense = TRUE;
-               BATseqbase(BATmirror(bn), (oid) (b->tseqbase + low));
+               BATtseqbase(bn, (oid) (b->tseqbase + low));
        } else if (bn->tkey && bn->ttype == TYPE_oid) {
                if (BATcount(bn) == 0) {
                        bn->tdense = TRUE;
-                       BATseqbase(BATmirror(bn), 0);
+                       BATtseqbase(bn, 0);
                } else if (bn->tsorted &&
                           (foid = *(oid *) BUNtloc(bni, BUNfirst(bn))) != 
oid_nil &&
                           foid + BATcount(bn) - 1 == *(oid *) BUNtloc(bni, 
BUNlast(bn) - 1)) {
                        bn->tdense = TRUE;
-                       BATseqbase(BATmirror(bn), *(oid *) BUNtloc(bni, 
BUNfirst(bn)));
+                       BATtseqbase(bn, *(oid *) BUNtloc(bni, BUNfirst(bn)));
                }
        }
        if (bn->batCount <= 1) {
@@ -1017,7 +1017,7 @@ BATsort(BAT **sorted, BAT **order, BAT *
                        if (on == NULL)
                                goto error;
                        BATsetcount(on, BATcount(b));
-                       BATseqbase(BATmirror(on), b->hseqbase);
+                       BATtseqbase(on, b->hseqbase);
                        *order = on;
                }
                if (groups) {
@@ -1027,7 +1027,7 @@ BATsort(BAT **sorted, BAT **order, BAT *
                                if (gn == NULL)
                                        goto error;
                                BATsetcount(gn, BATcount(b));
-                               BATseqbase(BATmirror(gn), 0);
+                               BATtseqbase(gn, 0);
                        } else {
                                /* single group */
                                const oid *o = 0;
@@ -1067,7 +1067,7 @@ BATsort(BAT **sorted, BAT **order, BAT *
                                     TRANSIENT);
                        if (on == NULL)
                                goto error;
-                       BATseqbase(on, b->hseqbase);
+                       BAThseqbase(on, b->hseqbase);
                } else {
                        /* create new order */
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to