Changeset: 37b1df01cfc3 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/37b1df01cfc3
Modified Files:
        gdk/gdk_aggr.c
Branch: Jun2020
Log Message:

Print information about original args + don't crash when we did a project.


diffs (86 lines):

diff --git a/gdk/gdk_aggr.c b/gdk/gdk_aggr.c
--- a/gdk/gdk_aggr.c
+++ b/gdk/gdk_aggr.c
@@ -2777,7 +2777,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;
@@ -2844,12 +2845,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;
                }
        }
 
@@ -2869,27 +2868,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)
@@ -3062,7 +3059,7 @@ doBATgroupquantile(BAT *b, BAT *g, BAT *
                        goto bunins_failed;
        }
 
-       if (freeb)
+       if (b != origb)
                BBPunfix(b->batCacheid);
 
        bn->tkey = BATcount(bn) <= 1;
@@ -3074,15 +3071,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);
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to