Changeset: 9238f56e75d2 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=9238f56e75d2
Modified Files:
        gdk/gdk_bbp.c
        gdk/gdk_hash.c
        sql/server/rel_optimizer.c
        sql/test/emptydb/Tests/check.stable.out
        sql/test/emptydb/Tests/check.stable.out.32bit
        sql/test/emptydb/Tests/check.stable.out.int128
Branch: default
Log Message:

Merge with Oct2020 branch.


diffs (79 lines):

diff --git a/gdk/gdk_hash.c b/gdk/gdk_hash.c
--- a/gdk/gdk_hash.c
+++ b/gdk/gdk_hash.c
@@ -695,13 +695,15 @@ BAThashsync(void *arg)
                        c = hash_##TYPE(h, v + o - b->hseqbase);        \
                        hget = HASHget(h, c);                           \
                        h->nheads += hget == hnil;                      \
-                       for (hb = hget;                                 \
-                            hb != hnil;                                \
-                            hb = HASHgetlink(h, hb)) {                 \
-                               if (EQ##TYPE(v[o - b->hseqbase], v[hb])) \
-                                       break;                          \
+                       if (!hascand) {                                 \
+                               for (hb = hget;                         \
+                                    hb != hnil;                        \
+                                    hb = HASHgetlink(h, hb)) {         \
+                                       if (EQ##TYPE(v[o - b->hseqbase], 
v[hb])) \
+                                               break;                  \
+                               }                                       \
+                               h->nunique += hb == hnil;               \
                        }                                               \
-                       h->nunique += hb == hnil;                       \
                        HASHputlink(h, p, hget);                        \
                        HASHput(h, c, p);                               \
                        o = canditer_next(ci);                          \
@@ -938,13 +940,15 @@ BAThash_impl(BAT *restrict b, struct can
                        c = hash_any(h, v);
                        hget = HASHget(h, c);
                        h->nheads += hget == hnil;
-                       for (hb = hget;
-                            hb != hnil;
-                            hb = HASHgetlink(h, hb)) {
-                               if (ATOMcmp(h->type, v, BUNtail(bi, hb)) == 0)
-                                       break;
+                       if (!hascand) {
+                               for (hb = hget;
+                                    hb != hnil;
+                                    hb = HASHgetlink(h, hb)) {
+                                       if (ATOMcmp(h->type, v, BUNtail(bi, 
hb)) == 0)
+                                               break;
+                               }
+                               h->nunique += hb == hnil;
                        }
-                       h->nunique += hb == hnil;
                        HASHputlink(h, p, hget);
                        HASHput(h, c, p);
                        o = canditer_next(ci);
diff --git a/sql/server/rel_optimizer.c b/sql/server/rel_optimizer.c
--- a/sql/server/rel_optimizer.c
+++ b/sql/server/rel_optimizer.c
@@ -643,7 +643,6 @@ order_join_expressions(mvc *sql, list *d
        node *n = NULL;
        int i, *keys, cnt = list_length(dje);
        void **data;
-       int debug = mvc_debug_on(sql, 16);
 
        if (cnt == 0)
                return res;
@@ -661,9 +660,9 @@ order_join_expressions(mvc *sql, list *d
                        sql_rel *r = find_rel(rels, e->r);
 
                        if (l && is_select(l->op) && l->exps)
-                               keys[i] += list_length(l->exps)*10 + 
exps_count(l->exps)*debug;
+                               keys[i] += list_length(l->exps)*10 + 
exps_count(l->exps);
                        if (r && is_select(r->op) && r->exps)
-                               keys[i] += list_length(r->exps)*10 + 
exps_count(r->exps)*debug;
+                               keys[i] += list_length(r->exps)*10 + 
exps_count(r->exps);
                }
                data[i] = n->data;
        }
@@ -918,6 +917,8 @@ order_joins(visitor *v, list *rels, list
        while(list_length(exps) && fnd) {
                fnd = 0;
                /* find the first expression which could be added */
+               if (list_length(sdje) > 1)
+                       sdje = order_join_expressions(v->sql, sdje, rels);
                for(djn = sdje->h; djn && !fnd && rels->h; djn = 
(!fnd)?djn->next:NULL) {
                        node *ln, *rn, *en;
 
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to