Changeset: 4cc759c56763 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/4cc759c56763
Modified Files:
        gdk/gdk_aggr.c
        sql/server/rel_optimizer.c
Branch: Oct2020
Log Message:

Merge with Jun2020 branch.


diffs (109 lines):

diff --git a/gdk/gdk_aggr.c b/gdk/gdk_aggr.c
--- a/gdk/gdk_aggr.c
+++ b/gdk/gdk_aggr.c
@@ -3683,7 +3683,8 @@ static BAT *
 doBATgroupquantile(BAT *b, BAT *g, BAT *e, BAT *s, int tp, double quantile,
                   bool skip_nils, bool abort_on_error, bool average)
 {
-       bool freeb = false, freeg = false;
+       BAT *origb = b;
+       BAT *origg = g;
        oid min, max;
        BUN ngrp;
        BUN nils = 0;
@@ -3750,12 +3751,10 @@ doBATgroupquantile(BAT *b, BAT *g, BAT *
                b = BATproject(s, b);
                if (b == NULL)
                        return NULL;
-               freeb = true;
                if (g) {
                        g = BATproject(s, g);
                        if (g == NULL)
                                goto bunins_failed;
-                       freeg = true;
                }
        }
 
@@ -3775,27 +3774,25 @@ doBATgroupquantile(BAT *b, BAT *g, BAT *
                        else
                                bn = COLcopy(b, tp, false, TRANSIENT);
                        BAThseqbase(bn, g->tseqbase); /* deals with NULL */
-                       if (freeb)
+                       if (b != origb)
                                BBPunfix(b->batCacheid);
-                       if (freeg)
+                       if (g != origg)
                                BBPunfix(g->batCacheid);
                        return bn;
                }
                if (BATsort(&t1, &t2, NULL, g, NULL, NULL, false, false, false) 
!= GDK_SUCCEED)
                        goto bunins_failed;
-               if (freeg)
+               if (g != origg)
                        BBPunfix(g->batCacheid);
                g = t1;
-               freeg = true;
 
                if (BATsort(&t1, NULL, NULL, b, t2, g, false, false, false) != 
GDK_SUCCEED) {
                        BBPunfix(t2->batCacheid);
                        goto bunins_failed;
                }
-               if (freeb)
+               if (b != origb)
                        BBPunfix(b->batCacheid);
                b = t1;
-               freeb = true;
                BBPunfix(t2->batCacheid);
 
                if (average)
@@ -3969,7 +3966,7 @@ doBATgroupquantile(BAT *b, BAT *g, BAT *
                        goto bunins_failed;
        }
 
-       if (freeb)
+       if (b != origb)
                BBPunfix(b->batCacheid);
 
        bn->tkey = BATcount(bn) <= 1;
@@ -3981,15 +3978,15 @@ doBATgroupquantile(BAT *b, BAT *g, BAT *
                  "e=" ALGOOPTBATFMT ",s=" ALGOOPTBATFMT
                  ",quantile=%g,average=%s -> " ALGOOPTBATFMT
                  "; start " OIDFMT ", count " BUNFMT " (" LLFMT " usec)\n",
-                 ALGOBATPAR(b), ALGOOPTBATPAR(g), ALGOOPTBATPAR(e),
+                 ALGOBATPAR(origb), ALGOOPTBATPAR(origg), ALGOOPTBATPAR(e),
                  ALGOOPTBATPAR(s), quantile, average ? "true" : "false",
                  ALGOOPTBATPAR(bn), ci.seq, ncand, GDKusec() - t0);
        return bn;
 
   bunins_failed:
-       if (freeb)
+       if (b && b != origb)
                BBPunfix(b->batCacheid);
-       if (freeg)
+       if (g && g != origg)
                BBPunfix(g->batCacheid);
        if (bn)
                BBPunfix(bn->batCacheid);
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
@@ -889,8 +889,8 @@ order_joins(visitor *v, list *rels, list
                /* complex expressions may touch multiple base tables
                 * Should be pushed up to extra selection.
                 * */
-               if (cje->type != e_cmp || is_complex_exp(cje->flag) || 
!find_prop(cje->p, PROP_HASHCOL) /*||
-                  (cje->type == e_cmp && cje->f == NULL)*/) {
+               if (cje->type != e_cmp || is_complex_exp(cje->flag) || 
!find_prop(cje->p, PROP_HASHCOL) ||
+                  (cje->type == e_cmp && cje->f == NULL)) {
                        l = find_one_rel(rels, cje->l);
                        r = find_one_rel(rels, cje->r);
                }
@@ -1677,7 +1677,7 @@ rel_push_count_down(visitor *v, sql_rel 
 }
 
 static bool
-check_projection_on_foreignside(sql_rel *r, list *pexps, int fk_left) 
+check_projection_on_foreignside(sql_rel *r, list *pexps, int fk_left)
 {
        /* projection columns from the foreign side */
        if (list_empty(pexps))
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to