Changeset: 01b84231395d for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=01b84231395d
Modified Files:
        gdk/gdk.h
        gdk/gdk_bat.c
        gdk/gdk_join.c
        gdk/gdk_search.h
        gdk/gdk_select.c
        gdk/gdk_setop.c
        monetdb5/modules/atoms/str.c
        monetdb5/modules/mal/tokenizer.c
        sql/backends/monet5/generator/Tests/crash.Bug-3609.stable.err
        sql/backends/monet5/sql.c
        sql/server/rel_select.c
Branch: default
Log Message:

Merge changes to default


diffs (truncated from 396 to 300 lines):

diff --git a/gdk/gdk.h b/gdk/gdk.h
--- a/gdk/gdk.h
+++ b/gdk/gdk.h
@@ -3078,17 +3078,17 @@ gdk_export int ALIGNsetH(BAT *b1, BAT *b
        for (hb = HASHget(h, HASHprobe((h), v));                \
             hb != HASHnil(h);                                  \
             hb = HASHgetlink(h,hb))                            \
-               if (ATOMcmp(h->type, v, BUNhead(bi, hb)) == 0)
+               if (ATOMcmp(h->type, v, BUNtail(bi, hb)) == 0)
 #define HASHloop_str_hv(bi, h, hb, v)                          \
        for (hb = HASHget((h),((BUN *) (v))[-1]&(h)->mask);     \
             hb != HASHnil(h);                                  \
             hb = HASHgetlink(h,hb))                            \
-               if (GDK_STREQ(v, BUNhvar(bi, hb)))
+               if (GDK_STREQ(v, BUNtvar(bi, hb)))
 #define HASHloop_str(bi, h, hb, v)                     \
        for (hb = HASHget((h),strHash(v)&(h)->mask);    \
             hb != HASHnil(h);                          \
             hb = HASHgetlink(h,hb))                    \
-               if (GDK_STREQ(v, BUNhvar(bi, hb)))
+               if (GDK_STREQ(v, BUNtvar(bi, hb)))
 
 /*
  * For string search, we can optimize if the string heap has
@@ -3098,28 +3098,28 @@ gdk_export int ALIGNsetH(BAT *b1, BAT *b
  * numbers instead of strings:
  */
 #define HASHloop_fstr(bi, h, hb, idx, v)                               \
-       for (hb = HASHget(h, strHash(v)&h->mask), idx = 
strLocate((bi.b)->H->vheap,v); \
+       for (hb = HASHget(h, strHash(v)&h->mask), idx = 
strLocate((bi.b)->T->vheap,v); \
             hb != HASHnil(h); hb = HASHgetlink(h,hb))                          
\
-               if (VarHeapValRaw((bi).b->H->heap.base, hb, (bi).b->H->width) 
== idx)
+               if (VarHeapValRaw((bi).b->T->heap.base, hb, (bi).b->T->width) 
== idx)
 /*
  * The following example shows how the hashloop is used:
  *
  * @verbatim
  * void
- * print_books(BAT *author_books, str author)
+ * print_books(BAT *books_author, str author)
  * {
- *         BAT *b = author_books;
+ *         BAT *b = books_author;
  *         BUN i;
  *
  *         printf("%s\n==================\n", author);
- *         HASHloop(b, (b)->H->hash, i, author)
- *                     printf("%s\n", ((str) BUNtail(b, i));
+ *         HASHloop(b, (b)->T->hash, i, author)
+ *                     printf("%s\n", ((str) BUNhead(b, i));
  * }
  * @end verbatim
  *
  * Note that for optimization purposes, we could have used a
- * HASHloop_str instead, and also a BUNtvar instead of a BUNtail
- * (since we know the tail-type of author_books is string, hence
+ * HASHloop_str instead, and also a BUNhvar instead of a BUNhead
+ * (since we know the head-type of books_author is string, hence
  * variable-sized). However, this would make the code less general.
  *
  * @- specialized hashloops
@@ -3132,18 +3132,18 @@ gdk_export int ALIGNsetH(BAT *b1, BAT *b
        for (hb = HASHget(h, HASHprobe(h, v));                  \
             hb != HASHnil(h);                                  \
             hb = HASHgetlink(h,hb))                            \
-               if (ATOMcmp(h->type, v, BUNhloc(bi, hb)) == 0)
+               if (ATOMcmp(h->type, v, BUNtloc(bi, hb)) == 0)
 #define HASHloopvar(bi, h, hb, v)                              \
        for (hb = HASHget(h,HASHprobe(h, v));                   \
             hb != HASHnil(h);                                  \
             hb = HASHgetlink(h,hb))                            \
-               if (ATOMcmp(h->type, v, BUNhvar(bi, hb)) == 0)
+               if (ATOMcmp(h->type, v, BUNtvar(bi, hb)) == 0)
 
 #define HASHloop_TYPE(bi, h, hb, v, TYPE)                      \
        for (hb = HASHget(h, hash_##TYPE(h, v));                \
             hb != HASHnil(h);                                  \
             hb = HASHgetlink(h,hb))                            \
-               if (simple_EQ(v, BUNhloc(bi, hb), TYPE))
+               if (simple_EQ(v, BUNtloc(bi, hb), TYPE))
 
 #define HASHloop_bit(bi, h, hb, v)     HASHloop_TYPE(bi, h, hb, v, bte)
 #define HASHloop_bte(bi, h, hb, v)     HASHloop_TYPE(bi, h, hb, v, bte)
@@ -3164,7 +3164,7 @@ gdk_export int ALIGNsetH(BAT *b1, BAT *b
        for (hb = HASHget(h, hash_any(h, v));                   \
             hb != HASHnil(h);                                  \
             hb = HASHgetlink(h,hb))                            \
-               if (atom_EQ(v, BUNhead(bi, hb), (bi).b->htype))
+               if (atom_EQ(v, BUNtail(bi, hb), (bi).b->ttype))
 
 /*
  * @- loop over a BAT with ordered tail
diff --git a/gdk/gdk_bat.c b/gdk/gdk_bat.c
--- a/gdk/gdk_bat.c
+++ b/gdk/gdk_bat.c
@@ -1792,7 +1792,7 @@ BUNfnd(BAT *b, const void *v)
                if (BATtordered(b) || BATtrevordered(b))
                        return SORTfnd(b, v);
        }
-       bi = bat_iterator(BATmirror(b)); /* HASHfnd works on head */
+       bi = bat_iterator(b);
        switch (ATOMstorage(b->ttype)) {
        case TYPE_bte:
                HASHfnd_bte(r, bi, v);
@@ -2040,25 +2040,26 @@ BUNlocate(BAT *b, const void *x, const v
        if (b->H->hash) {
                BUN h;
 
+               bi = bat_iterator(BATmirror(b)); /* HASHloop works on tail */
                if (hint && tint) {
                        HASHloop_int(bi, b->H->hash, h, x)
-                           if (*(int *) y == *(int *) BUNtloc(bi, h))
+                           if (*(int *) y == *(int *) BUNhloc(bi, h))
                                return h;
                } else if (hint && tlng) {
                        HASHloop_int(bi, b->H->hash, h, x)
-                           if (*(lng *) y == *(lng *) BUNtloc(bi, h))
+                           if (*(lng *) y == *(lng *) BUNhloc(bi, h))
                                return h;
                } else if (hlng && tint) {
                        HASHloop_lng(bi, b->H->hash, h, x)
-                           if (*(int *) y == *(int *) BUNtloc(bi, h))
+                           if (*(int *) y == *(int *) BUNhloc(bi, h))
                                return h;
                } else if (hlng && tlng) {
                        HASHloop_lng(bi, b->H->hash, h, x)
-                           if (*(lng *) y == *(lng *) BUNtloc(bi, h))
+                           if (*(lng *) y == *(lng *) BUNhloc(bi, h))
                                return h;
                } else {
                        HASHloop(bi, b->H->hash, h, x)
-                           if ((*tcmp) (y, BUNtail(bi, h)) == 0)
+                           if ((*tcmp) (y, BUNhead(bi, h)) == 0)
                                return h;
                }
                return BUN_NONE;
diff --git a/gdk/gdk_join.c b/gdk/gdk_join.c
--- a/gdk/gdk_join.c
+++ b/gdk/gdk_join.c
@@ -1364,8 +1364,6 @@ hashjoin(BAT *r1, BAT *r2, BAT *l, BAT *
 
        if (BATprepareHash(r))
                goto bailout;
-       /* HASHloop works on HEAD column */
-       r = BATmirror(r);
        ri = bat_iterator(r);
        nrcand = (BUN) (rcandend - rcand);
 
@@ -1384,7 +1382,7 @@ hashjoin(BAT *r1, BAT *r2, BAT *l, BAT *
                        }
                        nr = 0;
                        if (rcand) {
-                               HASHloop(ri, r->H->hash, rb, v) {
+                               HASHloop(ri, r->T->hash, rb, v) {
                                        ro = (oid) (rb + rbun2oid);
                                        if (!binsearchcand(rcand, 0, nrcand, 
ro))
                                                continue;
@@ -1393,7 +1391,7 @@ hashjoin(BAT *r1, BAT *r2, BAT *l, BAT *
                                                break;
                                }
                        } else {
-                               HASHloop(ri, r->H->hash, rb, v) {
+                               HASHloop(ri, r->T->hash, rb, v) {
                                        rb0 = rb - BUNfirst(r); /* zero-based */
                                        if (rb0 < rstart || rb0 >= rend)
                                                continue;
@@ -1445,7 +1443,7 @@ hashjoin(BAT *r1, BAT *r2, BAT *l, BAT *
                                r1->trevsorted = 0;
                }
        } else {
-               int t = r->htype;
+               int t = r->ttype;
                if (t != ATOMstorage(t) &&
                    ATOMnilptr(ATOMstorage(t)) == ATOMnilptr(t) &&
                    BATatoms[ATOMstorage(t)].atomCmp == BATatoms[t].atomCmp &&
@@ -1466,7 +1464,7 @@ hashjoin(BAT *r1, BAT *r2, BAT *l, BAT *
                                        lskipped = BATcount(r1) > 0;
                                        continue;
                                }
-                               HASHloop(ri, r->H->hash, rb, v) {
+                               HASHloop(ri, r->T->hash, rb, v) {
                                        ro = (oid) (rb + rbun2oid);
                                        if (!binsearchcand(rcand, 0, nrcand, 
ro))
                                                continue;
@@ -1481,7 +1479,7 @@ hashjoin(BAT *r1, BAT *r2, BAT *l, BAT *
                                                lskipped = BATcount(r1) > 0;
                                                continue;
                                        }
-                                       HASHloop_int(ri, r->H->hash, rb, v) {
+                                       HASHloop_int(ri, r->T->hash, rb, v) {
                                                rb0 = rb - BUNfirst(r); /* 
zero-based */
                                                if (rb0 < rstart || rb0 >= rend)
                                                        continue;
@@ -1496,7 +1494,7 @@ hashjoin(BAT *r1, BAT *r2, BAT *l, BAT *
                                                lskipped = BATcount(r1) > 0;
                                                continue;
                                        }
-                                       HASHloop_lng(ri, r->H->hash, rb, v) {
+                                       HASHloop_lng(ri, r->T->hash, rb, v) {
                                                rb0 = rb - BUNfirst(r); /* 
zero-based */
                                                if (rb0 < rstart || rb0 >= rend)
                                                        continue;
@@ -1512,7 +1510,7 @@ hashjoin(BAT *r1, BAT *r2, BAT *l, BAT *
                                                lskipped = BATcount(r1) > 0;
                                                continue;
                                        }
-                                       HASHloop_hge(ri, r->H->hash, rb, v) {
+                                       HASHloop_hge(ri, r->T->hash, rb, v) {
                                                rb0 = rb - BUNfirst(r); /* 
zero-based */
                                                if (rb0 < rstart || rb0 >= rend)
                                                        continue;
@@ -1528,7 +1526,7 @@ hashjoin(BAT *r1, BAT *r2, BAT *l, BAT *
                                                lskipped = BATcount(r1) > 0;
                                                continue;
                                        }
-                                       HASHloop(ri, r->H->hash, rb, v) {
+                                       HASHloop(ri, r->T->hash, rb, v) {
                                                rb0 = rb - BUNfirst(r); /* 
zero-based */
                                                if (rb0 < rstart || rb0 >= rend)
                                                        continue;
diff --git a/gdk/gdk_search.h b/gdk/gdk_search.h
--- a/gdk/gdk_search.h
+++ b/gdk/gdk_search.h
@@ -211,8 +211,8 @@ gdk_export BUN HASHlist(Hash *h, BUN i);
        do {                                                            \
                BUN _i;                                                 \
                (x) = BUN_NONE;                                         \
-               if ((y).b->H->hash || BAThash(BATmirror((y).b), 0)) {   \
-                       HASHloop_str((y), (y).b->H->hash, _i, (z)) {    \
+               if ((y).b->T->hash || BAThash((y).b, 0)) {              \
+                       HASHloop_str((y), (y).b->T->hash, _i, (z)) {    \
                                (x) = _i;                               \
                                break;                                  \
                        }                                               \
@@ -223,8 +223,8 @@ gdk_export BUN HASHlist(Hash *h, BUN i);
        do {                                                            \
                BUN _i;                                                 \
                (x) = BUN_NONE;                                         \
-               if ((y).b->H->hash || BAThash(BATmirror((y).b), 0)) {   \
-                       HASHloop_str_hv((y), (y).b->H->hash, _i, (z)) { \
+               if ((y).b->T->hash || BAThash((y).b, 0)) {              \
+                       HASHloop_str_hv((y), (y).b->T->hash, _i, (z)) { \
                                (x) = _i;                               \
                                break;                                  \
                        }                                               \
@@ -235,8 +235,8 @@ gdk_export BUN HASHlist(Hash *h, BUN i);
        do {                                                            \
                BUN _i;                                                 \
                (x) = BUN_NONE;                                         \
-               if ((y).b->H->hash || BAThash(BATmirror((y).b), 0)) {   \
-                       HASHloop((y), (y).b->H->hash, _i, (z)) {        \
+               if ((y).b->T->hash || BAThash((y).b, 0)) {              \
+                       HASHloop((y), (y).b->T->hash, _i, (z)) {        \
                                (x) = _i;                               \
                                break;                                  \
                        }                                               \
@@ -247,8 +247,8 @@ gdk_export BUN HASHlist(Hash *h, BUN i);
        do {                                                            \
                BUN _i;                                                 \
                (x) = BUN_NONE;                                         \
-               if ((y).b->H->hash || BAThash(BATmirror((y).b), 0)) {   \
-                       HASHloop_##TYPE((y), (y).b->H->hash, _i, (z)) { \
+               if ((y).b->T->hash || BAThash((y).b, 0)) {              \
+                       HASHloop_##TYPE((y), (y).b->T->hash, _i, (z)) { \
                                (x) = _i;                               \
                                break;                                  \
                        }                                               \
diff --git a/gdk/gdk_select.c b/gdk/gdk_select.c
--- a/gdk/gdk_select.c
+++ b/gdk/gdk_select.c
@@ -182,13 +182,12 @@ BAT_hashselect(BAT *b, BAT *s, BAT *bn, 
                BBPreclaim(bn);
                return NULL;
        }
-       b = BATmirror(b);       /* HASHloop works on HEAD column */
        bi = bat_iterator(b);
        dst = (oid *) Tloc(bn, BUNfirst(bn));
        cnt = 0;
        if (s) {
                assert(s->tsorted);
-               HASHloop(bi, b->H->hash, i, tl) {
+               HASHloop(bi, b->T->hash, i, tl) {
                        o = (oid) (i + off);
                        if (SORTfnd(s, &o) != BUN_NONE) {
                                buninsfix(bn, dst, cnt, o,
@@ -198,7 +197,7 @@ BAT_hashselect(BAT *b, BAT *s, BAT *bn, 
                        }
                }
        } else {
-               HASHloop(bi, b->H->hash, i, tl) {
+               HASHloop(bi, b->T->hash, i, tl) {
                        o = (oid) (i + off);
                        buninsfix(bn, dst, cnt, o,
                                  maximum - BATcapacity(bn),
diff --git a/gdk/gdk_setop.c b/gdk/gdk_setop.c
--- a/gdk/gdk_setop.c
+++ b/gdk/gdk_setop.c
@@ -138,7 +138,7 @@
                BUN s2;                                                 \
                ptr h, t, h2 = hnil;                                    \
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to